Over the last month or two we've been working heavily to rewrite the way the system imports and interprets OpenStreetMap data. This work is intended mainly to make the system give better routes, but also to make things clearer for OpenStreetMap mappers as to how we interpret the data, as well as make the code easier to maintain.
Routing work is complex and time-consuming. As such it's an area which our Funding Drive is aimed to help with – with full-time developers we could make improvements like this much more quickly and stay at the vanguard of cycle routing.
Below are two screenshots showing this work in progress. The first shows the router as it currently is, with the green/quiet route (most relevant to signed routes) not fully sticking to a signed cycle route (in blue) in the West Sussex area. The second image, from revision 5483 of the engine, shows how it is sticking to the signed route almost perfectly. (Note that this code is not released yet.)
Before (current site):
Routing engine in development (revision 5483):
We'll also be publishing soon a clearer guide for OpenStreetMap people on how we interpret the data tags and which of the more advanced tags we currently take account of and which we plan to take account of soon.
The latest work should also address some of the issues we have seen regarding routing over poorly-surfaced routes, where the data exists in OpenStreetMap. Importantly, support for these and other advanced tags will also encourage people to go and collect the data, benefiting other OSM data users too.