[pgrouting-dev] [OSRM-talk] Making progress on dumping pgRouting tables to OSRM
Stephen Woodbridge
woodbri at swoodbridge.com
Wed Nov 13 11:00:02 PST 2013
On 11/13/2013 12:27 PM, Emil Tin wrote:
>
> Hi Stephen, Sound like very interesting work, conencting pgRouting
> and OSRM. I'm afraid I can't help you with your current problem, but
> I'm sure Dennis can.
>
> Emil
Hi Emil, Dennis,
Sorry, cross-posted to pgRouting-dev
So this is kind of my rough plan. I have looked into how to do the
various pieces and now it is just a matter of find some time to do the
code and testing.
1. build a pgr2osrm tool that will dump a pgRouting topology into an
OSRM intermediate file that can be built with osrm-prepare. This is the
piece that I'm working on at the moment.
2. setup a local osrm-routed (should be trivial)
3. code postgresql stored procedures to talk to osrm-routed using libcurl
4. write stored procedures like:
point = osrm_locate(point)
point = osrm_nearest(point)
jsontext = osrm_viaroute(point[], alt, instruction, zoom)
status = osrm_getRouteStatus(jsontext);
polyline = osrm_getRouteGeometry(jsontext, alt)
instructions[] = osrm_getRouteInstructions(jsontext, alt)
distancematrix[][] = osrm_dmatrix(points[])
distancerow[] = osrm_one2many(point, points[]
To support this, it would be great if Dennis had time to add two methods
to osrm-routed like:
http://server:5000/dmatrix?lat=<lat>&lon=<lon>&...
http://server:5000/one2many?slat=<start_lat>&slon=<start_lon>&lat=<lat>&lon=<lon>&...
where the list of points are the arguments. And if the we supply say 10
point, then we get back a 10 x 10 matrix. I can simulate this by making
multiple calls to the server and trying to manage all the hints, but it
would be far more efficient to just pass the array of points and let the
server optimize caching internally. This would also decrease the number
of requests to the server and the overall processing time, improving
overall performance. Obviously you might not want this turned on on your
public server, so maybe it is a compile time option, but clearly doing
this efficiently on a local server would be ideal.
We have two major use cases for the distance matrix functionality.
1. TSP solutions for route optimization
2. We have new Vehicle Routing Problem (VRP) solver that needs to create
large distance matrices for example doing single depot, multiple vehicle
package delivery and pickup. In this case we need to compute the
distance matrix between all the pickup, delivery and depot locations.
All this code will get packaged up in the pgRouting project, but I would
like to OSRM routed changes to stay in your repository.
We also have a lot of users that are using OSM data with pgRouting so
building closer ties with you makes sense to better service our joint users.
The other thing that got me thinking about this is that I was playing
with the Google Gmaps API, and it exposes similar functionality. I
thought it would be great if some project could come up with an
OpenSource replacement for the Gmaps API, but a gating item would be to
provide the server tools to support that and this would be one of the
key pieces.
Right now this is all getting done without funding based on my ability
to work on it between contract work. Any funding from users is always
appreciated and would help accelerate my progress.
So that is the idea and my plan :)
-Steve
> On 13 Nov 2013, at 18:04 , Stephen Woodbridge
> <woodbri at swoodbridge.com> wrote:
>
>> Hi Dennis, Emil,
>>
>> I have made some progress reverse engineering the current file
>> formats and have been able to successfully extract a pgRouting
>> topology into the "current" OSRM normalized data files and run
>> osrm-prepare on that.
>>
>> That said, I have not tried to run routes on this which I will do
>> at some point.
>>
>> I am still not clear on how restrictions are defined. The only
>> description that I can find is the out dated description in:
>>
>> https://github.com/DennisOSRM/Project-OSRM/wiki/OSRM-normalized-file-format
>>
>>
>>
Can someone please help me with the restrictions definition:
>>
>> If I have the following graph:
>>
>> nodes: a, b, c, d edges: ab, bc, db
>>
>> a----b-----c | | d
>>
>> ab, bc, and db are all two way and there is no right turn from db
>> to bc
>>
>> Then, should the restriction as defined in the file be:
>>
>> b, d, c, forbidden, 7F 00 00
>>
>> where:
>>
>> b is the via-node d is the from-node c is the to-node
>>
>> and the records should then be sorted by edge_id of EDGE[via-node,
>> to-node].
>>
>> Is this correct?
>>
>> I'm happy to create an updated reference page for the normalized
>> file format once I get this all sortted out and working.
>>
>> Thanks, -Steve
>>
>> _______________________________________________ OSRM-talk mailing
>> list OSRM-talk at openstreetmap.org
>> https://lists.openstreetmap.org/listinfo/osrm-talk
>
>
> _______________________________________________ OSRM-talk mailing
> list OSRM-talk at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/osrm-talk
>
More information about the pgrouting-dev
mailing list