Open Source Routing Machine - C++ backend
c-plus-pluscppcpp17isochronesmap-matchingopenstreetmaposmosrmroutingrouting-enginetraveling-salesman
Although we check for valid coordinates in the table plugin via
`check_all_coordinates`, we do not check for #srcs > 0 and #dsts > 0.
This would be fine as the grammar parser combines adding coordinates and
setting their `is_source` and `is_destination` property, which makes
adding coordinates without specifying source or destination impossible.
See: route_parameters.cpp, AddSource, AddDestination, and api_grammar.hpp
In contract, the Polyline codepath does not do this! In fact, it only lets
you set coordinates, but not their `is_source` or `is_destination` property.
See: route_parameters.cpp, SetCoordinatesFromGeometry
Therefore, the following queries only set coordinates:
http 'http://localhost:5000/table?locs=s_hhFg{arEgEfEgEfEgEfEgEfEgEfEgEfEgEfEgEfEgEfE'
http 'http://localhost:5000/table?locs=_p~iF~ps|U_ulLnnqC_mqNvxq`@'
but fail to specify sources and targets!
The distance table plugin now assumes `is_course` and `is_destination`
is the same size as `coordinates`.
And happily accesses uninitialized memory.
|
||
|---|---|---|
| cmake | ||
| config | ||
| docker | ||
| example | ||
| features | ||
| include | ||
| profiles | ||
| scripts | ||
| src | ||
| test | ||
| third_party | ||
| unit_tests | ||
| .clang-format | ||
| .clang-tidy | ||
| .cncc.style | ||
| .gitignore | ||
| .gitmodules | ||
| .travis.yml | ||
| appveyor-build.bat | ||
| appveyor.yml | ||
| build-local.bat | ||
| CHANGELOG.md | ||
| CMakeLists.txt | ||
| Doxyfile.in | ||
| Gemfile | ||
| Gemfile.lock | ||
| LICENCE.TXT | ||
| profile.lua | ||
| Rakefile | ||
| 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 | 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},
}


