Taking CycleStreets cycle routing another step further: surface quality, barriers, traffic calming, lighting

Taking CycleStreets cycle routing another step further: surface quality, barriers, traffic calming, lighting

We’re pleased to announce a series of upgrades to the routing that have been rolled out in the last few months.

We’ve extended the range of OpenStreetMap tags that the CycleStreets routing engine uses to find cycle routes. This has helped us improve the quality of the suggested bike routes in two main ways: by handling the surface descriptions of the ways and accounting for the time delay caused by various obstacles along a route, as well as some other enhancements. This is part of an overall project (to be fully launched very soon) to help merge in some great new data from the DfT [see our blog post about the testing phase which is now completed].

The routing engine now newly takes notice, or takes more notice, of these aspects (where the data exists in OpenStreetMap) when planning journeys:

  • Surface quality (e.g. avoiding muddy bridleways)
  • All manner of hurdles (gates, bollards, barriers, kerbs) that can impede a cyclist’s journey
  • The presence of traffic calming
  • Presence on a greater range of established route (e.g. mtb)
  • Streets with a cycle lane only on one side
  • Whether a path is lit

Based on the feedback we’ve seen recently these changes are already improving the quality of routes served to users, but as ever we continue to monitor, tune and enhance the various parameters.

Surface quality has a major impact on the suitability of some routes for cycling. A few bridleways make excellent cycle tracks but the majority are usually deeply rutted a sometimes difficult even to push a bike when dismounted. Now that we are now doing more in our analysis of the tags to look at surface quality we’ve been able to significantly downgrade our default assumptions for the rideability of footpaths, tracks and bridleways. Only if they have tags that indicate good ride quality, such as tracktype=grade1 or surface=paved or surface=asphalt are they promoted to be considered cyclable as embedded in our routing sieve.

We’ve introduced the concept of ‘hurdles’ to represent the various types of obstacle found on cycle routes. Originally the only types of hurdle we recognised were traffic lights at junctions or crossings. They introduced an average delay of 20 and 5 seconds into our route calculations. Following on from our collaboration with the Department for Transport and CycleCity Guides we’ve been able to extend the coverage to more types of hurdle such as bollards, chicanes, speed humps and stiles.

In the routing system the hurdles add an average delay to routes and so routes with fewer hurdles are preferred. All the hurdles encountered are now included in the route listing pages, such as journey #2,163,046 which lists several cattle grids and a toucan crossing on just over a mile long route through Cambridge.

OpenStreetMap detail strongly encouraged

We hope these changes will encourage more mappers to add more details to OSM. These will actively improve the quality of routing we can provide to users and ‘think like a cyclist’. Every cyclist can tell of a barrier that has caused them annoyance and delay, and adding the data to OSM will help them avoid that.

A wealth of this data is now available as open data for you to merge in (manually) as this new screencast explains. A major new set of pages and an introductory blog post will follow on this shortly now that the data is available!

The OSM tags we’ve added support for are:

  • barrier=bollard
  • barrier=cattle_grid
  • barrier=cycle_barrier
  • barrier=gate
  • barrier=horse_stile
  • barrier=motorcycle_barrier
  • barrier=kerb
  • barrier=kissing_gate
  • barrier=lift_gate
  • barrier=stile
  • crossing=pelican
  • crossing=toucan
  • crossing=uncontrolled
  • crossing=zebra
  • cycleway:left=lane
  • cycleway:right=lane
  • ford=yes
  • lit=yes|automatic
  • surface=asphalt
  • surface=paved
  • tracktype=grade(1-5)
  • traffic_calming=bump
  • traffic_calming=chicane
  • traffic_calming=cushion
  • traffic_calming=hump
  • traffic_calming=table
  • traffic_calming=yes

Detecting presence on a bicycle route via these (though several were already in place):

  • (icn|ncn|rcn|lcn|mtb)=name
  • (icn|ncn|rcn|lcn|mtb)_ref=name

Or via a way’s presence on a relation that has type=route,route=bicycle.

More tags (cycle lane widths) and more detailed support to follow – stay tuned…