C++ Gherkin JavaScript CMake Lua Shell Other
Permalink
Failed to load latest commit information.
.github Revert "Add simple code review checklist to PR template." Dec 7, 2016
cloudformation Fix publishing node binaries Mar 30, 2017
cmake Merges node-osrm into repository Mar 21, 2017
docker Configure Dockerfile for integration with Docker Cloud/Dockerhub for (#… Mar 21, 2017
docs Always check local variables Mar 30, 2017
example Back to Monaco for examples and benchmarks Mar 21, 2017
features use signed slope to distinguish uphills and downhills Mar 30, 2017
fuzz Enable data flow guided fuzzing using traces Aug 19, 2016
include Fix formating Apr 5, 2017
lib Merges node-osrm into repository Mar 21, 2017
profiles move split_edges to global properties Mar 30, 2017
scripts Switch from commit message publishing to tag-based publishing Mar 30, 2017
src Remove osrm namespace indication where possible, wrap out shared_memo… Apr 4, 2017
test NodeJS Binding Tests Apr 4, 2017
third_party Updates sol2 to v2.15.8, resolves #3733 Feb 20, 2017
unit_tests Fix test compilation Apr 5, 2017
.babelrc Restructure API docs so that they can be formatted with Docbox. (#3355) Dec 1, 2016
.clang-format expose lanes as enums, adjusted for comments Jun 27, 2016
.clang-tidy Integration scripts for Clang's Modernize and Tidy tool. Sep 22, 2015
.cncc.style Add simple cncc file Jan 5, 2016
.eslintrc Rewrite cucumber test suite in JS Mar 24, 2016
.gitignore Back to Monaco for unit tests Mar 21, 2017
.gitmodules Removing Docs submodule Dec 26, 2012
.npmignore Merges node-osrm into repository Mar 21, 2017
.travis.yml NodeJS Binding Tests Apr 4, 2017
CHANGELOG.md move split_edges to global properties Mar 30, 2017
CMakeLists.txt NodeJS Binding Tests Apr 4, 2017
CONTRIBUTING.md [skip ci] Added info to CONTRIBUTING.md about automatic format checks Jan 4, 2017
Doxyfile.in Exclude new node_modules folder that might be around if test cases ha… Apr 5, 2016
LICENCE.TXT We are at 2016 for the license Jan 4, 2016
README.md Documents the user having to be in the docker group for running our i… Mar 28, 2017
appveyor-build.bat Fix Win tests by copying data explicitly to test/data Mar 28, 2017
appveyor.yml fix appveyor fail Mar 21, 2017
build-local.bat Updated cmake version to 3.7.0-rc2 Oct 28, 2016
codecov.yml Enable coverage reports for unit_tests Mar 28, 2017
cucumber.js Added traffic tests to MLD testing Mar 17, 2017
package.json Bump backed version to latest.4 Apr 5, 2017
taginfo.json Supports destination:street, resolves #3541 Jan 13, 2017
yarn.lock Switch to yarn Mar 30, 2017

README.md

Open Source Routing Machine

Linux / macOS Windows Code Coverage
Travis AppVeyor Codecov

High performance routing engine written in C++14 designed to run on OpenStreetMap data.

The following services are available via HTTP API, C++ library interface and NodeJs wrapper:

  • Nearest - Snaps coordinates to the street network and returns the nearest matches
  • Route - Finds the fastest route between coordinates
  • Table - Computes the duration of the fastest route between all pairs of supplied coordinates
  • Match - Snaps noisy GPS traces to the road network in the most plausible way
  • Trip - Solves the Traveling Salesman Problem using a greedy heuristic
  • Tile - Generates Mapbox Vector Tiles with internal routing metadata

To quickly try OSRM use our demo server which comes with both the backend and a frontend on top.

Related Project-OSRM repositories:

Documentation

Full documentation

Contact

  • IRC: irc.oftc.net, channel: #osrm (Webchat)
  • Mailinglist: https://lists.openstreetmap.org/listinfo/osrm-talk

Quick Start

The easiest and quickest way to setup your own routing engine backend is to use Docker images we provide.

Using Docker

We base our Docker images on Alpine Linux and make sure they are as lightweight as possible.

wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf

docker run -t -v $(pwd):/data osrm/osrm-backend osrm-extract -p /opt/car.lua /data/berlin-latest.osm.pbf
docker run -t -v $(pwd):/data osrm/osrm-backend osrm-contract /data/berlin-latest.osrm
docker run -t -i -p 5000:5000 -v $(pwd):/data osrm/osrm-backend osrm-routed /data/berlin-latest.osrm

curl "http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true"

In case Docker complains about not being able to connect to the Docker daemon make sure you are in the docker group.

sudo usermod -aG docker $USER

After adding yourself to the docker group make sure to log out and back in again with your terminal.

Building from Source

The following targets Ubuntu 16.04. For instructions how to build on different distributions, macOS or Windows see our Wiki.

Install dependencies

sudo apt install build-essential git cmake pkg-config \
libbz2-dev libstxxl-dev libstxxl1v5 libxml2-dev \
libzip-dev libboost-all-dev lua5.2 liblua5.2-dev libtbb-dev

Compile and install OSRM binaries

mkdir -p build
cd build
cmake ..
cmake --build .
sudo cmake --build . --target install

Grab a .osm.pbf extract from Geofabrik or Mapzen's Metro Extracts

wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf

Pre-process the extract and start the HTTP server

osrm-extract berlin-latest.osm.pbf -p profiles/car.lua
osrm-contract berlin-latest.osrm
osrm-routed berlin-latest.osrm

Running Queries

curl http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true

Request Against the Demo Server

Read the API usage policy. Simple query with instructions and alternatives on Berlin:

curl https://router.project-osrm.org/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true&alternatives=true

References in publications

When using the code in a (scientific) publication, please cite

@inproceedings{luxen-vetter-2011,
 author = {Luxen, Dennis and Vetter, Christian},
 title = {Real-time routing with OpenStreetMap data},
 booktitle = {Proceedings of the 19th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems},
 series = {GIS '11},
 year = {2011},
 isbn = {978-1-4503-1031-4},
 location = {Chicago, Illinois},
 pages = {513--516},
 numpages = {4},
 url = {http://doi.acm.org/10.1145/2093973.2094062},
 doi = {10.1145/2093973.2094062},
 acmid = {2094062},
 publisher = {ACM},
 address = {New York, NY, USA},
}