GraphHopper Routing Engine 2.0 Released

Today we are releasing version 2.0 of the open source GraphHopper routing engine.

GraphHopper calculates optimal routes in road networks, for example taken from OpenStreetMap, for many different vehicle types and finds the ideal itinerary when using public transit. It is released under the Apache License 2.0 and you can easily try its road routing capabilities on GraphHopper Maps. Besides the route calculations the GraphHopper engine offers a lot more features like the map matching (“snap to road”), the navigation and the isochrone calculation (for a point it finds all reachable roads within a specified time).

View GraphHopper on Github.

Since the last stable release 1.0 we merged over 30 pull requests. The following contributors were involved in the 2.0 release:

easbar, michaz, Octanas, jb2martel, ratrun, gcheval, boldtrn, otbutz, karussell, oflebbe, msbarry

Thank you!

The new features

The main time was used to clean up and refactor the internal structure of GraphHopper which is still an ongoing issue. One result was that the Android demo was removed, see #1940 for the discussion. Which itself resulted in an upgrade to Java 8 of the core and other modules in #2077. It means that the offline routing feature of GraphHopper could still be used for Android projects but not for all older versions. The “client-hc” module used for online route calculation is not affected.

Another big effort was to make the so called CH preparation faster, which is one of the most time consuming parts of the import process, see #2132 from easbar. With these changes the edge-based CH preparation is 2 to 3 times faster, which helps us to improve our update frequency by several days for the world wide road network that we support in our Directions API.

The routing requests with the speed mode that supports turn restrictions (edge-based CH) are now over 30% faster, see #2054 from easbar.

The isochrone calculation is now faster for edge-based traversal. See to #2092 from michaz.

A new nice feature #1953 was developed from msbarry that improves the resolution of elevation data:
This 2km straight segment loses all elevation details…
…but with the new feature we get that elevation detail back

To make it easier to use GraphHopper in an Android navigation application we integrated the server-side part of it in the main repository, see #2081 and #2071. A working Android navigation demo that uses this feature is available here.

There were many other bug fixes and improvements, e.g. #2094 which is a bug fix for the isochrone code and #2101 which is a bug fix in the alternative route calculation.

Discuss this release in our forum. Happy Routing!