/openrouteservice

🌍 The open source route planner api with plenty of features.

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

Openrouteservice

Build Status Docker Quality Gate Status Release LICENSE

The openrouteservice API provides global spatial services by consuming user-generated and collaboratively collected free geographic data directly from OpenStreetMap. It is highly customizable, performant and written in Java.

The following services are available via a HTTP interface served by Tomcat.

  • Directions - Returns a route between two or more locations for a selected profile with customizable additional settings and instructions.
  • Isochrones - Obtains areas of reachability from given locations.
  • Matrix - Computes one-to-many, many-to-one or many-to-many routes for any mode of transport provided by openrouteservice.

To play around with openrouteservice you may use our demonstration server which comes with both the backend and a frontend. Or simply sign up for an API key and fire your requests against the API directly.

Please note that openrouteservice uses a forked and edited version of graphhopper 4.0 which can be found here.

ors client accessibility

Note

  • Our geocoding API is a separate service running the stack built around Pelias.
  • Our locations/API is another service which we have coined openpoiservice which can be found here.

Changelog/latest changes

Openrouteservice CHANGELOG

Contribute

We appreciate any kind of contribution - bug reports, new feature suggestion or improving our translations are greatly appreciated. Feel free to create an issue and label it accordingly. If your issue regards the openrouteservice web-app please use the corresponding repository.

If you want to contribute your improvements, please follow the steps outlined in our CONTRIBUTION guidelines

The sourcespy dashboard provides a high level overview of the repository including technology summary, module dependencies and other components of the system.

Installation

We suggest using docker to install and launch openrouteservice backend. In short, a machine with a working docker installation will get everything done for you.

Only use nightly (master branch) if you know what you do. We recommend running docker compose with the latest release version:

# For example for the latest release
git clone https://github.com/GIScience/openrouteservice.git
cd openrouteservice
# Checkout latest version
export LATEST_ORS_RELEASE=$(git describe --tags --abbrev=0); 
git checkout $LATEST_ORS_RELEASE
# If the docker folder exists cd into it
cd docker || echo "No docker folder found. Continue with next step."
# Now change the version the docker-compose.yml uses
sed -i='' "s/openrouteservice\/openrouteservice:nightly/openrouteservice\/openrouteservice:$LATEST_ORS_RELEASE/g" docker-compose.yml
sed -i='' "s/openrouteservice\/openrouteservice:latest/openrouteservice\/openrouteservice:$LATEST_ORS_RELEASE/g" docker-compose.yml
# Run docker compose with
docker compose up -d

For more details, check the docker installation guide.

For instructions on how to build from source or configure, visit our Installation and Usage Instructions.

Usage

Openrouteservice offers a set of endpoints for different spatial purposes. By default they will be available at

  • http://localhost:8080/ors/v2/directions
  • http://localhost:8080/ors/v2/isochrones
  • http://localhost:8080/ors/v2/matrix

You can find more information in the Installation and Usage Instructions.

API Documentation

For an easy and interactive way to test the api, visit our API documentation at openrouteservice.org. After obtaining your key you can try out the different endpoints instantly and start firing requests.

Questions

For questions please use our community forum.

Translations

If you notice anything wrong with translations, or you want to add a new language to the ORS instructions, we have some instructions in our backend documentation about how you can submit an update. You can also look over at our maps client GitHub if you want to contribute the language to there as well (adding or editing the language in the openrouteservice GitHub repo only affects the instructions - any new language also needs adding to the client).