Linux / macOS | Windows | Code Coverage |
---|---|---|
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
- IRC:
irc.oftc.net
, channel:#osrm
(Webchat) - Mailinglist:
https://lists.openstreetmap.org/listinfo/osrm-talk
The following targets Ubuntu 16.04. For instructions how to build on different distributions, macOS or Windows see our Wiki.
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
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
osrm-extract berlin-latest.osm.pbf -p profiles/car.lua
osrm-contract berlin-latest.osrm
osrm-routed berlin-latest.osrm
curl http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true
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
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},
}