Donate using PayPal

Routing engine factors

When searching for a route the CycleStreets journey planning engine tries to find the smallest total score from the practical ways of getting from the start to the finish.

These factors are currently included:

  • Road/street type
  • Lengths of streets/paths
  • Hills and inclines
  • Cycle infrastructure
  • Path widths/quality
  • Barriers, obstructions
  • Land ownership
  • Surface type and quality
  • Route legibility
  • Delays caused by traffic signals
  • Crossings and junctions
  • Barriers
  • Kerbs
  • National signed routes
  • Local Authority signage
  • Lighting (partial support)
  • Turn delays (initial implementation)

We are working to take into account these additional factors (to be implemented in priority order below):

  • Speed limits
  • Width of obstructions

Obeying rules

CycleStreets strives to give only legally allowed routes. Our data comes from OpenStreetMap (OSM), so if there is an error we usually have to pass that on to them. When the error is fixed it will then make its way into CycleStreets after the next import cycle.

Currently CycleStreets obeys these rules

Traffic signals
Introduces an average delay.
One-way streets
We will not propose cycling the wrong direction down a one-way street, but we may suggest dismouting, reflecting the reality of human behaviour to avoid a long route round
No cycling
Where walking with your bike is permitted and practical this is suggested. This can happen for instance in a so-called Pedestrian Zone.
Private access
We will not route you through land marked as private land. However, if you start or finish your route within a private area, we will route out of it / into it.
Banned turns (e.g. No Right Turn)
We take account of banned turns, but will sometimes suggest the realistic alternative of dismounting, reflecting the reality of human behaviour to avoid a long route round.

CycleStreets has plans to obey these rules

Intermittent prohibitions
E.g. no cycling between 10am and 4pm.

Incorporating these is a priority for us to come out of the beta testing phase.

We also plan to take account of other attributes - see notes above.

Blue 'Cyclists Dismount' signs are advisory. Cyclestreets will sometimes suggest a dismount, but it depends on how the ways are tagged in OSM.

Hills

The notes in these sections explain some of the work CycleStreets is doing to find better routes in hilly terrain.

Elevation

The starting point for finding cycling routes in hilly terrain is having some good elevation data. We can't get that from OpenStreetMap, so we're using NASA satellite data, called SRTM. This comes from US government funding, it is therefore public domain. You can read more about SRTM at http://en.wikipedia.org/wiki/Shuttle_Radar_Topography_Mission.

Effectively it provides us with a set of raster files that specify the height above sea level for every lat-long point all around the world. (We obviously have only downloaded the tiles for the UK area only though.)

Its resolution is about 90m, i.e. there is a height every 90m apart on the ground. This means that if there was a steep but small hill between two points that are 90m apart, it would not necessarily show up. However, in practice it's good enough. There is a new dataset called ASTER, which replaces SRTM, which we can move to in future, but there are few good tools for reading that at present. But I think 90m resolution is good enough anyway.

Incidentally, SRTM is the same data that is used to create the background map tiles for the Open Cycle Map, and which CycleStreets uses as its default background map.

We use an algorithm to read the SRTM files and provides an interpolation function that can answer the question: What is the height at this lat-long point?

During an import from OpenStreetMap, the elevation of each of the 8 million nodes on the cyclable network of the UK is queried in this way. That data provides the information that is used to create the elevation profile on each route.

Naismith

To take account of the delay due to going up a hill, and the time saving coming down again, CycleStreets uses a cycling version of the Naismith effect. Naismith was a hiker who devised a rule of thumb that helped estimate how much longer it would take to follow a route that involved a climb.

In the cycling version of the rule there is a cost of six seconds per metre climbed, but a saving of 1.8 seconds per metre descended.

A striking example of the difference this makes to the routing can be seen by comparing the fastest routes on these two examples:

Journey #80587 before Naismith
Journey #84129 after Naismith

Of the three route types currently available, the Fastest is most directly affected by Naismith. If there are two equally long routes over the same road types, the one with the least rise and fall will win. So it tends to favour smoother routes.

In order to make the Quietest routes sensitive to hills the time change is converted into an equivalent busyness and added in to the length of each section.

Elevation Profiles

The way the elevation profiles choose the vertical scale is as follows:

  • Uses imperial units - unless the signed in user has changed to metric.
  • Assumes that the vertical height will move by a maximum of 300 feet, 100 m if using the metric system.
  • The vertical scale is chosen with a 300 ft range so that the route is centred in the middle.
  • The lowest possible limit is about -30 feet, so routes in Cambridge always appear to be near the bottom of the range.

For all of the above cases the ground colour is shown as a light green.

  • If the vertical movement of the route is more than 300 ft, 100 m then the axis is scaled to fit.
  • In that case a darker green is chosen as the 'ground' colour.

We welcome your feedback, especially to report bugs or give us route feedback.

My comments relate to: *






Your comments: *
URL of page: * https://greatermanchester.cyclestreets.net/help/journey/routing/
How did you find out about CycleStreets?:
Your name:
Our ref: Please leave blank - anti-spam measure

* Items marked with an asterisk [*] are required fields and must be fully completed.