Though I see this [dynamic] usage as a more advanced usage which most users won't use. ... So we would always need to be able to fallback to a dynamic approach like we now have, or have a smart mix.
I would love to have a stable, non-heuristic based approach which I can trust.
So what I'm wanting to explore is the easiest way to integrate the results of MoNav into OsmAnd. First as a service-on-desktop-server, then service-on-mobile-device itself, and potentially tighter integrated into OsmAnd if it works well.
Regards, Arndt
Am Donnerstag, 3. Januar 2013 17:44:57 UTC+1 schrieb Rutger Nijlunsing:Though I see this [dynamic] usage as a more advanced usage which most users won't use. ... So we would always need to be able to fallback to a dynamic approach like we now have, or have a smart mix.
So what's the message? Road-blocks, ferry exclusion, or think of alternatives (=semi exclusion of first choice result), dynamic aspects everywhere, so these fast routing machines that preprocess the preferences into the database are academic toys for bored scientiests without practical use. Is that what you want to say in the second part?
I would love to have a stable, non-heuristic based approach which I can trust.
So not talking about speed here. But exactness and the absence of bugs don't call for contraction hirachies, but for good engeneers.
So what I'm wanting to explore is the easiest way to integrate the results of MoNav into OsmAnd. First as a service-on-desktop-server, then service-on-mobile-device itself, and potentially tighter integrated into OsmAnd if it works well.
I faced the same problem, though with a different motivation (wanted bike routing I can trust and I can configure to my needs). I found a solution which is not very handy, but works for the time beeing: a simple file interface reading the favorites-file and writing back the gpx into OsmAnd's track directory. See my thread on "External Bike Routing interfaced to OsmAnd".
So you could do two things:
- do it that way
- help convinicing Victor that a smooth interface to external offline routers would be a cool thing
For the speed subject: this is mainly an issue for dynamic recalculations if you got of the track. But I think for that case, some simple trick for doing a short-distance re-routing on the original track would do?
Regards, Arndt
>> - help convinicing Victor that a smooth interface to external offline routers would be a cool thingNo need to convince me :)
There are 2 problems...1) How to provide route details from external offline routing (lane information, speed limit, roundabouts ....)This class https://github.com/osmandapp/OsmAnd-core/blob/master/OsmAnd-java/src/net/osmand/router/RouteResultPreparation.java is responsible (it just need raw list of Osm ways with all tags and attached osm ways ).2) Time :) if you create pull-request that will definitely help or I can help you where it is possible to plug.
P.S. : Precomputing routes will kill dynamic features and/or increase file a lot. Imagine you want to have truck navigation/taxi .../ prefer highway/avoid motorway. Probably Monav (which is used in OSRM) will eliminate this conceptual problems. Currently we use fast A* algorithm.
For the speed subject: this is mainly an issue for dynamic recalculations if you got of the track. But I think for that case, some simple trick for doing a short-distance re-routing on the original track would do?
This simple trick of doing a short distance re-routing is exactly the heuristic which is biting me. I live between 2 exits of a freeway: OsmAnd suggests one, and I always take the other. It starts recalculating then, and adding small parts to the original track, which means it won't see that I am 1km from my home and still re-route 5km back to the freeway to the other exit.If the routing engine would be fast enough, no such heuristics would be needed.
>> - help convinicing Victor that a smooth interface to external offline routers would be a cool thing
No need to convince me :)
if you create pull-request that will definitely help or I can help you where it is possible to plug.
Am Donnerstag, 3. Januar 2013 21:53:37 UTC+1 schrieb Rutger Nijlunsing:For the speed subject: this is mainly an issue for dynamic recalculations if you got of the track. But I think for that case, some simple trick for doing a short-distance re-routing on the original track would do?
This simple trick of doing a short distance re-routing is exactly the heuristic which is biting me. I live between 2 exits of a freeway: OsmAnd suggests one, and I always take the other. It starts recalculating then, and adding small parts to the original track, which means it won't see that I am 1km from my home and still re-route 5km back to the freeway to the other exit.If the routing engine would be fast enough, no such heuristics would be needed.
So this is a "too simple trick" (re-routing to the closest-distance node of the old route?).
What I had in mind is to do real the real thing (=long distance-processing with O(n^2) scaling) with a timeout and register for each node of the old track that is hit in the new processing at what cost it is hit. The new result then is the minimum sum of hit-cost + remaining cost along old route. The only heuristic in that algorithm is the timeout (=assuming the remote part of the new route is identical to the old one)
Am Freitag, 4. Januar 2013 01:26:06 UTC+1 schrieb Victor Shcherb:>> - help convinicing Victor that a smooth interface to external offline routers would be a cool thing
No need to convince me :)if you create pull-request that will definitely help or I can help you where it is possible to plug.
I will definitly come back to that (but will take some weeks)
Regards, Arndt