
Routing on OpenStreetMap.org - maxerickson
https://blog.openstreetmap.org/2015/02/16/routing-on-openstreetmap-org/
======
IgorPartola
I worked on this problem for a private company. We ended up doing quite a bit
to accomplish this: hired a team to edit OSM data, and wrote our own router.
What we learned is that OSM data can be quite terrible at times in minute ways
that made it look decent but made routing nearly impossible. I believe this
effort is still ongoing and in at least the areas where that company has
clients the OSM data is now much more pristine.

I sort of wish the router got open sourced, but then again it was not great
for long distance routing since we were doing mostly local stuff. For example,
routing across the US would have taken pretty close to exponential time.

Interestingly, we could not make Google Maps, or any other maps work for this
besides OSM for two reasons: the data wasn't good enough and the roads were
not uniquely and stably identified in the routes these API's produced.

Lastly, I will say that the biggest challenge to using OSM at scale, aside
from varying quality of data was lack of good servers and documentation. Some
of their secondary services run on one-off slowish hardware with pretty strict
rate limits. We would run our own, except the documentation (and the
packaging) for OSM software was leaving something to be desired. That is to
say if you want to help OSM, there are plenty of ways to do so.

~~~
Doctor_Fegg
"What we learned is that OSM data can be quite terrible at times in minute
ways that made it look decent but made routing nearly impossible."

This is exactly why we've exposed routing on the front page of osm.org.

I run my own site with OSM-based routing,
[http://cycle.travel/map](http://cycle.travel/map) . When I first got the
routing engine up and running, I literally spent the next fortnight fixing
routing bugs in OSM - "I'd go that way, why doesn't the router agree?".

By putting routing front-and-centre, we're hoping that our dedicated
contributors - and OSM contributors are nothing if not dedicated! - will do
exactly that: they'll find an error and fix it. In the UK and Germany this'll
just be little slip-ups, turn restrictions and so on, but in the US there are
whole counties that need serious fixup.

That's why I submitted the pull request for this[1] and why I'm delighted it's
now live. OSM is already a great display map; by making routing more visible,
we can make it a great routable map too.

[1] [https://github.com/openstreetmap/openstreetmap-
website/pull/...](https://github.com/openstreetmap/openstreetmap-
website/pull/716)

~~~
grizzles
It says it uses a 3rd party service. Can you clarify why OSM isn't dogfooding
it's own router? Though I'm a huge fan of OSM that sounds like a bit of a let
down.

~~~
maxerickson
OSM is primarily a data project. There isn't currently any notion of providing
centralized end user services.

The various services on openstreetmap.org don't have terribly strict usage
policies, but they all pretty much ask heavy users to set up their own
instance (or use other resources; for example, Mapquest has quite generous
free usage, and there are lots of paid OSM tile hosters).

If you click the stack on the right tool bar, you get a layers menu, where 4
of the styles are rendered and served by other projects. So the routing is
similar to that, showcasing how the data can be used.

~~~
nroets
Yes, it's great that it's possible to use OSM for many different purposes.

However, all these compromises on the front page are too complicated for end
users and scare them off.

End users expect services that seamlessly work together. If centralization is
needed to achieve that, then yes, OSMF needs centralization.

~~~
ZeroGravitas
The front page isn't intended for end users in the sense of "people looking
for a map or directions", it's mainly focused on people who intend to map.

People find it hard to get out of the "Google Maps" mindset, just as everyone
approached Linux as a "Cheap Windows" when in reality it can be so much more.

OSM's strategy (and data) aren't perfect, but they're growing the pie rather
than fighting for a larger slice and doing pretty well with it. Just like
using Linux has become a no-brainer for all sorts of projects from smartphones
to supercomputer clusters to educational toys OSM is well on it's way to being
the default peer-produced commons for geographical data. Whether that usage
happens on one site or a million different commercial, government, non-profit
and amateur sites isn't important.

------
joosters
Slightly off topic, but is there a way to make the OSM website use high-dpi
images on devices like iPads? The map tiles look blocky when viewed on mobile
safari. What's annoying is that when you zoom out, the tiles are shrunk and
'become high-res' but then the website loads lower-res tiles to draw over the
top!

~~~
Doctor_Fegg
No; at present the osm.org tiles aren't generated at a retina scale.

This is most likely to be fixed in the medium term by moving to vector
rendering via WebGL et al.

------
yellowapple
Looks like this thing has quite a ways to go before it's ready for primetime,
but this fills in the last gap I needed filled in order to switch fully over
to OSM as my day-to-day map site/software/data/etc. Pretty spiffy; just needs
some kinks worked out with the underlying data (I think) ;)

------
thomasfoster96
OpenStreetMap genuinely amazes me. I know their data is still a bit
inconsistent, but in some areas they vastly exceed other online maps, but they
are lacking in other areas.

It looks as though OSM is making great inroads as far as routing and addresses
go, and so the next big thing will be getting the iD editor working well on
mobile devices.

------
ukandy
Great to see public rights of way being included in the walking directions.

------
maxerickson
At the moment there is a mixed content bug in the place lookup, so it doesn't
work over https. I guess it will be fixed in short order though.

There's also not much fuzziness in the search. For example, "Tolado Ohio" will
not be found.

~~~
mcjiggerlog
Yeah for me it's trying to make calls to
[http://www.openstreetmap.org/http://nominatim.openstreetmap....](http://www.openstreetmap.org/http://nominatim.openstreetmap.org/search?q=london&format=json)

It kind of demonstrates how far behind they are with things like navigation,
search etc. It's a shame because the actual mapping data behind OSM is
absolutely fantastic.

~~~
Firefishy
We working to fix this right now ;-) (OSM sysadmin here)

~~~
Firefishy
Fixed thanks to TomH:
[http://git.openstreetmap.org/rails.git/commitdiff/2b7529a3f1...](http://git.openstreetmap.org/rails.git/commitdiff/2b7529a3f1dd5dd1e4f06d34ac43bb3e267f4832)

------
cullenking
We currently run two graphhopper routing servers in production for our bike
route mapping website. They work fantastic and are fast even without the
contraction hierarchies tricks used to speedup routing at the expense of
flexibility. We occasionally get user reports of odd routing anomolies due to
the underlying data, but they are actually not much more frequent than reports
about google maps. I also evaluated osrm but the graphhopper folk run a great
open source project. Felt much more comfortable throwing in with them than
anyone else. Happy to share any details if anyone has questions, email in my
profile.

------
Sir_Cmpwn
First impression was pretty bad. Tried to get a route from my place to my
parent's house a couple cities south, and it took a lot of fiddling with the
string to get it to understand where I live. Didn't have any trouble finding
my parent's home, but once I got both in the instructions it gave were pretty
poor: [http://a.pomf.se/msawni.png](http://a.pomf.se/msawni.png)

I really want OSM to be good for this sort of thing, so I'll probably end up
poking around and fixing the errors that led to this mess.

~~~
yellowapple
I've found it to be pretty hit-and-miss. For example, it doesn't know where my
house is, either, but it knows where my old apartment is (in the same town),
and where the houses of several relatives are in other cities.

It's probably issues with OSM's data rather than the routing mechanism itself,
however, so yeah, it should be possible to poke at it a bit and fix things up
(as I likely will do, being no stranger to OSM editing myself).

~~~
zo1
Try inputting your address without any sort of "area" or suburb. I.e. just
type in street number + street name + city. I had such a tough time wondering
why it wouldn't recognize a certain address, then noticed how it auto-
corrected the previous one that worked.

Instead of picking up that the address was in suburb "A", it put it inside
"Ward 47 of Tshwane", Tshwane being the city/municipality. Perhaps the data
for suburbs is not up to scratch in my particular area.

~~~
yellowapple
In all my testing, it was with only the number and street name (i.e. "1234
Somesuch Road") - no city, state, zip, etc. I tried again with "1234 Somesuch
Road Somecity" ("Somecity" being the city) for my own town, but that didn't
seem to work, either.

------
DrJosiah
I used to work on the router used in VZ Navigator and related products (I
wrote the part that used real-time traffic data to route around slowdowns,
plus several other bits). After leaving, I started writing my own router on
top of OSM data (fall 2008). The difference in quality of Navteq and other
vendor data vs. OSM was substantial, and I abandoned the project simply
because shit data is impossible to optimize for. It looked great on a map, but
disconnected road segments, incorrect road categorization, incorrect
directions of one-way streets, missing intersections, ... I wasn't at all
surprised at Apple falling on its face in 2012 with its OSM-backed maps
product - it was a virtual guarantee from my experience.

Likely a missed opportunity for a big exit for me, but life's too short to
work against poor-quality crowd-sourced data as a one-man startup in Venice.

------
unicornporn
Routing belongs on a mobile device. Now all I need is a usable Android app for
browsing maps and navigating. OsmAnd seems to be the benchmark, and it's
freaking terrible.

~~~
wongarsu
Can you elaborate on why you think OsmAnd is terrible?

~~~
andygates
IMO, so cluttered and stuffed with... stuff ... that the useful functionality
is buried under a baffling pile of UI elements and surprise actions.

It's a classic open source problem: pack in the functionality, but not be
entirely sure how best to present it, so provide everything with lots and lots
of switches for power users to toggle what they want.

Starting out with less stuff might help; starting out remembering to go to the
_map_ would, I suspect, be a great UX experience for a map app.

------
joshvm
Seems to only work by street name. If I put in two UK postcodes the results
are almost always wrong. This seems to be a problem in normal OSM anyway, if
you search for an exact postcode, a list of nearby streets come up and the
street you actually want is incorrectly listed. Where should I go to fix this?
Seems like it should be a simple enough edit.

~~~
bazzargh
Re _where should I go to fix this_ :

* [https://alpha.openaddressesuk.org/](https://alpha.openaddressesuk.org/)

...which is still only in alpha, so don't expect much. Read their posts about
the data sources
([https://alpha.openaddressesuk.org/about/docs](https://alpha.openaddressesuk.org/about/docs))
to see why this is in such a bad state.

~~~
Doctor_Fegg
This won't fix the data in OSM; this will contribute to OpenAddresses UK which
is a separate (though worthy!) project.

------
dapak
This doesn't appear to be working for me in Chrome. I'm getting a ton of
"XMLHttpRequest cannot load" errors related to this in the console:

    
    
      No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.openstreetmap.org' is therefore not allowed access.

------
chuhnk
What server is being used? Is it OSRM?

~~~
maxerickson
OSRM is the default, but there are a number of other profiles available (foot,
bike and car from Mapquest and foot and bike from GraphHopper).

~~~
chuhnk
How very cool.

------
teddyh
This is very good, I’ve been wanting this for a long time. But it still has
some serious shortcomings:

Car routing only for OSRM. Is this something which will be fixed?

Also egregiously missing is the ability to create a link to a pre-made route.

~~~
maxerickson
Linking is all Web 1.0, all you have to do is copy the URL:

[http://www.openstreetmap.org/directions?engine=osrm_car&rout...](http://www.openstreetmap.org/directions?engine=osrm_car&route=39.529%2C-119.814%3B36.166%2C-115.149)

~~~
teddyh
Oh, nice. Did I miss this, or is this changing of the URL in the address bar a
recent addition?

I’m assuming I missed it. Sorry about that.

------
hokkos
Does it use pgrouting ?

~~~
ris
No. Nobody serious uses pgrouting.

~~~
bigsassy
What makes you say that? Honest question.

~~~
ris
Have you read the documentation for pgrouting?

~~~
legojoey17
Agreed. I cannot agree more. I similarly build a system using the routing
capabilities of pgRouting with OSM. While the outcome has bbe absolutely
awesome (managed routing on the entire OSM dataset with pretty fast queries)
and was done in quite a short timespan, chugging through the documentation was
horrible - especially when I ran into errors.

Do you know of any other alternative routing libraries that can be used with
OSM data similar to pgrouting?

~~~
ris
There are many OSM routers.
[http://wiki.openstreetmap.org/wiki/Routing#Developers](http://wiki.openstreetmap.org/wiki/Routing#Developers)

------
devnullfix
Really like what OSM are doing

