Saltar al contenido

Shapely: ¿convertir polígonos en líneas?

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)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *