In QGIS, I have a layer of polygons which represent forested area, captured from an old paper map, that I have converted from polylines. See my screenshots below. The forest area has holes in its coverage. The polylines defined the edges of those holes. Unfortunately, the conversion from polylines, which I did in QGIS using
Vector > Geometry Tools > Lines to polygon, cannot be configured to sense that a nested polygon must be a hole within the larger polygon. It simply filled all closed polylines regardless of nesting.
To manually cut the holes, I have tried to use the ‘
Add Ring’ feature on the Advanced Digitizing Toolbar. This has not worked for me. So here are my questions:
1). Is there a way to ‘Add Ring’ in a larger polygon using an existing smaller polygon as a ‘cookie-cutter’, or must one always use the Add Ring tool by actively drawing a new closed line, vertex-by-vertex, with the tool’s cursor?
2). Is there a way to cut a bunch of such holes in one single operation, perhaps by dragging a selection box over a wider area and applying the cutting operation to all polygons within it?
3). If neither these processes are possible, can someone suggest another workflow to achieve the same thing within QGIS, or else confirm that QGIS is unable to do this.
This topic has not been answered fully here before. There is a GIS StackExchange thread How to create a hole in a polygon in QGIS? which neither discusses how to use an existing polygon to cut a hole in a larger polygon, nor does it offer any way to cut many holes at once. It does not answer my question. I am asking a new question here.
Finally, I wouldn't want anyone to get hung up on the specifics of this example, so I better say that although you might inspect my screenshot of the forest cover on the original map cover and see it has few 'donut holes', the raster conversion had to contend with a lot of noise, so that the resulting vectors tended to join up and have far more donut holes. None of these little details are essential to the general questions I'm asking above.