I have the code below where I take the geometry of a base area and take other geometries to intersect the first one. However, I get performance problems mainly for large base areas. How can I improve?
obj = model.objects.filter(**filters).first()
car_geom = obj.geom
filter_conditions = {'geom__intersects': car_geom}
fire_data = Fires_map.objects.filter(**filter_conditions)
fires = list(fire_data)
for fire in fires:
intersection = fire.geom.intersection(car_geom)
if isinstance(intersection, Polygon):
intersection = MultiPolygon([intersection])
fire.geom = intersection
area_ha = intersection.transform(3857, clone=True).area
fire.area_ha = area_ha / 10000
for fire in fires:
fire.area_ha = round(float(fire.area_ha), 2)