Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.

share|improve this question
up vote 6 down vote accepted

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.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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