Generated by GPT-5-mini| GraphHopper | |
|---|---|
| Name | GraphHopper |
| Title | GraphHopper |
| Developer | GraphHopper GmbH |
| Initial release | 2013 |
| Programming language | Java |
| Platform | Cross-platform |
| License | Apache License 2.0 |
GraphHopper is an open-source routing and map-matching library implemented in Java and maintained by a company and community contributors. It provides routing for automobiles, bicycles, pedestrians, and custom profiles, integrating with digital map sources and server infrastructures. Widely used in navigation, logistics, and geographic information systems, it supports turn restrictions, elevation data, and vehicle routing extensions.
GraphHopper began as a project to provide fast shortest-path routing and route optimization services, combining classical algorithmic work with practical engineering for web and embedded environments. The project ecosystem includes a routing engine, a web API, client libraries, and tooling for map processing tied to several mapping and transport projects. It interoperates with prominent projects and institutions such as OpenStreetMap, OSM contributors, Mapbox, HERE Technologies, TomTom, Esri, QGIS, and PostGIS.
The core architecture separates preprocessing, routing, and API layers, enabling modular deployment across server clusters and edge devices. Key components include a graph preparation module, a routing core, a flexible profile system, and adapters for tiles and offline stores. The system integrates with storage and compute projects like Apache Cassandra, Redis, ElasticSearch, Hadoop, Kubernetes, and Docker for scaling and orchestration. For development and CI it relies on ecosystems involving Maven, Gradle, JUnit, and Travis CI or GitHub Actions.
GraphHopper implements and extends classical shortest-path algorithms and heuristics to support real-world constraints. It uses variants of Dijkstra's algorithm, A* search algorithm, and Contraction Hierarchies for speedups, and supports multi-criteria routing, turn costs, and custom weighting for profiles such as car, bike, and foot. The project also includes map-matching algorithms to align GPS traces with road networks, and integrates with vehicle routing problem solvers related to research from OR-Tools, Google Research, and combinatorial optimization literature exemplified by work from Jon Kleinberg, Éva Tardos, and David Karger.
GraphHopper primarily consumes vector map data from OpenStreetMap in Protocolbuffer Binary Format or XML extracts, and can incorporate supplemental layers such as digital elevation models from NASA, SRTM, and ASTER. It interoperates with tile services and vector tile formats used by Mapbox GL, TileServer GL, and CartoDB. Internally it encodes graphs, edges, nodes, and turn restrictions using binary-packed formats optimized for memory and I/O, aligning with practices seen in OSRM and spatial databases like PostGIS.
GraphHopper is deployed in cloud and on-premises environments supporting RESTful APIs and SDKs for mobile and web clients. Integrations and use cases span delivery and logistics platforms, bike-sharing services, and municipal transport projects involving organizations such as Uber, Lyft, BlaBlaCar, Deutsche Bahn, SNCF, Daimler AG, and BMW. It offers connectors for fleet management systems and telemetry stacks like Prometheus, Grafana, and trace systems inspired by Jaeger (software) and Zipkin. Mobile implementations interact with SDKs from Android (operating system), iOS, and mapping libraries such as Leaflet, OpenLayers, and Cesium (software).
Performance characteristics focus on pre-processing time, memory footprint, and per-query latency under various workloads and network sizes. Benchmarks compare implementations using routing acceleration techniques to projects like OSRM, Valhalla (routing engine), and proprietary engines from HERE Technologies and TomTom. Scaling experiments are often run on hardware or cloud providers such as Amazon Web Services, Google Cloud Platform, and Microsoft Azure with orchestration through Kubernetes and load testing using JMeter or Gatling (software).
GraphHopper is published under the Apache License version 2.0, enabling commercial and academic adoption while fostering an active contributor community on GitHub. The project governance involves maintainers and corporate sponsorship, with community engagement through issue trackers, pull requests, mailing lists, and events such as FOSDEM, State of the Map, and conferences where routing and geoinformatics research is presented. Contributors range from independent developers to engineers at mapping companies and academic research groups.
Category:Routing software Category:Open-source mapping software Category:Java (programming language) software