Does anyone know how I can extract the holes in a polygon layer as a separate layer in QGIS?

An example could be a country with a number of lakes cut out of the polygon - I need the lakes.


This is fairly simple and you can do it all natively in QGIS (i.e.without exporting to PostGIS).

  1. Convert you polygon to lines (Vector->Geometry Tools->Polygon to lines)
  2. Convert the lines back into polygons (Vector->Geometry Tools->lines to polygons)
  3. Difference your new polygons against the original polygons

Step 2 is the key here. Step two creates a set of overlapping polygons, one of which represents your landmass with no holes and the others are your lakes. Step three kills the landmass polygon leaving just the lakes.

I vaguely remember a thread where somebody was asking how to de-doughnut polygons. You could use this same approach but instead of differencing your result with the original, simply dissolve the result, or do a spatial join and then select by attribute if dissolve is too crude... anyway, that's getting off-topic.

| improve this answer | |

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.