The world’s leading publication for data science, AI, and ML professionals.

My Second Week of the #30DayMapChallange

My personal take on the second week of the #30DayMapChallange, a daily social challenge aimed at designing thematic maps every day in…

Since 2019, the Geographic Information System (GIS) and spatial analytics community have been quite busy each November – thanks to a fun challenge called the #30DayMapChallange. Each year, this challenge has a thematic schedule, proposing a topic that should be the primary directive for map visualisation to be posted on that particular day. While the pre-defined daily topics certainly mean a constraint for the creative mind, they also help participants to find mutual interest, share data sources, and express individual styles visually and technologically.

Here, I would like to briefly overview my second week of this challenge, detailing and showing the different maps I created – usually in Python.

In this article, all images were created by the author.

Day 8 – Africa

To kick off the second week, I built on the dataset of [African rivers](https://lnkd.in/dZ6rZeGG https://lnkd.in/dUZFPdBN) published by the United Nations FAO. Their GIS file contains almost 200k line polygons belonging to rivers attributed with a couple of parameters, such as their major river basin or the Strahler stream order of each arc. I used the letter to set both the colour and width of each river; the higher the rank, the darker and thinner the river, going form first-order streams to 8th order primary trunks.

Day 9 – Hexagons

This one is a bit convoluted but is based on Uber’s H3 hexagons. First, I collected data from the IUCN Red List of Threatened Species geospatial database covering the habitat of all the (about 5k) mammalian species habitats in Polygon formats. Then, I computed the spatial overlap of each species’ habitat by doing pairwise comparisons. Due to the complexity of the polygons, this would have taken forever if using simple GeoPandas overlays, so instead, I split each of the habitats into hexagons and simply captured the overlay of habitats as the number of shared hexagon IDs.This way, I managed to define the network nodes as species and their network connection as the Jaccard similarity index of their sets of hexagon IDs (the relative ratio of their shared habitats), which, then, I could use to visualise them using Gephi.

Finally, network nodes are sized based on their degree centrality – the number of other species they share their habitats with. Besides, the colours of each node – again, species – are coloured based on the primary colour of its largest habitat country, giving this network graph a final touch as an actual world map.

Day 10 – North America

This map shows the road network of North America based on the Natural Earth data set, visualising 49,183 road segments and showing very neatly how the continent’s morphology and population density changes, with very sparse roads up north and neet grid structures in the more populated areas.

Day 11 – Retro

Here, the theme was retro – so I recapped a blast-from-the-past map from not so long ago, published by Towards Data Science, on the accessibility of publicly available defibrillator devices in Budapest and Vienna. The colour of each intersection encodes reachability time, from green to red, showing how much time does it takes to reach the nearest device on foot at a running pace, ranging from 0 minutes (green) to 10 minutes (red), capturing most critical areas by red patches.

Day 12 – South America

For day 12, I built my map using OpenStreetMap (OSMNx) and Wikipedia data. In particular, I collected the so-called Economic Complexity Index, which is a macro-economical indicator capturing the productive capabilities of a country. Using network theory, this metric is derived from countries’ international trading profiles and import and export patterns and measures the country’s economic stability and potential. As a measure quantifying entire countries in a simplified way, also allowing one to compare and rank countries, it has a long list of supporters and critics, but let’s leave that for another time. As for the map, as usual, I built it in Python, using OSMNx, Matplotlib, urrlib, and to get a nice final touch with a dark-mode base map, contextily.

Day 13 – Choropleth

With this map and the corresponding article, I posed and tackled a popular and crucial urban development question – green equality and accessibility of green areas. I explore these concepts using governmental open data about Vienna in this piece by computing the average area of green space per capita in the different neighbourhoods of Vienna and then relating it to the local financial situation. Originally published in Towards Data Science.

Day 14 – Europe

This map of Europe shows the population density of each country based on 100x100m modelled grid data published by WorldPop. As I wrote in the original article, where I show a tutorial on how to create Maps like this, I have often seen beautiful population maps circulating online; however, I usually got stuck at some technical parts, like visualising other map segments than shown in the tutorial or turning the large-scale raster data into more computation-friendly vector formats. I overcome some of these shortcomings in this article with a hands-on guide to two primary global population data sources. Read the full tutorial here.

This was the summary of my second week doing the #30DayMapChallange – two more weeks to go, so get ready for many more maps to come! Now, also with video and code tutorials, on my Patreon channel as well.


Related Articles