GraphHopper

Open-Source-Routing-Engine

GraphHopper ist eine quelloffene Routing-Software, die als Bibliothek oder auch als Server benutzt werden kann. Wird GraphHopper als Server betrieben, stellt dieser eine HTTP-API und eine Web-Oberfläche namens GraphHopper Maps[2] bereit. Die Bibliothek und der Server von GraphHopper sind in Java geschrieben.

GraphHopper

Screenshot
Oberfläche von GraphHopper Maps in Version 4.0
Basisdaten

Entwickler GraphHopper GmbH
Aktuelle Version GraphHopper 9.1
05. Mai 2024[1]
Betriebssystem Windows, macOS, Linux, Unixoide Systeme, Android
Programmier­sprache Java
Kategorie Geoinformationssystem, Routenplaner, Routing, Graphsuchalgorithmus
Lizenz Apache 2.0 Lizenz (Freie Software)
deutschsprachig ja
graphhopper.com

Durch die Plattformunabhängigkeit von Java kann GraphHopper auf Windows, Linux, MacOS und weiteren unixoiden Systemen betrieben werden, darunter beispielsweise auch Android, iOS oder Einplatinencomputern, wie dem Raspberry Pi.[3][4]

Standardmäßig wird GraphHopper mit Daten von OpenStreetMap für das Netzwerk der Straßen und Wege betrieben. Optional können Höhendaten der Shuttle Radar Topography Mission genutzt werden, um beispielsweise ein Höhenprofil der Route zu berechnen und anzuzeigen.

Die Apache-Lizenz erlaubt es, GraphHopper zu verändern und in freie sowie kommerzielle Produkte zu integrieren. Durch die Nutzung von OpenStreetMap-Daten und die Geschwindigkeit der Berechnungen ist GraphHopper eine mögliche Alternative zu den Routing-Funktionen in etablierten Kartendiensten wie etwa Google Maps oder Apple Maps.[5]

Anwendungen

Bearbeiten

Neben Punkt-zu-Punkt-Routing für verschiedene Verkehrsmittel bietet GraphHopper die Möglichkeit, Distanzmatrizen zu berechnen, die als Eingabe für das Problem des Handlungsreisenden (Traveling Salesman Problem) dienen können.[6] Weitere Nutzungsmöglichkeiten sind:[7]

Daten und Algorithmen

Bearbeiten

GraphHopper bietet Implementationen verschiedener Algorithmen, darunter Dijkstra, A* und Bidirektionale Suche. Um das Erstellen einer Route auf langen Pfaden (auch über Kontinente hinweg) zu beschleunigen und um heuristische Ansätze zu vermeiden, benutzt GraphHopper standardmäßig sogenannte contraction hierarchies. Diese Technik wandelt das Straßennetz beim Einlesen der Rohdaten in eine hierarchische Datenstruktur um, die nötig ist, um das System sehr speichereffizient und schnell zu machen.[12]

Konfigurieren lässt sich GraphHopper vor allem über sogenannte Profile. Diese bestimmen die Gewichtung einzelner Wege während der Routenberechnung und enthalten Informationen über Geschwindigkeiten und Standardwerte für Geschwindigkeitsbegrenzungen. Beispielsweise vermeiden Fahrrad-Profile Autobahnen, Auto-Profile vermeiden hingegen Fahrradwege. Neben standardmäßig vorhandenen Profilen ist es auch möglich, eigene zu erstellen.[13]

Die Entwicklung von GraphHopper legt großen Wert auf Softwaretests, was eine Vielzahl von Unit- und Integrationstests einschließt.[14] Die Version 1.0 wurde im Mai 2020 nach acht Jahren Entwicklung veröffentlicht.[15]

Nennenswerte Nutzer von GraphHopper sind unter anderem Rome2rio, Deutsche Bahn, Komoot, Gnome[16] und Flixbus. Seit Februar 2015 ist GraphHopper eine der APIs auf der offiziellen Website von OpenStreetMap und Version 0.4 wurde kurz danach veröffentlicht.[17][18]

Unternehmen

Bearbeiten

Im Januar 2016 haben die Entwickler von GraphHopper und jsprit das Unternehmen GraphHopper GmbH in München gegründet. Weitere Büros gibt es in Berlin und Hoyerswerda.[19]

GraphHopper Directions API

Bearbeiten

Die kostenpflichtige GraphHopper Directions API der GraphHopper GmbH bietet folgende spezifische APIs an:[20]

Bis auf die Routing Optimierung API und Distance Matrix API sind alle Schnittstellen auch in der quelloffenen Variante von GraphHopper enthalten.[21]

Bearbeiten

Einzelnachweise

Bearbeiten
  1. GraphHopper GitHub Repository: Releases. Abgerufen am 26. November 2023.
  2. Driving Directions – GraphHopper Maps. Abgerufen am 25. September 2021.
  3. graphhopper/graphhopper-ios auf GitHub. Abgerufen am 25. September 2021.
  4. karussell: Driving Directions with GraphHopper and Java on Raspberry Pi. 9. April 2014, abgerufen am 25. September 2021 (englisch).
  5. LocationTech Tour 2014. In: eclipse Magazin. 27. Oktober 2014, abgerufen am 27. Oktober 2021.
  6. Applications of Evolutionary Computation. Band 9028, 2015, ISBN 978-3-319-16548-6, Optimising the Scheduling and Planning of Urban Milk Deliveries, S. 604–615, doi:10.1007/978-3-319-16549-3_49.
  7. GraphHopper – A Fast and Customizable Route Planner. (PDF) 13. November 2014, abgerufen am 27. Oktober 2021 (englisch).
  8. GraphHopper GitHub Repository: Map Matching Modul. GraphHopper GmbH, abgerufen am 30. April 2015.
  9. Central European University (Hrsg.): Motorways and firm performance: the case of Hungary. 2014 (ceu.hu [PDF; abgerufen am 27. Oktober 2021]).
  10. GraphHopper Isochrone API. Abgerufen am 30. April 2015.
  11. Angewandte Geoinformatik. 2014, ISBN 978-3-87907-543-0 (gispoint.de [PDF]).
  12. Peter Karich: GraphHopper Maps: Fast Road Routing in 100-Percent Java. In: Java Magazin. Januar 2014, S. 71–73 (ehu.es [PDF; 8,3 MB; abgerufen am 15. November 2024]).
  13. GraphHopper GitHub Repository: Profiles. Abgerufen am 27. Oktober 2021.
  14. GraphHopper GitHub Repository: CONTRIBUTING.md. Abgerufen am 26. Oktober 2021.
  15. Heise Developer: Routenplanung: GraphHopper hat nach acht Jahren das Routenziel erreicht. Abgerufen am 26. Oktober 2021.
  16. Gnome Maps 3.14 uses the GraphHopper Directions API. Abgerufen am 30. April 2015.
  17. Route Planning on OpenStreetMap.org. Blog.openstreetmap.org, abgerufen am 30. April 2015.
  18. Heise Open: Quelloffener Routenplaner GraphHopper in Version 0.4 erschienen. Heise.de, abgerufen am 30. April 2015.
  19. graphhopper.com – Über uns. Abgerufen am 27. Oktober 2021.
  20. graphhopper.com – Preise. Abgerufen am 27. Oktober 2021.
  21. graphhopper.com – Open Source. Abgerufen am 27. Oktober 2021.