Open Source Routing Machine - C++ backend
c-plus-pluscppcpp17isochronesmap-matchingopenstreetmaposmosrmroutingrouting-enginetraveling-salesman
Staggered intersection are very short zig-zags of only a few meters. They are common in rural and exurban areas, especially in the US. (In addition, these cases could as well be tagging issues) We do not want to announce these short left-rights or right-lefts: * -> b a -> * | or | becomes a -> b a -> * * -> b Here is one example: - https://www.openstreetmap.org/edit#map=20/39.26017/-84.25182 And here are two edge-cases that we don't handle at the moment: - http://www.openstreetmap.org/edit#map=20/38.87900/-76.98519 - http://www.openstreetmap.org/edit#map=19/45.51056/-122.63462 and probably should not handle since the distance in between is quite long (roughly 7-15 meters). For these we want to announce two turns to not confuse the user. Thanks to @1ec5 for raising this issue and @karenzshea for providing additional US examples and cultural insights. |
||
---|---|---|
cmake | ||
docker | ||
docs | ||
example | ||
features | ||
include | ||
profiles | ||
scripts | ||
src | ||
test | ||
third_party | ||
unit_tests | ||
.clang-format | ||
.clang-tidy | ||
.cncc.style | ||
.eslintrc | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
appveyor-build.bat | ||
appveyor.yml | ||
build-local.bat | ||
CHANGELOG.md | ||
CMakeLists.txt | ||
codecov.yml | ||
CONTRIBUTING.md | ||
cucumber.js | ||
Doxyfile.in | ||
LICENCE.TXT | ||
package.json | ||
profile.lua | ||
README.md | ||
taginfo.json |
About
The Open Source Routing Machine is a high performance routing engine written in C++11 designed to run on OpenStreetMap data.
Current build status
build config | status |
---|---|
Linux | ![]() |
Windows | |
Coverage |
Contact
- IRC: server
irc.oftc.net
, channel:#osrm
(see:https://www.oftc.net
, and for a webchat:https://webchat.oftc.net
) - Mailinglist:
https://lists.openstreetmap.org/listinfo/osrm-talk
Building
For instructions on how to build and run OSRM, please consult the Wiki.
To quickly try OSRM use our free and daily updated online service
Documentation
Full documentation
Quick start
Building OSRM assuming all dependencies are installed:
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
sudo cmake --build . --target install
Loading preparing a dataset and starting the server:
osrm-extract data.osm.pbf -p profiles/car.lua
osrm-contract data.osrm
osrm-routed data.osrm
Running a query on your local server:
curl http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true&alternatives=true
Running a request against the Demo Server
First read the API usage policy.
Then run 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},
}