Hi Stephen Only two notes that may help you with your plan: I've been working on using OSRM from a web service, and i've learned OSRM doesn't perform so good when queried with curl (Ok, it's not OSRM problem, but curl: it need to setup a route and connection to the server, and it takes time, and usually you don't go concurrent here). In my problem, i've been using apache commons httpclient in a concurrent fashion ( http://hc.apache.org/httpcomponents-client-4.3.x/index.html , http://hc.apache.org/httpcomponents-client-4.3.x/httpclient/examples/org/apache/http/examples/client/ClientMultiThreadedExecution.java), so connections didn't get released: I was able to reach up to 700 request por second to my test server, but when used with curl (called from java), I couldn't go above 20 request per second.
On the distance matrix topic, I remember Dennis talking about it some time ago, and, if i'm correct, he said he had implemented a really efficient method for matrix calculation using some clever ideas with OSRM internal data representation. He said that code was not open source (maybe some project/contract source code?. Later on, he said he had matrix calculation on target to be included on OSRM soon (maybe another source code version) https://github.com/DennisOSRM/Project-OSRM/issues/544, so it would be great if that feature could be added. You can also try Klopt ( https://code.google.com/p/klopt/wiki/introduction , https://github.com/keesklopt/matrix) Good luck!!! Antonio Moratilla Ocaña - [email protected] - Despacho N334 Profesor del Dpto. Ciencias de la Computación - http://www.cc.uah.es Escuela Politécnica - Informática - http://www.etsii.uah.es Universidad de Alcalá - http://www.uah.es 2013/11/13 Stephen Woodbridge <[email protected]> > 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 >> <[email protected]> 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 [email protected] >>> https://lists.openstreetmap.org/listinfo/osrm-talk >>> >> >> >> _______________________________________________ OSRM-talk mailing >> list [email protected] >> https://lists.openstreetmap.org/listinfo/osrm-talk >> >> > > _______________________________________________ > OSRM-talk mailing list > [email protected] > https://lists.openstreetmap.org/listinfo/osrm-talk >
_______________________________________________ OSRM-talk mailing list [email protected] https://lists.openstreetmap.org/listinfo/osrm-talk
