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
<wood...@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@openstreetmap.org
https://lists.openstreetmap.org/listinfo/osrm-talk


_______________________________________________ OSRM-talk mailing
list OSRM-talk@openstreetmap.org
https://lists.openstreetmap.org/listinfo/osrm-talk



_______________________________________________
OSRM-talk mailing list
OSRM-talk@openstreetmap.org
https://lists.openstreetmap.org/listinfo/osrm-talk

Reply via email to