I have a polygon layer containing polygons vectorized from a raster image. After changing one polygon several smaller polygons are now contained within the first. I could now add a ring for every small polygon by hand using the snapping and tracing but this is very time consuming.

Is there a way to add all this rings automatically?

I use QGIS 2.14.3 with GRASS tools enables.

Edit: I added two examples of what I have now and what I want to get.

The polygons without rings. Smaller polygons (grey) and large one (brown are intersecting.

Rings added by hand.

  • Is the ring around the polygon a set distance or a distance that can be determined from an attribute? Could you attach a screen shot to help us visualize the scenario?
    – Kingfisher
    Oct 11, 2017 at 15:03

1 Answer 1


If I get it right you're looking for the geoprocessing's tool difference. you may find it under Vector > Geoprocessing Tools > Difference.

Separate the "first polygon" (select the feature, right click the layer on the layers panel, choose save as, mark the option Save only selected features and save it).

And use it as Input Layer on the difference tool and the smaller polygons as Difference Layer.

You can put the layers back together after the processing using the Vector > Data management tools > Merge vector layers

  • 1
    Worked perfectly. Thanks! I have one comment on the last step: Since the saving of the single polygon saves the attributes as well (unless you disable this) you can delete the original polygon after the difference operation and copy the new one into the original layer. Oct 11, 2017 at 16:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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