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). See the end of this post for some impressions and view GraphHopper on Github!
Since the last stable release 0.13 a few months ago we merged over 115 pull requests and were able to fix over 50 issues on Github. Many contributors were involved in the new 1.0 release:
Customizable routing: Without knowledge of Java and just some JSON (or YAML) configuration you can now tweak the default vehicle profiles. You can do this on a per-request basis, but also use your configuration with the fast hybrid- and speed modes. Use this to avoid bridges, motorways, ferries, steps or certain areas, avoid roads with truck limits, change the speed or max_speed variables or prioritize certain road classes like official bike routes. You can get very creative here! From @karussell and @easbar. To find out more see the documentation, issue #1841 and this blog post. Or try on this demo server and click on the flex icon near the ‘Search’ button.
A major code refactoring that includes turn costs calculation within the ‘Weighting’ class from @easbar. See our changelog.
A major refactoring towards profiles that replaces the ‘weighting’ and ‘vehicle’ parameters with a new ‘profile’ parameter. This requires some configuration changes. For the most cases you can use our converter tool. See the documentation. From @easbar.
Alternative route calculations are now much faster as they benefit from node- or edge-based Contraction Hierarchies #1722 from @michaz
Isochrone refactorings and improvements like edge-based graph traversal and turn restriction support from @michaz. See e.g. #1824.
Add new ‘curbside’ parameter #1697 to approach roads from a specific side from @easbar.
Bilinear interpolation for elevation #1942 from @msbarry
Many changes and improvements for spatial rules from @otbutz
Several bug fixes for the Landmark algorithm from @michaz and @aoles
a new POST /route endpoint, in addition to the GET /route endpoint, which avoids URL-length limitations, allows request compression and more from @karussell
More encoded values like EU tunnels, hazmat (hazardous materials), etc. from @otbutz
A new vehicle profile ‘wheelchair’ #1726 from @don-philipe
Many bug fixes for the block_area and the country feature from @karussell
Improvement for point hints #1935, from @samruston. This additionally improved query speed by 10%.
A big improvement to reduce the memory requirements for the import. Mainly from @msbarry
A new user interface for public transit from @Janekdererste and @michaz
Improved turn instructions like #1882 (or this) from @boldtrn
Edge-based Tarjan algorithm and subnetwork removal to avoid connection not found problems if turn restrictions are enabled (#2044) from @easbar
A good speed improvement for path details from @easbar
Turn instructions now give hints about ferries, tolls and private roads