QGIS Vector Layer Interactions – How to Calculate Percentage of Polygon Intersection Area

expressionintersectionpolygonqgisvector

I am new to QGIS and have two vector layers (the green one, displayed in graduated symbology, and separately the orange layer – see image pasted below). I want to create a new field in the attribute table of the green layer, to calculate what percentage of each polygon is covered by an orange polygon.

I have got as far as creating a column in the green layer's attribute table, but I can't find a tool which calculates intersections without creating a new layer.

enter image description here

Best Answer

Create a new attribute with Field calculator using this expression (replace orange on line 6 with the name of your "orange" layer):

area(
    intersection(
        $geometry,
        collect_geometries( 
            overlay_intersects(
                'orange', -- name of another layer
                $geometry
                )
            )
        )
    )
/area ($geometry)*100

The expression applied on the green layer (here as dynamic label for demonstration purpose), calculating the area of the overlapping part of the orange layer, divided by the area of the green layer. The overlapping part is highlighted in red:

enter image description here