Mapping Icebergs in QGIS

SHARE:


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. :)

Datasets Needed

  1. 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

  2. World Borders vector file available from thematicmapping.org.

  3. Graticules vector file from naturalearthdata.com. I used the ones with 10 degree and 20 degree intervals.

Set the Map Canvas Background Color to Dark Gray

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.

Use a South Pole Orthographic Projection CRS

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.

Style the World Borders

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.

Gradient Fill

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.

Glowing Coasts with Draw Effects

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.

Style the Graticules

For the graticules, I chose a green (#02db00) color.

20-degree interval graticules

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

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.

Style 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.

Create a GIF of the Icebergs over time using the Time Manager plugin

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! :)

SHARE:

comments powered by Disqus

You may also like:

Learning Tools on Web GIS: Introduction to Web Maps and Web GIS

Geotagged Photos in QGIS

Bivariate Choropleth Maps in QGIS

#PistaNgMapa: Beyond the Basics with QGIS 3.X

#PluginFridays: MapSwipe Tool