Isochrone Maps with OSMnx + Python

Check out the journal article about OSMnx.

How far can you travel on foot in 15 minutes? Urban planners use isochrone maps to show spatial horizons (i.e., isolines) that are equal in time. Isochrones depict areas according to how long it takes to arrive there from some point. These visualizations are particularly useful in transportation planning as they reveal what places are accessible within a set of time horizons.

We can create isochrone maps for anywhere in the world automatically with Python and its OSMnx package:

OSMnx map of isochrone isolines in Berkeley California's street network

This travel time map shows how far we can walk in 5, 10, 15, 20, and 25 minutes from an origin point in downtown Berkeley, given an average walking speed of 4.5 km/hour (about 2.8 miles/hour). We can also visualize this by which points along the network we can reach within 5, 10, 15, 20, and 25 minutes:

OSMnx map of isochrone points in Berkeley California's street network

You can create your own travel time maps for any city in the world by following this example in the new OSMnx examples GitHub repo. OSMnx is a Python package for easily downloading, analyzing, and visualizing OpenStreetMap street networks anywhere in the world. Installation instructions and demonstrations are on GitHub.

2 thoughts on “Isochrone Maps with OSMnx + Python”

  1. This is magnificent… the easiest open-source implementation of isochrones for street networks that I’ve tried.

    I’m trying to figure out if there is a straightforward way of calculating the travel times to each individual node and then exporting these for use in something like Arc?

    1. Yes. You need to put a travel time attribute on each edge, like in the example here. Then run networkx.shortest_path, providing a source node but not a target node (this will calculate shortest paths from the source node to every node in the graph). Finally, sum the travel time attributes of the edges that compose each path.

Leave a Reply

Your email address will not be published. Required fields are marked *