Necesito saber si las geometrías de un shapefile están dentro de otras geometrías o no. Por ejemplo, quiero comprobar si hay árboles (representados como puntos en trees.shp
) dentro de las zonas urbanas (representadas como polígonos en area.shp
)
¿Cuál es la forma más fácil de proceder?
Hago un bucle sobre los puntos, y dentro de este bucle, tengo un bucle anidado sobre los polígonos. A continuación, compruebo si mi geometría de puntos está dentro del polígono con el Within(Geometry geo)
de OGR. Es muy largo, no está optimizado en absoluto.
¿Qué debo hacer para acelerar el cómputo?
def PointsInPolygons(self, pointsLayer, polysLayer):
nbInside = 0
total = pointsLayer.GetFeatureCount()
for i in range(total):
pointFeat = pointsLayer.GetFeature(i)
pointGeo = pointFeat.GetGeometryRef()
for j in range(polysLayer.GetFeatureCount()):
polyFeat = polysLayer.GetFeature(j)
polyGeo = polyFeat.GetGeometryRef()
if pointGeo.Within(polyGeo):
nbInside+=1
break