Rahul S. answered 05/19/25
Senior Software Engineer
from shapely.strtree import STRtree
# Assuming you have your polygons as a list
grassland_polygons = [shape(pol['geometry']) for pol in grassland]
# Build the spatial index
spatial_index = STRtree(grassland_polygons)
for point in input:
pt_geom = shape(point['geometry'])
pt_buffer = pt_geom.buffer(r)
# Query spatial index for polygons that intersect the buffer
candidate_polygons = spatial_index.query(pt_buffer)
# Now intersect only these polygons and sum their areas
intersected_area = sum(poly.intersection(pt_buffer).area for poly in candidate_polygons)
perc_cov = (intersected_area / areaM2) * 100
print(perc_cov)