Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
osrm [2026/03/29 22:25] jango [Ubuntu Setup Manager] |
osrm [2026/04/04 12:09] (aktuell) admin [Datenbasis] |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | Open Source Routing Machine. Siehe auch [[OpenStreetMap]] | + | OSRM (Open Source Routing Machine) ist eine Open-Source Routing-Engine für Straßennetze auf Basis von [[OpenStreetMap]]-Daten (OSM). Das Projekt ist in C++ implementiert und auf sehr schnelle Routenberechnung ausgelegt. Im Unterschied zu Geocodern wie [[Nominatim]] übersetzt OSRM keine Adressen in Koordinaten, |
| + | |||
| + | OSRM kann sowohl als HTTP-Dienst betrieben als auch als Bibliothek genutzt werden. Die offizielle Dokumentation beschreibt dafür eine HTTP-API, eine C++ Bibliothek namens libosrm sowie einen Node.js Wrapper. | ||
| Demo [[https:// | Demo [[https:// | ||
| + | |||
| + | <code python> | ||
| + | import requests | ||
| + | |||
| + | def get_route(start_lon: | ||
| + | url = ( | ||
| + | f" | ||
| + | f" | ||
| + | ) | ||
| + | params = { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | |||
| + | response = requests.get(url, | ||
| + | response.raise_for_status() | ||
| + | return response.json() | ||
| + | |||
| + | |||
| + | result = get_route(16.37208, | ||
| + | |||
| + | route = result[" | ||
| + | print(" | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | =====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, | ||
| + | |||
| + | =====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:// | ||
| + | |||
| + | Beispiel: | ||
| + | |||
| + | / | ||
| + | |||
| + | ====Nearest==== | ||
| + | |||
| + | Der Dienst [[https:// | ||
| + | |||
| + | ====Table==== | ||
| + | |||
| + | Der Dienst [[https:// | ||
| + | |||
| + | ====Match==== | ||
| + | |||
| + | Der Dienst [[https:// | ||
| + | |||
| + | ====Trip==== | ||
| + | |||
| + | Der Dienst [[https:// | ||
| + | |||
| + | ====Tile==== | ||
| + | |||
| + | Der Dienst [[https:// | ||
| + | |||
| + | =====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, | ||
| + | |||
| + | Dadurch lässt sich OSRM an verschiedene Einsatzszenarien anpassen, etwa für klassische Autonavigation, | ||
| =====Setup===== | =====Setup===== | ||