GraphHopper is a fast and Open Source road routing engine.
OverviewGraphHopper offers memory efficient algorithms in Java for routing on graphs. E.g. Dijkstra and A* but also optimized road routing algorithms like Contraction Hierarchies. It stands under the Apache License and is build on a large test suite.
LicenseWe chose the Apache License to make it easy for you to embed GraphHopper in your products. We suggest to contribute back your changes (as GraphHopper will evolve fast) but of course this is not necessary.
OpenStreetMap SupportOpenStreetMap is directly supported from GraphHopper. Without the amazing data from OpenStreetMap GraphHopper wouldn't be possible at all. Other map data will need a custom import procedure.
DevelopmentDevelopment happens at GitHub. You can clone the project at GitHub, ask questions on Stackoverflow or sign up at the mailing list.
Written in JavaGraphHopper is written in Java and runs on Linux, OSX, Windows and Android. Other environments which supports at least Java 5 will work too.
AndroidOn Android we provide an integration with Mapsforge which makes offline navigation one step closer. Due to the usage of memory mapped files and Contraction Hierarchies we avoid allocating too much memory which makes it possible to run Germany-wide queries with only 32MB in a few seconds. We provide an Eclipse project as well as the Maven-Android integration to be used in other IDEs.
DesktopGraphHopper also works on the Desktop in a Java application without internet access. E.g. you could use the rough user interface called MiniGraphUI provided in the tools module. To have a proper and fast map visualization we'll have to wait for mapsforge 0.4 which will support the desktop via Swing/AWT. Or you have to use an older version of it. Ask on the mailing list for more up to date information.
Customizable APIWe've build the GraphHopper class which makes simple things easy. Still you can use the low level API of GraphHopper and you'll see that it was created to allow fast and memory efficient use of the underlying datastructures and algorithms.
- Written in Java and runs under Linux, Windows, Android, ...
- Business friendly due to Apache License 2.0, commercial support and ... see below!
- Based on many unit and integration tests
- Memory efficient data structures, algorithms and also the API is tuned towards ease of use and efficiency.
- Very fast. And via the speed-up technic called "Contraction Hierarchies" it can be even faster - CH is enabled by default.
- Simple installation - just Java necessary! Simple setup for developers due to Maven.
- Has algorithms ala A*, Dijkstra and the bidirected versions, plus one-to-many cases
- Works out of the box with OpenStreetMap (osm and pbf) but can be adapted to use your own data
- OpenStreetMap integration: Takes care of the road type, the surface, barriers, access restrictions, ferries, ...
- Uses only a few dependencies (trove4j and slf4j)
- Scales from small indoor- to world-wide-sized graphs
- Can be used on mobile devices with less than 32MB. For Android we additionally provide a demo with mapsforge.
- Supports car, bicycle, pedestrian vehicles by default. But you can easily create your own or customize existing vehicles.
- The web module returns highly compressed paths via gzip and polyline encoding.
Get a fast answer for free on our mailing list.
Contact us to get more information about our services:
We offer GraphHopper training, support, development and consulting.
We provide GraphHopper installation with support.
- GraphHopper Geocoder. Contact us to participate in our early adopters program.
- Optimized to efficiently calculate many to many paths. Useable for logistics, ridesharing applications and more.
The GraphHopper Team says thanks to
- OpenStreetMap - the best map data world wide!
- NetBeans - for the best Java IDE!
- Gpsies - for hosting our GraphHopper API
- YourKit is kindly supporting open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications.
- Xubuntu, Trove4J, Log4J, Guice, Maven and other Open Soure software.
- Images and icons for our website via Wikipedia, and famfamfam icons!