Skip to content

activetravel-inverness/open-source-routing-machine

Repository files navigation

ActiveTravel Inverness - Open Source Routing Machine

This project is a series of Dockerfiles with a compose/stack deploy script that builds and starts an active travel directions service for the Inverness area.

Components

It is constructed from 4 main components:

Walking Directions

osrm-backend-foot

An extension of the osrm-backend image, this:

  • downloads the Scotland OSM extract from geofabrik
  • queries Nominatim for the "bounds" of the Inverness area
  • creates a smaller OSM extract for just the Inverness area
  • builds a routing graph for the Inverness area for generating walking directions

Cycling Directions

osrm-backend-bicycle

As with the previous Walking Directions, this is an extension of the osrm-backend image but this time it creates a routing graph suitable for calculating cycling directions in the Inverness area.

Reverse Proxy

osrm-nginx-reverse-proxy

The OSRM project server can only load one routing graph at a time, so we have to start two separate OSRM servers to provide both walking and cycling directions. These servers are hidden behind a reverse proxy to make them appear as parts of a single service.

This reverse proxy is an extension of the standard nginx image, so it's also used to serve any static assets we may require.

Example App

Walking/Cycling Directions Comparison

This is a small single page application that can be used to compare the walking and cycling directions generated by the routing servers. It's been pre-configured with a route from the marked bicycle parking within the car-park at the top of Raining's Stairs and the bicycle parking on Inglis Street. This allows for a comparison of the routes via Market Brae Steps on foot and by Stephen's Brae on bicycle.

Running the stack

docker-compose build
docker stack deploy -c docker-compose.yml ati