Motorcycle, Mountain Bike and more on GraphHopper Maps

From now on our route planner GraphHopper Maps allows not only foot, car and bike routing, we’ve also added motorcycle, mountain bike and racing bike:


This means all other applications using our Directions API are now able to use more vehicle types as well and offer their users a more specific routing experience and a more precise route optimization.

Thanks to contributor ratrun those vehicle types were already included since several months, but the necessary hardware requirements and the involved heavy import procedure would have made it too time consuming to maintain for us. But as soon as we released GraphHopper 0.5 with multiple vehicles support (for the speed mode), we were able to dramatically reduce the RAM and import time requirements, so that now one vehicle type is very cheap to be added. Side note: the flexibility mode always supported multiple vehicles but is currently not used in our Directions API.

To give you an example: before the change 3 JVMs (per server) with one vehicle each and roughly 3*30GB RAM were necessary. Now the base graph takes roughly 15GB and every added vehicles is about 8GB RAM which adds on top making roughly a 30% RAM reduction and that even with 3 more vehicles. And due to the parallelization of our import we are able to create the vehicle profiles in nearly the same time as for one vehicle, still more RAM is necessary.

The necessary refactorings were the most complex one in GraphHopper history as they did not only require a fundamental internal API change, but also we had to make sure the performance for several different configurations were not affected. Thanks to our huge unit, integration and performance test suite we were on the safe side, still the refactoring disclosed some shortcomings, as I wrote once at Twitter:

Do not fear none-trivial refactorings.
This way you can test your tests 😉

Having a more consistent deployment also allowed us to enable elevation for all vehicles, including motor vehicles. Still keep in mind that currently only bike recognizes the elevation while routing itself.

So, let us know what you think, have fun and expect more exciting news soon!