Identifying overlapping polygons in single layer using QGIS?

As described this question there are 3 conditions for two polygon on a same layer.

  1. These 2 polygons can have intersection area. (How to detect-Solved)
  2. These 2 polygons can have dublicated. (How to detect-Solved)
  3. One polygon can cover other polygon. How to detect? (My question)

Layer: QGIS - SHP layer

  • If you want to detect only fully covered polygons, you can try this process : 1/ compute the intersection of all polygons 2/ merge the resulting (intersection) layer and the original layer 3/ detect duplicated polygons. A fully covered polygon will stay identical after step 1 and thus will appear as duplicated after step 2. I don't know if there's a shorter way. – ArMoraer Jan 15 '16 at 9:59
  • I don't really get the difference between #1 and #3. – wiltomap Jan 15 '16 at 10:46
  • ArMoraer : Your way is suitable for 2 polygons or for few polygons. I want to analyze too much polygons at same tame. wiltomap : In first condition there is a intersection area and polygon doesn't covered fully. Third condition one polygon fully covered by other polygon. – Tuna Jan 15 '16 at 11:35
  • @Tuna: you're right. I posted another solution that should work, if I understand correctly what you want. – ArMoraer Jan 15 '16 at 12:23

Otherwise you can use (or install it if needed) the plugin topology checker and add a rule "not overlap" on your layer and it will show you polygons that overlapping. Here more informations

  • "not overlap" works just for first condition. It doesn't work on third condition. It works for adjacent polygons. – Tuna Jan 15 '16 at 11:41

Well, I think I found a way to detect polygons that are fully covered by other polygons. This is a bit complicated and I am surprised there seems to be no other way (I might have missed a plugin), but here it is (home tested) :

  1. Dissolve your input polygon layer (Vector > Geoprocessing Tools > Dissolve). In the field "Dissolve field", choose "-- Dissolve all --". Let's call diss the output layer.

  2. Apply an inner buffer to diss : Vector > Geoprocessing Tools > Buffers. Here's the thing : you have to choose a small negative value for "Buffer distance", e.g. -0.0001 (depending on your projection). It is necessary before the next step (it will set the distance tolerance between covered and covering polygons). Let's call diss_buff the output layer.

  3. Use the "Select by location" tool (Vector > Research Tools). First input layer : choose your original layer. Second input layer : choose diss_buff. In the options, select only "Include input features completely within the selection features". Click OK: all (and only) your covered polygons should be selected.

  4. (Optional) You can save the selection with "Save As" and select "Save only selected features.

Tested on GQIS 2.8.

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.