Open Source Routing Machine - C++ backend
Go to file
Daniel J. Hofmann 583aaff286 Makes designated HOV way's routability configurable in profiles.
Why only `hov=designated` and not all access tags, such as `hov:yes`,
`hov=no` and so on? From the Wiki:

- designated: The way is designated to high occupancy vehicles.
- yes: High occupancy vehicles are allowed. This by itself does not imply that other vehicles are restricted from using the way.
- no: High occupancy vehicles are not allowed on the way. This by itself does not imply that other vehicle types are allowed to use it.

The primary use-case is conditionally filtering ways such as:

http://www.openstreetmap.org/way/11198593#map=19/37.82571/-122.30521&layers=D

In addition there is a notion of HOV lanes for lane handling:

http://wiki.openstreetmap.org/wiki/Key:hov#hov:lanes.3D.2A

This changeset does not handle lanes at all, only designated HOV ways.
For HOV lane support, a logic similar to the lane access handling needs
to be implemented. This needs to go hand in hand with the existing lane
handling introduced in:

7d076e9344

References:
- #2711
- http://wiki.openstreetmap.org/wiki/Key:access
- http://wiki.openstreetmap.org/wiki/Key:hov#Values
2016-08-03 12:24:43 +02:00
cmake Fix various issues with pkg-config 2016-06-04 12:08:54 +02:00
docker [skip ci] Update docker files to gcc 5 2016-07-21 17:19:35 +02:00
docs Reformated the docs for annotations 2016-07-27 15:51:11 -07:00
example Added 'return EXIT_SUCCESS' (#2710) 2016-07-27 16:31:57 -07:00
features Makes designated HOV way's routability configurable in profiles. 2016-08-03 12:24:43 +02:00
include Adapt lane dump to lanes at intersection (#2675), resolves #2709 2016-08-03 12:19:14 +02:00
profiles Makes designated HOV way's routability configurable in profiles. 2016-08-03 12:24:43 +02:00
scripts [skip ci] Update format script to enforce clang-format version, and work on OSX 2016-07-26 15:00:14 +02:00
src Adapt lane dump to lanes at intersection (#2675), resolves #2709 2016-08-03 12:19:14 +02:00
test Add benchmark target to Makefile and save timings 2016-04-05 18:57:31 +02:00
third_party Rip out custom CSV parser code and its third_party dependency 2016-05-19 00:01:54 +02:00
unit_tests Filter out edges that have any speed=0 segments. 2016-07-30 23:53:38 +02: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 Implement Turn Lane Api 2016-06-27 10:07:48 +02:00
.gitmodules Removing Docs submodule 2012-12-26 18:29:16 +01:00
.travis.yml Fix travis build 2016-08-02 12:31:46 +02:00
appveyor-build.bat [skip travis] make AppVeyor publish binaries again 2016-04-29 10:32:29 +02:00
appveyor.yml Remove develop branch from appveyor 2016-04-23 17:55:18 +02:00
build-local.bat make AppVeyor work again 2016-03-31 16:49:30 +02:00
CHANGELOG.md change paradigm of merge to only emit on motorway-like roads 2016-07-30 23:55:39 +02:00
CMakeLists.txt Default to c++14 / drop g++-4.8 from testing matrix 2016-07-25 19:30:43 +02:00
codecov.yml Fix codecov.yml 2016-05-12 17:56:40 +02:00
CONTRIBUTING.md [skip ci] Add docs for contributing 2016-07-19 17:38:03 +02:00
cucumber.js adding tests for guidance 2016-04-08 10:43:22 +02: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 update cucumber to 1.2.1 and remove hack 2016-07-13 11:04:35 +02:00
profile.lua readding profile.lua 2013-07-02 22:51:21 +02:00
README.md Talk to us! 2016-07-28 11:01:51 +02:00
taginfo.json Makes designated HOV way's routability configurable in profiles. 2016-08-03 12:24:43 +02:00

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 Build Status
Windows Build status
Coverage codecov

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