I need to produce on the order of 100 maps that are centered on each point of interest in a shapefile. I would like to prepare all the layers in a master QGIS project, and set up the composition for one point (so that printing 100 maps could be done manually, if need be).

I'd have something like the following layers:

  • basemap
  • points
  • point buffer

And I would like to then automate printing to svg something like:

  1. For each point in a shapefile
  2. Center the map canvas on that point
  3. Filter a buffer layer to only have that point
  4. Print an svg with composition from the map composer

I'm reasonably certain I know how to do 1 & 2, but haven't found details on 3 & 4 on this site.

  • 1
    Very short answer. Use point layer as atlas coverage. Filter other layers using the rule within($geometry, buffer(@atlas_geometry, <distance>). Commented Jun 23, 2016 at 10:50
  • Hadn't considered Atlas before because I hadn't used it for previous mapping. This would make things soooo much easier, especially for handoff Related: gis.stackexchange.com/questions/173399/…
    – raphael
    Commented Jun 23, 2016 at 17:30

1 Answer 1

  1. In the print composer, enable atlas and use point layer as atlas coverage layer.
  2. Set the map item to be controlled by atlas, and choose the fixed scale
  3. Back in the QGIS's main window, for each layer that you want to filter according to a certain distance to the point use the rule based symbology and use the following rule

    within($geometry, buffer(@atlas_geometry, distance))

  • That rule should read - within($geometry, buffer(@atlas_geometry, )). It needs the second closing bracket.
    – Johanna
    Commented Sep 9, 2016 at 0:13

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.