Open Source Routing Machine - C++ backend
c-plus-pluscppcpp17isochronesmap-matchingopenstreetmaposmosrmroutingrouting-enginetraveling-salesman
This rips out the Bost Spirit / Karma conversion code, using the stdlib and lightweight alternatives instead. The main benefit is an immense decrease in compilation times, for every translation unit that requires the `util/cast.hpp` header. Note: compared to the version before, there is a minor change in behavior: the double `-0` was printed as `0` before and is now printed as `-0`. This comes from the IEE754 standard, specifying signed zeros, that is `+0` and `-0`. Interesting for us: JavaScript uses IEE754, resulting in no breakage if used in arithmetic. Small test case, left hand side was before, right hand side is now: $ ./a.out -1.123457 vs -1.123457 -1 vs -1 -1.3 vs -1.3 0 vs -0 0 vs 0 0 vs 0 1.3 vs 1.3 1.123457 vs 1.123457 References: - https://en.wikipedia.org/wiki/Signed_zero - http://www.boost.org/doc/libs/1_59_0/doc/html/boost/algorithm/trim_right_if.html - http://www.boost.org/doc/libs/1_59_0/doc/html/boost/algorithm/is_any_of.html |
||
---|---|---|
algorithms | ||
benchmarks | ||
cmake | ||
config | ||
contractor | ||
data_structures | ||
descriptors | ||
docker | ||
extractor | ||
features | ||
include/osrm | ||
library | ||
plugins | ||
profiles | ||
routing_algorithms | ||
scripts | ||
server | ||
test | ||
third_party | ||
tools | ||
unit_tests | ||
util | ||
.clang-format | ||
.clang-tidy | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
appveyor-build.bat | ||
appveyor.yml | ||
build-local.bat | ||
CMakeLists.txt | ||
datastore.cpp | ||
Doxyfile.in | ||
extract.cpp | ||
Gemfile | ||
Gemfile.lock | ||
LICENCE.TXT | ||
prepare.cpp | ||
profile.lua | ||
Rakefile | ||
README.md | ||
routed.cpp | ||
taginfo.json | ||
typedefs.h |
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 | branch | status |
---|---|---|
Linux | master | ![]() |
Linux | develop | ![]() |
Windows | master/develop | |
LUAbind fork | master | ![]() |
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
See the Wiki's server API documentation as well as the library API documentation
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},
}