Intenta comprender el código de forma correcta previamente a utilizarlo a tu trabajo y si ttienes algo que aportar puedes compartirlo con nosotros.
Solución:
bugmenot123 está bien, pero me resulta más fácil usar el límite de los polígonos. Si tiene un polígono múltiple o un polígono con agujeros, el límite devuelve una cadena multilínea, si tiene un polígono sin agujeros, el límite devuelve una cadena lineal.
Aquí tienes un ejemplo sencillo para que veas cómo funciona:
import shapely
from shapely.geometry import MultiPolygon, Point
pol1 = MultiPolygon([Point(0, 0).buffer(2.0), Point(1, 1).buffer(2.0)])
pol2 = Point(7, 8).buffer(1.0)
pols = [pol1, pol2]
lines = []
for pol in pols:
boundary = pol.boundary
if boundary.type == 'MultiLineString':
for line in boundary:
lines.append(line)
else:
lines.append(boundary)
for line in lines:
print line.wkt
Según https://shapely.readthedocs.io/en/stable/manual.html#polygons:
- Puede obtener el anillo exterior de un polígono a través de su propiedad exterior.
- Puede obtener una lista de los anillos interiores a través de su propiedad interior.
Según https://shapely.readthedocs.io/en/stable/manual.html#collections-of-polygons:
- Para un MultiPolygon, puede iterar sobre sus miembros Polygon iterando a través de in o list() o usando explícitamente su propiedad geoms.
Recoge todos los anillos y tienes las líneas.
Sección de Reseñas y Valoraciones
Recuerda que puedes recomendar esta crónica si te valió la pena.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)