4

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.

PolyGeo
  • 65,136
  • 29
  • 109
  • 338
raphael
  • 3,407
  • 23
  • 61
  • 1
    Very short answer. Use point layer as atlas coverage. Filter other layers using the rule within($geometry, buffer(@atlas_geometry, ). – Alexandre Neto Jun 23 '16 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: https://gis.stackexchange.com/questions/173399/how-to-filter-features-in-other-layers-of-a-qgis-atlas

    – raphael Jun 23 '16 at 17:30

1 Answers1

5
  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))

Alexandre Neto
  • 14,212
  • 2
  • 58
  • 85
  • That rule should read - within($geometry, buffer(@atlas_geometry, )). It needs the second closing bracket. – Johanna Sep 09 '16 at 00:13