Office Move Isochrone Map

I’ve always wanted to make an Isochrone map and until now I haven’t had a good opportunity to practice at it. That all changed when a company I do business with moved their offices from a location in downtown Denver, Colorado to another office in the south suburbs.

This will affect the commutes of many employees. It is a great example of a situation in which a map can visualize a problem.

Isochrone Lines

For those who are learning this for the first time, an isochrone map shows how far a distance can be traveled in measurements of time. They are lines that radiate from a central point like contour lines. Routes that are easier to travel will be extended further out. These maps are used in urban planning to understand and analyze travel paths.

Wikipedia has some more examples of Isochrone maps. There are occasionally some posted to /r/MapPorn, such as this map of Travel Time to Johannesburg that won second place in a monthly map contest.

Map Design

I chose to use two maps to make the comparison easier. They are both at the same scale and use the same legend.

For this map I chose increments of 15, 30, and 45 minutes. I colored the areas in a familiar green, yellow, red color scheme. There is a subtle inner shadow applied to each of these layers. This gives the map some texture. This also implies the difficulty of travel by associating it with uphill movement.

I used a slightly modified version of the Cali Terrain style from Mapbox for the basemap. I like this map because it has a lot of texture. The mountains have nice shadowing with this style. There is a satellite image base to this map. I increased the transparency to let it blend into the background.

Roadways with an obvious effect on pathing

I increased the thickness of the minor roadways to give more context to the map. The intention of this map is to give employees a way to evaluate the office move in reference to their own homes. It is crucial that everyone that looks at this can find their own home within a mile or less. I also dropped road sign symbols for the major roads. Minor roads should be familiar to all office employees and adding these would needlessly clutter the map.

Local cities and towns were added to give more context. I chose a smaller font for these to avoid cluttering the isochrone lines. A gentle shadow underneath helps them pop out more.

The legend has slightly gray colors to reduce its place in the hierarchy of map elements. The map should be self-explanatory on its own, and not need a bloated legend.

Data Collection

The hardest task in making this map was in getting the data. There are many places to get simple isochrone data without traffic conditions. However for the purposes of this map, that data isn’t that useful. I want to know how the commute will be during peak traffic conditions.

A call for help on Twitter directed me to this recent post on Digital-Geography. This was a great lead, an API with Isochronic data and traffic conditions. So I signed up for a free 90-day trial with and started building a Python script.

The previously mentioned article on Digital-Geography had a Python script, so I took a look and tried to implement it. Unfortunately it requires some esoteric libraries that I could not easily import into Pycharm.

A plain JSON file, but not very useful as it won’t drop into QGIS without some finesse.

With some minor editing though I could connect to the API and return a kind of JSON file. It wasn’t GeoJSON, but with some playing around and using a Python module called GeoJSON, I was able to turn it into a GeoJSON file.

This was the critical breakthrough. With a GeoJSON file I could easily import it into QGIS and start mapping. The full script is on GitHub

QGIS 3.0.0

QGIS has an excellent suite of effects in the “Draw Effects” tool

This project is also the first time I’ve used QGIS 3. So far, I really like it. It was much easier to export maps as a PDF. No more dealing with that finicky Print Composer. Bringing in the traffic GeoJSON files and the basemap was a breeze. There were never any projection issues, although I hardly had to do anything with the projection. I left it as good old EPSG: 4326. I did have to do some layer analysis functions, like using the difference  geoprocessing tool, and that worked easily.

I’m excited at the work that has gone into QGIS 3 and I hope it has a bright future.


Map Created March, 2018