[pgrouting-dev] Update on OSRM-pgRouting integration
Stephen Woodbridge
woodbri at swoodbridge.com
Fri Nov 15 18:18:20 PST 2013
Hi all,
Here is a demo of using OSRM and pgrouting using php to glue things
together.
http://imaptools.com:8081/demo/osrm.html
Sorry for the weird test grid. The roads have some randomly assigned
speed_cat and direction of travel which can make for some unexpected
routes. When I have a chance I'll build a real work graph.
Read the HELP that comes up when you load the page.
Here is a description of how it works. The [Route Path] function just
collects the marker locations and makes a direct call to the OSRM
server. No magic there, you can look at the Javascript to see how to
make Leaflet do that. I was going to add dragging the route or markers,
but it more interesting to get this working in pgrouting.
For the [Optimize *] functions, I call a PHP script to glue everything
together for the moment. The basic logic is:
1. get and array of points
2. loop through the points calling OSRM N*(N-1) times to build a
distance matrix and cache the result in an NxN array
3. call pgrouting pgr_tsp(dmatrix, start, stop) to get an ordered list
of points
4. Get the cached route_geometry for the ordered pairs of nodes
5. return that as jsonp object.
Time vs Distance
Currently there is no easy way to ask OSRM to compute shortest time vs
shortest distance. I understand that I might be able to do this using
profile.lua files but this would require having two OSRM servers running
using different profiles.
For the time being, I compute a routes for the distance matrix calling
OSRM and build my distance matrix based on the route_distance vs the
route_time values returned in the request. Then TSP orders the nodes to
minimize the cost values used. I suspect we would get different results
if we could compute the routes based on either time or distance.
My next step is to move the php code into C code in the database. And at
some point build out a real road network for a better demo.
-Steve
More information about the pgrouting-dev
mailing list