Does anybody know how to only label features of a shapefile that are inside of another shapefile's features used as coverage in Atlas?

3 Answers 3


For your case, that the current layer and the coverage layer don't share a similar field, you will need to use the following rule:

within($geometry, @atlas_geometry)

Some extras

If the current layer and the coverage layer share a similar field, then you can use:

"my_field" = attribute(@atlasfeature, 'atlas_similar_field_name')

Finally, if the layer you want to filter is the coverage layer, then you can use this one:

$id = @atlas_featureid


I have never use it but the plugin "Mask" seems to claim to be able to do just what you want.

you could install it from the Plugin manager or go to https://github.com/aeag/mask for the qgis 3 version and to https://github.com/aeag/mask/tree/qgis2 for qgis 2


To be sure

  • in case CRS are different
  • don't want touching features


intersects( POINT_ON_SURFACE( $geometry ) , transform( @atlas_geometry, 'EPSG:7844','EPSG:7855' ) )=1

Your Answer

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

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