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 fourth – and last – week of this challenge, detailing and showing the different maps I created – usually in Python using various tools of spatial analytics and Geospatial data.
In this article, all images were created by the author.
Day 22 – ๐๐จ๐ซ๐ญ๐ก ๐ข๐ฌ ๐๐จ๐ญ ๐๐ฅ๐ฐ๐๐ฒ๐ฌ ๐๐ฉ
I have wrestled a lot with this piece, both in terms of topic and visuals. In the end, I defaulted to my background in Physics and decided to draw up the Earth’s magnetic field with its Main Field Declination lines. These lines, as magnetic poles, can either be positive or negative. The Earth’s magnetic north pole is defined by these lines – which is not always up. Its moving! In recent years, it started migrating from the Canadian Arctic towards Russia at a speed of several kilometres per year.
Day 23 – 3๐
My first 3D map ever – so I kept the data relatively simple and went for downtown Budapest home, particularly District V. and District VI. in Pest and visualised its building height profile based on ATLO s Budapest Open Data Atlas. As for the tech part, I used Python as always and finally learned the basics of Pydeck to create this piece. Enjoy the interactive version here, each building height being proportional to its actual height, which information is also encoded in the colour sharing:.
For locals – its reassuring to see the Parlament and the Basilica as the highest buildings!
Day 24โ Black and White
I finally created my first ridge map in my black and white map following several great examples on beautiful Joy-division album-cover-styled Maps. I used the Python version implemented by Colin Carroll. To the technical end, the elevation data used by ridge_map comes from NASA’s Shuttle Radar Topography Mission. The only slight change I added in my notebook is that I hooked the bounding box part up to OSMNx, so now one just has to type the name of the area they wish to visualise.
Beautiful tool and results; enjoy the view of Italy here:
Day 25โ Antarctica
This was a tricky one – so few data available. I am exceptionally curious about others’ posts! As for myself, I ended up simply visualising a 125m resolution SAR image of the whole continent provided by the National Snow and Ice Data Center. The false color tones correspond to different morphological properties, as the documentation puts it:
[](https://daacdata.apps.nsidc.org/pub/DATASETS/nsidc0103_radarsat_sar/geoTIF_V2/ https://nsidc.org/sites/default/files/nsidc-0103-v002-userguide_0.pdf)”๐๐ฉ๐ฆ 25 ๐ฎ ๐ช๐ฎ๐ข๐จ๐ฆ ๐ต๐ช๐ญ๐ฆ๐ด ๐ฑ๐ณ๐ฆ๐ด๐ฆ๐ณ๐ท๐ฆ ๐ข ๐ต๐ณ๐ถ๐ฆ ๐ฒ๐ถ๐ข๐ฏ๐ต๐ช๐ต๐ข๐ต๐ช๐ท๐ฆ ๐ฎ๐ฆ๐ข๐ด๐ถ๐ณ๐ฆ ๐ฐ๐ง ๐ฃ๐ข๐ค๐ฌ๐ด๐ค๐ข๐ต๐ต๐ฆ๐ณ ๐ธ๐ฉ๐ช๐ค๐ฉ ๐ฎ๐ข๐บ ๐ฃ๐ฆ ๐ฅ๐ช๐ณ๐ฆ๐ค๐ต๐ญ๐บ ๐ณ๐ฆ๐ญ๐ข๐ต๐ฆ๐ฅ ๐ต๐ฐ ๐ด๐ช๐จ๐ฎ๐ข-๐ฏ๐ข๐ถ๐จ๐ฉ๐ต. ๐๐ฐ๐ณ ๐ต๐ฉ๐ฆ ๐ฐ๐ต๐ฉ๐ฆ๐ณ ๐ฑ๐ณ๐ฐ๐ฅ๐ถ๐ค๐ต๐ด, ๐ฆ๐ข๐ค๐ฉ ๐ฑ๐ช๐น๐ฆ๐ญ’๐ด ๐ช๐ฏ๐ต๐ฆ๐ฏ๐ด๐ช๐ต๐บ ๐ฒ๐ถ๐ข๐ญ๐ช๐ต๐ข๐ต๐ช๐ท๐ฆ๐ญ๐บ ๐ณ๐ฆ๐ฑ๐ณ๐ฆ๐ด๐ฆ๐ฏ๐ต๐ด ๐ช๐ต๐ด ๐ณ๐ข๐ฅ๐ข๐ณ ๐ฃ๐ข๐ค๐ฌ๐ด๐ค๐ข๐ต๐ต๐ฆ๐ณ ๐ช๐ฏ๐ต๐ฆ๐ฏ๐ด๐ช๐ต๐บ, ๐ฃ๐ถ๐ต ๐ข๐ค๐ต๐ถ๐ข๐ญ ๐ฃ๐ข๐ค๐ฌ๐ด๐ค๐ข๐ต๐ต๐ฆ๐ณ ๐ท๐ข๐ญ๐ถ๐ฆ๐ด ๐ฉ๐ข๐ท๐ฆ ๐ฃ๐ฆ๐ฆ๐ฏ ๐ข๐ณ๐ฃ๐ช๐ต๐ณ๐ข๐ณ๐ช๐ญ๐บ ๐ข๐ฅ๐ซ๐ถ๐ด๐ต๐ฆ๐ฅ ๐ต๐ฐ ๐ช๐ฎ๐ฑ๐ณ๐ฐ๐ท๐ฆ ๐ฎ๐ฐ๐ด๐ข๐ช๐ค ๐ช๐ฎ๐ข๐จ๐ฆ ๐ฒ๐ถ๐ข๐ญ๐ช๐ต๐บ. ๐๐ข๐ณ๐ช๐ข๐ฃ๐ญ๐ฆ๐ด ๐ข๐ง๐ง๐ฆ๐ค๐ต๐ช๐ฏ๐จ ๐ณ๐ข๐ฅ๐ข๐ณ ๐ฃ๐ข๐ค๐ฌ๐ด๐ค๐ข๐ต๐ต๐ฆ๐ณ ๐ช๐ฏ๐ค๐ญ๐ถ๐ฅ๐ฆ ๐ด๐ถ๐ณ๐ง๐ข๐ค๐ฆ ๐ณ๐ฐ๐ถ๐จ๐ฉ๐ฏ๐ฆ๐ด๐ด, ๐ต๐ฉ๐ฆ ๐ด๐ถ๐ณ๐ง๐ข๐ค๐ฆ ๐ฎ๐ข๐ต๐ฆ๐ณ๐ช๐ข๐ญ’๐ด ๐ฅ๐ช๐ฆ๐ญ๐ฆ๐ค๐ต๐ณ๐ช๐ค ๐ฑ๐ณ๐ฐ๐ฑ๐ฆ๐ณ๐ต๐ช๐ฆ๐ด, ๐ข๐ฏ๐ฅ ๐ต๐ฉ๐ฆ ๐จ๐ฆ๐ฐ๐ฎ๐ฆ๐ต๐ณ๐บ ๐ฃ๐ฆ๐ต๐ธ๐ฆ๐ฆ๐ฏ ๐ต๐ฉ๐ฆ ๐ด๐ฑ๐ข๐ค๐ฆ๐ค๐ณ๐ข๐ง๐ต ๐ข๐ฏ๐ฅ ๐ต๐ข๐ณ๐จ๐ฆ๐ต. ๐๐ฐ๐ณ ๐ฎ๐ฐ๐ณ๐ฆ ๐ช๐ฏ๐ง๐ฐ๐ณ๐ฎ๐ข๐ต๐ช๐ฐ๐ฏ, ๐ด๐ฆ๐ฆ ๐๐ฆ๐ค๐ฉ๐ฏ๐ช๐ค๐ข๐ญ ๐๐ฆ๐ง๐ฆ๐ณ๐ฆ๐ฏ๐ค๐ฆ ๐ฐ๐ฏ ๐๐๐ ๐๐ฉ๐ฆ๐ฐ๐ณ๐บ/๐๐ฏ๐ต๐ฆ๐ณ๐ฑ๐ณ๐ฆ๐ต๐ช๐ฏ๐จ ๐๐ฎ๐ข๐จ๐ฆ๐ด."
Day 26โ Minimal
So here we went minimal – and my minimalistic map is my all-time favourite, Budapest, especially its elevation contour lines collected from the Budapest Open Data Portal. The map clearly shows how the Danube split the city in half, how plain the Pest side is on the right (at around 100m above sea level), and how the Buda hills look down on it from a whopping height of 500m!
Day 27 – Dot
For my dot map, I again went for the Budapest Open Data Portal, which has a nice rasterised population map of Budapest (for more on population raster data, also check my tutorial on TDS)! Then, I turned each grid cell into the POI of its polygon and drew each POI with a marker with a size proportional to the number of inhabitants in the corresponding grid cell. Then, I coloured each dot red, blue, and white at random to give it this slightly old-school 3d vibe (I also have to admit, I became the biggest one of the neon red-blue colour palette this year, somewhat inspired by Star Wars).
Day 28โ Is this a chart or a map?
Undoubtedly, this was the strangest topic. Should I create a map or not? In the end, I decided to recreate one of my favourite map derivative visualisations, originally crafted Geoff Boeing. This map essentially shows how much a particular city – here, a whole bunch of European cities – stretches out. This can easily be captured by measuring the total length of road segments whose orientation falls into a certain bin (e.g. between 0 and 5 degrees). Then, turning these into polar bar plots, we arrive at this interesting digital footprint of city road networks:
Day 29 – Population
Here I am recapping my previous article, ๐๐ฑ๐ฉ๐ฅ๐จ๐ซ๐ข๐ง๐ ๐๐๐ซ๐ ๐-๐ฌ๐๐๐ฅ๐ ๐๐๐ฌ๐ญ๐๐ซ ๐๐จ๐ฉ๐ฎ๐ฅ๐๐ญ๐ข๐จ๐ง ๐๐๐ญ๐, published on Towards Data Science, where I explore two global population data sets available in raster format, and show how to visualize and process them at global, country, and city level as well:
"๐ ๐ฉ๐ข๐ท๐ฆ ๐ฐ๐ง๐ต๐ฆ๐ฏ ๐ด๐ฆ๐ฆ๐ฏ ๐ฃ๐ฆ๐ข๐ถ๐ต๐ช๐ง๐ถ๐ญ ๐ฑ๐ฐ๐ฑ๐ถ๐ญ๐ข๐ต๐ช๐ฐ๐ฏ ๐ฎ๐ข๐ฑ๐ด ๐ค๐ช๐ณ๐ค๐ถ๐ญ๐ข๐ต๐ช๐ฏ๐จ ๐ฐ๐ฏ๐ญ๐ช๐ฏ๐ฆ; ๐ฉ๐ฐ๐ธ๐ฆ๐ท๐ฆ๐ณ, ๐ ๐ถ๐ด๐ถ๐ข๐ญ๐ญ๐บ ๐จ๐ฐ๐ต ๐ด๐ต๐ถ๐ค๐ฌ ๐ข๐ต ๐ด๐ฐ๐ฎ๐ฆ ๐ต๐ฆ๐ค๐ฉ๐ฏ๐ช๐ค๐ข๐ญ ๐ฑ๐ข๐ณ๐ต๐ด, ๐ญ๐ช๐ฌ๐ฆ ๐ท๐ช๐ด๐ถ๐ข๐ญ๐ช๐ป๐ช๐ฏ๐จ ๐ฐ๐ต๐ฉ๐ฆ๐ณ ๐ฎ๐ข๐ฑ ๐ด๐ฆ๐จ๐ฎ๐ฆ๐ฏ๐ต๐ด ๐ต๐ฉ๐ข๐ฏ ๐ด๐ฉ๐ฐ๐ธ๐ฏ ๐ช๐ฏ ๐ต๐ฉ๐ฆ ๐ต๐ถ๐ต๐ฐ๐ณ๐ช๐ข๐ญ ๐ฐ๐ณ ๐ต๐ถ๐ณ๐ฏ๐ช๐ฏ๐จ ๐ต๐ฉ๐ฆ ๐ญ๐ข๐ณ๐จ๐ฆ-๐ด๐ค๐ข๐ญ๐ฆ ๐ณ๐ข๐ด๐ต๐ฆ๐ณ ๐ฅ๐ข๐ต๐ข ๐ช๐ฏ๐ต๐ฐ ๐ฎ๐ฐ๐ณ๐ฆ ๐ค๐ฐ๐ฎ๐ฑ๐ถ๐ต๐ข๐ต๐ช๐ฐ๐ฏ-๐ง๐ณ๐ช๐ฆ๐ฏ๐ฅ๐ญ๐บ ๐ท๐ฆ๐ค๐ต๐ฐ๐ณ ๐ง๐ฐ๐ณ๐ฎ๐ข๐ต๐ด. ๐ ๐ฐ๐ท๐ฆ๐ณ๐ค๐ฐ๐ฎ๐ฆ ๐ด๐ฐ๐ฎ๐ฆ ๐ฐ๐ง ๐ต๐ฉ๐ฆ๐ด๐ฆ ๐ด๐ฉ๐ฐ๐ณ๐ต๐ค๐ฐ๐ฎ๐ช๐ฏ๐จ๐ด ๐ช๐ฏ ๐ต๐ฉ๐ช๐ด ๐ข๐ณ๐ต๐ช๐ค๐ญ๐ฆ ๐ธ๐ช๐ต๐ฉ ๐ข ๐ฉ๐ข๐ฏ๐ฅ๐ด-๐ฐ๐ฏ ๐จ๐ถ๐ช๐ฅ๐ฆ ๐ต๐ฐ ๐ต๐ธ๐ฐ ๐ฑ๐ณ๐ช๐ฎ๐ข๐ณ๐บ ๐จ๐ญ๐ฐ๐ฃ๐ข๐ญ ๐ฑ๐ฐ๐ฑ๐ถ๐ญ๐ข๐ต๐ช๐ฐ๐ฏ ๐ฅ๐ข๐ต๐ข ๐ด๐ฐ๐ถ๐ณ๐ค๐ฆ๐ด.
๐๐ต ๐ช๐ด ๐ข๐ญ๐ด๐ฐ ๐ช๐ฎ๐ฑ๐ฐ๐ณ๐ต๐ข๐ฏ๐ต ๐ต๐ฐ ๐ฏ๐ฐ๐ต๐ฆ ๐ต๐ฉ๐ข๐ต ๐ฃ๐ฆ๐ด๐ช๐ฅ๐ฆ๐ด ๐ต๐ฉ๐ฆ๐ช๐ณ ๐ข๐ฆ๐ด๐ต๐ฉ๐ฆ๐ต๐ช๐ค ๐ท๐ข๐ญ๐ถ๐ฆ, ๐ฑ๐ฐ๐ฑ๐ถ๐ญ๐ข๐ต๐ช๐ฐ๐ฏ ๐ฅ๐ข๐ต๐ข ๐ข๐ฏ๐ฅ ๐ฎ๐ข๐ฑ๐ด ๐ด๐ฉ๐ฐ๐ธ๐ช๐ฏ๐จ ๐ต๐ฉ๐ฆ๐ฎ ๐ข๐ณ๐ฆ ๐ข๐ฎ๐ฐ๐ฏ๐จ๐ด๐ต ๐ต๐ฉ๐ฆ ๐ฎ๐ฐ๐ด๐ต ๐ฃ๐ข๐ด๐ช๐ค ๐ช๐ฏ๐ง๐ฐ๐ณ๐ฎ๐ข๐ต๐ช๐ฐ๐ฏ ๐ข๐ฏ๐ฅ ๐ท๐ข๐ญ๐ถ๐ข๐ฃ๐ญ๐ฆ ๐ช๐ฏ๐ง๐ฐ๐ณ๐ฎ๐ข๐ต๐ช๐ฐ๐ฏ ๐ฐ๐ฏ๐ฆ ๐ค๐ข๐ฏ ๐จ๐ข๐ต๐ฉ๐ฆ๐ณ ๐ข๐ฏ๐ฅ ๐ช๐ฏ๐ค๐ฐ๐ณ๐ฑ๐ฐ๐ณ๐ข๐ต๐ฆ ๐ง๐ฐ๐ณ ๐ข๐ฏ๐บ ๐ถ๐ณ๐ฃ๐ข๐ฏ ๐ฅ๐ฆ๐ท๐ฆ๐ญ๐ฐ๐ฑ๐ฎ๐ฆ๐ฏ๐ต ๐ฐ๐ณ ๐ญ๐ฐ๐ค๐ข๐ต๐ช๐ฐ๐ฏ ๐ช๐ฏ๐ต๐ฆ๐ญ๐ญ๐ช๐จ๐ฆ๐ฏ๐ค๐ฆ ๐ต๐ข๐ด๐ฌ. ๐๐ฉ๐ฆ๐บ ๐ค๐ฐ๐ฎ๐ฆ ๐ช๐ฏ ๐ฑ๐ข๐ณ๐ต๐ช๐ค๐ถ๐ญ๐ข๐ณ๐ญ๐บ ๐ฉ๐ข๐ฏ๐ฅ๐บ ๐ช๐ฏ ๐ถ๐ด๐ฆ ๐ค๐ข๐ด๐ฆ๐ด ๐ด๐ถ๐ค๐ฉ ๐ข๐ด ๐ฑ๐ญ๐ข๐ฏ๐ฏ๐ช๐ฏ๐จ ๐ฏ๐ฆ๐ธ ๐ข๐ฎ๐ฆ๐ฏ๐ช๐ต๐ช๐ฆ๐ด, ๐ด๐ช๐ต๐ฆ ๐ด๐ฆ๐ญ๐ฆ๐ค๐ต๐ช๐ฐ๐ฏ ๐ข๐ฏ๐ฅ ๐ค๐ข๐ต๐ค๐ฉ๐ฎ๐ฆ๐ฏ๐ต ๐ข๐ฏ๐ข๐ญ๐บ๐ด๐ช๐ด, ๐ฆ๐ด๐ต๐ช๐ฎ๐ข๐ต๐ช๐ฏ๐จ ๐ต๐ฉ๐ฆ ๐ด๐ค๐ข๐ญ๐ฆ ๐ฐ๐ง ๐ถ๐ณ๐ฃ๐ข๐ฏ ๐ฑ๐ณ๐ฐ๐ฅ๐ถ๐ค๐ต๐ด, ๐ฐ๐ณ ๐ฑ๐ณ๐ฐ๐ง๐ช๐ญ๐ช๐ฏ๐จ ๐ฅ๐ช๐ง๐ง๐ฆ๐ณ๐ฆ๐ฏ๐ต ๐ฏ๐ฆ๐ช๐จ๐ฉ๐ฃ๐ฐ๐ณ๐ฉ๐ฐ๐ฐ๐ฅ๐ด, ๐ซ๐ถ๐ด๐ต ๐ต๐ฐ ๐ฎ๐ฆ๐ฏ๐ต๐ช๐ฐ๐ฏ ๐ข ๐ง๐ฆ๐ธ."
Day 30 – My favourite
To close off this year’s map challenge, I decided not to pick my personal favourite but take people’s top 12 favourite – cities, showing their road network based on OpenStreetMap via the OSMNx package. While now I have made the code totally reproducible, it was originally published with the Data Visualization Society in the article linked below, starting like:
"๐๐ฐ๐ข๐ฅ ๐ฏ๐ฆ๐ต๐ธ๐ฐ๐ณ๐ฌ๐ด ๐ข๐ณ๐ฆ ๐ฎ๐ข๐จ๐ฏ๐ช๐ง๐ช๐ค๐ฆ๐ฏ๐ต ๐ฃ๐ช๐ณ๐ฅ-๐ฆ๐บ๐ฆ ๐ท๐ช๐ฆ๐ธ ๐ง๐ช๐ฏ๐จ๐ฆ๐ณ๐ฑ๐ณ๐ช๐ฏ๐ต๐ด ๐ฐ๐ง ๐ค๐ช๐ต๐ช๐ฆ๐ด, ๐ข๐จ๐ฆ-๐ฐ๐ญ๐ฅ ๐ต๐ฐ๐ฑ๐ช๐ค๐ด ๐ฐ๐ง ๐ถ๐ณ๐ฃ๐ข๐ฏ ๐ฑ๐ญ๐ข๐ฏ๐ฏ๐ช๐ฏ๐จ, ๐ข๐ฏ๐ฅ ๐ด๐ต๐ข๐ฃ๐ญ๐ฆ ๐ค๐ฐ๐ณ๐ฏ๐ฆ๐ณ๐ด๐ต๐ฐ๐ฏ๐ฆ๐ด ๐ฐ๐ง ๐ด๐ฑ๐ข๐ต๐ช๐ข๐ญ ๐ฅ๐ข๐ต๐ข ๐ด๐ค๐ช๐ฆ๐ฏ๐ค๐ฆ. ๐๐ด ๐ข ๐ฑ๐ณ๐ช๐ฎ๐ข๐ณ๐บ ๐จ๐ฐ๐ข๐ญ ๐ฐ๐ง ๐ต๐ฐ๐ฅ๐ข๐บ’๐ด ๐ถ๐ณ๐ฃ๐ข๐ฏ ๐ฑ๐ญ๐ข๐ฏ๐ฏ๐ช๐ฏ๐จ ๐ช๐ด ๐ต๐ฐ ๐ฅ๐ฆ๐ด๐ช๐จ๐ฏ ๐ญ๐ช๐ท๐ข๐ฃ๐ญ๐ฆ, ๐ง๐ถ๐ต๐ถ๐ณ๐ฆ-๐ฑ๐ณ๐ฐ๐ฐ๐ง ๐ค๐ช๐ต๐ช๐ฆ๐ด ๐ท๐ช๐ข ๐ค๐ฐ๐ฏ๐ค๐ฆ๐ฑ๐ต๐ด ๐ญ๐ช๐ฌ๐ฆ ๐ต๐ฉ๐ฆ 15-๐ฎ๐ช๐ฏ๐ถ๐ต๐ฆ ๐ค๐ช๐ต๐บ, ๐ฉ๐ฆ๐ณ๐ฆ ๐ ๐ค๐ฐ๐ญ๐ญ๐ฆ๐ค๐ต ๐ต๐ฉ๐ฆ ๐ต๐ฐ๐ฑ ๐ญ๐ช๐ด๐ต๐ด ๐ฐ๐ง ๐ฎ๐ฐ๐ด๐ต ๐ญ๐ช๐ท๐ข๐ฃ๐ญ๐ฆ ๐ค๐ช๐ต๐ช๐ฆ๐ด ๐ข๐ฏ๐ฅ ๐จ๐ช๐ท๐ฆ ๐ข ๐ท๐ช๐ด๐ถ๐ข๐ญ ๐ฐ๐ท๐ฆ๐ณ๐ท๐ช๐ฆ๐ธ ๐ฐ๐ง ๐ต๐ฉ๐ฆ๐ช๐ณ ๐ณ๐ฐ๐ข๐ฅ ๐ฏ๐ฆ๐ต๐ธ๐ฐ๐ณ๐ฌ๐ด – ๐ธ๐ช๐ต๐ฉ ๐ข ๐๐ฉ๐ข๐ต๐๐๐ ๐ต๐ธ๐ช๐ด๐ต."
Its a wrap – this was the summary of my last week doing the #30DayMapChallange. The first year I went for the complete package, I learned a lot, had lots of fun, and also spent exhausting hours trying to make maps look nice, no matter the topic!
See the overview of the third week here!
See the overview of the second week here!
See the overview of the first week here!