[OSRM-talk] Using OSRM linked into other code?

Stephen Woodbridge woodbri at swoodbridge.com
Fri Nov 7 15:13:20 UTC 2014


I seem to remember a while back that there was a discussion about the 
possibility to embed the OSRM routing engine at the code level rather 
than doing HTTP requests to a server.

I now find myself in a position that this would be desirable to do. I 
have a small coverage area like a city, but I'm getting killed by the 
overhead of formatting requests as strings, making a socket connection 
to osrm-routed, parsing the responses, etc. Making local requests my 
server this is taking 4-500 ms per request.

Basically, I'm doing viaroute requests with 2-100 via points. 99% of the 
time all I need to know is the travel time.

Since I'm developing in C++, I thought it might be easy and much faster 
to instantiate the routing engine and then have a simple interface where 
I can pass a container of points and get back the travel time for that 
route and/or the path coordinates. But I could live without the 
coordinates if I had to.

Has anyone done this already? Can you share?

I have started digging through the source to see if I can do this, but 
working my way in from osrm-routed or Tools/simpleclient.cpp the code is 
very entangled with all the http request/response stuff that I would 
ideally like to avoid. So far the most promising path looks like using 
some variant of the simpleclient, but its not obvious if or how to 
untangle all the json stuff and simply return a struct or class to the 
caller without that. I spent most of yesterday, digging through this and 
made a lot of progress just understanding simpleclient and getting ti to 
compile and work and get it to actual return results using a shared 
memory connection.

A little help in this direction would be appreciated.


More information about the OSRM-talk mailing list