| CycleStreets (web/iPhone/Android/HTML5)|
|Programming languages:||Objective-C, Java, HTML|
UK-wide cycle journey planner CycleStreets - Cycle navigation for cyclists, by cyclists. Plan routes from A to B anywhere in the UK (other countries gradually being added), with a choice of four routing modes to suit a range of cyclists from beginner to regular commuter. And the Photomap lets you submit photos of infrastructure problems or good practice.
This page is about the cycle journey planner system. For tagging cycle streets within OpenStreetMap, see the bicycle_road=* tag.
CycleStreets is a UK-wide (and beyond) cycle journey planner system, which provides a means to plan routes from A to B by bike. It is designed 'by cyclists, for cyclists', and caters for the needs of cyclists of all abilities. It was written by two regular cyclists (and cycle campaigners) living in Cambridge, UK.
The system provides the fastest route, quietest route and third route balancing these two, for each itinerary requested.
A major redesign and upgrade is taking place over Summer/Autumn 2015, and version 2 of the developer API has been launched. The site is currently marked as being in beta.
CycleStreets routing is used in a variety of third-party apps, websites and APIs.
Routing coverage is currently UK and Ireland, much of northern/western Europe, and various cities around the world.
Routing algorithm / features
CycleStreets is the original utility cycle journey planner for cyclists, by cyclists.
The journey planner aims to emulate the decision-making decisions of real cyclists, giving a choice of routes to suit any ability. A wide variety of on-street factors are taken into account - such as road conditions, cycle infrastructure, partial favouring of Local Authority / national signed routes, paths and cut-throughs, directionality, surface quality, barriers, lighting and much more. Routing takes into account elevation at all times. Even the width of cycle lanes is taken into account in the determinations of the best routes, where such data exists in OpenStreetMap. Basic support for turn delays is in place and is being extended shortly.
Various aspects of the journey planner implementation are documented within the help pages. (The documentation does not yet fully reflect the range of optimisations in place, and will be updated later in 2015.) The data import involves a set of transformations of the OSM data, followed by an extensive series of optimisations and pre-processing to increase routing performance.
Routing takes account of hills/contours, using a variety of elevation data sources. Elevation profiles are also shown.
Routes are saved to a user's profile if signed in. Export of planned routes in KML and GPX is provided.
Photos (see below) geolocated along a planned route are shown on the route ("Photos-en-route"). There is also a Google StreetView integration.
The developers are keen to encourage feedback, and provide a customised feedback form on each page. Routing feedback is sent to a list which includes a few OSMers. An improved feedback handling and triaging system is, as of 2015, under development to allow greater OSM community visibility of data issues which are highlighted by problematic routes that users have planned.
The Photomap is intended as a campaigning tool for cycle campaigners. It consists of around 60,000 user-generated, geolocated photos relating to cycle infrastructure, each categorised and with rich metadata.
A gallery feature is provided to enable photos to be grouped together. Tagging is also available. The best photo taken that day of the year is auto-tweeted as the 'Photo of the day'.
Accessing the Photomap via one of the city-specific instances of the site, e.g. the Cambridge CycleStreets photo categories page, limits photos and searches to that area.
Other features include:
- Collision data viewer - UK STATS19 collision data viewer
- POIs - Points of interest browser
- GPS tracking - via app
- User profiles
- Features list (incomplete)
A redesign is in progress during Summer/Autumn 2015. This aims to:
- Significantly modernise the look and feel of the site (which the developers freely acknowledge is out-of-date);
- Add features such as waypoints and draggable routing, much requested by users;
- Combine and unify the many features of the site into a coherent and multi-functional interface;
- Reflect the power of the underlying API (which supports waypoint/draggable routing, for instance), newly upgraded to version 2;
- Implement a refactored codebase more strongly adhering to an MVC pattern.
| CycleStreets Android App|
Mobile apps are available:
- CycleStreets iPhone app
- CycleStreets Android app
- CycleStreets Windows Phone app
- CycleStreets Mobile HTML version of the website
The apps offer routing, saved journeys, the photomap, and photo upload.
The source code for each is free software available under the GPL
A variety of third-party apps using the API are available - see API section below.
An API is available, providing a modern and developer-friendly JSON (GeoJSON) interface to the routing and all other components.
API keys are available without charge, though usage involving heavy load, by transport consultancies, or by Local Authorities, are expected to obtain a paid SLA.
Users of the API currently include:
- Citymapper for iOS
- Citymapper for Android
- Bike Hub journey planner for iOS
- Bike Hub journey planner for Android
- Barclays Bikes
- Cycle Hire App
- London Cycle: Maps & Routes app
- London Bike App
- TrackMyJourney includes CycleStreets routing alongside many other features
- Others as listed on CycleStreets mobile page
- Halfords cycle journey planner
- Steer Davies Gleave, e.g. JourneyOn
- Placr TransportAPI
- Traveline Scotland / Traveline Cymru
as well as the native CycleStreets mobile apps listed above.
The routing engine is a custom-written C++ engine implementing A*, with a compression system ('Cello' - cellular optimisation) which pre-compresses the network.
The import takes into account hundreds of routing rules to give fine-grained control of routes, aiming to emulate the route-finding processes of a knowledgeable cyclist.
Elevation is amongst the aspects taken account. Multiple sources of elevation data are used.
Multiple routing graphs exist, for each routing type (fastest/quietest/balanced, etc.) and speed.
The front-end website software is written in object-orientated PHP 5, consisting of around 250 traditional OO classes covering all aspects of the site (routing, photomap, collisions, GPS tracking, API, etc.) , and currently uses MySQL.
Various software libraries are used, including Leaflet.js, ultimateForm, jQuery.
Namefinding uses the [Nominatim] geocoder. CycleStreets have published a Nominatim bash install script.
The code is not yet open-sourced, but it is planned to do so in future following a thorough audit of the code. The mobile apps are on Github under the GPL.
The system originates from an earlier system on Cambridge Cycling Campaign's website, which launched on 27th Jun 2006. Accordingly, it is one of the very first online cycling routing systems available. The code has been refactored and substantially developed since then. The Camcycle system had ~5,000 lines drawn over a Google Map base in the Cambridge area. CycleStreets, by contrast, uses OSM and indeed is one of the earliest users of OSM.
The CycleStreets system went into public beta launched on March 20th, 2009, taking the system UK-wide. There was an initial testing focus on Edinburgh, Cambridge and London and some other areas (being places most familiar to the development team and contacts).
No date is set yet for removal of the beta status indication, however, the following will be implemented for that change:
- Fuller implementation of turn delays (to reduce wigglyness of some routes)
- A unified user interface (the site has never been properly 'designed' as such), being worked on as of August 2015
CycleStreets Ltd (UK company no. 06948959) is the legal entity behind the site and is a not-for-profit social enterprise based in Cambridge.