1

I'm pretty new to QGIS. I'm trying to output a series of maps that are at the scale of 10km, 100km, 1000km. I thought this would be a really easy task but for some reason really struggling with it.

I first tried to do this by adjusting 'scale' in the map's item properties in 'print layout'. However I couldn't find out what unit scale was in (and didn't know how to convert that to km) and also found that a x100 increase in scale didn't result in a x100 increase in length in km.

Could anyone recommend the best way to set the map scale by km? or another trick to do this?

I feel like this should be a really simple task but I've really struggled with how to do it!

Babel
  • 71,072
  • 14
  • 78
  • 208
Weelhackk
  • 19
  • 2
  • 3
    That should work fine - scale is dimensionless, may be you could add some screen shots to show what the problem is – Ian Turton Aug 21 '21 at 09:29

2 Answers2

7

Preliminary remark: I created the maps here using EPSG:3857 (Web Mercator) for demonstration purpose only and because projection is not the issue of your question. For many tasks, however, this projection is not ideal and you should think about whicht other projection to use.

To create "Powers of ten"-like maps, you can use the atlas-fuction of the print layout: see Creating Detailed Maps with the Atlas Tool and documentation. The basic idea is to create a polygon layer (so called Coverage layer) containing a separate polygon for each of the different scales/extents you'd like to have and then create a separate map for each of these polygons.

  1. Create polygons for the coverage layer. Create a point-layer with a single point where the map should be centered. For demonstration purpose, I used a point in Andorra.

  2. On the point layer, run Menu Processing / Toolbox / Geometry by expression with the following expression (cf. screenshot 1 below). It creates squares centered on the point with side-length of 10, 100, 1000 and 10000 km. You can change these values, adding others or deleting some in line 3. Alternatively, to automatically generate a series with power of 10s, you could also use array_foreach (generate_series (1,7), 10^@element) for more than just 4 power of 10 values - here from 10 (10 to the power of 1) to 10000000 (power of 7):

collect_geometries(
    array_foreach (
        array(10,100,1000,10000),
        make_regular_polygon( 
            $geometry, 
            project ($geometry, @element*1000/2,0),
            4,
            1
)))
  1. On the output of step 2, run Menu Vector / Geoemtry tools / Multipart to singleparts to get a separate feature for each square. Use the resulting layer of this step as coverage layer in step 4.

  2. Create a new print layout (see documentation), add a map (see screenshot 2: no. 1). On the atlas tab (no. 2), select the coverage layer. Go to the tab Element properties (no. 3) and check the box next to Controlled by Atlas.

You're done! Click Preview atlas (no. 4) to click through the different maps in the different scales you defined. Use Menu Atlas / Export Atlas as [Images… / SVG/PDF] to save a map for each scale defined in the selected file format.

Screenshot 1: showing how the expressions generates the squares for the coverage layer (red outlined frame), here using Geometry generator for demonstration purpose - however, you should use Geometry by expression instead as described above: enter image description here

Screenshot 2: Making the atlas settings in the print layout - here showing page 3 of the atlas, representing the 1000 km square: enter image description here

Screenshot 3 to 6: Output with the coverage layer (squares, red frames), based on a OpenTopoMap basemap: 10 km square: enter image description here

100 km square: enter image description here

1000 km square: enter image description here

10000 km square: enter image description here

Babel
  • 71,072
  • 14
  • 78
  • 208
4

If I understood your question correctly, it is actually quite easy if you use the "Print Layout" function: File -> New Print Layout Then add a map (menu Add Item -> Add Map) and draw a rectangle to define the area the map will be added to. Enter the desired scale in the Item / Item properties panel:

enter image description here

You can then copy/paste the map and change the scale to the new instances, for example creating three maps at the following scales:

  • 1:10.000
  • 1:100.000
  • 1:1.000.000

To add a Scalebar: Add Item -> Add Scalebar Please note that scalebars are referred to maps, and automatically inherit the corresponding scale. In the following example screenshot I selected the "Scalebar 100k", which is referred to the 100k Map (look at the Item Properties -> Map popup menu)

enter image description here

Lastly, to print, select Layout -> Export to PDF.

RafDouglas C. Tommasi
  • 6,479
  • 1
  • 15
  • 41