#30DayMapChallenge 2024
This year, I once again took part in the #30DayMapChallenge. It's always a demanding yet rewarding experience, allowing me to experiment with new techniques and witness the incredible creativity of mappers worldwide. Initiated by Topi Tjukanov on Twitter in 2019, this challenge has become an annual November tradition.
I strive to create each map on the designated day, dedicating only a few hours per map. While the maps may not be perfect, I have noted potential improvements in the descriptions for each map. This year, I balanced the challenge with various commitments, including concerts (Mahler's Das Klagende Lied and Night of the Film Music) with the Nederlands Concertkoor (where I sing as a tenor), teaching MSc students at IHE Delft Institute for Water Education, and a trip to Cyprus for a keynote presentation at the 6th KIOS GIS Day "Advancing Open Science with GIS".
The themes
The themes for this year were announced at 30DayMapChallenge.com:
Let's have a look at each theme in the diary below.
1. Points
For this map featuring tumuli (burial mounds) in the Netherlands, I drew inspiration from a recent autumn walk in National Park De Utrechtse Heuvelrug, where I encountered Bronze Age tumuli. The map was created using QGIS, with additional support from GIMP and Inkscape. The tumuli points were sourced from OpenStreetMap via the QuickOSM plugin and added to the map as SVG markers. The AHN4 Digital Terrain Model (0.5 m resolution) was downloaded using the PDOK Services plugin. Although these areas are often forested (as shown in the map's picture), it's fascinating to see how the AHN4 data filtered out the trees. A colour ramp was applied, and the layer was blended with its hillshade. To highlight the subtle variations in the landscape, I also included an elevation profile.
Watch this video to download vector data from OpenStreetMap into QGIS with the QuickOSM plugin:
This video shows how to use the Elevation Profile tool in QGIS:
2. Lines
For this theme, I've created an animated map showing the the dynamic speed limits across the Netherlands. Our government recently increased the maximum speed limit from 120 to 130 km/h. While it sounds exciting, it's mostly symbolic politics. In our small country, there are only a few places and times where you can actually drive at 130 km/h. So, the difference is... well, not that significant. Furthermore, all the road signs indicating which time you can drive what speed can be quite confusing.
However, the relationship between higher speed limits, air pollution, and accidents is quite clear.
For the map, I've used open data from Rijkswaterstaat. The map was created in QGIS, using the Temporal Controller and the frames were converted to animated GIF using GIMP.
I received feedback regarding the speed of the animation. I opted for a fast animation to highlight the absurdity of the speed limits changing only at 6 am and 7 pm.
Andreas Neumann suggested a valuable improvement: using symbol levels to draw the thick lines at lower levels and the thinner white lines on top at higher levels.
Check the animation in the LinkedIn post.
3. Polygons
I've put together an animated map showing the cumulative number of objects launched into space. This includes satellites, probes, landers, crewed spacecrafts, and space station flight elements
The map was made with the Temporal Controller of QGIS, and open data from United Nations Office for Outer Space Affairs (UNOOSA) downloaded from Our World in Data. The World Map features UN borders for a global perspective.
Check the animation in the LinkedIn post. Some countries turn black at certain timesteps due to gaps in the data. I didn't have time to fix this, but this would certainly improve the animation.
This video shows how to create animated maps with QGIS:
Also check this step-by-step tutorial at GIS OpenCourseWare.
4. Hexagons
LiDAR point cloud data is usually interpolated to raster DEMs. For this theme, I've
used hexagons instead of rasters. Hexagons very useful for representing densities
I've used the AHN4 point cloud, downloaded from GeoTiles. A common product is the 0.5 m raster DSM, so I've created a 0.5 m hexagon layer in QGIS, converted the point cloud to a point vector layer and used the Join attributes by location (summary) tool from the Processing Toolbox to calculate the mean elevation and point count per hexagon.
If you want to learn more about point cloud processing and 3D visualisation in QGIS, check out my course at Udemy.
5. Journey
For this theme, I explored the brand-new Linear Referencing symbol layer type in QGIS 3.40 Bratislava and it works like a charm!
For the map, I utilized data from my Strava account and combined it with beautiful vector and raster tiles from MapTiler using the MapTiler plugin, which were easy to adjust to my needs.
The maps shows a fun day with my friends from De Coolsingers with two outdoor activities near La Roche-en-Ardenne in Belgium: a mountainbike trail and a kayak route at the Ourthe river.
If you're interested in creating your own outdoor maps with your Strava logs and the MapTiler plugin, check out this video tutorial:
For using the new Linear Referencing Symbol Layer Type, check this video:
6. Raster
My thoughts are with the victims and their families affected by the devastating floods in Spain. The floods, which began on Tuesday, October 29, have caused significant destruction, particularly in the Valencia region.
I've created a map that shows the accumulation of a uniform rainfall event of 500 mm over the area near Valencia. I've used QGIS, the PCRaster Tools plugin and the SRTM90 DEM.
You can create this easily yourself using QGIS, a DTM and the PCRaster Tools plugin. Here are the steps:
- Install PCRaster the PCRaster Tools plugin. See https://lnkd.in/gdb6P4rT.
- Download the DEM from OpenTopography using the OpenTopography DEM Downloader plugin. See this video.
- Reproject the DEM, because you can't use a Geographic Coordinate System (EPSG:4326) for DEM analysis. See this video.
- To use the PCRaster Tools, you need to convert the DEM to PCRaster format. That's necessary, because PCRaster is strict with the data types (value scales). Each tool checks if the value scale is what it expects as input. See this video.
- Fill sinks and calculate flow direction. With the PCRaster lddcreate tool you can do both in one go. See this video.
- Find the pour points/outlets. Use the PCRaster pit tool. See this video.
- Calculate the upstream area of these outlets using the PCRaster catchment tool.
- Calculate flow accumulation with the PCRaster accuflux tool. Here we assume that there's no infiltration and that the rainfall is 500 mm for each pixel in the area. See this video. Alternatively, you can simulate infiltration and use rainfall rasters. See this video for other PCRaster Tools you can use in this step.
- Download places from OpenStreetMap using the QuickOSM plugin.
- Style the layers and create a nice map.
7. Vintage
A vintage map of Rotterdam, the Netherlands.
To create the map, I've used the TopoTijdReis plugin in QGIS to explore some beautiful historic maps. I then sampled fill and line colours and patterns from a topographic map of 1948. Using the OpenStreetMap vector tile from MapTiler via the MapTiler plugin, I adjusted the colours of features with the samples using Symbol layer types Raster Image Fill, Raster Line and Raster Image Marker. Because a vector tile layer was used, I can create this map style for any place on earth with enough OpenStreetMap data!
The TopoTijdReis plugin is an amazing tool that lets you travel through time with historic topographic maps of the Netherlands in QGIS!
8. Data: HDX
Today's map shows the population distribution in the largest country of Africa, Algeria. I've used the WorldPop Population Counts raster of 2020, the OpenStreetMap populated places (cities only) and administrative boundaries from Kontur Inc., downloaded from the Humanitarian Data Exchange (HDX). Made with QGIS.
The message of the map was to show that most of Algeria has a very low population density, represented with yellow (desert). A logarithmic colour ramp was used. Because of the extreme numbers, only high/low were given in the legend, which was considered as enough information for the message of the map.
9. AI only
To generate this map with DALL-E 3, I've used the following prompt:
"Generate a hydrological map of the Rur catchment as if it was made with QGIS. It needs to show the river network and shaded relief. Also add title, scale bar, legend, north arrow and some places."
While this AI-generated map looks impressive, I still believe that following Chapter 7 of the book QGIS for Hydrological Applications, which I co-authored with Kurt Menke (available at Locate Press) results in a much better map of the Rur catchment!
The map triggered some interesting comments on LinkedIn.
10. Pen & paper
Today, I took a step back from digital tools and embraced the simplicity of pen, paper, and a ruler to create a strip map (also known as a fishbone map or stripkaart in Dutch). This type of map, often used in Scouting, shows a straight path with side roads marked at regular intervals.
Interestingly, strip maps are believed to have originated in New York, used by taxi drivers, and were also utilized by Allied forces during WWII. The beauty of these maps lies in their simplicity and the fact that they were useless to the enemy without knowing the start or end points.
For my map, I've revealed the starting location: IHE Delft Institute for Water Education in Delft, where I work. Can you figure out where the route will take you?
Check the LinkedIn post for the correct answer!
11. Arctic
Animation of the monthly variability of Arctic sea ice extent. This visualization, created using open data from the National Snow and Ice Data Center (NSIDC) and satellite imagery from MapTiler highlights the changes occurring in the Arctic region. Made with QGIS using the MapTiler plugin and the Temporal Controller.
As we approach COP29, it's crucial to recognize the urgent need for climate change mitigation measures. The shrinking Arctic sea ice is a stark reminder of the impact of global warming on our planet. Let's take action now to protect our environment for future generations!
Check the LinkedIn post to see the animation.
12. Time and space
Timelapse of monthly actual evapotranspiration and interception in the Gezira irrigation scheme in Sudan.
I've used open data from FAO WaPOR, downloaded in QGIS using the WaPlugin. To create the timelapse, I've used the new functionality in QGIS to use raster time series in the temporal controller with a time stamp per band, available since QGIS 3.38 Grenoble.
Useful resources:
- Introduction to WaPOR v3 MOOC at IHE Delft Institute for Water Education OpenCourseWare (also in Spanish and French).
- WaPlugin workshop at GIS OpenCourseWare.
- WaPOR data: https://data.apps.fao.org/
- Animate temporal rasters in QGIS video:
Watch the resulting animation in the LinkedIn post.
13. New tool
Today, I explored Aerialod 0.0.2 for the first time, which allows overlaying a colour image on a 3D model. The result? A stunning visualization of Rotterdam, the Netherlands with some fog effects.
Open Data: AHN4 0.5 m DSM and 8 cm aerial photograph, downloaded in QGIS via the PDOK Services plugin. Preprocessing done in QGIS.
- Download Aerialod for free.
- Video Tutorials by Alasdair Rae.
14. World map
The map highlights the diverse origins of the members of Nederlands Concertkoor (Dutch Concert Choir). The map, created using QGIS with country boundaries from Natural Earth, displays the countries of origin on a classic world map with two hemispheres. A big thanks to Klas Karlsson for his excellent tutorial on creating these maps, see this video. Data on the countries of origin was sourced during a rehearsal yesterday by colleague tenor John Tyler.
From today until Sunday, I'll be performing with the Nederlands Concertkoor and the Metropole Orkest at the Night of the Film Music in Ziggo Dome, Amsterdam. In addition to performing, I'll also be teaching GIS in the mornings at IHE Delft Institute for Water Education. It's going to be a busy few days, but I'll do my best to keep up with the #30DayMapChallenge!
15. My data
Lack of time today, but I managed to map the distribution of where members of Nederlands Concertkoor (the Dutch Concert Choir) live in the Netherlands.
Data: list of postal codes of members. After data cleaning I joined the data with the postal code map of the Netherlands from Centraal Bureau voor de Statistiek, downloaded via the PDOK Services plugin in QGIS.
And now the choir is ready on stage of Ziggo Dome Amsterdam to perform tonight with Metropole Orkest with Night of the Film Music... The concert yesterday was fantastic. 3 more to go...
16. Choropleth
This quick map shows watermelon production in kilograms per capita. Using data from Worldostats and country boundaries from Natural Earth, I've projected the map onto a globe with the QGIS Globe Builder plugin.
I've tried to incorporate watermelon cores using geometry generators.
Red on green doesn't make text very readable. I've used a watermelon green buffer around the text, which improved it a bit. A further improvement could be to use a less red text colour.
17. Collaborative map
I'm currently teaching GIS in the module "Introduction to Water Resources and Ecosystem Health" of the MSc Programme on Water and Sustainable Development at IHE Delft Institute for Water Education. In the module the students apply their knowledge to the transboundary Mara River Basin in Kenya & Tanzania.
If you're active in the Mara River Basin, please add any useful information to this collaborative map in Felt.
Felt is free for classes. Now the class has ended, a paid plan is required.
18. 3D
For today's challenge, I explored 3D mapping of the Erasmus statue in Rotterdam using the Luma AI app. Luma leverages AI to generate detailed 3D scenes from your mobile phone camera input. Check out the interactive scene here (use your mouse to move):
Luma uses Gaussian Splatting technology for generating its interactive 3D scenes. This method allows for efficient and high-quality rendering of 3D models.
It also allows you to download the 3D scene as GLB and OBJ file.
Edward Verbree, thanks for the tip!
19. Typography
In the past week, I was performing at Night of the Film Music with Nederlands Concertkoor and Metropole Orkest in Ziggo Dome Amsterdam. I was in the choir (tenor). Music from The Matrix (Neodämmerung), inspired me for this quick map using the Digital Rain style by Topi Tjukanov in QGIS. The style is available in the QGIS Style Hub.
This video shows how to use the QGIS Style Hub: https://lnkd.in/emsyPqbF
Here's our performance as source of inspiration:
20. Data: OpenStreetMap
I've arrived in Cyprus. I was invited by Marios Kyriakou to give a keynote presentation at the 6th KIOS GIS Day: Advancing Open Science with GIS. The title of my presentation is: Empowering Hydrologists: The Versatility of Open-Source GIS.
So I had little time for today's challenge. Fortunately, MapTiler came to the rescue again. I've used the OpenStreetMap vector tile and the Ocean RGB & Terrain RGB raster tiles in QGIS with the MapTiler plugin. Adding a legend is harder, so that's the only thing missing. I've received also some feedback on the map that the place names were a bit random/tricky. They were controlled by the default settings in the vector tile. Always good to check if they make sense for your map!
Looking forward to meet the GIS community here and explore Cyprus in the next days!
21. Conflict
For today's theme, I've created a map showing the UN Buffer Zone (the Green Line) that cuts through the historic center of Nicosia, Cyprus. This map highlights the ongoing division and the impact it has on the city's landscape.
Yesterday, after GIS Day organised by KIOS Research and Innovation Center of Excellence, we enjoyed a lovely dinner near one of the checkpoints.
The map was created in QGIS using the Dark Matter vector tile from MapTiler via the MapTiler plugin. Maybe the contrast of the background map could have made a bit higher. On dark screens it now looks mostly black with a green line.
22. 2 colours
When I arrived in Cyprus last Tuesday, I discovered they drive on the left side. Now, I'm spending a few days here on holiday, getting more used to it while driving a rental car. I could have been better prepared if I would have looked at a map like this one!
Made with QGIS. Data from World Atlas and world map from Natural Earth.
There was some discussion about driving regulations at Antarctica. I decided to remove it from the map. Also there were some mistakes in joining polygons with the data. For example, the Northern part of Cyprus was assigned to driving on the right side, while the whole island drives on the left side. These mistakes have been corrected in the map here.
23. Memory
I have fond memories of a month-long Interrail adventure with three high school friends at the end of our first year at university in July 1998. We kept a very detailed travel diary, but reproducing the exact railway route from memory was quite the challenge! This map follows selected railways from Natural Earth Data, with an adjusted OpenStreetMap vector tile from MapTiler as the backdrop. Made with QGIS.
We lived on a budget of 25 guilders, slept a lot on night trains, and sometimes even at stations. It was a fun and budget-friendly way to explore Europe!
24. Only circular shapes
Just returned from a wonderful trip to Cyprus! Last Friday, I hiked in the stunning Troodos Mountains around Mount Olympus, the highest point of Cyprus (1952 m). This adventure inspired today's elevation map in dot matrix style.
Using QGIS, I downloaded SRTM 3 Arc-Second data via the OpenTopography DEM Downloader plugin. After reprojection, I created a 1 km grid of points with sampled elevation values and styled them using the graduated renderer with a size range for the elevation classes.
25. Heat
Another quick map for today's theme: a heatmap of hot springs in Europe. Made with QGIS using open data from OpenStreetMap and a backdrop vector tile from Cartiqo via the MapTiler plugin.
But what exactly is a heatmap? A heatmap is a data visualization method that uses colour to represent the density or intensity of data points in a specific area. In this case, the map shows the concentration of hot springs across Europe, with warmer colours indicating higher densities. Check this video to learn how to make heatmaps with QGIS:
26. Projections
I'm quoting Jürgen Fischer for today's map: "Make maps, not war!"
Today's theme is all about projections, and what better way to visualize our love for maps than with the Bonne projection! This unique projection creates a heart-shaped world, perfectly symbolizing our passion for cartography.
Data from Natural Earth, made with QGIS.
27. Micromapping
Today, I've created a detailed map of Madurodam, a miniature park and tourist attraction in The Hague, Netherlands. Madurodam features scale models of famous Dutch landmarks, historical cities, and large developments.
This map, made with QGIS, shows the meticulous work of OpenStreetMap contributors who have actively mapped Madurodam. Additionally, I've provided 3D views of the area using AHN5 point cloud open data, the newest point cloud data for the Netherlands. I downloaded this data from GeoTiles.
A big thank you to the OpenStreetMap mappers for their dedication and contributions!
Watch this video to download point cloud data from GeoTiles:
28. The blue planet
I've created globes showing the rivers from HydroSHEDS and the bathymetry from the Ocean RGB raster tile, which was loaded into QGIS using the MapTiler plugin. The Globe Builder plugin was used to create the globes.
The result is a stunning visualization that shows the beauty and complexity of our planet's waterways and ocean depths.
For those interested in creating similar visualizations, check this tutorial at GIS OpenCourseWare.
And watch this video:
29. Data: Overture
For today's theme, I've crafted a map of Rotterdam, the Netherlands, that looks like it's carved out of wood.
Using QGIS, I downloaded the transportation and building layers from Overture Maps Foundation. I've used a public domain wood texture image that I found on the internet.
The process was seamless thanks to the detailed instructions and Python script from Qiusheng Wu, see this video:
30. Final map
It's a wrap! This month has been a fantastic journey with creative mappers from around the world taking on this amazing challenge.
For my final map, I built upon the map from Day 28. Instead of blue, I used different colours for each river basin, employing topological colouring in QGIS. To ensure no one misses their country, I opted for the Hammer & Eckert-Greifendorff projection instead of a globe. The Globe Builder plugin was once again instrumental in achieving this result.
I'm looking forward to participating again in 2025!
Happy mapping!