Open Source Routing Machine - C++ backend
Go to file
2017-03-01 16:09:29 +00:00
.github Revert "Add simple code review checklist to PR template." 2016-12-06 17:21:38 -08:00
cmake Bundle mason.cmake and mason.sh 2017-02-16 16:08:07 +00:00
docker Don't mark all lanes as designated when there are blank lane specifiers in the tag. 2016-12-15 10:55:16 +01:00
docs Do not take the current route into account in alternatives_count parameter. 2017-03-01 01:29:00 +00:00
example Don't warn in example on 32bit only print message 2016-11-19 17:02:31 +01:00
features Do not take the current route into account in alternatives_count parameter. 2017-03-01 01:29:00 +00:00
fuzz Enable data flow guided fuzzing using traces 2016-08-19 13:59:59 +02:00
include fix edge duration truncation in partition, pending global fix 2017-03-01 16:09:29 +00:00
profiles Restored pre-fetching bridge tags 2017-02-23 22:35:15 +00:00
scripts Updates sol2 to v2.15.8 in dependency script 2017-02-20 10:11:18 +00:00
src don't check for files not actually read 2017-03-01 16:09:29 +00:00
test Squashed 'third_party/mason/' changes from 6b4c359..c7a9670 2017-02-15 11:48:43 +01:00
third_party Updates sol2 to v2.15.8, resolves #3733 2017-02-20 10:11:18 +00:00
unit_tests fix tbb leaks 2017-03-01 16:09:29 +00:00
.babelrc Restructure API docs so that they can be formatted with Docbox. (#3355) 2016-11-30 19:38:53 -08:00
.clang-format expose lanes as enums, adjusted for comments 2016-06-27 11:12:02 +02:00
.clang-tidy Integration scripts for Clang's Modernize and Tidy tool. 2015-09-22 17:32:32 +02:00
.cncc.style Add simple cncc file 2016-01-05 12:06:33 +01:00
.eslintrc Rewrite cucumber test suite in JS 2016-03-24 16:01:01 -07:00
.gitignore clean up lua debugging 2017-01-25 16:37:41 +01:00
.gitmodules Removing Docs submodule 2012-12-26 18:29:16 +01:00
.travis.yml fix tbb leaks 2017-03-01 16:09:29 +00:00
appveyor-build.bat Enable npm and library tests on windows 2017-01-03 10:24:48 +01:00
appveyor.yml Enable npm and library tests on windows 2017-01-03 10:24:48 +01:00
build-local.bat Updated cmake version to 3.7.0-rc2 2016-10-28 12:42:36 -07:00
CHANGELOG.md shared monitor implementation with a conditional variable 2017-02-24 16:01:56 +00:00
CMakeLists.txt Installs osrm-partition tool and library 2017-03-01 16:09:29 +00:00
codecov.yml Fix codecov.yml 2016-05-12 17:56:40 +02:00
CONTRIBUTING.md Squashed 'third_party/libosmium/' changes from d5ecf4d..c1f34c4 2017-01-20 14:05:21 +01:00
cucumber.js Close GH-2795: Rewrite cucumber test caching (and support logic). Fixes #2745 2016-09-19 14:13:44 -07:00
Doxyfile.in Exclude new node_modules folder that might be around if test cases have been run. 2016-04-05 22:59:14 +02:00
LICENCE.TXT We are at 2016 for the license 2016-01-04 18:13:05 +01:00
package.json add unit test for annotations=true returning all annotations 2017-02-13 18:00:39 +00:00
README.md Squashed 'third_party/libosmium/' changes from d5ecf4d..c1f34c4 2017-01-20 14:05:21 +01:00
taginfo.json Supports destination:street, resolves #3541 2017-01-13 11:07:01 +05:30

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:

  • node-osrm - Production-ready NodeJs bindings for the routing engine
  • osrm-frontend - User-facing frontend with map. The demo server runs this on top of the backend
  • osrm-text-instructions - Text instructions from OSRM route response

Contact

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

Quick Start

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

Documentation

Full documentation

Running a 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},
}