OpenStreetMap logo OpenStreetMap

Wir haben gerade v5.6 der Open Source Routing Machine (OSRM) veröffentlicht. Wie gewohnt mit Dokumentation, NodeJs Bindings und einem osrm/osrm-backend:v5.6.0 Docker Image. Mehr Details gibt es hier. Sieht auch die Release Notes und den kompletten Changelog.

Was ich in diesem Beitrag vorheben möchte ist das Hauptfeature des 5.6 Releases: Die Trennung von Geschwindigkeiten und Kantengewichten

Bis zum 5.6 Release konnten Nutzer nur die Geschwindigkeiten per Lua Profile anpassen and diese basierend auf Tags und Präferenzen verändern. Die Routenplanung hat dann den schnellsten Weg gefunden und dabei die Zeit minimiert.

Allerdings gibt es klare Fälle in denen Nutzer bestimmte Strassen vermeiden möchten: schmale Gassen und Passagen über die normalerweise nicht gerouted werden sollte. Bisher konnten Nutzer diese Wege entweder komplett aus dem Strassennetz entfernen oder aber die Geschwindigkeiten künstlich herabsetzen. Die Geschwindigkeiten zu modifizieren hat jedoch einen gravierenden Nachteil: wenn die Routenplanung nun doch über eine solche Strasse führt sind die Ankunftszeiten falsch!

Was wir stattdessen benötigen ist eine Trennung von Geschwindigkeiten (und damit Reisezeiten welche die Routenplanung aggregiert) und Kantengewichte auf denen die Routenplanung optimiert. Mit dem 5.6 Release haben wir diese grundlegende Trennung!

In den Profilen können Nutzer nun:

  • Die Geschwindigkeiten weiterhin basierend auf Tags setzen um realistische Ankunftszeiten zu erhalten und
  • Spezielle Strassen vermeiden indem Kantengewichte unabhängig zu den Geschwindigkeiten verwendet werden.

Zusätzlich erlaubt uns die Trennung von Geschwindigkeiten und Kantengewichten die Handhabung von access=destination und ähnlichen Tags, die es erlauben die Strasse nur zu verwenden wenn sich das Ziel dort befindet. Ein typisches Beispiel sind Gated Communities durch die Nutzer nicht gerouted werden möchten, ausser sie wollen explizit ihre Reise dort enden.

Wir können solche Tags nun behandeln indem wir nur die Abbiegevorgänge auf solche Strassen mit einem hohen Gewicht versehen und gleichzeitig die realistische Turn Penalty unberührt lassen. Die Routenplanung vermeidet dann z.b. Gated Communities ausser Nutzer wollen explizit dort hin. Ankunftszeiten werden dabei nicht beeinflusst!

Ein Beispiel für Destination Routing gibt es hier. Destination Routing

Wir können den selben Trick für weitere Tags verwenden, beispielsweise für delivery, private oder customer access restrictions. Sogar für HOV-Strassen falls Nutzer diese normalerweise vermeiden möchten, aber trotzdem eine Route möchten falls sie explizit auf diesen Strassen unterwegs sind.

Wir freuen uns gerne auf Feedback zu anderen Tags die wir ähnlich handhaben sollten; einfach in die Diskussion einsteigen.

Wir werden auch auf der FOSSGIS Konferenz dieses Jahr sein - Kommt vorbei und sagt Hallo!

Location: 10178, Mitte, Berlin, Germany

Discussion

Log in to leave a comment