My OSM node density visualization has just been updated to show the freshest OSM data!

A significant difference from the 2014 edition is that the density is now calculated as OSM-nodes per m² on the ground (as opposed to nodes per projected pixel in the previous version). If you want to learn more about why this change makes a difference, I’d strongly recommend the following article by Christoph Hormann (imagico).

The updated slippy map lets you chose between the layers of different years (always created around end of June of each year) as well as a display of what changed during each 12 month interval. For example you can see that in North America, there were some imports as well as some major import-cleanups going on during the last year:

Last, but not least: you can now find the source code and instructions to generate all of this in the repository on github:

Comment from imagico on 7 July 2016 at 17:40

Very nice.

The difference layers are somewhat confusing color wise - showing a color scale there would be helpful.

Comment from joost schouppe on 10 February 2017 at 17:37

Would it be very hard to get the node density of Europe on this grid? Would be kind of interesting to make a little analysis of the correlation between the two - and patterns of exceptions. Thinking about something like an analysis by clusters of squares like shown here (every slide adds or substracts 10% of the total European population) map

Comment from tyr_asd on 13 February 2017 at 13:30

@joost: nope. here you go: Code and freshly processed raw data is included. osmnodes-eu.geostatgrid.csv uses keys that are compatible with the grid ids from the pop dataset, but note that their “reference grid” doesn’t include cells with 0 population.

Comment from joost schouppe on 13 February 2017 at 13:41

Damn, there goes another week-end =) Thanks! Looking forward to playing around with this.

Comment from Jennings Anderson on 11 April 2017 at 18:45

Martin, these are so cool!

I’m trying to re-run some of these with mbtiles and mapbox-gl for smooth zooming:

My resolution, however is nowhere as good as yours! What were the settings that you used when you generate your highest zoom-level png?


Comment from tyr_asd on 12 April 2017 at 19:04

Jennings, I think I just run the commands as explained here (I’m not sure why it reads zoom=16 here – this should also be 15 or lower). That generates a 1 gigapixel (32768x32768) density map, which cut into tiles corresponds to max zoom level 7 on the slippy map:,places

I tried to use my tms tile source{z}/{x}/{y}.png with mapboxgl as well, and see similarly blurry results. Not sure what’s going on. Maybe it’s related to

Comment from Jennings Anderson on 12 April 2017 at 21:02

Thanks Martin, that’s really interesting… staying tuned.

Login to leave a comment