Dear list

Great, how powerful expressions are in QGIS!
I have two polygon layers, one with parcels and one with forests. In a virtual 
field of the layer parcels I'm trying to calculate the area covered with 
forest. I can sum the area of intersecting forests in a virtual field with the 
follwing expression:

coalesce( 
  array_sum( 
    overlay_intersects(
      layer:= 'forest', 
      expression:= area(@geometry)
    )
  )
, 0)

But @geometry doesen't return the intersecting area. It returns the whole 
polygons, that partly intersect the parcel. So I could add an additional 
intersection():

coalesce( 
  array_sum( 
    overlay_intersects(
      layer:= 'forest', 
      expression:= area(
        intersection(
          @geometry, geometry(get_feature_by_id()
        )
      )
    )
  )
, 0)

@geometry is calculated in the context of the layer forests. How could I access 
the geometry of the parcel inside of overlay_intersects()? get_feature_by_id() 
doesn't seem to help, since I don't see a way to get the actual ID of the 
parcel. 
It is not possible to return @geometry as expression in overlay_intersects and 
do the intersection outside.

Does any one have an idea, how I could get the intersected area?
Thank you. Bruno
_______________________________________________
QGIS-User mailing list
[email protected]
List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user

Reply via email to