This project is a visualization of OpenStreetMap data with Blender and Python as a 3D barplot. It creates an occurence heatmap of all points that are collected within a country with a certain tag.
OpenStreetMap (OSM) has a vast geospatial data set containing various tags and attributes besides the geometry. By using the Overpass API we can query for specific tags, filter specific areas and various other kinds of queries. In this case we want to query for tags within the boundary of a country. We are using the two-letter country codes and filter for a single OSM tag across all available OSM elements. You can see the various Map Features to get a grasp of the variety.
- Blender 2.5+
- overpy
In order to run this script you need to run
blender -b -P run_script.py
which runs the rendering in the background. You can also load run_script.py into Blender as a script and execute the program from there. You need to have the overpy package available in your Python distribution which is accessed by Blender. I described in this article how to use Anaconda in Blender, which is handy for installing and using additional python packages.
You can edit the settings within the render_osm_data.py under the # Settings
part. The script can do both render frames of an animation (rotation around the barplot) or render a single frame. You can also load and save the points as a GeoJSON with the utils_osm.py script.