QGIS Map Design – Free Christmas DLC
It’s that time of the year again. When it’s dark and cold on the northern hemisphere, let’s grab a warm beverage of your choice and get mapping.
Inspired by the latest QGIS Open Day Freestyle Mapping Challenge, I set out to explore the Quantarctica project dataset. Today, I want to share with you the resulting map series. Like all recipes in QGIS Map Design, this blog post walks you through the process of creating these maps and provides all the resources to reproduce them yourself.
This recipe assumes familiarity with QGIS styling, labeling, and layout creating basics, so we can focus on exciting new tips and tricks.
Our map uses six layers of the Quantarctica dataset. The geographic context is provided by the ADD Simple basemap and Overview place name layers together with the South pole and Antarctic circle layers.
The historic context is provided by the Five historic expedition routes and Historic stations layers. To show the travel direction of the expedition routes, we can create a trail of small arrow symbols by combining a simple line with custom dash pattern and a marker line:
So far, the map is pretty crowded because we see all five expeditions at once.
Let’s set up the Atlas map series, so we can create a dedicated map for each expedition.
Atlas Map Series
The historic expeditions have been digitized as ten line features in order to be able to distinguish between sections of the routes traveled by sea, land, and even air:
Focusing on the five earliest expeditions, all of them contain sea routes. We can therefore set up the Atlas by filtering the route features to get only the five sea routes:
This setup will ensure that our Atlas will generate a map series with one map per expedition leader.
Make sure to activate the Altas preview mode now.
Filtering Routes & Stations
Back in the main QGIS window, we now can access the @atlas_feature to filter the routes layer accordingly. We want to show the sea route feature, as well as any other route feature that belongs to the same expedition leader:
Fun With Labels
So far, our map only shows basic labels for geographic features. In the following steps, we will add labels to the expedition routes and historical stations. Finally, we’ll use a rule-based labeling hack to put the finishing touches on our map.
Smooth Route Labels
Many of the expedition routes are anything but straight. They twist and turn and so do the letters of any labels we try to put on them. This effect becomes particularly prominent, when using large label fonts.
To create smoother looking labels, we can use the Geometry Generator (in the Label Placement tab) to create a smoother base line for labeling using an expression like:
smooth(simplify($geometry, 100000), 2)
To show the station names and operating years in different colors, we can use HTML label formatting. To do so, we need to enable “Allow HTML formatting” (in the Label Text tab). Then we can build our label expression.
For this label, we combine three column (name, year_start, and year_end). Since year_end is empty (NULL) for some stations, it is important that we use the concat function (instead of the || operator). Otherwise, stations with a NULL value would not be labeled at all:
concat("name", '? <span style="color:#307f7f">(', "year_start", '-', "year_end", ')</span>' )
The ? character is used to insert a line break using the “Wrap on character” setting (in the Label Formatting tab).
Last, but not least, for some (completely optional) Christmas spirit: let’s make it snow!
The snowflake styling trick used in this map is based solely on Unicode snowflake symbols and rule-based labeling.
By creating multiple rules that all apply to the same (land) polygons in our base map, we can create a random snowflake pattern. Randomness is introduced on different levels:
- The label font size is randomized, e.g. rand(15, 60).
- The label rotation is randomized by using the “free (angled)” placement mode.
Different rules have different priorities, with higher priority values assigned to label rules with larger font sizes.
The snowflake color can be adjusted by changing the project variable flake_color (in Project Properties | Variables). This way, we can change the color of all snow flakes at once, without having to edit every individual rule.
So Much More
There’s much more to discover in this project. For example, the label substitutions used to shorten the island labels or the decorations added in the layout:
So go grab the project and happy mapping!
Please ensure that you acknowledge or cite Quantarctica and the Norwegian Polar Institute if you use their dataset in your work.