QGIS: Refine Your Maps for Reporting and Publication

Author

UQ Library

Published

September 25, 2025

Setting up

This is an intermediate level tutorial. Before completing this tutorial, we recommend our QGIS: Introduction to Mapping tutorial. This tutorial is designed for QGIS 3.40. If you need to install it on your computer, go to the QGIS website.

We will start as always by creating a good folder structure to work within. This folder is where our project, our data, and creations will live. Folder structure is very important for keeping your data tidy, as well as for ease of sharing your project with others. You simply need to zip the project folder if you need to share the whole thing.

  • Open QGIS and create a new project with Project > New.

  • Let’s now save our project: Project > Save.

  • Create a new folder, let’s call it “qgis_reports”.

  • Inside that folder, create these folders:

    • data” - for all the data we will use to make our maps, split into:

      • raw” - raw data from your research or the internet

      • processed” - any data you’ve modified

    • output” - for any maps or images we export

    • temp” - this folder isn’t necessary, but when you’re playing around and testing, it stops things getting messy.

  • Finally, let’s save our .qgz project file inside the “qgis_reports” folder, named “qgis_reports_map.qgz

Your .qgz file should always be in the highest level folder, so it’s only looking down into folders for data, not back out.

This might feel unnecessary now, but things quickly get out of control and hard to find if you don’t have a good folder structure.

Let’s add an OpenStreetMap basemap to locate ourselves on the globe:

  • Browser panel > XYZ Tiles > OpenStreetMap (double-click, or drag and drop into the Layers panel).

And finally change our CRS to match our project area (Brisbane) for today to EPSG:7856 - GDA2020 / MGA zone 56

  • Project > Properties click the CRS tab, filter for 7856, select EPSG:7856 - GDA2020 / MGA zone 56 and click OK

Today’s Aims

Main aims:

  • Create a pretty map for output
  • Automate our map description

If we have time:

  • Learn to use Web Mapping Services
  • Georeference an Image

Download the Data

Today we’re going to focus on making a pretty map, so let’s start by populating our map with some pre-generated data.

The data for this session can be directly downloaded from this link.

Once downloaded, extract the archive into your raw folder within your data folder.

Within QGIS, go to the Browser panel, open Project Home > data > raw, then drag and drop each of your files into themap canvas.

You should have three new layers: Artefacts, Paths, and Project_area

Change the Symbology

Our vector layers are assigned a random colour when we load them. We now want to make them look better.

Point Geometry

  • Open the Layer Styling panel by pressing F7
  • Select the Artefacts layer from either the Layer Styling panel, or the Layers panel.
  • In the Layer Styling panel, change Single Symbol to Categorised
  • From Value select Artefact Type
  • Click the Classify button

The random colours that QGIS gives you aren’t always pretty, so let’s change the colours

  • Click the dropdown next to the Color ramp

  • Click Create New Color Ramp..., select Catalog: ColorBrewer, and click OK

  • Click the dropdown next to Scheme name and choose Set1

    • This is a qualitative colour scheme that is easy to distinguish, Dark 2 and Paired are also good options, you can find out more about ColorBrewer here
  • Click the back arrow button next to Edit Ramp

Now that we have a nice colour scheme, let’s give it a contrasting Stroke color, and a new shape. The default is usually black, but I find this to look harsh, let’s make it a darker shade of the Fill colour

  • Double click on the symbol of the Artefact Scatter
    • Click Simple Marker - this will allow us to change the fill, stroke, and shape of the marker
      • Click the dropdown next to Stroke color, click Pick Color, and then use the dropper to select the color from the Fill Color above, it should copy the colour!
    • Now click directly on the Stroke color color box, this will take you to the Select Stroke Color window
      • Drag the slider next to V to give us a darker shade of red
      • Click the back arrow button next to Artefact Scatter > Select Stroke Color
    • From the bottom of the window select another shape, let’s go with the Triangle
  • Click the back arrow button next to Artefact Scatter

Repeat these steps for the Single Artefact - although you can leave the shape as a circle.

If you want, you can change the properties of all symbols at once:

  • Simply click in the white space below your symbol classes so that none are selected.

  • If you click on the button next to Symbol, it will take you to Symbol Settings

    • Try increasing the size of the symbols to 3mm

    • WARNING if you change the Stroke color here, it will change the stroke for all of your symbols, undoing your work from above.

  • Click the back arrow button next to Symbol Settings

Line Geometry

We can also make our lines look nice. Sometimes it can be as simple as picking a contrasting colour, and adding some more width. Sometimes it can be very useful to add some dashes to your line.

  • Select the Paths layer from the Layer Styling panel
  • Under Line, click Simple Line
    • Change the Color to a colour that is different to your points, and stands out from the map. I’m going to use orange
    • Increase the Stroke width to 1mm - it looks big now, but will look better on your exported map later
    • Click the green + next to Line to add another line symbol
      (You can add as many simple lines, as you like, you can even change this with Symbol layer type to Arrows, Hashed lines, Filled lines, and more.)
      • Increase the Stroke width to 1mm to match
      • Change the Stroke style from Solid Line to Dashed Line
      • Change Cap style from Square to Round
      • Tick Use custom dash pattern
      • Click on the dashed line below the tick box
        I like to set my Dash to 3mm and my Space to 5mm

Polygon Geometry

Depending on your map, you may want your polygon to remain solid, to be transparent, have hatched lines, or simply be an outline. As our project area has items inside it, it is probably best suited as an outline.

  • Select the Project_area layer from the Layer Styling panel
  • Under Fill, click Simple Fill
    • Change Fill style from Solid to No Brush
      • Note that this is where you could add horizontal, diagonal, or many other styles as a fill.
    • Change Stroke color to something bright, like Yellow
    • Increase the Stroke width to 1mm

Labels

Let’s add some labels to our data.

  • Select the Artefacts layer from the Layer Styling panel
    • In the Layer Styling panel, click the yellow abc Labels tab
      • Change No Labels to Single Labels
      • Change the Value to fid
      • Change the Color to white
      • Just below the Value dropdown, click the third abc tab for Buffer
        • Tick the Draw text buffer box
        • Change the Size to 0.8
        • Change the Color to black - you could have reversed the two colours, but I prefer this contrast

Styles

If you want to try different looks for a feature, but not have to undo everything, you can save them as Styles

  • In the Layers panel, Right click on Project_area > Styles > Add...
  • Name the style Project Point
  • Select the Project_area layer from either the Layer Styling panel
    • Under Fill, click Simple Fill
    • Change Symbol layer type from Simple Fill to Centroid Fill
    • Click Simple Marker and change the Size to 3 - you can also change the Stroke color if you like

Now we have a point as the centre of our polygon, we can edit this style and revert back to the original whenever we like

Themes

Themes work similarly to styles, but instead of changing the layer styling, it changes the layers present. We can use themes to create multiple looks for our map that we can easily swap between. Let’s create a map for our future Inset Map

  • In the Layers panel, hide the Paths and Artefacts layers by unticking the boxes next to them.
  • Now click the Eye icon (Manage Map Themes) at the top of the Layers panel, and click Add theme...
    • Let’s name our new theme Inset, and click OK
  • Change the Project_area back to our original Default style:
    • Right click on Project_area > Styles (2) > defaultThe map should return to how it looked before.

Nothing exciting will happen yet, but we will be able to use this later.

Basemaps

Unless we really need everything on the OpenStreetMap, it is too busy, and distracting. Let’s load in a new basemap. There are many ways of doing this, in the past we’ve used the QuickMapServices plugin to load in new basemaps, and used XYZ tiles to load in basemaps, now we can go to the next step and source them externally.

Today we’re going to use a WMTS (Web Map Tile Service) from ESRI.

  • Scroll down the Browser panel until your see WMS/WMTS
  • Right click WMS/WMTS and select New Connection...
    • In Name type ESRI World Imagery
    • In URL paste:
      https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/WMTS/1.0.0/WMTSCapabilities.xml
    • Click OK
  • In the Browser panel, navigate WMS/WMTS > ESRI World Imagery and double click on default028mm
    • This is a very high resolution aerial basemap, however when you zoom closely in many areas it will often show “Map data not yet available” at a scale around 1:300
    • The GoogleMapsCompatible is the same map at lower resolution, however it doesn’t have the “Map data not yet available” issue
  • Arrange the layers so that the World Imagery layer is under your other layers (you can hide the OpenStreetMap now)

Themes (again)

Now that we’ve made some changes, we can see what themes do.

  • In the Layers panel, click the Eye icon (Manage Map Themes), click Add theme...
  • Let’s name our new theme Main, and click OK
  • Now, click the Eye icon again
    • You will see that there are two check box options at the bottom: Inset and Main
    • You can cycle between these two themes by choosing one or the other
    • If you want to update a theme, simply hide/unhide the layers you want, go to Eye icon > Replace theme... and then select the theme you want to overwrite.
  • Save your project

Layout Manager

Now we can prepare our map for export.

  • Navigate to Project > Layout Manager...
    • Under New from Template click Create, name the map Project Map
  • This will open the Layout Manager

Page Properties

Before we do anything, let’s set up out environment.

  • Navigate to Layout > Page Properties..
    • Here we can choose the size and orientation of our map.
    • A4 is sensible, and it means you know the map will fit neatly into a report.
    • Portrait means you can have a full page map without rotating the page in your report. But some spatial layouts make more sense in Landscape. Use your judgement.

Guides

Guides seem unnecessary, but they make lining things up, much much easier.

  • In the right menu, click Guides
  • Click the green + under Horizontal Guides (if your canvas is a Landscape, choose Vertical Guides for this step)
  • A new row should appear, click on the 0 and change it to 235

Map

  • Add your map by clicking the map icon in the left menu, or navigating Add Item > Add Map
    • Your mouse will now be a +
    • If you hover over the top corner of the canvas, the mouse should snap to the corner
    • Click and drag until your mouse snaps to the corner created by the side of the canvas, and the guide you added
  • In the Items panel on the right, double click on Map 1 and rename it Main
    • Giving Items clear names makes this process much more straightforward

Scale

Okay, we have our map, but it’s not zoomed in right. This is always a little tricky.

You could click the Move item content button on the left menu(or press C on your keyboard), as this would allow you to drag the map around internally, and zoom in with your scroll wheel. But there is an easier way!

  • Navigate back to your qgis_reports window
    • Right click on your Project_area layer and select Zoom to Layer(s)
  • Navigate back to your Project Map window
    • In the right menu, click Item Properties
    • You will see these options:
    • Click the first orange arrow button to Set Map Extent to Match Main Canvas Extent
    • Click the third orange arrow button to Set Map Scale to Match Main Canvas Scale
      • The other buttons do the reverse
    • I like to then round the Scale up to a nice round number from something like 3814 to 4000

Inset Map

You can add your inset map to the blank space at the bottom (or side) of you map canvas, or you can put it on top of you main map in unused space. However, we don’t have an edge to snap our inset map on to, so guides are useful here too.

  • In the right menu, click Guides
    • Click the green + under Horizontal Guides
      • A new row should appear, click on the 0 and change it to 10
    • Click the green + under Vertical Guides
      • A new row should appear, click on the 0 and change it to 10

We don’t need more guides unless you want a precise inset map size, but I’m happy so it’s aligned evenly with the top and side border.

  • Add your map by clicking the map icon in the left menu, or navigating Add Item > Add Map
    • Hover over the corner created by your guides, the mouse should snap to the corner
      • Click and drag until you’re happy with the size of your inset window (without overlapping any important features on the main map)
  • Zoom out on the inset map, by selecting it from the Items tab and following the same approach as the Main map
    • Or by using Move item content button on the left menu (or press C on your keyboard), clicking on the inset and using the scroll wheel
  • In the Items panel on the right, double click on Map 2 and rename it Inset
  • Scroll to the bottom of the Item Properties panel and tick the Frame box
    • This gives our inset a nice border which we can customise further

Now we have our maps added, we can bring our themes in to play again.

Themes (again!)

  • Select Main from the Items panel
    • In Item Properties, you will see Layers section
    • Tick Follow map theme and from the dropdown change none to Main
    • Now this map is linked to the Main theme and will only update when we change that theme, or the layers attributed to the theme
  • Repeat this step for Inset

This is also a big advantage for using Styles, as the point is a better representation of our site on the inset map.

Title

  • Add a text box to your map by clicking the Add Label icon in the left menu, or navigating Add Item > Add Label
  • Click and drag in the empty canvas below the map where you want to put your title
    • In the Item Properties panel remove the Lorem ipsum text, and add Brisbane Botanic Gardens
    • Under Appearance click the Font box to open the Label Font window
      • Change the text size to 18, you can make other font changes here too
      • Click the back arrow button next to Label Font
  • In the Items panel on the right, double click on Brisbane Botanic Gardens and rename it Title

Okay, that’s a some fairly basic text, let’s do something interesting with the descriptive text.

Dynamic Text

  • Add another text box to your map by clicking the Add Label icon in the left menu, or navigating Add Item > Add Label
    • Click and drag in the empty canvas below the title
    • In the Items panel on the right, double click on “Lorem ipsum” and rename it Description
      • In the Item Properties panel remove the “Lorem ipsum” text and then enter:
        • Created by:
        • Date:
        • Scale: 1:
        • Datum:
        • Sources:
        • Normally we’d have to enter the details for each of these manually, but we can use Dynamic Text to do it for us
  • In the Item Properties panel, click next to Date:, so the cursor is sitting there
    • Under the Main Properties text box, click Dynamic Text > Current Date > Day/Month/Year (26/09/2025)
    • This will insert code that looks like this: [%format_date(now(), 'dd/MM/yyyy')%] which automatically adds today’s date
  • Now repeat those steps for the rest:
    • Click next to Scale: 1:
      • Click Dynamic Text > Map Properties > Main > Scale (4000)
        • The code will look like this: [%format_number(item_variables('Main')['map_scale'] which automatically adds the main map’s scale
    • Click next to Datum:
      • Click Dynamic Text > Map Properties > Main > CRS Name (GDA2020 / MGA zone 56)
        • The code will look like this: [%item_variables('Main')['map_crs_description']%] which automatically adds the main map’s CRS
    • Click next to Sources:
      • Click Dynamic Text > Layer Credits
        • The code will look like this: [%array_to_string(map_credits())%] which automatically adds the sources built in to some of the data used
        • Note that this is built into the Metadata (layer Properties > Metadate > Access under Rights) of the baselayers, and the layers we downloaded. Not all layers will necessarily have this information, and sometimes it’s very detailed and clunky.

You could also add any extra text details such as the locality, disclaimers, or any other details needed.

Shapes

We can add a border around our information section. This isn’t necessary, but it looks nice!

  • Add a rectangle to your map by clicking the Add Shape icon in the left menu, or navigating Add Item > Add Shape > Add Rectangle
    • Hover over the corner created by the bottom of the map and the side of the canvas, the mouse should snap to the corner
    • Click and drag until your mouse snaps to the opposite corner of the canvas
  • In the Items panel, click the box next to Style, this will take you to the Symbol Settings window
    • Click Simple Fill
      • Change Symbol layer type from Simple Fill to Outline: Simple Line
      • Change the Color to a nice dark green
      • Increase the Stroke width to 5mm
      • Scroll to the bottom and tick the Draw line only inside polygon box

Legend

  • Add a Legend your map by clicking the Add Legend icon in the left menu, or navigating Add Item > Add Legend

The legend always has too much detail to start. Let’s clean it up.

  • In the Item Properties panel, change the Title to Legend
  • Under Legend Items untick Auto update
    • Click the drop down next to Artefacts, select the empty item, and then click the red – to remove it
    • Remove the Imagery and the OpenStreetMap layer too
    • Right click on Artefacts and select Hidden, we don’t need to see the group name
    • Double click on Project_area and rename it to Project Area
  • Scroll down to Fonts and Text Formatting, under Legend Title click the Title font button
    • Change the Size to 13
      • You can change the Item Labels font size too, but 12 is fine here
  • Scroll down to Spacing
    • Change Legend Title Space below to 2
      • You can change the Legend Items space between symbols too, but 2.5 is fine here

North Arrow

  • Add a North Arrow your map by clicking the Add North Arrow icon in the left menu, or navigating Add Item > Add North Arrow
    • Click and drag in the blank space under the map until you’re happy with the size of the arrow
    • In the Item Properties panel, under the SVG Images box, type arrow in the search bar
      • Choose a North arrow you like

Scalebar

  • Add a scale bar to your map by clicking the Add Scale Bar icon in the left menu, or navigating Add Item > Add Scale Bar
    • You can click and drag in the blank space under the map, although the scale bar size will be set in a moment
    • In the Item Properties panel, choose the appropriate Scalebar units - usually Metres or Kilometres
      • Under Segments, change the right Segments from right 2 to right 4
      • Change Fixed width to 50 units (on this map, I have used 50 metre intervals, as that feels understandable)

Finessing

You will remember that we orignally made the points and lines quite large, but you will see that on this export map they are a more reasonable size. This is because we set them to millimetres, which will scale with our screen resolution when we zoom on the original map, but will scale to the size of our fixed dimensions A4 page in the Layout Manager.

Our point labels need to be resized too. Return to the qgis_reports window and try changing their font size to 12 in the Labels tab of the Layer Styling panel.

If the change doesn’t flow through when you return to the Layout Manager/Project Map window, try clicking the refresh button in the top menu.

Move anything you need around to get it looking sharp. You could try using Guides if needed.

Save your project.

  • Layout > Save Project

Export options

Now that we’re done we can export. Generally to PDF or Image. Today we will use image.

  • Layout > Export as Image...
    • You will see a popup warning about WMS servers. Some tile services have limits to the size of file you can export like this. If you exceed it, your basemap will be blank.
    • Click OK
  • Navigate to your project’s output folder, and give the file a meaningful name “Brisbane Botanic Gardens Map”, click Save
  • The Export resolution should automatically be a print quality 300dpi, and the width and height were set by our A4 selection.
  • Click Save
  • Navigate to and open your file to make sure it worked!

Save a Map Template

This is crucial! Save your hardwork for next time!

  • Layout > Save as Template...
  • Navigate to a folder you can easily find again, such as a broader QGIS folder.
  • Give it a meaningful name “Report_Map_Template
  • Click Save

Load a Map Template

Next time you need to make an export you can load your template in.

Open an old QGIS Project.

  • Navigate to Project > Layout Manager...
    • Under New from Template change Empty Layout to Specific, click the three dots and navigate to your Report_Map_Template, select it, and click Open
    • Click Create
    • Give the layout an appropriate name, and click OK
  • This will open the Layout Manager

You will see that the inset and main maps are in the wrong location, the title is wrong, the scale bar is off, and the Legend is empty. But you know how to fix these!

Map Scale

  • Navigate back to your QGIS window
    • Right click on the most suitable layer and select Zoom to Layer(s)
  • Navigate back to your Layout Manager window
    • Click the Main from the Item panel, and click the Item Properties panel
    • Click the first orange arrow button to Set Map Extent to Match Main Canvas Extent
    • Click the third orange arrow button to Set Map Scale to Match Main Canvas Scale
      • The other buttons do the reverse
    • Round the Scale up to a nice round number
  • Fix the inset map too

Scalebar

  • Click the Scalebar from the Item panel
  • In the Item Properties panel, change Scalebar units to Metres or Kilometres - Change Fixed width to an appropriate unit

Legend

  • Click the Legend from the Item panel
  • In the Item Properties panel, under the Legend Items box and click the green + to add a layer
    • Double click on and rename the layer if needed
    • Repeat for all layers you need to list

Title

  • Click the Title from the Item panel
  • In the Item Properties panel, under the Main Properties rename the title

And that’s it, you now have another map looking the way you want it, without too much hassle.

Feedback

Please visit our website to provide feedback and find upcoming training courses we have on offer.

More Data Sources

Aerial Imagery

There are a few places you can aquire aerial photography, today we will look at two sources, one is freely available Government Data from QImagery, the other is accessible from using your UQ credentials.

  • Go to QImagery
  • Read and tick the “I acknowledge I have read and agree to the Terms & Conditions” box, and click Get Started
  • Click the Search button, select ‘locality, town or city’ and search for “St Lucia” in the “Enter search term” search box and select the first result
  • It will zoom to your selected location then click the newly appeared Search button
  • From here you can select from a wide array of images of QLD over many years.
  • Click one of the drop-downs and hover over the options to see where those images are located. Preview the image by clicking View.
  • You can then download your desired images by clicking “Download” and selecting TIFF (georeferenced)
  • Move the TIFF file(s) to your project folder, and open them in QGIS

You can also get historical images from Geoscience Australia’s Historical Aerial Photo (HAP) Collection

Georeferencing

I will be happy to go over this in person, but if you need a guide, here is the QGIS how to

More Web Mapping Services

Add any of these URLs via ArcGIS REST Servers in QGIS

QLD Gov Aerial Basemap

QLD Gov Roads

QLD Heritage Areas

More QLD Gov Services

Brisbane/SEQ Utilities

BCC Data

Random User’s Data

10000+ Searchable Feature Layers from ArcGIS

NearMap API