Me gustaría obtener la intersección de múltiples polígonos. Usando el sistema de Python shapely
puedo encontrar la intersección de dos polígonos utilizando el intersection
función. ¿Existe una función eficiente similar para obtener la intersección de múltiples polígonos?
Aquí hay un fragmento de código para entender lo que quiero decir:
from shapely.geometry import Point
coord1 = ( 0,0 )
point1 = Point(coord1)
circle1 = point1.buffer(1)
coord2 = ( 1,1 )
point2 = Point(coord2)
circle2 = point2.buffer(1)
coord3 = ( 1,0 )
point3 = Point(coord3)
circle3 = point3.buffer(1)
Una intersección de dos círculos puede ser encontrada por circle1.intersection(circle2)
. Puedo encontrar la intersección de los tres círculos por circle1.intersection(circle2).intersection(circle3)
. Sin embargo, este enfoque no es vendible a un gran número de polígonos ya que requiere cada vez más código. Me gustaría una función que tomara un número arbitrario de polígonos y devolviera su intersección.
0 votos
Estoy pensando en almacenar las coordenadas en un diccionario y hacer un bucle a través de él mientras se utiliza from itertools import combinations. Voy a publicar pronto
0 votos
¿Qué quiere decir con "sus intersecciones"? ¿Se refiere a todas las áreas que se cruzan con al menos otro polígono, o a las áreas que todo ¿se cruzan las entradas?
0 votos
Me refiero a la intersección de todos los polígonos, no a al menos uno.
0 votos
Debería aclarar esto arriba (quizás con un ejemplo de salida). Estoy bastante seguro de que la mayoría de las respuestas no comportarse como quiera. (Y el hecho de que varios contestadores hayan entendido mal es prueba suficiente de que la pregunta necesita una aclaración).
0 votos
Además, en el caso de un gran número de geometrías, habrá que tener en cuenta la probabilidad de que todas ellas lleguen a tienen una intersección común. Si es poco probable que todos se crucen, considere utilizando un rtree para optimizar las intersecciones de distancia. En ese caso, esto podría evitar tomar cualquier intersecciones en muchos casos.
0 votos
Gracias @jpmc26 lo miraré y editaré. También el
rtree
es un buen consejo.1 votos
@jpmc26 Acabo de añadir una actualización a mi respuesta donde se utiliza rtree. El enfoque es más eficiente y escalable ahora. ¡Espero que esto ayude!