Hi Ulrich, du bist nicht unbeliebt - Wir sind hier eine Gemeinschaft und wir machen gemeinsam eine Karte.
On Thu, Dec 20, 2018 at 03:05:26PM +0100, Ulrich Wehmeier wrote: > Auch auf die Gefahr hin, dass ich mich noch unbeliebter mache als ich es eh > schon bin, möchte ich noch einmal auf das Routing über die Nordumgehung A 30 > zurückkommen. [ ... ] > Vielleicht kann mir als Bank-Revisor im Ruhestand mal jemand plausibel > erklären, warum man für einen Router, der nicht einmal in der Lage ist 30 > km-Zonen zu meiden, OSM verbiegen soll? Warum sollte der die meiden? Routing funktioniert das man das gesamte Straßennetz nimmt und darauf eine Verbindung sucht. Diese Verbindung muss irgendwelchen "kosten" genügen. Kosten sind hier aber nicht €uro sondern ein rein numerischer wert der von irgendwelchen tags abhängt z.b. können Kosten die Geschwindigkeit sein. Je langsamer desto Teurer. Damit sucht er dann die schnellste Verbindung. Theorie ist hier Dijkstra: https://de.wikipedia.org/wiki/Dijkstra-Algorithmus Oder die Weiterentwicklung A* https://de.wikipedia.org/wiki/A*-Algorithmus Alles andere sind nur optimierungen wie z.b. Contracted Hierarchies: https://en.wikipedia.org/wiki/Contraction_hierarchies Schnell ist hier natürlich nur zu raten anhand der Tags die auf den Wegen in OSM sind. Hier nehmen die Standard router mal die Straßenklasse d.h. ein secondary geht schneller als eine residential. Dazu kommen maxspeed, surface, lanes etc. Jeder router ist da subtil anders und benutzt andere Tag Kombinationen um zu ermitteln wie schnell man wohl auf einer Straße vorran kommt. Dazu kommen angenommene Zeiten für Links und Rechts abbiegen, Ampeln, Stopschilder etc. Alles das zusammen genommen ergibt dann die vermutete Zeit einer Verbindung. Wenn jetzt eine "Abkürzung" durch eine Zone 30 schneller ist wird die natürlich genommen - Weil die eben schneller ist. Oftmals ist das aber eher mangelndes tagging auf den eigentlichen routen. D.h. da fehlt dann ein maxspeed, surface, lanes etc. U.a. meine ich das OSMAnd auch "traffic calming" mit einbezieht. D.h. wenn du in der Zone 30 die Kissen oder Verengungen mit tags wird OSMAnd die kosten der Straße nach oben setzen und damit wird es unwahrscheinlicher das die genutzt wird. OSRM hat das Prozessieren dieser Tags in eine Scriptsprache ausgegliedert. Das Car profile in Lua findet sich hier: https://github.com/Project-OSRM/osrm-backend/blob/master/profiles/car.lua https://github.com/Project-OSRM/osrm-backend/blob/master/profiles/lib/way_handlers.lua Nur um mal bei dem Beispiel der lanes zu bleiben: local lanes_string = way:get_value_by_key("lanes") if lanes_string and tonumber(lanes_string:match("%d*")) then lanes = tonumber(lanes_string:match("%d*")) end [ ... ] if width <= 3 or (lanes <= 1 and is_bidirectional) then width_penalty = 0.5 end D.h. wenn die lanes <= 1 ist und das KEIN oneway ist dann nimmt er die hälfte der Durchschnittsgeschwindigkeit. Weil man ja wenn einem jemand entgegen kommt man davon ausgeht das man auf die Bankette muss. Kurzzusammenfassung: Ob und welche Route genommen wird entscheiden die Kosten die in dem Graphen minimiert werden. Die Kosten eines Straßenabschnittes ergibt sich aus den tags. Flo -- Florian Lohoff [email protected] UTF-8 Test: The 🐈 ran after a 🐁, but the 🐁 ran away
_______________________________________________ OSM mailing list [email protected] https://gt.owl.de/mailman/listinfo/osm
