1

I have multiple layers with polygons.

multiple polygons

I want the regions that are intersected by all the polygons. The shared, common regions.

shared region highlighted in red

An example use case would be finding the shared area of multiple raster files if you had their footprints as polygons.

How can I achieve that with built-in QGIS tools?

  • NOTE: I will add an answer using merge, union, join, dissolve, extract right now but if you know an approach that is easier, please share. – bugmenot123 Aug 15 at 11:29
3

To my knowledge this requires multiple steps.

Note: This will give wrong results if you have overlapping polygons on one of your layers already.

three layers

  1. Merge vector layers and select all the layers in question. This gives you one single layer to continue with. Also it adds a layer and path attribute to each feature to keep track of their provenience.

merge

merged layer

  1. Union with no overlay layer. This results in a full "polygonisation": one polygon for each shared and non-shared region. The attributes are copied to each "child".

union

unioned

  1. Join attributes by location (summary) to count the number of intersecting polygons per polygon:
    • Use the same layer as "Join layer".
    • Set the "Geometry predicate" to equals.
    • Enter the "Summaries to calculate" option and select count

This will count the unique occurances of each attribute field for each intersection. Since we had the layer attribute added by the merging tool, the count of this will be the number of polygons that intersect a specific region. This will have as many polygons per intersecting region as their are intersecting polygons.

join

joined

  1. Dissolve the result to get rid of unnecessary duplicate polygons. Use layer_count as "Dissolve field(s)". Now we have one (multi-)polygon per unique value of layer_count / per intersecting region.

dissolve

dissolved

  1. Extract by expression to extract the polygon with the highest count of intersections. This can be achieved with the expression "layer_count" = maximum("layer_count").

extract

Done!

single polygon

  • 1
    After the first step Merge vector layers - SAGA Polygon self-intersection tool may be of help. – Kazuhito Aug 15 at 12:18
  • Thanks! SAGA is not necessarily installed for a QGIS user though, I never had much luck with it on Linux. I would rather keep it all in QGIS and GDAL. – bugmenot123 Aug 15 at 14:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.