foss4g qgis qgis3 gis cartography time-manager
A friend showed me a post about creating a map of over 300 thousand historic iceberg locations in ArcGIS Pro and asked me if the same could be done in QGIS. The map above is my attempt at creating something similar using QGIS and the Time Manager plugin. This post details the steps – utilizing Draw Effects and some Data-driven styling – to create the map. :)
Iceberg data from “The Antarctic Iceberg Tracking Database”. Our friends from ESRI were kind enough to provide us with a feature layer merging all the data. I created a GeoPackage version that you can download here. If you want to use the original feature layer, it can be opened in QGIS by connecting to an ArcGisFeatureServer. The Feature Layer can be found here
World Borders vector file available from thematicmapping.org.
Graticules vector file from naturalearthdata.com. I used the ones with 10 degree and 20 degree intervals.
The first thing I did was set the canvas color to a dark gray(#494747) color. This can be done by changing the Background color in the General Settings of the Project Properties. Open the Project Properties via Project -> Properties or CTRL + SHIFT + P.
Afterwards, go to the General Settings tab and change the Background color option.
The background color of the map canvas should change to dark gray.
The next step is to choose a projection that will focus on the Antartic and highlight the icebergs. For this, I decided to use a South Pole Orthographic Projection. Since I couldn’t find one in QGIS, I simply created a custom CRS with the following projection definition:
+proj=ortho +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs
For more information on creating custom CRS in QGIS, you can check out this post
Afterwards, I set the project CRS to my custom CRS.
Our map canvas should now look like this:
The next step is to style our layers.
Let’s start with the world borders. For this step, I duplicated the world borders layer.
One will be used for the gradient fill and the other will be used for the glowing outline/coasts.
Use the Layer Styling Panel or right-click on layer -> Properties -> Symbology to style one of the world borders with a Gradient Fill.
Use the following options:
- Select Gradient fill as Symbol layer type
- Select Color ramp
- Select Radial as Gradient type
For the color ramp, use the following options
- Set Color 1 to dark gray (#494747) with 75% Opacity
- Set Color 2 to dark gray (#494747)
The resulting map should now look like this:
Now let’s style the coasts.
I decided to give the coasts a dark orange (#ff7f00) color with a glowing (or firefly) effect. The dark orange color works well with our dark gray background.
Use the Layer Styling Panel or right-click on layer -> Properties -> Symbology to style the duplicated world border layer.
Use the following options:
- Select Simple fill as Symbol layer type
- Set Fill color to transparent
- Set Stroke color to dark orange (#ff7f00)
- Check Draw effects under Layer Rendering
Click on the star button on the right of Draw effects to add an Inner and Outer Glow to the layer. For the color of the Inner and Outer glow, use dark orange (#ff7f00).
Our map should now look like this:
Before styling the graticules, duplicate the 10 degree interval graticule and put this layer before the world borders layers like so:
We’ll use this layer to create the blackish effect around our map. First, filter this layer so that only the outermost ring remains. You can do this with the filter:
“display” = ‘10 S’
This should result in the following:
Use the Layer Styling Panel or right-click on layer -> Properties -> Symbology to style this filtered graticule layer.
Use the following options:
- Select Simple line as Symbol layer type
- Set Stroke color to dark gray (#494747)
- Check Draw effects under Layer Rendering
Click on the star button on the right of Draw effects to add an Inner and Outer Glow to the layer. For the color of the Inner and Outer glow, use dark gray (#494747) with 100% Opacity.
The resulting map should now look like this:
Now let’s give our graticules a firefly effect similar to our coasts.
For the graticules, I chose a green (#02db00) color.
Use the Layer Styling Panel or right-click on layer -> Properties -> Symbology to style this 20-degree interval graticule layer.
Use the following options:
- Select Simple line as Symbol layer type
- Set Stroke color to green (#02db00)
- Select Solid line as Stroke style
- Check Draw effects under Layer Rendering
Click on the star button on the right of Draw effects to add an Inner Glow to the layer. For the color of the Inner glow, use green (#02db00) with 50% Opacity.
Next, we’ll style the 10-degree interval graticules
Use the Layer Styling Panel or right-click on layer -> Properties -> Symbology to style this 10-degree interval graticule layer.
Use the following options:
- Select Simple line as Symbol layer type
- Set Stroke color to green (#02db00)
- Select Dash line as Stroke style
- Check Draw effects under Layer Rendering
Click on the star button on the right of Draw effects to add an Inner and Outer Glow to the layer. For the color of the Inner glow, use green (#02db00) with 50% Opacity. For the Outer Glow, use green (#02db00) with 75% Opacity
After styling the graticules, the resulting map should look like:
Now we’ll go to the icebergs.
For the icebergs, we’ll use a simple marker symbology but we’ll vary the size of the symbol based on the size field of the iceberg. For the color, I decided on a cyan (#16f3d6) color
Use the Layer Styling Panel or right-click on layer -> Properties -> Symbology to style the icebergs layer.
Use the following options:
- Select Simple marker as Symbol layer type
- Use Data defined override for the Size
- Set Fill color to white
- Set Stroke color to cyan (#16f3d6)
- Check Draw effects under Layer Rendering
Data driven overrides allow us to set values of symbology variables (e.g. size) based on fields in the attribute table or expressions based on them. For the size of our iceberg markers, we’ll base it on the size field of our layer.
size/50000
Click on the star button on the right of Draw effects to add an Inner Glow to the layer. For the color of the Inner glow, use cyan (#16f3d6) with 70% Opacity.
The final map should look like:
Now that we’ve styled our layers. Let’s create a GIF of icebergs over time using the Time Manager plugin. Thankfully, the iceberg layer has a date field that is perfect for this.
Access the Time Manager plugin via Plugins -> Time Manager -> Toggle visibility. The Time Manager dock usually appears below the map canvas.
Click Settings and click Add layer
Use the following options:
- Select icebergs as Layer
- Select date as Start time
- Select No end time - accumulate features as End time
Activate the Time Manager by clicking on the ON button (leftmost). It should turn green.
- Set the Time frame start to 1997-01-01 00:00:00.000
- Set Time frame size to 1 year
Click Export video.
- Set the Output folder to the folder where you want your GIF and frames to be stored
- Select Animated gif (requires ImageMagick in path, Linux/OSX only) [Sorry Windows people. :(]
- Set the Animation frame delay to 500 [Other values will work]
Click OK and wait for your export to finish. If the export succeeds, you should have a GIF similar to the one at the top of this post.
For more information on the Time Manager plugin, you can check out Anita Graser’s (underdark) website.
That’s it. Play around with the styling and settings to see what look works best for you. If you have other maps that you want recreated in #QGIS, feel free to leave a comment below or contact me. Happy mapping! :)
foss4g foss4gph qgis gis presentation
foss foss4g opensource freeasinfreedom freesoftware
foss4g foss4gph thesis uaap mapping the geography of the uaap spatial analytics basketball basketball analytics
foss4g foss4gph qgis gis presentation
If you find my website or any of the materials I share useful, you can consider donating to the cause below.
Except when explicitly stated otherwise, this work and its contents by Ben Hur S. Pintor is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Other works (software, source code, etc.) referenced in this website are under their own respective licenses.
This site is powered by Jekyll and hosted on Github (view source)