I need to tell whether geometries from a shapefile are inside other geometries or not.
For example, I want to test if there are trees (represented as points in trees.shp
) inside the urban areas (reprensented as polygons in area.shp
)
What's the easiest way to proceed?
I loop over the points, and within this loop, I have a nested loop over the polygons.
Then, I test if my point geometry is inside the polygon with the Within(Geometry geo)
method from OGR.
It's very long, not optimized at all.
What should I do to fasten the computation?
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