This routing service requires a latitude and longitude input for two locations to calculate the shortest route in between. The routing is based on the Dijkstra algorithm. The service acts as a wrapper around the well-known and powerful OpenStreetMap routing engine Graphhopper. ExCELL routing service was mainly developed at Beuth Hochschule für Technik Berlin (BHS) by Stephan Pieper and Felix Kunde.
This web service comes as a SpringBoot application so it's very easy to test it on your local machine. If you run the service from inside a Java IDE a Tomcat server will be launched and you can access the service through a browser via localhost:43434.
As the service uses the Graphhopper routing engine it requires an OSM file to produce the routing graph. Download any OSM pbf file you want e.g. from GeoFabrik and reference the file location in the application.properties (4th parameter) file of this project. You also need to specify a directory where Graphhopper shall create the routing graph. By default it's src/main/resources/graphhopper.
To enable routing on behalf of real time travel times switch the parameter routing.fetchTravelTimes
to true
. Now the ExCELL travel time API will be called. Make sure that the RoutingService and the TravelTimesService are operating on the same Graphhopper graph. Currently, no on-the-fly edge matching is implemented, in case different graphs are used. The user can set up his/her own TravelTimeService or use the online API on the ExCELL Developer Portal. The parameter url.traveltimeservice
in the application.properties
defines which endpoint is used. The URL of the online API is the default setting but it requires a user login which can be configured in the application.properties
as well. By default, the token is provided by the ExCELL API Gateway. If user authentification is not required change the parameter of url.routingservice.auth
to false
. If user authentification is not required change the parameter of url.traveltimeservice.auth
to false
.
The project is using Maven as a build tool and for managing the software dependencies. So in order to build the software you should install Maven on your machine. To create an executable JAR file for your local machine open you favourite shell environment and run:
mvn clean package
This creates a JAR file called routing-0.1.0.jar
. You can change the name in the pom.xml file. If you plan to run the service on a remote machine, it is necessary to include the dependencies within the JAR file. To create a fat or "shaded" JAR use:
mvn clean package shade:shade
On your local machine run the JAR with:
java -jar routing-0.1.0.jar
On a remote machine use it is necessary to specify the location of the OSM file and routing graph directory. You might also want to change the server port
java -jar routing-0.1.0.jar --server.port=44444 --routing.ghlocation=/path/to/routing/graph --routing.osmfile=/path/to/osm/file.osm.pbf
I you get an error that the main class is unknow user -cp
with the path to the main class instead of the -jar
operator.
java -cp restrouting/Application.java routing-0.1.0.jar --server.port=44444 --routing.ghlocation=/path/to/routing/graph --routing.osmfile=/path/to/osm/file.osm.pbf
This projects provides a Swagger interface to support the Open API initiative. The Java library Springfox is used to automatically create the swagger UI configuration from annotations in the Java Spring code.
An online version of the routing API is available on the ExCELL Developer Portal: Try it out!. You need to sign up first in order to access the services from the portal. Every user receives a token that he/she has to use for authorization for each service.
- Stephan Pieper (BHS)
- Felix Kunde (BHS)
- Maximilian Allies (BHS)
- Henning Jeske (Technische Universität Dresden)
- fkunde [at] beuth-hochschule.de
The Routing Service has been realized within the ExCELL project funded by the Federal Ministry for Economic Affairs and Energy (BMWi) and German Aerospace Center (DLR) - agreement 01MD15001B.
- Graphopper Team
THIS SOFTWARE IS PROVIDED "AS IS" AND "WITH ALL FAULTS." BHS MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE QUALITY, SAFETY OR SUITABILITY OF THE SKRIPTS, EITHER EXPRESSED OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
IN NO EVENT WILL BHS BE LIABLE FOR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES HOWEVER THEY MAY ARISE AND EVEN IF BHS HAS BEEN PREVIOUSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.