| Beide Seiten der vorigen Revision
Vorhergehende Überarbeitung
Nächste Überarbeitung
|
Vorhergehende Überarbeitung
|
osrm [2026/04/04 11:31] admin |
osrm [2026/04/04 12:09] (aktuell) admin [Datenbasis] |
| |
| Demo [[https://router.project-osrm.org/route/v1/driving/16.3725,48.2082;16.3738,48.2100?overview=false]] | Demo [[https://router.project-osrm.org/route/v1/driving/16.3725,48.2082;16.3738,48.2100?overview=false]] |
| | |
| | <code python> |
| | import requests |
| | |
| | def get_route(start_lon: float, start_lat: float, end_lon: float, end_lat: float) -> dict: |
| | url = ( |
| | f"http://localhost:5000/route/v1/driving/" |
| | f"{start_lon},{start_lat};{end_lon},{end_lat}" |
| | ) |
| | params = { |
| | "overview": "false", |
| | "steps": "true" |
| | } |
| | |
| | response = requests.get(url, params=params, timeout=10) |
| | response.raise_for_status() |
| | return response.json() |
| | |
| | |
| | result = get_route(16.37208, 48.20849, 16.37382, 48.20672) |
| | |
| | route = result["routes"][0] |
| | print("Distanz in Metern:", route["distance"]) |
| | print("Dauer in Sekunden:", route["duration"]) |
| | </code> |
| | |
| | =====Datenbasis===== |
| | OSRM verarbeitet OpenStreetMap-Daten in einem Vorbereitungsprozess und erzeugt daraus speziell optimierte Routing-Datenstrukturen. Laut Projektseite unterstützt OSRM den Import von OSM-Daten (siehe [[PBF]]), ist für sehr große Netze ausgelegt und bietet vorkonfigurierte Profile für Auto, Fahrrad und Fußweg. Das Routing-Verhalten kann über Profile angepasst werden. |
| | |
| | Für die Datenvorbereitung werden Werkzeuge wie osrm-extract, osrm-contract, osrm-partition und osrm-customize verwendet. Welche Schritte nötig sind, hängt vom gewählten Routing-Algorithmus ab. Die Dokumentation und projektnahen Quellen unterscheiden dabei insbesondere zwischen CH (Contraction Hierarchies) und MLD (Multi-Level Dijkstra). |
| | |
| | =====API-Endpunkte===== |
| | |
| | Die HTTP-API von OSRM verwendet in Version 5.x das Protokoll v1. Die zentralen Dienste sind: |
| | |
| | * route |
| | * nearest |
| | * table |
| | * match |
| | * trip |
| | * tile |
| | |
| | ====Route==== |
| | |
| | Der Dienst [[https://project-osrm.org/docs/v5.24.0/api/#route-service|route]] berechnet die schnellste Route zwischen Koordinaten auf Basis des gewählten Profils, zum Beispiel driving, bike oder foot. Er liefert unter anderem Distanz, Dauer und auf Wunsch Geometrien und Turn-by-Turn-Informationen. |
| | |
| | Beispiel: |
| | |
| | /route/v1/driving/16.37208,48.20849;16.37382,48.20672?overview=false |
| | |
| | ====Nearest==== |
| | |
| | Der Dienst [[https://project-osrm.org/docs/v5.24.0/api/#nearest-service|nearest]] ordnet eine Koordinate dem nächstgelegenen Straßensegment zu. Das ist nützlich, um GPS-Punkte auf das Routing-Netz zu „snappen“. |
| | |
| | ====Table==== |
| | |
| | Der Dienst [[https://project-osrm.org/docs/v5.24.0/api/#table-service|table]] berechnet eine Matrix aus Fahrzeiten oder Distanzen zwischen mehreren Koordinaten. Laut API-Dokumentation liefert table bei Distanzen nicht die Luftlinie, sondern die Distanzen der jeweils schnellsten Routen im Straßennetz. |
| | |
| | ====Match==== |
| | |
| | Der Dienst [[https://project-osrm.org/docs/v5.24.0/api/#match-service|match]] dient dem Map-Matching. Dabei werden GPS-Spuren auf wahrscheinliche Straßenverläufe abgebildet. Das ist besonders für Tracking- oder Flottenanwendungen relevant. |
| | |
| | ====Trip==== |
| | |
| | Der Dienst [[https://project-osrm.org/docs/v5.24.0/api/#trip-service|trip]] berechnet eine sinnvolle Reihenfolge für mehrere Wegpunkte. Das Problem ist verwandt mit dem Traveling-Salesman-Problem und eignet sich für einfache Tourenplanung. |
| | |
| | ====Tile==== |
| | |
| | Der Dienst [[https://project-osrm.org/docs/v5.24.0/api/#tile-service|tile]] stellt Kachelinformationen für Debugging und Visualisierung bereit. |
| | |
| | =====Profile===== |
| | |
| | Das Routing-Verhalten von OSRM wird durch Lua-Profile bestimmt. Das Profil wird bereits bei der Datenaufbereitung festgelegt und definiert, welche Straßen befahrbar sind und wie Geschwindigkeiten, Einschränkungen oder Präferenzen behandelt werden. Die offiziellen Beispiele nennen insbesondere car, bike und foot. |
| | |
| | Dadurch lässt sich OSRM an verschiedene Einsatzszenarien anpassen, etwa für klassische Autonavigation, Fahrrad-Routing oder Fußwege. Eigene Profile sind möglich, wenn projektspezifische Regeln benötigt werden. Diese Schlussfolgerung ergibt sich aus der dokumentierten Profil-Logik und der Lua-basierten Konfiguration. |
| |
| =====Setup===== | =====Setup===== |