python - barplot - pandas plot
Fijar polígono inválido | Pitón bien formado (1)
Shapely define un Polígono como no válido si alguno de sus segmentos se intersecta, incluidos los segmentos que son colineales. Muchos paquetes de software crearán una región o área con un "recorte" como se muestra aquí que tiene segmentos colineales ( Image ):
>>> pp = Polygon([(0,0), (0,3), (3,3), (3,0), (2,0),
(2,2), (1,2), (1,1), (2,1), (2,0), (0,0)])
>>> pp.is_valid
WARNING:shapely.geos:Self-intersection at or near point 2 0
False
Naturalmente, el recorte se puede implementar de forma nativa en Shapely, o esta misma geometría se puede implementar como dos polígonos válidos, pero si solo tengo la lista de puntos que se muestra arriba, ¿hay una forma fácil de "arreglar" esto? lista de puntos)?
Encontré una solución que funciona para el caso específico dado:
>>> pp2 = pp.buffer(0)
>>> pp2.is_valid
True
>>> pp2.exterior.coords[:]
[(0.0, 0.0), (0.0, 3.0), (3.0, 3.0), (3.0, 0.0), (2.0, 0.0), (0.0, 0.0)]
>>> pp2.interiors[0].coords[:]
[(2.0, 1.0), (2.0, 2.0), (1.0, 2.0), (1.0, 1.0), (2.0, 1.0)]