I've created a GP tool using ArcGIS that creates an "area of interest" mask from selected features. Effectively it creates a new donut polygon layer where the hole was the previously selected features. Can I replicate this task in QGIS?

Example: For a specific map, I want to highlight a county within the state and mask the rest of the state and features outside the county with a gray, semi-transparent polygon layer above. Conceptually I would do it similar to this.

  1. User loads state, county, and river layer
  2. User selects county of interest
  3. Run a utility (if it exists) that exports all of the unselected features to a donut shapefile without the originally selected polygon. If this layer mask was an "in memory" layer only available to QGIS, that would be just fine, too, maybe even better.

Does this type of tool or capability already exists within QGIS or will I have to write this as a custom function?

Here is how I did it in ArcGIS with ModelBuilder and the result I would be looking for, where the yellow layer and river layer exists statewide (all the way across the image), and the gray layer is transparent with a "donut hole", allowing the bright yellow portion to display through and draw the viewers attention the the area of interest:

enter image description here enter image description here

4 Answers 4


To create a mask, I'd suggest using Polygon from layer extents (vector - research tools) and Difference (vector - geoprocessing tools) with "use only selected features" option activated.

If you really want to "exports all of the unselected features to a donut shapefile", you could try Dissolve, but it's quite slow and you might end up with suboptimal results like tiny holes etc.

Creating on big polygon with polygon from layer extents tool and then cutting out the selected county should be much faster.


Thank you @underdark for your direction to this solution. The fTools function "Difference" was exactly the tool that accomplished the task. However, different from your suggestion, I did not have to 1st create the "Polygon from Layer Extents".

Instead, the solution was:

  1. Load the data layer (counties)
  2. Select the feature of interest (County A)
  3. Use the Vector->Geoprocessing->Difference tool
  4. Select the county layer as both inputs, "use selected features" checked OFF for Input Vector Layer, ON for Difference Layer.

enter image description here

This will give the layer with all features from the input included EXCEPT the selected feature(s). Thanks!

  • This works great. Only drawback is where the County borders the sea, or other area with no polygons, and so these areas don't get masked.
    – JimS-W
    Feb 16, 2018 at 17:15

The Symmetrical Difference in QGIS 1.6 located in Vector>Geoprocessing Tools>Symmetrical Difference (standard core tools) should generate your mask from two input polygons...

enter image description here


another option, that is purely visual rather than creating more layers, is to place (a copy) of mask layer on top and use "inverted polygon" under symbology. You can make it as transparent or opaque as you wish.

area of interest polygon layer

Also outlined here: https://www.youtube.com/watch?v=XcUn8VqQ3Us

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.