Compare commits

..

221 Commits

Author SHA1 Message Date
Daniel Patterson 3fdecc79f4 Bump CMakeLists version. 2016-11-08 16:07:56 -08:00
Daniel Patterson d0543e6c3b Changelog fix. 2016-11-08 14:38:15 -08:00
Daniel Patterson cef53c4b56 Fix key/val offset bug. 2016-11-08 11:45:28 -08:00
Daniel Patterson 481b03baeb Review changes. 2016-11-08 11:45:28 -08:00
Daniel Patterson f96e61ee06 Construct adjacency list and properly traverse it. 2016-11-08 11:45:28 -08:00
Daniel Patterson d21c8e3800 Add simple check for number of turns found in the tile. 2016-11-08 11:45:28 -08:00
Daniel Patterson af7960a796 Fix buffering of query box - it was shrinking in the Y axis, rather than growing. 2016-11-08 11:45:28 -08:00
Daniel Patterson 4c6d6aeaa7 Fix retrieval of forward/reverse data. 2016-11-08 11:45:27 -08:00
Daniel J. Hofmann ef2261661c Remove {highway: type} fallback from bike / walk profile, fixes #3231
References:
- https://github.com/Project-OSRM/osrm-text-instructions/issues/62#issuecomment-257889721
- https://github.com/Project-OSRM/osrm-text-instructions/pull/63
2016-11-08 14:28:56 +01:00
Moritz Kobitzsch 9c11f4231c add locations feature to allow testing turn locations, fix minor bug breaking the arrival location 2016-11-08 13:42:15 +01:00
Moritz Kobitzsch 837ab105ad fix error in ordering arguments for requiresNameAnnounced versions 2016-11-08 12:14:23 +01:00
Daniel J. Hofmann 6ac9617d49 Adapt test to returning ref, Take Pronunciation into Account, Fixes name change heuristic usage in UTurn check 2016-11-08 12:14:23 +01:00
Moritz Kobitzsch ccdebccde1 adjust sliproad handler for empty-name check, illustrate testcase 2016-11-08 12:14:23 +01:00
Daniel J. Hofmann c1651ccb12 Uses Name Change Heuristic Instead of Comparing Name Ids
References:
- https://github.com/Project-OSRM/osrm-backend/issues/2857
- https://github.com/Project-OSRM/osrm-backend/pull/2900
- https://github.com/Project-OSRM/osrm-backend/issues/2909
2016-11-08 12:14:23 +01:00
Kajari Ghosh f33180f092 request polyline with precision of 5 or 6 positions (#3220) 2016-11-07 15:11:21 -05:00
Moritz Kobitzsch 1b03b8df6d raising timeout limit for cucumber on clang 2016-11-07 18:29:49 +01:00
Moritz Kobitzsch 3eeb3cb6c6 fix collapsing of roundabout instructions 2016-11-07 17:16:44 +01:00
Michael Krasnyk 3e18e31bc9 Added percent-encoding to URL parser
Reference:
https://tools.ietf.org/html/rfc1738
2016-11-07 14:16:51 +01:00
Moritz Kobitzsch 2fb40944bf pull in intersection finder accumulator 2016-11-04 13:28:09 +01:00
Michael Krasnyk b108d8ea21 Use explicit std::function for to_lane_count instead of auto 2016-11-04 10:46:24 +00:00
kerrick-lyft 79917d2c8e Fix typo: Ẁaypoint -> Waypoint 2016-11-03 21:25:10 +00:00
Daniel J. Hofmann d2cd4fac2d Fixes Always-Zero Lane Count Introduced in #3237 2016-11-03 15:52:18 +01:00
Moritz Kobitzsch cd03877c90 link ConnectedRoad and TurnOperation via class hierarchy
and empower intersection by adding basic functionality to pod type
refactor extractor/toolkit into intersection
2016-11-03 13:42:29 +01:00
Moritz Kobitzsch 388d84a89e check for compatibility in post-processing (#3227) 2016-11-02 16:59:35 -06:00
Michael Krasnyk 9d24a4422a FindOsmium invoke is required for MSVC build dependencies
The commit is aprtial revert of
87d09f7 | * make adjustments based on PR review from @themarex
because osmium requires ws2_32
2016-11-02 18:40:17 +00:00
Patrick Niklaus 9693f9269b Add regression test 2016-11-02 17:52:41 +00:00
Patrick Niklaus 08a5648e3e Use coorect osm ids for start/target segment 2016-11-02 17:52:41 +00:00
Daniel J. Hofmann ccf5552406 Fixes Cucumber's Unknown Node Error Reporting
Before: `unknown node %s`
After: `unknown node t`

https://nodejs.org/api/util.html#util_util_format_format_args
2016-11-02 16:46:51 +00:00
Patrick Niklaus b749d9bd2f Address PR comments 2016-11-02 16:45:20 +00:00
Patrick Niklaus d342a18324 Add regression test 2016-11-02 16:45:20 +00:00
Patrick Niklaus 8f00936790 Fix non-overlap logic for simplified geometries. 2016-11-02 16:45:20 +00:00
Moritz Kobitzsch 8a3aec301a add a segment on turn restrictions to the cucumber guide 2016-11-02 16:06:37 +01:00
Moritz Kobitzsch faa5185440 add node-based-graph traversal capabilities 2016-11-02 15:38:09 +01:00
Moritz Kobitzsch 4ba8ccfcce add a geojson debugger that allows creating features for easy inspection 2016-11-02 14:54:00 +01:00
Kajari Ghosh c30f43b148 added max_speed to the profiles (#3089) 2016-11-01 17:13:10 -04:00
Denis Koronchik 5da63998d6 Add support of custom ServiceHandler 2016-10-31 15:38:03 +01:00
Kajari Ghosh 6fc0609a62 Map matching test coverage fix (#3201)
* fixed map matching test coverage
2016-10-29 11:22:09 -04:00
Patrick Niklaus f02b7b0910 [skip ci] Fix formating using format.sh 2016-10-28 14:45:05 -07:00
Dane Springmeyer 9435254661 Merge pull request #3119 from Project-OSRM/masonize
Masonize
2016-10-28 13:39:37 -07:00
Dane Springmeyer de14a72931 adjust example build setup to new mason location 2016-10-28 12:48:20 -07:00
Michael Krasnyk 164f4ffc32 Updated cmake version to 3.7.0-rc2 2016-10-28 12:42:36 -07:00
Michael Krasnyk b5c77de923 Fix msvc linking of boost libraries 2016-10-28 12:42:36 -07:00
Dane Springmeyer 6067fdf27f tell mason.cmake where the mason command is 2016-10-28 12:34:34 -07:00
Dane Springmeyer f39eb999e5 Merge commit 'a34a885031fcb1797621e8968497561a4837e06a' as 'third_party/mason' 2016-10-28 12:21:21 -07:00
Dane Springmeyer a34a885031 Squashed 'third_party/mason/' content from commit 1b3085e
git-subtree-dir: third_party/mason
git-subtree-split: 1b3085e812b08ef092ba43945e3ab9f802632280
2016-10-28 12:21:21 -07:00
Dane Springmeyer 87d09f78e6 make adjustments based on PR review from @themarex 2016-10-28 12:18:13 -07:00
Dane Springmeyer 83b7d75121 Add support for building against mason-provided deps 2016-10-27 23:26:33 -07:00
Dane Springmeyer 4598599f52 # This is a combination of 4 commits.
# The first commit's message is:
Add support for building against mason-provided deps

# This is the 2nd commit message:

back to just one travis job: linux/release

# This is the 3rd commit message:

remove pkg-config debugging [skip ci]

# This is the 4th commit message:

use clang++ 3.8.1 for mason builds since 3.8 is what we have been using
2016-10-27 23:26:33 -07:00
Daniel Patterson da77edfc83 Explicitly set minimum OSX version, and detect SDK path.
This fixes situations where XCode is installed with a newer SDK than the current OS. (#3198)
2016-10-27 16:29:27 -06:00
Dane Springmeyer 2917122287 Merge pull request #3196 from Project-OSRM/build-fixes
Minor build fixes
2016-10-27 14:43:36 -07:00
Dane Springmeyer a22e0fa62e minor build fixes
- Travis: Upgrade clang from 3.8.0 to 3.8.1 (provides smaller package for faster downloading)
  - Travis: Makes BUILD_COMPONENTS an option
  - Followup after #3130 (Boost_LIBRARIES variable no longer exists)
2016-10-27 13:39:33 -07:00
Denis Koronchik dc7e61c25d Fix declaration of makeRouteStep function 2016-10-27 20:12:02 +02:00
Moritz Kobitzsch 8dc667f20d fix warnings due to superfluous ; 2016-10-27 20:06:14 +02:00
Moritz Kobitzsch 8ff4bc09ac fix breaking the sorting order by node adjustments 2016-10-27 19:55:56 +02:00
Moritz Kobitzsch 88c3f4c481 Considering multiple small turns, right after each
other can result in a combined turn angle that is
straight instead of turning left and right.
2016-10-27 19:19:23 +02:00
Moritz Kobitzsch 01a2c66472 rip out unused m_node_info_list 2016-10-27 18:51:59 +02:00
Huyen Chau Nguyen cf35bbeb50 refactor function names; consolidate readCount() functions;
remove templated types as much as possible for type safety;
add more comments;
clean up code, add const if possible;
2016-10-26 13:18:52 -07:00
Huyen Chau Nguyen fe94977c9b refactor loading code of .ramIndex files and move to io.hpp 2016-10-26 13:18:52 -07:00
Huyen Chau Nguyen 69a60686dc refactor loading code of .datasource_indexes and .datasource_names files and move to io.hpp 2016-10-26 13:18:52 -07:00
Huyen Chau Nguyen 7b97e1035f refactor loading code of .nodes and .edges files and move to io.hpp 2016-10-26 13:18:52 -07:00
karenzshea c4f010e363 read properties stream to size of properties object, not 1 2016-10-26 13:18:52 -07:00
karenzshea 51ebadfc45 deduplicate code for loading profile properties into io.hpp 2016-10-26 13:18:52 -07:00
Daniel Patterson ceddfada3d Don't mark all lanes as designated when there are blank lane specifiers in the tag. 2016-10-25 14:37:59 -06:00
Daniel J. Hofmann a933b5d949 Prevents the Matching getting confused when users are time-travelling. 2016-10-25 10:42:24 -07:00
Moritz Kobitzsch ba5871cfa1 fix turn scenarios 2016-10-25 10:12:25 -07:00
Moritz Kobitzsch e8b947bca6 fix coordinate extraction with less than 1 meters past lane distance 2016-10-25 10:07:09 -07:00
Michael Krasnyk 7753845f5c Make thread-locked access to stxxl containers
From stxxl FAQ: "you should not share a data structure between
threads (without implementing proper locking yourself)."
The access to name_char_data can be implicitly parallelized
if _GLIBCXX_PARALLEL is defined and invalidate local-thread iterators.
2016-10-25 10:03:26 -07:00
Dane Springmeyer 19eec48207 Merge pull request #3163 from Project-OSRM/pc-fixes
Add -l to rt and gcov
2016-10-24 18:53:49 -07:00
Dane Springmeyer 293856981f add -l to rt and gcov 2016-10-24 17:09:03 -07:00
Michael Krasnyk 86b70f2632 Don't fail on incorrect lane tags '1; 2' 2016-10-24 15:25:46 -07:00
Daniel J. Hofmann 1905a0f473 Documents InvalidValue response code, resolves #3150 2016-10-24 09:54:09 -07:00
Moritz Kobitzsch d05b85c227 fix turn restriction and make route unique 2016-10-22 06:48:49 +02:00
Daniel J. Hofmann 19f00589de Removes constant speed offset from calibration two years ago, resolves #3023.
Our fine-tuned profiles are better in modelling real speed by now. This
constant offset is no longer needed. We still scale maxspeed, though.

https://github.com/Project-OSRM/osrm-backend/issues/3053
2016-10-22 06:48:49 +02:00
Daniel J. Hofmann 7f28a14c76 Fixes Grammar in Github Pull Request Template 2016-10-21 16:52:05 -07:00
karenzshea fead71da54 add comment on find() [skip ci] 2016-10-21 14:23:02 -07:00
karenzshea c26e90cac0 sort/unique turn penalty lookup 2016-10-21 14:23:02 -07:00
karenzshea d4e5710928 parse turn penalties in parallel, add unique and sorting steps 2016-10-21 14:23:02 -07:00
karenzshea 5c2783310a add pr todo for updating wiki [skip ci] 2016-10-21 13:58:51 -07:00
Patrick Niklaus b8795c7341 Rename increasingly inaccuratly named distance member of QueryEdge to weight 2016-10-21 21:00:02 +02:00
Daniel J. Hofmann 1d994da12b Makes Scripts Fail Fast and Loud 2016-10-21 17:56:56 +02:00
Dane Springmeyer 46994e87be Merge pull request #3130 from Project-OSRM/cmake-fixes
cmake fixes
2016-10-20 15:34:24 -07:00
Moritz Kobitzsch 40bfe89d97 add test 2016-10-20 14:28:33 -07:00
Moritz Kobitzsch e3c2d4dddc use-lane can occur in roundabouts as well 2016-10-20 14:28:33 -07:00
Dane Springmeyer 502d9e10c2 cmake fixes:
- Builds up ENGINE_LIBRARY_LISTING correctly to pass to pkg-config
    - Previous behavior had major flaw and would result in paths in libosrm.pc like: "-L-L"
      when the data was "-L/path -lfoo" or just "-lpthread" with no -L/path. It only worked correctly for static libraries
  - Refactors to call find_package for boost in one place (helps prepare for upcoming mason PR)
2016-10-20 12:09:27 -07:00
Daniel J. Hofmann 865c6590fa Limits the object cache size to 256M 2016-10-20 11:33:28 -07:00
jakepruitt c30784895d clang-format and remove debug 2016-10-20 11:32:28 -07:00
jakepruitt fa1fc810ea std::for_each -> std::copy 2016-10-20 11:32:28 -07:00
jakepruitt 052b0e831d Remove debug logging 2016-10-20 11:32:28 -07:00
jakepruitt 42271d99b2 Store node ID's and weights separately in CompressedEdgeContainer
Removes CompressedEdges from the extractor and shared data format by
directly serializing vectors of node ID's, forward weights and reverse
weights for each node-based-edge

Refs #2575
2016-10-20 11:32:28 -07:00
Moritz Kobitzsch ecee13bffa actually calculate distance instead of using .distance which is a timing value 2016-10-20 12:27:02 +02:00
Moritz Kobitzsch 5e167b8745 Turn Angles in OSRM were computed using a lookahead of 10 meters.
This PR adds more advanced coordinate extraction, analysing the road
to detect offsets due to OSM way modelling.

In addition it improves the handling of bearings. Right now OSM reports
bearings simply based on the very first coordinate along a way.
With this PR, we store the bearings for a turn correctly, making the
bearings for turns correct.
2016-10-20 10:47:29 +02:00
Moritz Kobitzsch 1f8ca2879f fix u-turn collapsing onto empty name / in presence of turning use lane 2016-10-20 09:39:38 +02:00
Huyen Chau Nguyen 2d13116487 fix memory leak of char[] initialization 2016-10-19 17:26:21 -07:00
Huyen Chau Nguyen 316ef305de Refactor loading code for timestamp file 2016-10-19 17:26:21 -07:00
Daniel J. Hofmann ab1a9271c8 Canonicalizes Spaces in Semicolon Stringlists, fixes #3086 2016-10-19 14:14:18 -07:00
Daniel J. Hofmann 18bc02f087 Collapses Double OSRM <-> Engine <-> .. PImpl Indirection, Resolves #3019. 2016-10-19 13:42:08 -07:00
Moritz Kobitzsch 2a2abe9e0f remove unused class DiscreteAngle 2016-10-19 21:40:45 +02:00
Patrick Niklaus b7ee38eca7 Refactored loading code for .hsgr file 2016-10-19 19:59:23 +02:00
Moritz Kobitzsch ae157d0b4f fix changelog to not include 5.5.1 ahead of time 2016-10-19 18:37:53 +02:00
Patrick Niklaus 769485cc2f Initilialize tbb task scheduler correctly. Thanks @oxidase! 2016-10-19 18:30:06 +02:00
Patrick Niklaus 983ad3513a Enabled address sanitizer 2016-10-19 18:30:06 +02:00
Patrick Niklaus ca914b8b1f Use newest bintools with gcc 6, thanks @oxidase 2016-10-19 18:30:06 +02:00
Daniel J. Hofmann ca21b8833a Removes Gnu Date Usage 👴
\U+1Fstallman-emoji
2016-10-19 18:26:20 +02:00
Kajari Ghosh 3f0f0e306b Directional Destination Tags (#3061)
* cucumber test scenarios, #3027

* post review comments

* two tests are still failing

* fixed one test

* passing tests

* cleaner code refactor

* possible sceanrios for destination:ref:forward/backward

* added code for direction:ref:forward/backward, tests pass

* changelog

* store direction in variable

* added tags to taginfo

* fixed dumb error

* use boolean flags

* null pointer checks

* hopefully better null pointer checks
2016-10-18 23:09:19 -04:00
Patrick Niklaus f77a2474ea [skip ci] Forgot to add changelog entries 2016-10-18 22:20:42 +02:00
Patrick Niklaus 8205c34abe Fix duplicated code in tile plugin 2016-10-18 22:11:43 +02:00
Daniel J. Hofmann ee4fb89336 Adds missing routable service tags
http://taginfo.openstreetmap.org/keys/service#values
2016-10-18 22:11:13 +02:00
Patrick Niklaus 81c5cba0e5 Recover from stale mutexes with force unlocking and retry 2016-10-18 21:58:50 +02:00
Patrick Niklaus caa7c994a0 Make SharedDataFacade try to cleanup 2016-10-18 21:58:50 +02:00
Patrick Niklaus 847f530c8e Only keep reader lock on shared memory during queries. 2016-10-18 21:58:50 +02:00
Patrick Niklaus c69545c47a Don't block all requests to switch data
This switchtes the data even if there are requests still running on the
old data. osrm-datastore then waits until all of these old requests have
finished before freeing the old regions.

This also means that osrm-datastore will return with an error if there
is a data update currenlty in progress.
2016-10-18 21:58:50 +02:00
Patrick Niklaus 1557ff81bc Simplify the locking logic 2016-10-18 21:58:50 +02:00
Patrick Niklaus ebac9f586b Adapt SharedMemory ownership changes from @oxidase
We don't leak any pointers anymore and make owning the shared memory
explicit.
2016-10-18 21:58:50 +02:00
Patrick Niklaus 2512cf386d Add better debug log output 2016-10-18 21:58:50 +02:00
Patrick Niklaus da04563e26 Added header guards 2016-10-18 21:58:50 +02:00
Patrick Niklaus ceaf362326 Make SharedDataFacade immutable 2016-10-18 21:58:50 +02:00
Johan Uhle 9af00b1925 Docs: Rotaries can have exits as well 2016-10-18 02:20:18 +02:00
karenzshea f540485cb0 Add a speed for driveway to service speeds 2016-10-17 15:45:31 -07:00
karenzshea 5617d3886d Fix cucumber support code for routability testing to actually test
input/output for speed and time values, adjust resulting broken tests
2016-10-17 15:45:11 -07:00
Huyen Chau Nguyen 06d13b6954 run clang-format on edited files 2016-10-17 15:27:14 -07:00
Huyen Chau Nguyen d0c142b9c7 remove util self-written make_unique and use C++14 stdlib make_uniqe 2016-10-17 15:27:14 -07:00
Moritz Kobitzsch ef1f14550f max all trips roundtrips again 2016-10-17 15:26:38 -07:00
Moritz Kobitzsch 5839bf334b fix random feature fail 2016-10-17 15:26:38 -07:00
Moritz Kobitzsch 46c936b48e handle trips with identical coordinates 2016-10-17 15:26:38 -07:00
Daniel J. Hofmann 8ed6bb8a1b Asserts on valid v5 conforming maneuver types, resolves #3035 2016-10-14 15:59:26 +02:00
Daniel Patterson b72dc8c0cf Enable use of other build types than Debug and Release, and properly default to Release. 2016-10-14 12:37:01 +02:00
karenzshea 72fa35da10 add a toolkit function to find lanes to the left/right of turn lanes 2016-10-13 17:59:25 +02:00
Moritz Kobitzsch 17eb664597 don't get disturbed by service roads in obvious discovery 2016-10-13 16:10:59 +02:00
Daniel J. Hofmann 77931ffe24 Changes Lua detection to be less strict 2016-10-12 23:09:59 +02:00
Karen Shea 45df2c991f Merge pull request #3045 from Project-OSRM/fix/tilez-limit
Add max zoom limit of z12 to tile plugin parameters
2016-10-12 19:14:44 +02:00
karenzshea 615e302b8c test for tile that fails IsValid() check 2016-10-12 11:20:01 -04:00
karenzshea 1ed8e7e98c test a z12 tile 2016-10-12 10:20:14 -04:00
karenzshea ee012ae2da valid tiles are >= z12 2016-10-12 10:03:43 -04:00
Daniel J. Hofmann 32dcce88f7 Fixes missing memory include for make_unique; reported in #3018.
https://github.com/Project-OSRM/osrm-backend/issues/3018#issuecomment-253118518
2016-10-12 12:55:05 +02:00
Daniel J. Hofmann a13cf3f2be Route over alternating oneways but not reversible ones, closes #2837.
- alternating: high frequency, route over them with penalty
- reversible: low frequency, do not route over them - time dependence

- http://wiki.openstreetmap.org/wiki/Tag:oneway%3Dreversible
- http://wiki.openstreetmap.org/wiki/Tag:oneway%3Dalternating

This distinction was made at the Elbe-Labe Meetup in Dresden, with
accompanying Wiki pages and tagging scheme. Thanks all involed!

- https://github.com/Project-OSRM/osrm-backend/issues/2837
- http://wiki.openstreetmap.org/wiki/Key:oneway
2016-10-12 12:53:07 +02:00
Moritz Kobitzsch 6cf99c886f don't emit invalid on sliproads with incompatible modes 2016-10-11 10:59:10 +02:00
Emil Tin 7cbb1807e7 cucumber: change syntax of node maps 2016-10-11 09:07:48 +02:00
Patrick Niklaus d47d03c15b Add explicit test for malformed coordinate 2016-10-11 00:04:53 +02:00
Patrick Niklaus 240a7696da Catch boost bad_numeric_cast exception and let parser return an error 2016-10-11 00:04:53 +02:00
Patrick Niklaus 14b024e4dc [skip ci] Document InvalidQuery. Fixes #3026 2016-10-10 17:37:34 +02:00
Patrick Niklaus 339ebe8f81 [skip ci] Update changelog 2016-10-10 13:54:06 +02:00
Patrick Niklaus 9eb7fc03ce Use a shared (!) reader writer lock to protect CURRENT_REGIONS
This fixes issue #3016.
2016-10-10 12:13:45 +02:00
Moritz Kobitzsch 036475afd0 restructure for readability 2016-10-07 09:35:16 +02:00
Moritz Kobitzsch 378322f6e3 don't provide turn-straight next to suppress-straight 2016-10-07 09:35:16 +02:00
Daniel J. Hofmann d964b81308 Silence static visitor upstream deprecation warnings. 2016-10-06 21:08:48 +02:00
jakepruitt 49a28b478c Remove TODO - tiles are tested and seem to work 2016-10-06 10:09:57 -07:00
Lauren Budorick a75e16e26b Deduplicate foward/reverse geometries
Changes the internal representation of compressed geometries to be a
single array shared between forward and reverse geometries that can be
read in either direction. Includes a change on
extractor::OriginalEdgeData to store via_geometry ids that indicate
which direction to read the geometry for that edge based edge.

Closes #2592
2016-10-06 10:09:57 -07:00
Moritz Kobitzsch 73179641b1 clang-format code 2016-10-06 14:06:19 +02:00
Patrick Niklaus 58316c608d Fix verison detection for multiple lua installations
If both lua 5.3 and lua 5.2 are installed the old code threw an error
that 5.2 was not found since FindLua always picks the neweste version.
2016-10-06 13:36:34 +02:00
Patrick Niklaus 1c2ead8fb8 Make DataFacade local to every request
This is the first step to having fine grained locking on data updates,
see issue #2570.
2016-10-06 12:56:38 +02:00
Moritz Kobitzsch 66f2cc5184 fix detection of forks in present of oneways 2016-10-05 17:49:54 +02:00
Daniel J. Hofmann dbd108df8c Reworks how we search for Lua in CMake and constrain to Lua 5.1 5.2
At the moment we have a FindLua52.cmake module that is happy with
Lua52 but also Lua51 and even Lua53. Let's instead pull in the official
one from CMake (since it's not yet in CMake 2.8 which we support).

https://github.com/Kitware/CMake/blob/master/Modules/FindLua.cmake

BSD licenced.

Requires Lua 5.1 or Lua 5.2, since seeing memory issues on 5.3:

https://github.com/Project-OSRM/osrm-backend/issues/2926
2016-10-05 13:23:48 +02:00
Michael Krasnyk ff1ab217ba Debug and i686 builds 2016-10-04 16:37:29 +02:00
Patrick Niklaus 49a9d7f57a Try switching to GCC 6 2016-10-04 16:37:29 +02:00
Michael Krasnyk da15c014f5 Avoid doubled reprocessing for scenarios without caching 2016-10-04 14:35:21 +02:00
Daniel J. Hofmann 9a85a50586 Implements Cucumber shared vs. static library detection, fixes #2999 2016-10-04 14:14:37 +02:00
Daniel J. Hofmann 94ca782816 Bumps version to 5.4.0 2016-10-04 10:46:56 +02:00
Daniel J. Hofmann d17eacc52b Makes the OSRM interface threadsafe.
Technically speaking we're changing the `libosrm` API.

But since we're only lifting restrictions by marking the API threadsafe,
we should be fine here.
2016-10-04 09:32:22 +02:00
Daniel J. Hofmann d86bba3e24 Re-introduces the old RouteParameters ctor for API compatibility, see #2978 2016-10-03 20:00:12 +02:00
karenzshea 7f7b47611d add note about dangers of post subtree merges rebases [skip ci] 2016-10-03 13:51:30 -04:00
Karen Shea 2d4c128ea2 Merge pull request #2994 from Project-OSRM/retry/libosmium
Update to libosmium@2.9.0
2016-10-03 19:43:14 +02:00
karenzshea 5d9fc83db4 adjust test cases that specify coords without leading 0 2016-10-03 13:15:39 -04:00
karenzshea 5b4e2950d9 Merge commit '879f7eb04200d7d2c28af565229bf6e3d54274fd' into retry/libosmium 2016-10-03 13:08:59 -04:00
karenzshea 879f7eb042 Squashed 'third_party/libosmium/' changes from 2282c84..80df1d6
80df1d6 Release v2.9.0
110dc5c Update change log.
6ad5829 Better handling of areas with duplicate segments.
f5985ed Better exception message for invalid areas.
fa09300 Explicit cast to make intent clear.
6f9b522 Fix name of struct stat on Windows.
6b0a47b Clean up code in data tests.
aa1226c Fix progress bar.
3663a19 Extend ProgressBar class so that it works with multiple files.
40c4d5a Add version of file_size() taking a file name.
43a2fac Merge pull request #162 from osmcode/windows-build-scripts
cc2305d [skip travis] 1st iteration of new build scripts
7abe4e1 Clean up disk location cache examples.
48841d5 Update change log.
cf854e9 Change timestamp parser.
01aa8c7 Add examples osmium_pub_names and osmium_road_length.
483c9f2 Benchmark code cleanup.
3ffea2d Cleaned up some test code.
80f0ff7 Explicit conversion from int to bool.
0ba5918 Write space after progress bar to defend against glitches in output.
8584423 Change progress bar to take max_size on construction.
d2c7585 Only call gzoffset when compiling with zlib > 1.2.4.
1b417e5 Add support for a progress report in osmium::io::Reader().
3b4c8c8 Minor cleanup of appveyor config.
d787e25 Fix OPL parser: Relation member without role at end of line.
53ca080 Make lots of variables const.
d776ab2 Add to change log.
eec3b62 Properly initialize m_data field.
cc607e1 Take argument by const ref.
be1e346 Remove unused function.
2a356ee Make lots of one-argument constructors explicit.
adca74f Add comments to and cleanup up examples.
381e535 Simplify WKB code.
b49efd8 Fix opl_parse_changeset_id() return type.
bb52e57 Use uint64_t for line count and column to be on the safe side.
243f6a7 Use parentheses to make sure the right precedence is used.
5a7648e Consistently catch by const ref unless var needs to be non-const.
e3be990 Avoid some warnings.
c436d92 Do not include unistd.h on Windows.
95b228c Add dummy function to avoid warnings.
f276ca3 Fixed includes and changelog update.
8c54bd9 Change timestamp error message.
27e1d5c Add OPL parser.
1d2caab Add more includes to osm.hpp to make usual osmium use simpler.
9d88361 More tests for area CRC.
4f8964d Initialize Item::m_diff member on construction.
f2b648b Parse coordinates in scientific notations ourselves.
b01323f More include fixes.
69f39d4 Fix some includes.
156536d Make padded_length a plain function, not a template function.
65cd1dc Extend functions to set Location lon/lat.
98b7b17 Update to protozero 1.4.2.
a6420cf Add diff indicator to items and use for diff opl and debug output.
0ef02a3 Add workaround for YCM.
3a986f4 Update protozero version.
5245c5b Document osmium_count example program and add memory usage output.
796ca13 Document handler class.
2ba1c1f Add example for mercator projection and tiles.
201f744 Restrict tiles to zoom <= 30.
202291d Add member_type_string class.
494ed6e Cleaned up Tile tests.
af13a8b Add documentation and range checks to Tile struct.
9df5d91 Some small changes to avoid conversion warnings.
afac031 Explicit cast to avoid warning.
8188f66 Better contribution info.
fa89d1d Fixed a problem limiting cache file sizes on Windows to 32 bit.
23a89df Remove obsolete info about versioning from CONTRIBUTING.md file.
115ae23 Release v2.8.0
4174b3c Style fix.
1795dcb Function wait_and_pop_with_timeout() is not needed any more.
4a3a71b Fix for possible threading problem.
cc85925 Updated change log.
67bc8b1 Use unordered_map instead of map in PBF string table code.
18b7b66 Set better default for string table chunk size and document it.
e6d7410 Remove dependency on sparsehash and boost program_options for examples.
14d92d6 Fix regression: Debug output of invalid location works again.
ef91ce1 Bugfix: PBF String table corruption when there are many strings.
649af78 Remove DeltaEncodeIterator completely.
56e5ac2 Function getting queue sizes from environment uses default when getting 0.
bfaab7d Add change log.
d260339 Remove use of PROTOZERO_STRICT_API macro.
c61722d Remove use of DeltaEncodeIterator simplifying code.
f7c60b6 Updates for new protozero.
0bdfb9d Updated change log.
bb56cbb Switch to newest protozero 1.4.0.
9e19a82 Add ccache support to CMake cnfig, better travis builds.
00d8868 Make I/O max queue sizes configurable via environment.
dc7e504 Remove unused debugging code.
13f66a0 Track pop() calls and queue underruns when OSMIUM_DEBUG_QUEUE_SIZE is set.
5c2e367 Add EWKT support.
8f7c7d3 Automatically set correct SRID when creating geometries.
ff11893 Better check of optional components in CMake config.
4562429 Use fallback implementation for coordinates given in scientific notation.
3bdf46e Mark enable_debug_output() as deprecated.
ea1093e Update catch unit test framework.
8623f1e Release v2.7.2
e135dd8 Fix data corruption regression in mmap based indexes.
adbd3b0 Do not output empty discussion tags in changeset XML output.
8126fbb Formatting.
c6970fd Fix coordinate output.
3471b4b Resize output string once in output_int().
0ddf0e7 Use our own function to convert integers to strings instead of printf.
f9a1dd3 Reading and writing coordinates is now independant of locale.
8104294 Use hand-crafted function for hex output (faster than printf).
0bb452a Fix links in change log.
1862d06 Release v2.7.1
8bfe2ba Release v2.7.0
c3604f3 Use 64bit counter in area stats.
9e589b3 Update gdalcpp.hpp from upstream.
fd55d9b Cleanup of OGR-related code.
d0c53e0 Fix bug: Relation wasn't found correctly from member.
24145f9 Use make_iterator helper function.
a8a287d Refactor count_not_removed function. (No template necessary.)
389332a Also print removed flag from member_meta.
5e7c5d0 Remove unnecessary overload of begin() and end() function in iterator_range.
2ec007f Do not add rings to invalid area, even if create_empty_areas is set.
fee8b73 Optionally keep type tag in area assembler. Better doc for config.
c7e1f8a Fix timer output in assembler code.
032ab40 Update change log.
dcfa439 Node location store keeps track of whether node ids are ordered.
54d5eb8 Add tests for new file based index code.
4fe5b30 Use correct empty value when initializing index.
40b5c79 Static or not static, that is the question.
aaa9b46 Open index file with minimum size, because zero-sized mmap is not allowed.
fea2337 Fix for disk-based indexes.
428a413 More tests of corner cases for id to location index.
9d2a31b Add config option to areas assembler for only creating some areas.
d11bf8d Count and report inner rings with the same tags as relation/outer rings.
bde10c4 Speed up copy of tags.
e4c9f87 Revert "Consistently remove some tags from area."
9cd7a03 Set areas assembly config setting create_empty_areas to true by default.
660fb63 Better ordering of OSMObjects.
b4199c2 Use std::strcmp instead of just strcmp.
579c34b Better field width/precision in problem reporter.
a2ebeeb Use field names with 8 characters or less in OGR problem reporter.
ef523fe Switch remaining "typedef"s to "using".
19425f8 Switching from "typedef" to "using" in geom code.
b13c2be More cases of switching from "typedef" to "using".
7f53977 Refactoring iterators: Not derived from std::iterator any more.
1922224 Consistently remove some tags from area.
295495f Fix check for detecting wrong role.
9aa6d46 Report more IDs in problem reporters.
d7a5da7 Remove now unused spike segment reporter.
0666d66 Only report duplicate segments if they belong to the same way.
9e17f89 Improved error reporting for area assembler.
e983a48 More code cleanup and docs.
927eeda Replace awkward std::pair construct by real class.
d0543b9 Various area code refactorings.
0ae8f07 Do not build areas for ways with tag area=no.
d4cabe7 Add some convenience functions to check for tags in TagList.
99f4be9 Add missing include.
a8dda78 Travis: Only run tests if build succeeded.
9db3034 Add missing "nodes" fields.
50e9fcb Report ways that are in multiple rings as errors.
58a3669 Add some paranoia asserts.
3958c1d Use iterator_range to make equal_range results easier to use.
c12c710 Add for_each_member() function to iterate over members of an mp relation.
ca35452 Change argument order in create_area() functions.
4473ae1 Keep stats on multipolygons with no tags on the relation.
12c5335 Bugfix: Check that there is a problem reporter before using it.
ec2afce Update change log.
5af2ec9 Use new area assembler interface in multipolygon collector.
73e3440 Some code cleanup in area code and new interface for calling assembler.
7737479 Add the number of nodes in area to problem reporter.
b4f9343 Use const_iterator where possible.
02372b2 Simplify code that checks for open rings.
8d6099e Pull out location_to_ring_map into details ns and add == and < ops.
1a05042 Mixed code cleanups and added comments.
4b8d1be Ignore empty role when checking inner/outer roles on multipolygons.
e22f573 Now GCC is complaining about the clang pragma...
48000c0 Add some missing includes and forward declarations.
ba9504a Workaround for bug in old libc.
a138265 Completely new algorithm for assembling multipolygons.
74054bd Add specialization of std::hash function for Location.
5ed4c90 Use newest gdalcpp.hpp with implicit transaction support.
676949e Add "locations_on_ways" support for OPL format, too.
ce05c19 Add support for reading/writing XML/PBF files with locations on ways.
62b2ee4 Fix checksum test.
bd512a8 Added "add_crc32" file option for adding CRC32 checksum to debug output.
3a100fa Incorporate locations in NodeRefs into CRC32 checksum.
ac02f86 Update catch.hpp to newest version. Removed outdated info in README.
481f48b When assembling areas ignore ways containing no or only a single node.
a0ae33a Fix unsigned overflow in pool.hpp.
91b8adf Fix undefined behaviour in WKB writer.
697f460 Check results of dynamic casts.
f1e4571 Fix from_item_type() implementation so it also works with undefined type.
65df99b Add future_queue_type alias to simplify code.
4340e4d Removed SortedQueue implementation which was never used.
cdd8f8c Add version.hpp with macros defining version of the library.
ff5d42a Update to newest gdalcpp.hpp.
a184f66 Update change log.
0ea76f7 Add osmium::Area::outer_rings() and inner_rings() functions.
b0404b7 New ItemIteratorRange class for iteration over buffers and subitems.
eff8a7c Add default type to string_to_object_id for IDs without type prefix.
e877a6f Clean up code inner vs. outer ring in geometry factory.
9224be5 Disable use of XML entities in OSM files.
9d9fa08 Output operator of location shows full precision of coordinates.
9a8e7c0 Documentation fixes.

git-subtree-dir: third_party/libosmium
git-subtree-split: 80df1d6850bdfa661587839b77dcea0ab8fc814a
2016-10-03 13:08:59 -04:00
karenzshea 050585bbd9 rename dep update file, bump to osmium@2.9.0 2016-10-03 13:08:45 -04:00
karenzshea 89007ae669 Adapts Tile tests to protozero's strict iterator_range API from @daniel-j-h 2016-10-03 13:07:18 -04:00
Daniel J. Hofmann b821a1dd98 Disables ld.gold on binutils < 2.26, resolves #2984 2016-10-03 15:41:40 +02:00
Moritz Kobitzsch d1f1358e48 adjust for comments by daniel-j-h 2016-09-30 17:27:14 +02:00
Daniel Patterson 805d93912d Construct an adjacency list in order to discover turns. 2016-09-30 17:12:23 +02:00
Daniel Patterson 0b7b16abc0 Include new method in test mock objects. 2016-09-30 17:12:22 +02:00
Daniel Patterson 3dd7732ffc Add code comments and document some magic constants. 2016-09-30 17:12:22 +02:00
Daniel Patterson c8eb2b2d11 Refactor edge unpacking so that it's CH indepenent and we don't repeat ourselves so much. 2016-09-30 17:12:22 +02:00
Lauren Budorick 14e7460465 Include turn information in debug tiles. 2016-09-30 17:12:20 +02:00
Daniel J. Hofmann 6290aeea93 Fixes Tile Unit Test Compilation 2016-09-30 16:58:50 +02:00
Moritz Kobitzsch 10b93c6908 re-introduce space into summaries 2016-09-30 14:36:09 +02:00
Moritz Kobitzsch e4d0d49300 move summaries to car profile, test for references, use boost adaptors 2016-09-30 10:59:23 +02:00
karenzshea cbb96ce7f4 handle empty names in summaries 2016-09-30 10:43:36 +02:00
karenzshea 54aaf574d9 removing caching from edge weight update test, so it runs fresh each time 2016-09-30 00:12:47 +02:00
Moritz Kobitzsch a824e64682 Merge branch 'master' into guido/notification 2016-09-29 16:03:44 +02:00
Moritz Kobitzsch df6186f0f1 fix documentation 2016-09-29 12:05:19 +02:00
Moritz Kobitzsch 78d530ddae fix polyline decoding 2016-09-29 11:56:51 +02:00
Moritz Kobitzsch da15e1fc5e adjust case/add clarification 2016-09-29 10:50:28 +02:00
Ansis Brammanis 7e2663f2ad calculate roundabout radius from circumference, fix #2716 2016-09-29 10:42:42 +02:00
karenzshea 1a96483f7b prefer notification over new-name/suppressed types 2016-09-29 10:26:56 +02:00
karenzshea 3d5a53566c implement flag edge-weight-updates-over-factor, to log edge weight
updates over provided x factor
2016-09-28 15:19:59 +02:00
karenzshea eafe3fa928 remove luajit support 2016-09-28 11:12:11 +02:00
Moritz Kobitzsch 6cfb1d6a85 add changelog for trip-changes 2016-09-28 10:51:21 +02:00
Moritz Kobitzsch 0abd32fca3 prefer first result 2016-09-28 10:32:33 +02:00
Daniel J. Hofmann d1f555dcef Removes unused JSON logger.
References:
- https://github.com/Project-OSRM/osrm-backend/pull/2769
2016-09-28 10:01:56 +02:00
Moritz Kobitzsch 6cfd1c92e1 make changelog readable 2016-09-28 09:40:25 +02:00
Daniel J. Hofmann bbbbacb073 Reworks Restriction Whitelist / Blacklist, resolves #2833
Takes a stricter aproach for whitelisting / blacklisting restrictions:

- uses `restriction=`
- uses more specific `restriction:<type>=`
- uses `except=<type>` to invert

Where `type` is the type of transportation to restrict, e.g. `motorcar`.

https://github.com/Project-OSRM/osrm-backend/issues/2833
2016-09-28 09:35:02 +02:00
Moritz Kobitzsch e7b2f85a20 correct changelog 2016-09-28 09:34:10 +02:00
Moritz Kobitzsch 75de7c8eaf changelog updated 2016-09-28 09:06:44 +02:00
Michael Krasnyk 3f3c85ba72 Added profile files per test generation 2016-09-28 09:04:58 +02:00
Daniel J. Hofmann 89264eb89b Better documents profile request parameter, resolves #2952 2016-09-28 09:03:06 +02:00
Daniel Patterson fa5714ab82 Unset FORTIFY_SOURCE before setting to avoid warnings for compilers where FORTIFY_SOURCE is predefined. (#2946) 2016-09-27 21:32:22 -07:00
Moritz Kobitzsch 8aa93f32cc add changelog entry for reduction of name changes 2016-09-21 12:45:59 +02:00
Daniel J. Hofmann 60010dd998 Reduce NewName Instructructions / Name Changes
With @karenzshea's name / ref split (ref. #2857) in master we want to
make use of it and reduce `NewName` instructions when ever possible.
This is a first step towards #2744 by using the already existing name
change heuristic from the extractor now in post-processing as well.

Limitations: at the moment we don't have the `SuffixTable` in
post-processing; this would require us serializing and subsequently
deserializing the table, passing it through from the profiles to the
API.
2016-09-21 12:42:39 +02:00
Moritz Kobitzsch 7ffe832ff8 add changelog entry for HOV change 2016-09-21 11:48:50 +02:00
Daniel J. Hofmann a63b10972b Handle HOV designated-only Lanes, resolves #2929
In https://github.com/Project-OSRM/osrm-backend/issues/2711 we made
`hov=designated` routability configurable.

We want to handle designated-only lanes in the same way. Example:

    hov:lanes:forward=designated|designated
    hov:lanes:backward=designated

should have more or less the same effects as

    hov=designated

In contrast

    hov:lanes:forward=designated|no|yes hov:lanes:backward=yes

should not be handled. See

    https://github.com/Project-OSRM/osrm-backend/issues/2711

for explanation wrt. tag semantics with the difference that
backward/forward only set the backward/forward mode to inaccessible.

References:
- http://wiki.openstreetmap.org/wiki/Key:hov#hov:lanes.3D.2A
2016-09-21 10:56:42 +02:00
Michael Krasnyk 3eac6effbb Fix "Error: write after end" and removed @bug tags
https://nodejs.org/api/child_process.html#child_process_event_exit
Note that when the 'exit' event is triggered, child process stdio streams might still be open.
2016-09-20 20:40:53 +02:00
Patrick Niklaus 7d124ce54d Close GH-2795: Rewrite cucumber test caching (and support logic). Fixes #2745 2016-09-19 14:13:44 -07:00
Moritz Kobitzsch 8522cddd61 Prevent loops in extraction based on merge 2016-09-19 13:33:52 +02:00
Daniel J. Hofmann bf2b1a64b9 Fixes sign mismatch in Nearest limit comparison 2016-09-16 15:40:05 +02:00
Moritz Kobitzsch 70ee624e5c make changelog reasonable 2016-09-16 08:46:02 +02:00
Moritz Kobitzsch 3a49635eb7 remove dead code 2016-09-16 07:14:44 +02:00
Moritz Kobitzsch aa5f8dce23 fix may be uninitialised warnings 2016-09-15 08:25:17 +02:00
Daniel J. Hofmann c186e51a08 Do Not Copy Lane Strings Into Fn 2016-09-14 20:27:17 +02:00
Moritz Kobitzsch 861314256e fix roundabout-intersection on immediate exit 2016-09-13 19:16:45 +02:00
Moritz Kobitzsch 38f5adbe5c we can count 2016-09-13 16:22:22 +02:00
Moritz Kobitzsch 092e77e89b fix false positives in sliproads 2016-09-13 14:11:29 +02:00
Moritz Kobitzsch 64a72f574d also reserve entry for refs 2016-09-13 13:48:28 +02:00
Daniel Patterson 1b4a52e99c Update changelog for issue #2896 fix. 2016-09-12 15:14:50 -07:00
Michael Krasnyk 1d94eb88f6 Test for PR #2898
Test checks that osrm-extract terminates for
http://www.openstreetmap.org/way/198481519
2016-09-12 22:20:11 +02:00
Moritz Kobitzsch b3c5a9c010 fix looping in sliproad handler for lanes 2016-09-12 18:20:28 +02:00
Daniel J. Hofmann e3c1b133bf Adds a limit for number of results returned in Nearest service, resolves #2872 2016-09-12 11:59:08 +02:00
Daniel J. Hofmann e6fe9d0d67 Fixes issue where two ways with same name but different pronunciation where deduplicated, resolves #2860 2016-09-09 18:28:44 +02:00
Daniel J. Hofmann 05c1fe7f46 We do duration based routing (also see #77); closes #2885 2016-09-09 16:27:00 +02:00
Daniel J. Hofmann e3a38a6b0d Fixes compilation against newer Boost versions; seems like we were lucky before; closes #2889 2016-09-09 16:14:25 +02:00
Moritz Kobitzsch 2b9cf742c5 make sure to reserve enough external memory 2016-09-09 15:38:26 +02:00
Daniel J. Hofmann a289e1cd96 Fixes bearing range of zero exhaustive graph traversal 2016-09-08 17:33:50 +02:00
1237 changed files with 57718 additions and 11454 deletions
+3 -2
View File
@@ -1,12 +1,13 @@
# Issue
What issue is this PR targeting? Is there no issue that covers the problem addressed here? Please open a corresponding issue and link it from here.
What issue is this PR targeting? If there is no issue that addresses the problem, please open a corresponding issue and link it here.
## Tasklist
- [ ] ADD OWN TASKS HERE
- [ ] update relevant [Wiki pages](https://github.com/Project-OSRM/osrm-backend/wiki)
- [ ] add regression / cucumber cases (see docs/testing.md)
- [ ] review
- [ ] adjust for for comments
- [ ] adjust for comments
## Requirements / Relations
Link any requirements here. Other pull requests this PR is based on?
+5
View File
@@ -1,3 +1,8 @@
# mason #
#########
/.mason
/mason_packages
# pre compiled dependencies #
#############################
osrm-deps
+34 -19
View File
@@ -13,7 +13,6 @@ notifications:
branches:
only:
- master
- 5.4
cache:
ccache: true
@@ -36,12 +35,12 @@ matrix:
# Debug Builds
- os: linux
compiler: "gcc-5-debug"
addons: &gcc5
compiler: "gcc-6-debug"
addons: &gcc6
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-5', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache']
env: CCOMPILER='gcc-5' CXXCOMPILER='g++-5' BUILD_TYPE='Debug' COVERAGE=ON
packages: ['g++-6', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache']
env: CCOMPILER='gcc-6' CXXCOMPILER='g++-6' BUILD_TYPE='Debug' TARGET_ARCH='x86_64-asan' ENABLE_COVERAGE=ON ENABLE_SANITIZER=ON BUILD_COMPONENTS=ON
- os: linux
compiler: "clang-3.8-debug"
@@ -49,7 +48,7 @@ matrix:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['libstdc++-5-dev', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache']
env: CLANG_VERSION='3.8.0' BUILD_TYPE='Debug' RUN_CLANG_FORMAT=ON
env: CLANG_VERSION='3.8.1' CLANG_PACKAGE="clang++" BUILD_TYPE='Debug' RUN_CLANG_FORMAT=ON BUILD_COMPONENTS=ON CUCUMBER_TIMEOUT=60000
- os: osx
osx_image: xcode7.3
@@ -58,16 +57,24 @@ matrix:
# Release Builds
- os: linux
compiler: "gcc-5-release"
addons: &gcc5
compiler: "mason-release"
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-5', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache']
env: CCOMPILER='gcc-5' CXXCOMPILER='g++-5' BUILD_TYPE='Release'
packages: ['libstdc++-5-dev', 'ccache']
env: BUILD_TYPE='Release' ENABLE_MASON=ON
- os: linux
compiler: "gcc-5-release-i686"
env: TARGET_ARCH='i686' CCOMPILER='gcc-5' CXXCOMPILER='g++-5' BUILD_TYPE='Release'
compiler: "gcc-6-release"
addons: &gcc6
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-6', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache']
env: CCOMPILER='gcc-6' CXXCOMPILER='g++-6' BUILD_TYPE='Release' BUILD_COMPONENTS=ON
- os: linux
compiler: "gcc-6-release-i686"
env: TARGET_ARCH='i686' CCOMPILER='gcc-6' CXXCOMPILER='g++-6' BUILD_TYPE='Release'
# Disabled because of CI slowness
#- os: linux
@@ -86,12 +93,12 @@ matrix:
# Shared Library
- os: linux
compiler: "gcc-5-release-shared"
addons: &gcc5
compiler: "gcc-6-release-shared"
addons: &gcc6
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-5', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache']
env: CCOMPILER='gcc-5' CXXCOMPILER='g++-5' BUILD_TYPE='Release' BUILD_SHARED_LIBS=ON
packages: ['g++-6', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache']
env: CCOMPILER='gcc-6' CXXCOMPILER='g++-6' BUILD_TYPE='Release' BUILD_SHARED_LIBS=ON BUILD_COMPONENTS=ON
# Disabled because CI slowness
#- os: linux
@@ -115,7 +122,7 @@ before_install:
if [[ ${CLANG_VERSION:-false} != false ]]; then
export CCOMPILER='clang'
export CXXCOMPILER='clang++'
CLANG_URL="https://mason-binaries.s3.amazonaws.com/${TRAVIS_OS_NAME}-x86_64/clang/${CLANG_VERSION}.tar.gz"
CLANG_URL="https://mason-binaries.s3.amazonaws.com/${TRAVIS_OS_NAME}-x86_64/${CLANG_PACKAGE}/${CLANG_VERSION}.tar.gz"
travis_retry wget --quiet -O - ${CLANG_URL} | tar --strip-components=1 -xz -C ${DEPS_DIR} || exit 1
fi
- |
@@ -123,6 +130,7 @@ before_install:
# implicit deps, but seem to be installed by default with recent images: libxml2 GDAL boost
brew install libzip libstxxl lua51 luabind tbb md5sha1sum ccache
fi
- ccache --max-size=256M # limiting the cache's size to roughly the previous job's object sizes
install:
- |
@@ -131,7 +139,7 @@ install:
fi
- mkdir build && pushd build
- export CC=${CCOMPILER} CXX=${CXXCOMPILER}
- cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-OFF} -DCOVERAGE=${COVERAGE:-OFF} -DBUILD_TOOLS=ON -DBUILD_COMPONENTS=ON -DENABLE_CCACHE=ON
- cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DENABLE_MASON=${ENABLE_MASON:-OFF} -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-OFF} -DENABLE_COVERAGE=${ENABLE_COVERAGE:-OFF} -DENABLE_SANITIZER=${ENABLE_SANITIZER:-OFF} -DBUILD_TOOLS=ON -DBUILD_COMPONENTS=${BUILD_COMPONENTS:-OFF} -DENABLE_CCACHE=ON
- echo "travis_fold:start:MAKE"
- make osrm-extract --jobs=3
- make --jobs=${JOBS}
@@ -145,6 +153,13 @@ install:
sudo ldconfig
fi
- popd
- |
if [[ ${ENABLE_MASON:-OFF} == 'ON' ]]; then
# for mason builds we need to point the example
# at the clang++ installed by the CMakeLists.txt automatically
export CXX=$(./third_party/mason/mason prefix clang++ 3.8.1)/bin/clang++
export CC=$(./third_party/mason/mason prefix clang++ 3.8.1)/bin/clang
fi
- mkdir example/build && pushd example/build
- cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
- make
@@ -172,6 +187,6 @@ after_success:
./scripts/format.sh # we don't want to fail just yet
fi
- |
if [ -n "${COVERAGE}" ]; then
if [ -n "${ENABLE_COVERAGE}" ]; then
bash <(curl -s https://codecov.io/bash)
fi
+46 -36
View File
@@ -1,3 +1,43 @@
# 5.5.0
- Changes from 5.4.0
- API:
- `osrm-datastore` now accepts the parameter `--max-wait` that specifies how long it waits before aquiring a shared memory lock by force
- Shared memory now allows for multiple clients (multiple instances of libosrm on the same segment)
- Polyline geometries can now be requested with precision 5 as well as with precision 6
- Profiles
- `restrictions` is now used for namespaced restrictions and restriction exceptions (e.g. `restriction:motorcar=` as well as `except=motorcar`)
- replaced lhs/rhs profiles by using test defined profiles
- Handle `oneway=alternating` (routed over with penalty) separately from `oneway=reversible` (not routed over due to time dependence)
- Handle `destination:forward`, `destination:backward`, `destination:ref:forward`, `destination:ref:backward` tags
- Properly handle destinations on `oneway=-1` roads
- Guidance
- Notifications are now exposed more prominently, announcing turns onto a ferry/pushing your bike more prominently
- Improved turn angle calculation, detecting offsets due to lanes / minor variations due to inaccuracies
- Corrected the bearings returned for intermediate steps - requires reprocessing
- Improved turn locations for collapsed turns
- Trip Plugin
- changed internal behaviour to prefer the smallest lexicographic result over the largest one
- Bugfixes
- fixed a bug where polyline decoding on a defective polyline could end up in out-of-bound access on a vector
- fixed compile errors in tile unit-test framework
- fixed a bug that could result in inconsistent behaviour when collapsing instructions
- fixed a bug that could result in crashes when leaving a ferry directly onto a motorway ramp
- Debug Tiles
- Added support for turn penalties
# 5.4.3
- Changes from 5.4.2
- Bugfixes
- #3254 Fixed a bug that could end up hiding roundabout instructions
- #3260 fixed a bug that provided the wrong location in the arrival instruction
# 5.4.2
- Changes from 5.4.1
- Bugfixes
- #3032 Fixed a bug that could result in emitting `invalid` as an instruction type on sliproads with mode changes
- #3085 Fixed an outdated assertion that could throw without a cause for concern
- #3179 Fixed a bug that could trigger an assertion in TurnInstruciton generation
# 5.4.1
- Changes from 5.4.0
- Bugfixes
@@ -10,8 +50,11 @@
- added left_hand_driving flag in global profile properties
- modified turn penalty function for car profile - better fit to real data
- return `ref` and `name` as separate fields. Do no use ref or destination as fallback for name value
- the default profile for car now ignores HOV only roads
- Guidance
- Handle Access tags for lanes, only considering valid lanes in lane-guidance (think car | car | bike | car)
- Improved the detection of non-noticeable name-changes
- Summaries have been improved to consider references as well
- API:
- `annotations=true` now returns the data source id for each segment as `datasources`
- Reduced semantic of merge to refer only to merges from a lane onto a motorway-like road
@@ -27,44 +70,11 @@
- Fixed a bug where post-processing instructions (e.g. left + left -> uturn) could result in false pronunciations
- Fixes a bug where a bearing range of zero would cause exhaustive graph traversals
- Fixes a bug where certain looped geometries could cause an infinite loop during extraction
- Fixed a bug where some roads could be falsly identified as sliproads
- Fixed a bug where roundabout intersections could result in breaking assertions when immediately exited
- Infrastructure:
- Adds a feature to limit results in nearest service with a default of 100 in `osrm-routed`
# 5.4.0-rc.7
- Chages from 5.4.0-rc.6
- Bugfixes re-introduce space between two entries in summaries
# 5.4.0-rc.6
- Changes from 5.4.0-rc.5
- Bugfixes
- fixed a bug where polyline decoding on a defective polyline could end up in out-of-bound access on a vector
- Guidance
- Summaries have been improved to consider references as well
# 5.4.0-rc.5
- Changes from 5.4.0-rc.4
- Guidance
- Improved detection of obvious name changes
- Profiles
- The default profile for car now excludes HOV-only routes in navigation by default
- Bugfixes
- Fixed a bug that could result in endless loops in combination with sliproads
# 5.4.0-rc.4
- Changes from 5.4.0-rc.3
- Bugfixes
- Fixed a bug where roundabout intersections could result in breaking assertions when immediately exited
# 5.4.0-rc.3
- Changes from 5.4.0-rc.2
- Bugfixes
- BREAKING: Fixed a bug where some roads could be falsly identified as sliproadsi This change requires reprocessing datasets with osrm-extract and osrm-contract
- BREAKING: Fixed a bug that resulted in false names/ref/destination/pronunciation This change requires reprocessing datasets with osrm-extract and osrm-contract
- `restrictions` is now used for namespaced restrictions and restriction exceptions (e.g. `restriction:motorcar=` as well as `except=motorcar`)
- replaced lhs/rhs profiles by using test defined profiles
- Trip Plugin
- changed internal behaviour to prefer the smallest lexicographic result over the largest one
# 5.3.0
- Changes from 5.3.0-rc.3
- Guidance
@@ -106,7 +116,7 @@
- Fix bug that didn't chose minimal weights on overlapping edges
# 5.3.0 RC2
Changes from 5.3.0-rc.1
- Changes from 5.3.0-rc.1
- Bugfixes
- Fixes invalid checks in the lane-extraction part of the car profile
+267 -136
View File
@@ -7,9 +7,44 @@ Please create a directory and run cmake from there, passing the path to this sou
This process created the file `CMakeCache.txt' and the directory `CMakeFiles'. Please delete them.")
endif()
option(ENABLE_MASON "Use mason for dependencies" OFF)
option(ENABLE_CCACHE "Speed up incremental rebuilds via ccache" ON)
option(BUILD_TOOLS "Build OSRM tools" OFF)
option(BUILD_COMPONENTS "Build osrm-components" OFF)
option(ENABLE_ASSERTIONS "Use assertions in release mode" OFF)
option(ENABLE_COVERAGE "Build with coverage instrumentalisation" OFF)
option(ENABLE_SANITIZER "Use memory sanitizer for Debug build" OFF)
option(ENABLE_LTO "Use LTO if available" ON)
option(ENABLE_FUZZING "Fuzz testing using LLVM's libFuzzer" OFF)
option(ENABLE_GOLD_LINKER "Use GNU gold linker if available" ON)
if(ENABLE_MASON)
# versions in use
set(MASON_CLANG_VERSION "3.8.1")
set(MASON_BOOST_VERSION "1.61.0")
set(MASON_STXXL_VERSION "1.4.1")
set(MASON_EXPAT_VERSION "2.1.1")
set(MASON_LUA_VERSION "5.2.4")
set(MASON_LUABIND_VERSION "e414c57bcb687bb3091b7c55bbff6947f052e46b")
set(MASON_BZIP2_VERSION "1.0.6")
set(MASON_TBB_VERSION "43_20150316")
set(MASON_CCACHE_VERSION "3.3.1")
message(STATUS "Enabling mason")
set(MASON_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/third_party/mason/mason)
include(${CMAKE_CURRENT_SOURCE_DIR}/third_party/mason/mason.cmake)
if(NOT CMAKE_CXX_COMPILER)
mason_use(clang++ VERSION ${MASON_CLANG_VERSION})
message(STATUS "Setting compiler to clang++ ${MASON_CLANG_VERSION} (via mason) ${MASON_PACKAGE_clang++_PREFIX}/bin/clang++")
set(CMAKE_CXX_COMPILER "${MASON_PACKAGE_clang++_PREFIX}/bin/clang++")
set(CMAKE_C_COMPILER "${MASON_PACKAGE_clang++_PREFIX}/bin/clang")
endif()
endif()
project(OSRM C CXX)
set(OSRM_VERSION_MAJOR 5)
set(OSRM_VERSION_MINOR 4)
set(OSRM_VERSION_MINOR 5)
set(OSRM_VERSION_PATCH 0)
# these two functions build up custom variables:
@@ -46,17 +81,6 @@ if(WIN32 AND MSVC_VERSION LESS 1900)
message(FATAL_ERROR "Building with Microsoft compiler needs Latest Visual Studio 2015 (Community or better)")
endif()
option(ENABLE_CCACHE "Speed up incremental rebuilds via ccache" ON)
option(ENABLE_JSON_LOGGING "Adds additional JSON debug logging to the response" OFF)
option(BUILD_TOOLS "Build OSRM tools" OFF)
option(BUILD_COMPONENTS "Build osrm-components" OFF)
option(ENABLE_ASSERTIONS OFF)
option(COVERAGE OFF)
option(SANITIZER OFF)
option(ENABLE_LTO "Use LTO if available" ON)
option(ENABLE_FUZZING "Fuzz testing using LLVM's libFuzzer" OFF)
option(ENABLE_GOLD_LINKER "Use GNU gold linker if available" ON)
include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/include/)
include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/include/)
include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/third_party/)
@@ -68,7 +92,7 @@ add_custom_target(FingerPrintConfigure ALL ${CMAKE_COMMAND}
COMMENT "Configuring revision fingerprint"
VERBATIM)
set(BOOST_COMPONENTS date_time filesystem iostreams program_options regex system thread)
set(BOOST_COMPONENTS date_time chrono filesystem iostreams program_options regex system thread unit_test_framework)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/include/util/version.hpp.in
@@ -100,24 +124,6 @@ add_library(osrm_extract $<TARGET_OBJECTS:EXTRACTOR> $<TARGET_OBJECTS:UTIL>)
add_library(osrm_contract $<TARGET_OBJECTS:CONTRACTOR> $<TARGET_OBJECTS:UTIL>)
add_library(osrm_store $<TARGET_OBJECTS:STORAGE> $<TARGET_OBJECTS:UTIL>)
# Check the release mode
if(NOT CMAKE_BUILD_TYPE MATCHES Debug)
set(CMAKE_BUILD_TYPE Release)
endif()
if(CMAKE_BUILD_TYPE MATCHES Debug)
message(STATUS "Configuring OSRM in debug mode")
set(ENABLE_ASSERTIONS ON)
if(NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-inline -fno-omit-frame-pointer")
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Og -ggdb")
endif()
endif()
endif()
if(ENABLE_GOLD_LINKER)
execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
if("${LD_VERSION}" MATCHES "GNU gold")
@@ -137,8 +143,45 @@ if(ENABLE_GOLD_LINKER)
endif()
endif()
if(CMAKE_BUILD_TYPE MATCHES Release)
# Explicitly set the build type to Release if no other type is specified
# on the command line. Without this, cmake defaults to an unoptimized,
# non-debug build, which almost nobody wants.
if(NOT CMAKE_BUILD_TYPE)
message(STATUS "No build type specified, defaulting to Release")
set(CMAKE_BUILD_TYPE Release)
endif()
if(CMAKE_BUILD_TYPE MATCHES Debug)
message(STATUS "Configuring OSRM in debug mode")
elseif(CMAKE_BUILD_TYPE MATCHES Release)
message(STATUS "Configuring OSRM in release mode")
elseif(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
message(STATUS "Configuring OSRM in release mode with debug flags")
elseif(CMAKE_BUILD_TYPE MATCHES MinRelSize)
message(STATUS "Configuring OSRM in release mode with minimized size")
else()
message(STATUS "Unrecognized build type - will use cmake defaults")
endif()
# Additional logic for the different build types
if(CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
message(STATUS "Configuring debug mode flags")
set(ENABLE_ASSERTIONS ON)
if(NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-inline -fno-omit-frame-pointer")
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
if (CMAKE_BUILD_TYPE MATCHES Debug)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Og -ggdb")
else()
# Don't override the -O parameter for RelWithDebInfo, we want an optimized build
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb")
endif()
endif()
endif()
endif()
if(CMAKE_BUILD_TYPE MATCHES Release OR CMAKE_BUILD_TYPE MATCHES MinRelSize OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
message(STATUS "Configuring release mode optimizations")
# Check if LTO is available
check_cxx_compiler_flag("-flto" LTO_AVAILABLE)
if(ENABLE_LTO AND LTO_AVAILABLE)
@@ -175,25 +218,27 @@ if(CMAKE_BUILD_TYPE MATCHES Release)
endif()
endif()
if (ENABLE_MASON AND (LTO_WORKS OR ENABLE_GOLD_LINKER))
message(WARNING "ENABLE_MASON and ENABLE_LTO/ENABLE_GOLD_LINKER may not work on all linux systems currently")
message(WARNING "For more details see: https://github.com/Project-OSRM/osrm-backend/issues/3202")
endif()
set(MAYBE_COVERAGE_LIBRARIES "")
if (COVERAGE)
if (ENABLE_COVERAGE)
if (NOT CMAKE_BUILD_TYPE MATCHES "Debug")
message(ERROR "COVERAGE=ON only make sense with a Debug build")
message(ERROR "ENABLE_COVERAGE=ON only make sense with a Debug build")
endif()
message(INFO "Enabling coverage")
set(MAYBE_COVERAGE_LIBRARIES "gcov")
set(MAYBE_COVERAGE_LIBRARIES "-lgcov")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftest-coverage -fprofile-arcs")
endif()
if (SANITIZER)
if (NOT CMAKE_BUILD_TYPE MATCHES "Debug")
message(ERROR "SANITIZER=ON only make sense with a Debug build")
endif()
if (ENABLE_SANITIZER)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
endif()
# Configuring compilers
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wuninitialized -Wunreachable-code -Wstrict-overflow=2 -D_FORTIFY_SOURCE=2 -fPIC -fcolor-diagnostics")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wuninitialized -Wunreachable-code -Wstrict-overflow=2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIC -fcolor-diagnostics")
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
set(COLOR_FLAG "-fdiagnostics-color=auto")
check_cxx_compiler_flag("-fdiagnostics-color=auto" HAS_COLOR_FLAG)
@@ -201,7 +246,7 @@ elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
set(COLOR_FLAG "")
endif()
# using GCC
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wuninitialized -Wunreachable-code -Wstrict-overflow=1 -D_FORTIFY_SOURCE=2 ${COLOR_FLAG} -fPIC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wuninitialized -Wunreachable-code -Wstrict-overflow=1 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 ${COLOR_FLAG} -fPIC")
if(WIN32) # using mingw
add_dependency_defines(-DWIN32)
set(OPTIONAL_SOCKET_LIBS ws2_32 wsock32)
@@ -211,7 +256,7 @@ elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-intel -wd10237 -Wall -ipo -fPIC")
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
# using Visual Studio C++
set(BOOST_COMPONENTS ${BOOST_COMPONENTS} date_time chrono zlib)
set(BOOST_COMPONENTS ${BOOST_COMPONENTS} zlib)
add_dependency_defines(-DBOOST_LIB_DIAGNOSTIC)
add_dependency_defines(-D_CRT_SECURE_NO_WARNINGS)
add_dependency_defines(-DNOMINMAX) # avoid min and max macros that can break compilation
@@ -249,6 +294,8 @@ endif()
# Configuring other platform dependencies
if(APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.10")
execute_process(COMMAND xcrun --sdk macosx --show-sdk-path OUTPUT_VARIABLE CMAKE_OSX_SYSROOT OUTPUT_STRIP_TRAILING_WHITESPACE)
set(CMAKE_OSX_ARCHITECTURES "x86_64")
message(STATUS "Set Architecture to x64 on OS X")
exec_program(uname ARGS -v OUTPUT_VARIABLE DARWIN_VERSION)
@@ -263,61 +310,170 @@ if(APPLE)
endif()
if(UNIX AND NOT APPLE)
set(MAYBE_RT_LIBRARY rt)
set(MAYBE_RT_LIBRARY -lrt)
endif()
# Disallow deprecated protozero APIs
add_definitions(-DPROTOZERO_STRICT_API)
find_package(Threads REQUIRED)
# if mason is enabled no find_package calls are made
# to ensure that we are only compiling and linking against
# fully portable mason packages
if(ENABLE_MASON)
message(STATUS "Installing dependencies via mason")
set(Boost_USE_STATIC_LIBS ON)
mason_use(boost VERSION ${MASON_BOOST_VERSION} HEADER_ONLY)
add_dependency_includes(${MASON_PACKAGE_boost_INCLUDE_DIRS})
mason_use(boost_libfilesystem VERSION ${MASON_BOOST_VERSION})
set(Boost_FILESYSTEM_LIBRARY ${MASON_PACKAGE_boost_libfilesystem_STATIC_LIBS})
mason_use(boost_libiostreams VERSION ${MASON_BOOST_VERSION})
set(Boost_IOSTREAMS_LIBRARY ${MASON_PACKAGE_boost_libiostreams_STATIC_LIBS})
mason_use(boost_libprogram_options VERSION ${MASON_BOOST_VERSION})
set(Boost_PROGRAM_OPTIONS_LIBRARY ${MASON_PACKAGE_boost_libprogram_options_STATIC_LIBS})
mason_use(boost_libregex VERSION ${MASON_BOOST_VERSION})
set(Boost_REGEX_LIBRARY ${MASON_PACKAGE_boost_libregex_STATIC_LIBS})
mason_use(boost_libtest VERSION ${MASON_BOOST_VERSION})
set(Boost_UNIT_TEST_FRAMEWORK_LIBRARY ${MASON_PACKAGE_boost_libtest_STATIC_LIBS})
mason_use(boost_libdate_time VERSION ${MASON_BOOST_VERSION})
set(Boost_DATE_TIME_LIBRARY ${MASON_PACKAGE_boost_libdate_time_STATIC_LIBS})
mason_use(boost_libthread VERSION ${MASON_BOOST_VERSION})
set(Boost_THREAD_LIBRARY ${MASON_PACKAGE_boost_libthread_STATIC_LIBS})
mason_use(boost_libsystem VERSION ${MASON_BOOST_VERSION})
set(Boost_SYSTEM_LIBRARY ${MASON_PACKAGE_boost_libsystem_STATIC_LIBS})
mason_use(stxxl VERSION ${MASON_STXXL_VERSION})
add_dependency_includes(${MASON_PACKAGE_stxxl_INCLUDE_DIRS})
set(STXXL_LIBRARY ${MASON_PACKAGE_stxxl_STATIC_LIBS})
mason_use(expat VERSION ${MASON_EXPAT_VERSION})
add_dependency_includes(${MASON_PACKAGE_expat_INCLUDE_DIRS})
set(EXPAT_LIBRARIES ${MASON_PACKAGE_expat_STATIC_LIBS})
mason_use(lua VERSION ${MASON_LUA_VERSION})
add_dependency_includes(${MASON_PACKAGE_lua_INCLUDE_DIRS})
set(USED_LUA_LIBRARIES ${MASON_PACKAGE_lua_STATIC_LIBS})
mason_use(luabind_lua524 VERSION ${MASON_LUABIND_VERSION})
add_dependency_includes(${MASON_PACKAGE_luabind_lua524_INCLUDE_DIRS})
set(LUABIND_LIBRARY ${MASON_PACKAGE_luabind_lua524_STATIC_LIBS})
mason_use(bzip2 VERSION ${MASON_BZIP2_VERSION})
add_dependency_includes(${MASON_PACKAGE_bzip2_INCLUDE_DIRS})
set(BZIP2_LIBRARIES ${MASON_PACKAGE_bzip2_STATIC_LIBS})
mason_use(tbb VERSION ${MASON_TBB_VERSION})
add_dependency_includes(${MASON_PACKAGE_tbb_INCLUDE_DIRS})
set(TBB_LIBRARIES ${MASON_PACKAGE_tbb_LDFLAGS})
if(NOT MASON_PACKAGE_tbb_LIBRARY_DIRS)
message(FATAL_ERROR "MASON_PACKAGE_tbb_LIBRARY_DIRS is empty, rpath will not work")
endif()
foreach(libpath ${MASON_PACKAGE_tbb_LIBRARY_DIRS})
if(UNIX AND NOT APPLE)
set(LINKER_FLAGS "-Wl,-rpath,${libpath}")
elseif(APPLE)
set(LINKER_FLAGS "-Wl,-rpath, -Wl,${libpath}")
endif()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINKER_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINKER_FLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINKER_FLAGS}")
file(GLOB TBBGlob ${libpath}/*.*)
install(FILES ${TBBGlob} DESTINATION lib)
endforeach()
if(BUILD_COMPONENTS)
message(FATAL_ERROR "BUILD_COMPONENTS is not supported with ENABLE_MASON")
endif()
# current mason packages target -D_GLIBCXX_USE_CXX11_ABI=0
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0")
if(ENABLE_CCACHE)
mason_use(ccache VERSION ${MASON_CCACHE_VERSION})
message(STATUS "Setting ccache to ccache ${MASON_CCACHE_VERSION} (via mason) ${MASON_PACKAGE_ccache_PREFIX}/bin/ccache")
message(STATUS "Using ccache to speed up incremental builds")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${MASON_PACKAGE_ccache_PREFIX}/bin/ccache)
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${MASON_PACKAGE_ccache_PREFIX}/bin/ccache)
set(ENV{CCACHE_CPP2} "true")
endif()
else()
find_package(Boost 1.49.0 REQUIRED COMPONENTS ${BOOST_COMPONENTS})
add_dependency_includes(${Boost_INCLUDE_DIRS})
find_package(TBB REQUIRED)
add_dependency_includes(${TBB_INCLUDE_DIR})
if(WIN32 AND CMAKE_BUILD_TYPE MATCHES Debug)
set(TBB_LIBRARIES ${TBB_DEBUG_LIBRARIES})
endif()
find_package(Luabind REQUIRED)
add_dependency_includes(${LUABIND_INCLUDE_DIR})
set(USED_LUA_LIBRARIES ${LUA_LIBRARY})
add_dependency_includes(${LUA_INCLUDE_DIR})
find_package(EXPAT REQUIRED)
add_dependency_includes(${EXPAT_INCLUDE_DIRS})
find_package(STXXL REQUIRED)
add_dependency_includes(${STXXL_INCLUDE_DIR})
find_package(BZip2 REQUIRED)
add_dependency_includes(${BZIP2_INCLUDE_DIR})
if(BUILD_COMPONENTS)
find_package(GDAL)
endif()
# add a target to generate API documentation with Doxygen
find_package(Doxygen)
if(DOXYGEN_FOUND)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_target(doc
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen" VERBATIM
)
endif()
# prefix compilation with ccache by default if available and on clang or gcc
if(ENABLE_CCACHE AND (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU"))
find_program(CCACHE_FOUND ccache)
if(CCACHE_FOUND)
message(STATUS "Using ccache to speed up incremental builds")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
set(ENV{CCACHE_CPP2} "true")
endif()
endif()
endif()
# even with mason builds we want to link to system zlib
# to ensure that osrm binaries play well with other binaries like nodejs
find_package(ZLIB REQUIRED)
add_dependency_includes(${ZLIB_INCLUDE_DIRS})
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/third_party/libosmium/cmake")
set(OSMIUM_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/libosmium/include")
find_package(Osmium REQUIRED COMPONENTS io)
add_dependency_includes(${OSMIUM_INCLUDE_DIR})
find_package(Boost 1.49.0 REQUIRED COMPONENTS ${BOOST_COMPONENTS})
# collect a subset of the boost libraries needed
# by libosrm
foreach(lib ${Boost_LIBRARIES})
if(NOT WIN32)
if(lib MATCHES filesystem OR lib MATCHES thread OR lib MATCHES iostreams OR lib MATCHES system)
list(APPEND BOOST_ENGINE_LIBRARIES "${lib}")
endif()
else()
list(APPEND BOOST_ENGINE_LIBRARIES "${lib}")
endif()
endforeach(lib)
include_directories(SYSTEM ${OSMIUM_INCLUDE_DIR})
if(NOT WIN32 AND NOT Boost_USE_STATIC_LIBS)
add_dependency_defines(-DBOOST_TEST_DYN_LINK)
endif()
if(NOT WIN32 AND NOT Boost_USE_STATIC_LIBS)
add_dependency_defines(-DBOOST_TEST_DYN_LINK)
endif()
add_dependency_defines(-DBOOST_SPIRIT_USE_PHOENIX_V3)
add_dependency_defines(-DBOOST_RESULT_OF_USE_DECLTYPE)
add_dependency_defines(-DBOOST_FILESYSTEM_NO_DEPRECATED)
add_dependency_includes(${Boost_INCLUDE_DIRS})
find_package(Threads REQUIRED)
find_package(TBB REQUIRED)
add_dependency_includes(${TBB_INCLUDE_DIR})
if(WIN32 AND CMAKE_BUILD_TYPE MATCHES Debug)
set(TBB_LIBRARIES ${TBB_DEBUG_LIBRARIES})
endif()
find_package(Luabind REQUIRED)
include(check_luabind)
add_dependency_includes(${LUABIND_INCLUDE_DIR})
set(USED_LUA_LIBRARIES ${LUA_LIBRARY})
if(LUAJIT_FOUND)
set(USED_LUA_LIBRARIES, LUAJIT_LIBRARIES)
endif()
add_dependency_includes(${LUA_INCLUDE_DIR})
find_package(EXPAT REQUIRED)
add_dependency_includes(${EXPAT_INCLUDE_DIRS})
find_package(STXXL REQUIRED)
add_dependency_includes(${STXXL_INCLUDE_DIR})
set(OpenMP_FIND_QUIETLY ON)
find_package(OpenMP)
@@ -326,29 +482,32 @@ if(OPENMP_FOUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()
find_package(BZip2 REQUIRED)
add_dependency_includes(${BZIP2_INCLUDE_DIR})
find_package(ZLIB REQUIRED)
add_dependency_includes(${ZLIB_INCLUDE_DIRS})
if (ENABLE_JSON_LOGGING)
message(STATUS "Enabling json logging")
add_dependency_defines(-DENABLE_JSON_LOGGING)
endif()
add_definitions(${OSRM_DEFINES})
include_directories(SYSTEM ${OSRM_INCLUDE_PATHS})
set(BOOST_BASE_LIBRARIES
${Boost_DATE_TIME_LIBRARY}
${Boost_CHRONO_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
${Boost_IOSTREAMS_LIBRARY}
${Boost_THREAD_LIBRARY}
${Boost_SYSTEM_LIBRARY})
set(BOOST_ENGINE_LIBRARIES
${Boost_ZLIB_LIBRARY}
${Boost_REGEX_LIBRARY}
${BOOST_BASE_LIBRARIES})
# Binaries
target_link_libraries(osrm-datastore osrm_store ${Boost_LIBRARIES})
target_link_libraries(osrm-extract osrm_extract ${Boost_LIBRARIES})
target_link_libraries(osrm-contract ${Boost_LIBRARIES} ${TBB_LIBRARIES} osrm_contract)
target_link_libraries(osrm-routed osrm ${Boost_LIBRARIES} ${OPTIONAL_SOCKET_LIBS} ${ZLIB_LIBRARY})
target_link_libraries(osrm-datastore osrm_store ${Boost_PROGRAM_OPTIONS_LIBRARY} ${BOOST_BASE_LIBRARIES})
target_link_libraries(osrm-extract osrm_extract ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_REGEX_LIBRARY} ${BOOST_BASE_LIBRARIES})
target_link_libraries(osrm-contract ${Boost_PROGRAM_OPTIONS_LIBRARY} ${BOOST_BASE_LIBRARIES} ${TBB_LIBRARIES} osrm_contract)
target_link_libraries(osrm-routed osrm ${Boost_PROGRAM_OPTIONS_LIBRARY} ${BOOST_ENGINE_LIBRARIES} ${OPTIONAL_SOCKET_LIBS} ${ZLIB_LIBRARY})
set(EXTRACTOR_LIBRARIES
${BZIP2_LIBRARIES}
${Boost_LIBRARIES}
${Boost_REGEX_LIBRARY}
${BOOST_BASE_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${EXPAT_LIBRARIES}
${LUABIND_LIBRARY}
@@ -359,7 +518,7 @@ set(EXTRACTOR_LIBRARIES
${ZLIB_LIBRARY}
${MAYBE_COVERAGE_LIBRARIES})
set(CONTRACTOR_LIBRARIES
${Boost_LIBRARIES}
${BOOST_BASE_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${LUABIND_LIBRARY}
${USED_LUA_LIBRARIES}
@@ -375,13 +534,13 @@ set(ENGINE_LIBRARIES
${MAYBE_COVERAGE_LIBRARIES}
${ZLIB_LIBRARY})
set(STORAGE_LIBRARIES
${Boost_LIBRARIES}
${BOOST_BASE_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${TBB_LIBRARIES}
${MAYBE_RT_LIBRARY}
${MAYBE_COVERAGE_LIBRARIES})
set(UTIL_LIBRARIES
${Boost_LIBRARIES}
${BOOST_BASE_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${STXXL_LIBRARY}
${TBB_LIBRARIES}
@@ -393,12 +552,11 @@ target_link_libraries(osrm_extract ${EXTRACTOR_LIBRARIES})
target_link_libraries(osrm_store ${STORAGE_LIBRARIES})
if(BUILD_COMPONENTS)
find_package(GDAL)
if(GDAL_FOUND)
add_executable(osrm-components src/tools/components.cpp $<TARGET_OBJECTS:UTIL>)
target_link_libraries(osrm-components ${TBB_LIBRARIES})
include_directories(SYSTEM ${GDAL_INCLUDE_DIR})
target_link_libraries(osrm-components ${GDAL_LIBRARIES} ${Boost_LIBRARIES})
target_link_libraries(osrm-components ${GDAL_LIBRARIES} ${BOOST_BASE_LIBRARIES})
install(TARGETS osrm-components DESTINATION bin)
else()
message(WARNING "libgdal and/or development headers not found")
@@ -408,14 +566,14 @@ endif()
if(BUILD_TOOLS)
message(STATUS "Activating OSRM internal tools")
add_executable(osrm-io-benchmark src/tools/io-benchmark.cpp $<TARGET_OBJECTS:UTIL>)
target_link_libraries(osrm-io-benchmark ${Boost_LIBRARIES})
target_link_libraries(osrm-io-benchmark ${BOOST_BASE_LIBRARIES})
add_executable(osrm-unlock-all src/tools/unlock_all_mutexes.cpp $<TARGET_OBJECTS:UTIL>)
target_link_libraries(osrm-unlock-all ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
target_link_libraries(osrm-unlock-all ${BOOST_BASE_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
if(UNIX AND NOT APPLE)
target_link_libraries(osrm-unlock-all rt)
endif()
add_executable(osrm-springclean src/tools/springclean.cpp $<TARGET_OBJECTS:UTIL>)
target_link_libraries(osrm-springclean ${Boost_LIBRARIES})
target_link_libraries(osrm-springclean ${BOOST_BASE_LIBRARIES})
install(TARGETS osrm-io-benchmark DESTINATION bin)
install(TARGETS osrm-unlock-all DESTINATION bin)
@@ -460,13 +618,8 @@ install(TARGETS osrm_extract DESTINATION lib)
install(TARGETS osrm_contract DESTINATION lib)
install(TARGETS osrm_store DESTINATION lib)
list(GET ENGINE_LIBRARIES 1 ENGINE_LIBRARY_FIRST)
foreach(lib ${ENGINE_LIBRARIES})
get_filename_component(ENGINE_LIBRARY_PATH "${ENGINE_LIBRARY_FIRST}" PATH)
get_filename_component(ENGINE_LIBRARY_NAME "${lib}" NAME_WE)
string(REPLACE "lib" "" ENGINE_LIBRARY_NAME ${ENGINE_LIBRARY_NAME})
string(REPLACE "-l" "" ENGINE_LIBRARY_NAME ${ENGINE_LIBRARY_NAME})
set(ENGINE_LIBRARY_LISTING "${ENGINE_LIBRARY_LISTING} -L${ENGINE_LIBRARY_PATH} -l${ENGINE_LIBRARY_NAME}")
set(ENGINE_LIBRARY_LISTING "${ENGINE_LIBRARY_LISTING} ${lib}")
endforeach()
if(BUILD_DEBIAN_PACKAGE)
@@ -486,28 +639,6 @@ JOIN("-I${OSRM_INCLUDE_PATHS}" " -I" OSRM_INCLUDE_PATHS_STRING)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/pkgconfig.in libosrm.pc @ONLY)
install(FILES ${PROJECT_BINARY_DIR}/libosrm.pc DESTINATION lib/pkgconfig)
# add a target to generate API documentation with Doxygen
find_package(Doxygen)
if(DOXYGEN_FOUND)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_target(doc
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen" VERBATIM
)
endif()
# prefix compilation with ccache by default if available and on clang or gcc
if(ENABLE_CCACHE AND (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU"))
find_program(CCACHE_FOUND ccache)
if(CCACHE_FOUND)
message(STATUS "Using ccache to speed up incremental builds")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
set(ENV{CCACHE_CPP2} "true")
endif()
endif()
# uninstall target
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
+7 -7
View File
@@ -8,18 +8,18 @@ SET PROJECT_DIR=%CD%
ECHO PROJECT_DIR^: %PROJECT_DIR%
ECHO NUMBER_OF_PROCESSORS^: %NUMBER_OF_PROCESSORS%
ECHO cmake^: && cmake --version
IF %ERRORLEVEL% NEQ 0 ECHO CMAKE not found GOTO ERROR
IF %ERRORLEVEL% NEQ 0 ECHO CMAKE not found && GOTO CMAKE_NOT_OK
FOR /F %%G IN ("--version") DO cmake %%G 2>&1 | findstr /C:"3.5.0" > nul && goto CMAKE_NOT_OK
GOTO CMAKE_OK
cmake --version | findstr /C:"3.7.0" && GOTO CMAKE_OK
:CMAKE_NOT_OK
ECHO CMAKE NOT OK - downloading new CMake
IF NOT EXIST cm.zip powershell Invoke-WebRequest https://cmake.org/files/v3.5/cmake-3.5.1-win32-x86.zip -OutFile $env:PROJECT_DIR\cm.zip
SET CMAKE_VERSION=3.7.0-rc2
ECHO CMAKE NOT OK - downloading new CMake %CMAKE_VERSION%
IF NOT EXIST cm.zip powershell Invoke-WebRequest https://cmake.org/files/v3.7/cmake-%CMAKE_VERSION%-win32-x86.zip -OutFile $env:PROJECT_DIR\cm.zip
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
IF NOT EXIST cmake-3.5.1-win32-x86 7z -y x cm.zip | %windir%\system32\FIND "ing archive"
IF NOT EXIST cmake-%CMAKE_VERSION%-win32-x86 7z -y x cm.zip | %windir%\system32\FIND "ing archive"
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
SET PATH=%PROJECT_DIR%\cmake-3.5.1-win32-x86\bin;%PATH%
SET PATH=%PROJECT_DIR%\cmake-%CMAKE_VERSION%-win32-x86\bin;%PATH%
:CMAKE_OK
ECHO CMAKE_OK
+1 -2
View File
@@ -11,8 +11,7 @@ SET CONFIGURATION=Release
FOR /F "tokens=*" %%i in ('git rev-parse --abbrev-ref HEAD') do SET APPVEYOR_REPO_BRANCH=%%i
ECHO APPVEYOR_REPO_BRANCH^: %APPVEYOR_REPO_BRANCH%
::SET PATH=C:\mb\windows-builds-64\tmp-bin\cmake-3.5.0-win32-x86\bin;%PATH%
SET PATH=C:\mb\windows-builds-64\tmp-bin\cmake-3.5.1-win32-x86\bin;%PATH%
SET PATH=C:\mb\windows-builds-64\tmp-bin\cmake-3.7.0-rc2-win32-x86\bin;%PATH%
SET PATH=C:\Program Files\7-Zip;%PATH%
powershell Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force
+188
View File
@@ -0,0 +1,188 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#.rst:
# FindLua
# -------
#
#
#
# Locate Lua library This module defines
#
# ::
#
# LUA_FOUND - if false, do not try to link to Lua
# LUA_LIBRARIES - both lua and lualib
# LUA_INCLUDE_DIR - where to find lua.h
# LUA_VERSION_STRING - the version of Lua found
# LUA_VERSION_MAJOR - the major version of Lua
# LUA_VERSION_MINOR - the minor version of Lua
# LUA_VERSION_PATCH - the patch version of Lua
#
#
#
# Note that the expected include convention is
#
# ::
#
# #include "lua.h"
#
# and not
#
# ::
#
# #include <lua/lua.h>
#
# This is because, the lua location is not standardized and may exist in
# locations other than lua/
unset(_lua_include_subdirs)
unset(_lua_library_names)
unset(_lua_append_versions)
# this is a function only to have all the variables inside go away automatically
function(_lua_set_version_vars)
set(LUA_VERSIONS5 5.3 5.2 5.1 5.0)
if (Lua_FIND_VERSION_EXACT)
if (Lua_FIND_VERSION_COUNT GREATER 1)
set(_lua_append_versions ${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR})
endif ()
elseif (Lua_FIND_VERSION)
# once there is a different major version supported this should become a loop
if (NOT Lua_FIND_VERSION_MAJOR GREATER 5)
if (Lua_FIND_VERSION_COUNT EQUAL 1)
set(_lua_append_versions ${LUA_VERSIONS5})
else ()
foreach (subver IN LISTS LUA_VERSIONS5)
if (NOT subver VERSION_LESS ${Lua_FIND_VERSION})
list(APPEND _lua_append_versions ${subver})
endif ()
endforeach ()
endif ()
endif ()
else ()
# once there is a different major version supported this should become a loop
set(_lua_append_versions ${LUA_VERSIONS5})
endif ()
list(APPEND _lua_include_subdirs "include/lua" "include")
foreach (ver IN LISTS _lua_append_versions)
string(REGEX MATCH "^([0-9]+)\\.([0-9]+)$" _ver "${ver}")
list(APPEND _lua_include_subdirs
include/lua${CMAKE_MATCH_1}${CMAKE_MATCH_2}
include/lua${CMAKE_MATCH_1}.${CMAKE_MATCH_2}
include/lua-${CMAKE_MATCH_1}.${CMAKE_MATCH_2}
)
list(APPEND _lua_library_names
lua${CMAKE_MATCH_1}${CMAKE_MATCH_2}
lua${CMAKE_MATCH_1}.${CMAKE_MATCH_2}
lua-${CMAKE_MATCH_1}.${CMAKE_MATCH_2}
lua.${CMAKE_MATCH_1}.${CMAKE_MATCH_2}
)
endforeach ()
set(_lua_include_subdirs "${_lua_include_subdirs}" PARENT_SCOPE)
set(_lua_library_names "${_lua_library_names}" PARENT_SCOPE)
set(_lua_append_versions "${_lua_append_versions}" PARENT_SCOPE)
endfunction(_lua_set_version_vars)
function(_lua_check_header_version _hdr_file)
# At least 5.[012] have different ways to express the version
# so all of them need to be tested. Lua 5.2 defines LUA_VERSION
# and LUA_RELEASE as joined by the C preprocessor, so avoid those.
file(STRINGS "${_hdr_file}" lua_version_strings
REGEX "^#define[ \t]+LUA_(RELEASE[ \t]+\"Lua [0-9]|VERSION([ \t]+\"Lua [0-9]|_[MR])).*")
string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MAJOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MAJOR ";${lua_version_strings};")
if (LUA_VERSION_MAJOR MATCHES "^[0-9]+$")
string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MINOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MINOR ";${lua_version_strings};")
string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_RELEASE[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_PATCH ";${lua_version_strings};")
set(LUA_VERSION_STRING "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}.${LUA_VERSION_PATCH}")
else ()
string(REGEX REPLACE ".*;#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};")
if (NOT LUA_VERSION_STRING MATCHES "^[0-9.]+$")
string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};")
endif ()
string(REGEX REPLACE "^([0-9]+)\\.[0-9.]*$" "\\1" LUA_VERSION_MAJOR "${LUA_VERSION_STRING}")
string(REGEX REPLACE "^[0-9]+\\.([0-9]+)[0-9.]*$" "\\1" LUA_VERSION_MINOR "${LUA_VERSION_STRING}")
string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]).*" "\\1" LUA_VERSION_PATCH "${LUA_VERSION_STRING}")
endif ()
foreach (ver IN LISTS _lua_append_versions)
if (ver STREQUAL "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}")
set(LUA_VERSION_MAJOR ${LUA_VERSION_MAJOR} PARENT_SCOPE)
set(LUA_VERSION_MINOR ${LUA_VERSION_MINOR} PARENT_SCOPE)
set(LUA_VERSION_PATCH ${LUA_VERSION_PATCH} PARENT_SCOPE)
set(LUA_VERSION_STRING ${LUA_VERSION_STRING} PARENT_SCOPE)
return()
endif ()
endforeach ()
endfunction(_lua_check_header_version)
_lua_set_version_vars()
if (LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/lua.h")
_lua_check_header_version("${LUA_INCLUDE_DIR}/lua.h")
endif ()
if (NOT LUA_VERSION_STRING)
foreach (subdir IN LISTS _lua_include_subdirs)
unset(LUA_INCLUDE_PREFIX CACHE)
find_path(LUA_INCLUDE_PREFIX ${subdir}/lua.h
HINTS
ENV LUA_DIR
PATHS
~/Library/Frameworks
/Library/Frameworks
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
)
if (LUA_INCLUDE_PREFIX)
_lua_check_header_version("${LUA_INCLUDE_PREFIX}/${subdir}/lua.h")
if (LUA_VERSION_STRING)
set(LUA_INCLUDE_DIR "${LUA_INCLUDE_PREFIX}/${subdir}")
break()
endif ()
endif ()
endforeach ()
endif ()
unset(_lua_include_subdirs)
unset(_lua_append_versions)
find_library(LUA_LIBRARY
NAMES ${_lua_library_names} lua
HINTS
ENV LUA_DIR
PATH_SUFFIXES lib
PATHS
~/Library/Frameworks
/Library/Frameworks
/sw
/opt/local
/opt/csw
/opt
)
unset(_lua_library_names)
if (LUA_LIBRARY)
# include the math library for Unix
if (UNIX AND NOT APPLE AND NOT BEOS)
find_library(LUA_MATH_LIBRARY m)
set(LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}")
# For Windows and Mac, don't need to explicitly include the math library
else ()
set(LUA_LIBRARIES "${LUA_LIBRARY}")
endif ()
endif ()
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE if
# all listed variables are TRUE
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua
REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR
VERSION_VAR LUA_VERSION_STRING)
mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARY LUA_MATH_LIBRARY)
-82
View File
@@ -1,82 +0,0 @@
# Locate Lua library
# This module defines
# LUA52_FOUND, if false, do not try to link to Lua
# LUA_LIBRARIES
# LUA_INCLUDE_DIR, where to find lua.h
# LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8)
#
# Note that the expected include convention is
# #include "lua.h"
# and not
# #include <lua/lua.h>
# This is because, the lua location is not standardized and may exist
# in locations other than lua/
#=============================================================================
# Copyright 2007-2009 Kitware, Inc.
# Copyright 2016 for Project-OSRM, Lua5.1 => Lua5.2
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
find_path(LUA_INCLUDE_DIR lua.h
HINTS
ENV LUA_DIR
PATH_SUFFIXES include/lua52 include/lua5.2 include/lua-5.2 include/lua include
PATHS
~/Library/Frameworks
/Library/Frameworks
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
)
find_library(LUA_LIBRARY
NAMES lua52 lua5.2 lua-5.2 lua
HINTS
ENV LUA_DIR
PATH_SUFFIXES lib
PATHS
~/Library/Frameworks
/Library/Frameworks
/sw
/opt/local
/opt/csw
/opt
)
if(LUA_LIBRARY)
# include the math library for Unix
if(UNIX AND NOT APPLE AND NOT BEOS)
find_library(LUA_MATH_LIBRARY m)
set( LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}" CACHE STRING "Lua Libraries")
# For Windows and Mac, don't need to explicitly include the math library
else()
set( LUA_LIBRARIES "${LUA_LIBRARY}" CACHE STRING "Lua Libraries")
endif()
endif()
if(LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/lua.h")
file(STRINGS "${LUA_INCLUDE_DIR}/lua.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua .+\"")
string(REGEX REPLACE "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([^\"]+)\".*" "\\1" LUA_VERSION_STRING "${lua_version_str}")
unset(lua_version_str)
endif()
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE if
# all listed variables are TRUE
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua52
REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR
VERSION_VAR LUA_VERSION_STRING)
mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARIES LUA_LIBRARY LUA_MATH_LIBRARY)
-93
View File
@@ -1,93 +0,0 @@
# Locate Lua library
# This module defines
# LUAJIT_FOUND, if false, do not try to link to Lua
# LUAJIT_LIBRARIES
# LUAJIT_INCLUDE_DIR, where to find lua.h
#
# Note that the expected include convention is
# #include "lua.h"
# and not
# #include <lua/lua.h>
# This is because, the lua location is not standardized and may exist
# in locations other than lua/
#=============================================================================
# Copyright 2007-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distributed this file outside of CMake, substitute the full
# License text for the above reference.)
#
# ################
# 2010 - modified for cronkite to find luajit instead of lua, as it was before.
#
if ( NOT LuaJIT_FIND_VERSION )
MESSAGE(FATAL_ERROR "You need to specify a version of libluajit to use")
ENDIF()
IF( NOT LUAJIT_FIND_QUIETLY )
MESSAGE(STATUS "Looking for LuaJIT ${LuaJIT_FIND_VERSION}")
ENDIF()
FIND_PATH(LUAJIT_INCLUDE_DIR lua.h
HINTS
$ENV{LUAJIT_DIR}
PATH_SUFFIXES include/luajit-2.0 include/luajit2.0 include/luajit include
PATHS
~/Library/Frameworks
/Library/Frameworks
/usr/local
/usr
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
)
FIND_LIBRARY(LUAJIT_LIBRARY
NAMES luajit-${LuaJIT_FIND_VERSION_MAJOR}${LuaJIT_FIND_VERSION_MINOR} luajit-${LuaJIT_FIND_VERSION}
HINTS
$ENV{LUAJIT_DIR}
PATH_SUFFIXES lib64 lib
PATHS
~/Library/Frameworks
/Library/Frameworks
/usr/local
/usr
/sw
/opt/local
/opt/csw
/opt
)
IF(LUAJIT_LIBRARY)
# include the math library for Unix
IF(UNIX AND NOT APPLE)
FIND_LIBRARY(LUAJIT_MATH_LIBRARY m)
SET( LUAJIT_LIBRARIES "${LUAJIT_LIBRARY};${LUAJIT_MATH_LIBRARY}" CACHE STRING "Lua Libraries")
# For Windows and Mac, don't need to explicitly include the math library
ELSE(UNIX AND NOT APPLE)
SET( LUAJIT_LIBRARIES "${LUAJIT_LIBRARY}" CACHE STRING "Lua Libraries")
ENDIF(UNIX AND NOT APPLE)
ENDIF(LUAJIT_LIBRARY)
INCLUDE(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LUAJIT_FOUND to TRUE if
# all listed variables are TRUE
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LUAJIT DEFAULT_MSG LUAJIT_LIBRARIES LUAJIT_INCLUDE_DIR)
IF( NOT LUAJIT_FIND_QUIETLY )
IF( LUAJIT_FOUND AND LUAJIT_LIBRARIES)
MESSAGE(STATUS "Found LuaJIT: ${LUAJIT_LIBRARY}" )
MARK_AS_ADVANCED(LUAJIT_INCLUDE_DIR LUAJIT_LIBRARIES LUAJIT_LIBRARY LUAJIT_MATH_LIBRARY)
ELSE()
SET ( LUAJIT_FOUND FALSE )
ENDIF()
ENDIF()
+25 -7
View File
@@ -3,16 +3,34 @@
# LUABIND_FOUND, if false, do not try to link to Luabind
# LUABIND_LIBRARIES
# LUABIND_INCLUDE_DIR, where to find luabind.hpp
#
# Note that the expected include convention is
# #include <luabind/luabind.hpp>
# and not
# #include <luabind.hpp>
IF( NOT LUABIND_FIND_QUIETLY )
MESSAGE(STATUS "Looking for Luabind...")
# First we try using EXACT but in some verison of
# cmake this would also match patch versions
FIND_PACKAGE(Lua 5.2 EXACT)
IF (LUA_FOUND)
MESSAGE(STATUS "Using Lua ${LUA_VERSION_STRING}")
ELSE()
FIND_PACKAGE(Lua 5.1 EXACT)
IF (LUA_FOUND)
MESSAGE(STATUS "Using Lua ${LUA_VERSION_STRING}")
ELSE()
# Now fall back to a lua verison without exact
# in case this cmake version also forces patch versions
FIND_PACKAGE(Lua 5.2)
IF (LUA_FOUND)
MESSAGE(STATUS "Using Lua ${LUA_VERSION_STRING}")
ELSE()
FIND_PACKAGE(Lua 5.1)
IF (LUA_FOUND)
MESSAGE(STATUS "Using Lua ${LUA_VERSION_STRING}")
ELSE()
MESSAGE(FATAL_ERROR "Lua 5.1 or 5.2 was not found.")
ENDIF()
ENDIF()
ENDIF()
ENDIF()
FIND_PATH(LUABIND_INCLUDE_DIR luabind.hpp
HINTS
$ENV{LUABIND_DIR}
-40
View File
@@ -1,40 +0,0 @@
INCLUDE (CheckCXXSourceCompiles)
unset(LUABIND_WORKS CACHE)
unset(LUABIND51_WORKS CACHE)
set (LUABIND_CHECK_SRC "extern \"C\" {\n#include \"lua.h\"\n#include \"lauxlib.h\"\n}\n#include <luabind/open.hpp>\nint main() { lua_State *x = luaL_newstate(); luabind::open(x); }")
set (CMAKE_TRY_COMPILE_CONFIGURATION ${CMAKE_BUILD_TYPE})
set (CMAKE_REQUIRED_INCLUDES "${Boost_INCLUDE_DIR};${LUABIND_INCLUDE_DIR};${LUA_INCLUDE_DIR}")
set (CMAKE_REQUIRED_LIBRARIES "${LUABIND_LIBRARY};${LUA_LIBRARY}")
find_package(Lua52)
if(NOT APPLE)
find_package(LuaJIT 5.2)
endif()
if(LUA52_FOUND)
set (CMAKE_REQUIRED_INCLUDES "${Boost_INCLUDE_DIR};${LUABIND_INCLUDE_DIR};${LUA_INCLUDE_DIR}")
set (CMAKE_REQUIRED_LIBRARIES "${LUABIND_LIBRARY};${LUA_LIBRARY}")
CHECK_CXX_SOURCE_COMPILES("${LUABIND_CHECK_SRC}" LUABIND_WORKS)
endif()
if(LUABIND_WORKS)
message(STATUS "Luabind/Lua5.2 combination working with ${LUA_LIBRARY}")
else()
message(STATUS "Luabind/Lua5.2 not feasible, falling back to Lua 5.1.")
unset(LUA_FOUND CACHE)
unset(LUA_INCLUDE_DIR CACHE)
unset(LUA_LIBRARY CACHE)
find_package(Lua51 REQUIRED)
if(NOT APPLE)
find_package(LuaJIT 5.1)
endif()
set (CMAKE_REQUIRED_INCLUDES "${Boost_INCLUDE_DIR};${LUABIND_INCLUDE_DIR};${LUA_INCLUDE_DIR}")
set (CMAKE_REQUIRED_LIBRARIES "${LUABIND_LIBRARY};${LUA_LIBRARY}")
CHECK_CXX_SOURCE_COMPILES("${LUABIND_CHECK_SRC}" LUABIND51_WORKS)
if(LUABIND51_WORKS)
message(STATUS "Luabind works with Lua 5.1 at ${LUA_LIBRARY}")
else()
message(FATAL_ERROR "Luabind does not work with Lua 5.1 at ${LUA_LIBRARY}, no working Luabind found")
endif()
endif()
+61
View File
@@ -0,0 +1,61 @@
# Developing / Debugging guidance code
When changing guidance code, it is easy to introduce problems somewhere in the network.
To get a better feeling of how your changes impact the OSRM experience, we offer ways of generating geojson output to inspect (e.g. with Mapbox Studio).
When you do changes, make sure to inspect a few areas for the impact of the changes.
## How to use GeoJson-Debugging
This is a short guide to describe usage of our GeoJson debug logging mechanism. It is synchronized to guarantee thread-safe logging.
## Outputting into a single file
To use it, the inclusion of `geojson_debug_logger.hpp` `geojson_debug_policies.hpp` from the `util` directory is required.
Geojson debugging requires a few simple steps to output data into a feature collection.
- Create a Scoped Guard that lives through the process and provide it with all required datastructures (it needs to span the lifetime of all your logging efforts)
- At the location of the output, simply call Write with your own parameters.
A guard (ScopedGeojsonLoggerGuard) requires a logging policy. Per default we provide a way of printing out node-ids as coordinates.
The initialisation to do so looks like this:
`util::ScopedGeojsonLoggerGuard<util::NodeIdVectorToLineString> geojson_guard( "debug.geojson", data-for-conversion);`
The field `data-for-conversion` can be an arbitrary long set of features and needs to match the parameters used for constructing our policy (in this case `util::NodeIdVectorToLineString`).
The policy itself offers a `operator()` accepting a `vector` of `NodeID`.
For outputting data into our file (debug.geojson), we simply need to call the matching logging routine of the guard: `util::ScioedGeojsonLoggerGuard<util::NodeIdVectorToLineString>::Write(list_of_node_ids);`
(or `guard.Write(list_of_node_ids)` if you created an instance).
### Possible Scopeguard Location
Think of the scopeguard as you would do of any reference. If you wan't to access to logging during a call, the guard object must be alive and valid.
As an example: a good location to create the a scopeguard to log decisions in the edge-based-graph-factory would be right before we run it ([here](https://github.com/Project-OSRM/osrm-backend/blob/a933b5d94943bf3edaf42c84a614a99650d23cba/src/extractor/extractor.cpp#L497)). If you put `util::ScopedGeojsonLoggerGuard<util::NodeIdVectorToLineString> geojson_guard( "debug.geojson", node_coordinate_vector);` at that location, you can then print `util::ScopedGeojsonLoggerGuard<util::NodeIdVectorToLineString>::Write(list_of_node_ids);` anywhere within the `edge-based-graph-factory`.
This location would enable call for all guidance related pre-processing which is called in the edge-based-graph-factory.
Logging any turn-handler decisions, for example, would now be possible.
## Limitations
GeoJson debugging requires a single GeoJsonGuard (ScopedGeojsonLoggerGuard) for each desired output file.
For each set of template parameters, only the most recent guard will actually produce output.
`util::ScopedGeojsonLoggerGuard<util::NodeIdVectorToLineString> geojson_guard( "debug.geojson", data-for-conversion);`
`util::ScopedGeojsonLoggerGuard<util::NodeIdVectorToLineString> geojson_guard( "debug-2.geojson", data-for-conversion);`
Will not provide a way to write into two files, but only `debug-2` will actually contain features.
We cannot nest-these calls.
If we want to use the same policy for multiple files, we need to use different template parameters both for the logger and the guard.
`util::ScopedGeojsonLoggerGuard<util::NodeIdVectorToLineString,0> geojson_guard( "debug.geojson", data-for-conversion);`
`util::ScopedGeojsonLoggerGuard<util::NodeIdVectorToLineString,1> geojson_guard( "debug-2.geojson", data-for-conversion);`
as well as,
`util::ScopedGeojsonLoggerGuardr<util::NodeIdVectorToLineString,0>::Write(list_of_node_ids);`
`util::ScopedGeojsonLoggerGuardr<util::NodeIdVectorToLineString,1>::Write(list_of_node_ids);`
+25 -22
View File
@@ -38,7 +38,7 @@ http://{server}/{service}/{version}/{profile}/{coordinates}[.{format}]?option=va
| [`tile`](#service-tile) | Return vector tiles containing debugging info |
- `version`: Version of the protocol implemented by the service.
- `profile`: Mode of transportation, is determined by the profile that is used to prepare the data
- `profile`: Mode of transportation, is determined statically by the Lua profile that is used to prepare the data using `osrm-extract`.
- `coordinates`: String of format `{longitude},{latitude};{longitude},{latitude}[;{longitude},{latitude} ...]` or `polyline({polyline})`.
- `format`: Only `json` is supported at the moment. This parameter is optional and defaults to `json`.
@@ -107,6 +107,8 @@ Where `code` is on one of the strings below or service dependent:
| `InvalidService` | Service name is invalid. |
| `InvalidVersion` | Version is not found. |
| `InvalidOptions` | Options are invalid. |
| `InvalidQuery` | The query string is synctactically malformed. |
| `InvalidValue` | The successfully parsed query parameters are invalid. |
| `NoSegment` | One of the supplied input coordinates could not snap to street segment. |
| `TooBig` | The request size violates one of the service specific request size restrictions. |
@@ -151,19 +153,19 @@ http://router.project-osrm.org/nearest/v1/driving/13.388860,52.517037?number=3&b
### Request
```
http://{server}/route/v1/{profile}/{coordinates}?alternatives={true|false}&steps={true|false}&geometries={polyline|geojson}&overview={full|simplified|false}&annotations={true|false}
http://{server}/route/v1/{profile}/{coordinates}?alternatives={true|false}&steps={true|false}&geometries={polyline|polyline6|geojson}&overview={full|simplified|false}&annotations={true|false}
```
In addition to the [general options](#general-options) the following options are supported for this service:
|Option |Values |Description |
|------------|------------------------------------------|-------------------------------------------------------------------------------|
|alternatives|`true`, `false` (default) |Search for alternative routes and return as well.\* |
|steps |`true`, `false` (default) |Return route steps for each route leg |
|annotations |`true`, `false` (default) |Returns additional metadata for each coordinate along the route geometry. |
|geometries |`polyline` (default), `geojson` |Returned route geometry format (influences overview and per step) |
|overview |`simplified` (default), `full`, `false` |Add overview geometry either full, simplified according to highest zoom level it could be display on, or not at all.|
|continue_straight |`default` (default), `true`, `false`|Forces the route to keep going straight at waypoints and don't do a uturn even if it would be faster. Default value depends on the profile. |
|Option |Values |Description |
|------------|---------------------------------------------|-------------------------------------------------------------------------------|
|alternatives|`true`, `false` (default) |Search for alternative routes and return as well.\* |
|steps |`true`, `false` (default) |Return route steps for each route leg |
|annotations |`true`, `false` (default) |Returns additional metadata for each coordinate along the route geometry. |
|geometries |`polyline` (default), `polyline6`, `geojson` |Returned route geometry format (influences overview and per step) |
|overview |`simplified` (default), `full`, `false` |Add overview geometry either full, simplified according to highest zoom level it could be display on, or not at all.|
|continue_straight |`default` (default), `true`, `false` |Forces the route to keep going straight at waypoints and don't do a uturn even if it would be faster. Default value depends on the profile. |
\* Please note that even if an alternative route is requested, a result cannot be guaranteed.
@@ -177,7 +179,7 @@ In case of error the following `code`s are supported in addition to the general
| Type | Description |
|-------------------|-----------------|
| `NoRoute` | No route found. |
| `NoRoute` | No route found. |
All other fields might be undefined.
@@ -249,7 +251,7 @@ http://router.project-osrm.org/table/v1/driving/13.388860,52.517037;13.397634,52
Returns a asymmetric 3x2 matrix with from the polyline encoded locations `qikdcB}~dpXkkHz`:
```
http://router.project-osrm.org/table/v1/driving/qikdcB}~dpXkkHz?sources=0;1;3&destinations=2;4
http://router.project-osrm.org/table/v1/driving/polyline(egs_Iq_aqAppHzbHulFzeMe`EuvKpnCglA)?sources=0;1;3&destinations=2;4
```
## Service `match`
@@ -261,7 +263,7 @@ The algorithm might not be able to match all points. Outliers are removed if the
### Request
```
http://{server}/match/v1/{profile}/{coordinates}?steps={true|false}&geometries={polyline|geojson}&overview={simplified|full|false}&annotations={true|false}
http://{server}/match/v1/{profile}/{coordinates}?steps={true|false}&geometries={polyline|polyline6|geojson}&overview={simplified|full|false}&annotations={true|false}
```
In addition to the [general options](#general-options) the following options are supported for this service:
@@ -270,10 +272,10 @@ In addition to the [general options](#general-options) the following options are
|Option |Values |Description |
|------------|------------------------------------------------|------------------------------------------------------------------------------------------|
|steps |`true`, `false` (default) |Return route steps for each route |
|geometries |`polyline` (default), `geojson` |Returned route geometry format (influences overview and per step) |
|annotations |`true`, `false` (default) |Returns additional metadata for each coordinate along the route geometry. |
|geometries |`polyline` (default), `polyline6`, `geojson` |Returned route geometry format (influences overview and per step) |
|annotations |`true`, `false` (default) |Returns additional metadata for each coordinate along the route geometry. |
|overview |`simplified` (default), `full`, `false` |Add overview geometry either full, simplified according to highest zoom level it could be display on, or not at all.|
|timestamps |`{timestamp};{timestamp}[;{timestamp} ...]` |Timestamp of the input location. |
|timestamps |`{timestamp};{timestamp}[;{timestamp} ...]` |Timestamp of the input location. Timestamps need to be monotonically increasing. |
|radiuses |`{radius};{radius}[;{radius} ...]` |Standard deviation of GPS precision used for map matching. If applicable use GPS accuracy.|
|Parameter |Values |
@@ -283,7 +285,7 @@ In addition to the [general options](#general-options) the following options are
### Response
- `code` if the request was successful `Ok` otherwise see the service dependent and general status codes.
- `tracepoints`: Array of `aypoint` objects representing all points of the trace in order.
- `tracepoints`: Array of `Waypoint` objects representing all points of the trace in order.
If the trace point was ommited by map matching because it is an outlier, the entry will be `null`.
Each `Waypoint` object has the following additional properties:
- `matchings_index`: Index to the `Route` object in `matchings` the sub-trace was matched to.
@@ -309,7 +311,7 @@ multiple trips for each connected component are returned.
### Request
```
http://{server}/trip/v1/{profile}/{coordinates}?steps={true|false}&geometries={polyline|geojson}&overview={simplified|full|false}&annotations={true|false}
http://{server}/trip/v1/{profile}/{coordinates}?steps={true|false}&geometries={polyline|polyline6|geojson}&overview={simplified|full|false}&annotations={true|false}
```
In addition to the [general options](#general-options) the following options are supported for this service:
@@ -317,8 +319,8 @@ In addition to the [general options](#general-options) the following options are
|Option |Values |Description |
|------------|------------------------------------------------|---------------------------------------------------------------------------|
|steps |`true`, `false` (default) |Return route instructions for each trip |
|annotations |`true`, `false` (default) |Returns additional metadata for each coordinate along the route geometry. |
|geometries |`polyline` (default), `geojson` |Returned route geometry format (influences overview and per step) |
|annotations |`true`, `false` (default) |Returns additional metadata for each coordinate along the route geometry. |
|geometries |`polyline` (default), `polyline6`, `geojson` |Returned route geometry format (influences overview and per step) |
|overview |`simplified` (default), `full`, `false` |Add overview geometry either full, simplified according to highest zoom level it could be display on, or not at all.|
### Response
@@ -333,7 +335,7 @@ In case of error the following `code`s are supported in addition to the general
| Type | Description |
|-------------------|---------------------|
| `NoTrips` | No trips found. |
| `NoTrips` | No trips found. |
All other fields might be undefined.
@@ -466,6 +468,7 @@ step.
| geometries | |
|------------|--------------------------------------------------------------------|
| polyline | [polyline](https://www.npmjs.com/package/polyline) with precision 5 in [latitude,longitude] encoding |
| polyline6 | [polyline](https://www.npmjs.com/package/polyline) with precision 6 in [latitude,longitude] encoding |
| geojson | [GeoJSON `LineString`](http://geojson.org/geojson-spec.html#linestring) or [GeoJSON `Point`](http://geojson.org/geojson-spec.html#point) if it is only one coordinate (not wrapped by a GeoJSON feature)|
- `name`: The name of the way along which travel proceeds.
@@ -571,7 +574,7 @@ step.
| `type` | Description |
|------------------------|---------------------------------------------------------------------------------------------------------------------------|
| `roundabout` | Number of the roundabout exit to take. If exit is `undefined` the destination is on the roundabout. |
| `roundabout`/`rotary` | Number of the roundabout exit to take. If exit is `undefined` the destination is on the roundabout. |
| else | Indicates the number of intersections passed until the turn. Example instruction: `at the fourth intersection, turn left` |
+88 -16
View File
@@ -55,7 +55,9 @@ Background:
Scenario: Testbot - Straight Road
Given the node map
| a | b | c | d |
"""
a b c d
"""
And the ways
| nodes | highway |
@@ -92,7 +94,9 @@ Background:
Scenario: Testbot - Straight Road
Given the node map
| a | b | c | d |
"""
a b c d
"""
And the ways
| nodes | highway | name |
@@ -117,8 +121,10 @@ Background:
Scenario: Testbot - Straight Road
Given the node map
| a | b |
| d | c |
"""
a b
d c
"""
And the ways
| nodes | highway | name |
@@ -140,8 +146,10 @@ Background:
Scenario: Testbot - Straight Road
Given the node map
| a | b | e |
| d | c | |
"""
a b e
d c
"""
And the ways
| nodes | highway | name |
@@ -165,8 +173,10 @@ Scenario: Enter and Exit mini roundabout with sharp angle # features/guidance/
Given the profile "car" # features/step_definitions/data.js:8
Given a grid size of 10 meters # features/step_definitions/data.js:20
Given the node map # features/step_definitions/data.js:45
| a | b | |
| | c | d |
"""
a b
c d
"""
And the ways # features/step_definitions/data.js:128
| nodes | highway | name |
| ab | tertiary | MySt |
@@ -195,9 +205,11 @@ OSRM converts the grid into a so called edge-based graph.
```
Scenario: Testbot - Intersection
Given the node map
| | e | |
| b | a | d |
| | c | |
"""
e
b a d
c
"""
And the ways
| nodes | highway | oneway |
@@ -213,11 +225,13 @@ To guarantee discovery, use:
```
Scenario: Testbot - Intersection
Given the node map
| | | e | | |
| | | 4 | | |
| b | 1 | a | 3 | d |
| | | 2 | | |
| | | c | | |
"""
e
4
b 1 a 3 d
2
c
"""
And the ways
| nodes | highway | oneway |
@@ -237,3 +251,61 @@ If you are testing for a duration metric, allow for a tiny offset to ensure a pa
#### Don't Rely on Alternatives
Alternative route discovery is a random feature in itself. The discovery of routes depends on the contraction order of roads and cannot be assumed successful, ever.
### Understanding Turn Restrictions
Adding turn restrictions requires the restriction to follow a very specific format.
We specify them in a table with the header `| type | way:from | way:to | node:via | restriction |`.
It is important that turn restrictions require micro segmentation.
Consider the following scenario:
```
Given the node map:
"""
e
|
a - - b - - c
|
d
"""
And the ways
| nodes | oneway |
| abc | yes |
| ebd | yes |
And the relations
| type | way:from | way:to | node:via | restriction |
| restriction | abc | ebd | b | no_right_turn |
```
The setting looks perfectly fine at first glance. However, it is not well defined.
The forbidden right turn could be either a superfluous addition, forbidding the turn `cb` to `be`, or actually refer to the turn `ab` to `bd` to say that a turn is forbidden here.
To model turn-restrictions correctly and unique, we need to split segments that contribute to the restriction into the smallest possible parts.
E.g. the above scenario could correctly be expressed as:
```
Given the node map:
"""
e
|
a - - b - - c
|
d
"""
And the ways
| nodes | oneway | name |
| ab | yes | abc |
| bc | yes | abc |
| eb | yes | ebd |
| bd | yes | ebd |
And the relations
| type | way:from | way:to | node:via | restriction |
| restriction | ab | bd | b | no_right_turn |
```
Unless this format is used, OSRM will omit the (then ambiguous) turn restrictions and ignore them.
+19 -11
View File
@@ -7,9 +7,11 @@ Feature: Bike - Squares and other areas
@square
Scenario: Bike - Route along edge of a squares
Given the node map
| x | |
| a | b |
| d | c |
"""
x
a b
d c
"""
And the ways
| nodes | area | highway |
@@ -30,9 +32,11 @@ Feature: Bike - Squares and other areas
@building
Scenario: Bike - Don't route on buildings
Given the node map
| x | |
| a | b |
| d | c |
"""
x
a b
d c
"""
And the ways
| nodes | highway | area | building | access |
@@ -53,9 +57,11 @@ Feature: Bike - Squares and other areas
@parking
Scenario: Bike - parking areas
Given the node map
| e | | | f |
| x | a | b | y |
| | d | c | |
"""
e f
x a b y
d c
"""
And the ways
| nodes | highway | amenity |
@@ -81,8 +87,10 @@ Feature: Bike - Squares and other areas
@train @platform
Scenario: Bike - railway platforms
Given the node map
| x | a | b | y |
| | d | c | |
"""
x a b y
d c
"""
And the ways
| nodes | highway | railway |
+10 -6
View File
@@ -6,9 +6,11 @@ Feature: Bicycle - Handle cycling
Scenario: Bicycle - Use a ferry route
Given the node map
| a | b | c | | |
| | | d | | |
| | | e | f | g |
"""
a b c
d
e f g
"""
And the ways
| nodes | highway | bridge | bicycle |
@@ -29,9 +31,11 @@ Feature: Bicycle - Handle cycling
Scenario: Bicycle - Properly handle durations
Given the node map
| a | b | c | | |
| | | d | | |
| | | e | f | g |
"""
a b c
d
e f g
"""
And the ways
| nodes | highway | bridge | duration |
+17 -11
View File
@@ -6,10 +6,12 @@ Feature: Bike - Destination only, no passing through
Scenario: Bike - Destination only street
Given the node map
| a | | | | e |
| | b | c | d | |
| | | | | |
| x | | | | y |
"""
a e
b c d
x y
"""
And the ways
| nodes | access |
@@ -31,10 +33,12 @@ Feature: Bike - Destination only, no passing through
Scenario: Bike - Destination only street
Given the node map
| a | | | | e |
| | b | c | d | |
| | | | | |
| x | | | | y |
"""
a e
b c d
x y
"""
And the ways
| nodes | access |
@@ -57,9 +61,11 @@ Feature: Bike - Destination only, no passing through
Scenario: Bike - Routing inside a destination only area
Given the node map
| a | | c | | e |
| | b | | d | |
| x | | | | y |
"""
a c e
b d
x y
"""
And the ways
| nodes | access |
+15 -9
View File
@@ -6,9 +6,11 @@ Feature: Bike - Handle ferry routes
Scenario: Bike - Ferry route
Given the node map
| a | b | c | | |
| | | d | | |
| | | e | f | g |
"""
a b c
d
e f g
"""
And the ways
| nodes | highway | route | bicycle |
@@ -29,10 +31,12 @@ Feature: Bike - Handle ferry routes
Scenario: Bike - Ferry duration, single node
Given the node map
| a | b | c | d |
| | | e | f |
| | | g | h |
| | | i | j |
"""
a b c d
e f
g h
i j
"""
And the ways
| nodes | highway | route | bicycle | duration |
@@ -48,8 +52,10 @@ Feature: Bike - Handle ferry routes
Scenario: Bike - Ferry duration, multiple nodes
Given the node map
| x | | | | | y |
| | a | b | c | d | |
"""
x y
a b c d
"""
And the ways
| nodes | highway | route | bicycle | duration |
+17 -15
View File
@@ -7,15 +7,15 @@ Feature: Bike - Max speed restrictions
Scenario: Bicycle - Respect maxspeeds when lower that way type speed
Then routability should be
| highway | maxspeed | bothw |
| residential | | 15 km/h |
| residential | 10 | 10 km/h |
| highway | maxspeed | bothw |
| residential | | 15 km/h +- 1 |
| residential | 10 | 10 km/h +- 1 |
Scenario: Bicycle - Ignore maxspeed when higher than way speed
Then routability should be
| highway | maxspeed | bothw |
| residential | | 15 km/h |
| residential | 80 | 15 km/h |
| highway | maxspeed | bothw |
| residential | | 15 km/h +- 1 |
| residential | 80 | 15 km/h |
@todo
Scenario: Bicycle - Maxspeed formats
@@ -40,7 +40,9 @@ Feature: Bike - Max speed restrictions
Scenario: Bike - Do not use maxspeed when higher that way type speed
Given the node map
| a | b | c |
"""
a b c
"""
And the ways
| nodes | highway | maxspeed |
@@ -61,14 +63,14 @@ Feature: Bike - Max speed restrictions
| snail | 720s ~10% |
Then routability should be
| maxspeed | maxspeed:forward | maxspeed:backward | forw | backw |
| | | | 15 km/h | 15 km/h |
| 10 | | | 10 km/h | 10 km/h |
| | 10 | | 10 km/h | 15 km/h |
| | | 10 | 15 km/h | 10 km/h |
| 2 | 10 | | 10 km/h | 2 km/h |
| 2 | | 10 | 2 km/h | 10 km/h |
| 2 | 5 | 10 | 5 km/h | 10 km/h |
| maxspeed | maxspeed:forward | maxspeed:backward | forw | backw |
| | | | 15 km/h +- 1 | 15 km/h +- 1 |
| 10 | | | 10 km/h +- 1 | 10 km/h +- 1 |
| | 10 | | 10 km/h +- 1 | 15 km/h +- 1 |
| | | 10 | 15 km/h | 10 km/h +- 1 |
| 2 | 10 | | 10 km/h +- 1 | 2 km/h |
| 2 | | 10 | 2 km/h | 10 km/h +- 1 |
| 2 | 5 | 10 | 5 km/h | 10 km/h +- 1 |
Scenario: Bike - Maxspeed should not allow routing on unroutable ways
Then routability should be
+34 -16
View File
@@ -6,8 +6,10 @@ Feature: Bike - Mode flag
Scenario: Bike - Mode when using a ferry
Given the node map
| a | b | |
| | c | d |
"""
a b
c d
"""
And the ways
| nodes | highway | route | duration |
@@ -26,8 +28,10 @@ Feature: Bike - Mode flag
Scenario: Bike - Mode when using a train
Given the node map
| a | b | |
| | c | d |
"""
a b
c d
"""
And the ways
| nodes | highway | railway | bicycle |
@@ -46,8 +50,10 @@ Feature: Bike - Mode flag
Scenario: Bike - Mode when pushing bike against oneways
Given the node map
| a | b | e |
| f | c | d |
"""
a b e
f c d
"""
And the ways
| nodes | highway | oneway |
@@ -69,8 +75,10 @@ Feature: Bike - Mode flag
Scenario: Bike - Mode when pushing on pedestrain streets
Given the node map
| a | b | |
| | c | d |
"""
a b
c d
"""
And the ways
| nodes | highway |
@@ -89,8 +97,10 @@ Feature: Bike - Mode flag
Scenario: Bike - Mode when pushing on pedestrain areas
Given the node map
| a | b | | |
| | c | d | f |
"""
a b
c d f
"""
And the ways
| nodes | highway | area |
@@ -109,8 +119,10 @@ Feature: Bike - Mode flag
Scenario: Bike - Mode when pushing on steps
Given the node map
| a | b | | |
| | c | d | f |
"""
a b
c d f
"""
And the ways
| nodes | highway |
@@ -129,8 +141,10 @@ Feature: Bike - Mode flag
Scenario: Bike - Mode when bicycle=dismount
Given the node map
| a | b | | |
| | c | d | f |
"""
a b
c d f
"""
And the ways
| nodes | highway | bicycle |
@@ -149,7 +163,9 @@ Feature: Bike - Mode flag
Scenario: Bicycle - Modes when starting on forward oneway
Given the node map
| a | b |
"""
a b
"""
And the ways
| nodes | oneway |
@@ -162,7 +178,9 @@ Feature: Bike - Mode flag
Scenario: Bicycle - Modes when starting on reverse oneway
Given the node map
| a | b |
"""
a b
"""
And the ways
| nodes | oneway |
+10 -6
View File
@@ -6,8 +6,10 @@ Feature: Bike - Street names in instructions
Scenario: Bike - A named street
Given the node map
| a | b |
| | c |
"""
a b
c
"""
And the ways
| nodes | name | ref |
@@ -19,9 +21,11 @@ Feature: Bike - Street names in instructions
| a | c | My Way,Your Way,Your Way | A6,A7,A7 |
@unnamed
Scenario: Bike - Use way type to describe unnamed ways
Scenario: Bike - No longer use way type to describe unnamed ways, see #3231
Given the node map
| a | b | c | d |
"""
a b c d
"""
And the ways
| nodes | highway | name |
@@ -29,5 +33,5 @@ Feature: Bike - Street names in instructions
| bcd | track | |
When I route I should get
| from | to | route |
| a | d | {highway:cycleway},{highway:track},{highway:track} |
| from | to | route |
| a | d | , |
+7 -3
View File
@@ -18,8 +18,10 @@ Feature: Bike - Oneway streets
Scenario: Bike - Around the Block
Given the node map
| | a | b | |
| f | d | c | e |
"""
a b
f d c e
"""
And the ways
| nodes | oneway | foot |
@@ -117,7 +119,9 @@ Feature: Bike - Oneway streets
Scenario: Bike - Two consecutive oneways
Given the node map
| a | b | | c |
"""
a b c
"""
And the ways
| nodes | oneway |
+14 -7
View File
@@ -35,9 +35,11 @@ Feature: Bike - Accessability of different way types
@square
Scenario: Bike - Push bikes on pedestrian areas
Given the node map
| x | |
| a | b |
| d | c |
"""
x
a b
d c
"""
And the ways
| nodes | area | highway |
@@ -63,6 +65,7 @@ Feature: Bike - Accessability of different way types
| runway | | | |
| runway | yes | foot | foot |
@todo
Scenario: Bike - Pushing bikes on ways with foot=yes in one direction
Then routability should be
| highway | foot:forward | foot:backward | forw | backw |
@@ -87,8 +90,10 @@ Feature: Bike - Accessability of different way types
Scenario: Bike - Instructions when pushing bike on oneways
Given the node map
| a | b | e |
| f | c | d |
"""
a b e
f c d
"""
And the ways
| nodes | highway | oneway |
@@ -107,8 +112,10 @@ Feature: Bike - Accessability of different way types
Scenario: Bike - Instructions when pushing bike on footway/pedestrian, etc.
Given the node map
| a | b | |
| | c | d |
"""
a b
c d
"""
And the ways
| nodes | highway |
+11 -5
View File
@@ -6,7 +6,9 @@ Feature: Bike - Way ref
Scenario: Bike - Way with both name and ref
Given the node map
| a | b |
"""
a b
"""
And the ways
| nodes | name | ref |
@@ -18,19 +20,23 @@ Feature: Bike - Way ref
Scenario: Bike - Way with only ref
Given the node map
| a | b |
"""
a b
"""
And the ways
| nodes | name | ref |
| ab | | E7 |
When I route I should get
| from | to | route | ref |
| a | b | {highway:primary},{highway:primary} | E7,E7 |
| from | to | route | ref |
| a | b | , | E7,E7 |
Scenario: Bike - Way with only name
Given the node map
| a | b |
"""
a b
"""
And the ways
| nodes | name |
+58 -36
View File
@@ -9,9 +9,11 @@ Feature: Bike - Turn restrictions
@no_turning
Scenario: Bike - No left turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway | foot |
@@ -33,9 +35,11 @@ Feature: Bike - Turn restrictions
@no_turning
Scenario: Bike - No right turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway | foot |
@@ -57,9 +61,11 @@ Feature: Bike - Turn restrictions
@no_turning
Scenario: Bike - No u-turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway | foot |
@@ -81,9 +87,11 @@ Feature: Bike - Turn restrictions
@no_turning
Scenario: Bike - Handle any no_* relation
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway | foot |
@@ -105,9 +113,11 @@ Feature: Bike - Turn restrictions
@only_turning
Scenario: Bike - Only left turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway | foot |
@@ -129,9 +139,11 @@ Feature: Bike - Turn restrictions
@only_turning
Scenario: Bike - Only right turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway | foot |
@@ -153,9 +165,11 @@ Feature: Bike - Turn restrictions
@only_turning
Scenario: Bike - Only straight on
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway | foot |
@@ -177,9 +191,11 @@ Feature: Bike - Turn restrictions
@no_turning
Scenario: Bike - Handle any only_* restriction
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway | foot |
@@ -201,9 +217,11 @@ Feature: Bike - Turn restrictions
@except
Scenario: Bike - Except tag and on no_ restrictions
Given the node map
| b | x | c |
| a | j | d |
| | s | |
"""
b x c
a j d
s
"""
And the ways
| nodes | oneway | foot |
@@ -231,9 +249,11 @@ Feature: Bike - Turn restrictions
@except
Scenario: Bike - Except tag and on only_ restrictions
Given the node map
| a | | b |
| | j | |
| | s | |
"""
a b
j
s
"""
And the ways
| nodes | oneway | foot |
@@ -253,12 +273,14 @@ Feature: Bike - Turn restrictions
@except
Scenario: Bike - Multiple except tag values
Given the node map
| s | j | a |
| | | b |
| | | c |
| | | d |
| | | e |
| | | f |
"""
s j a
b
c
d
e
f
"""
And the ways
| nodes | oneway | foot |
+4 -2
View File
@@ -14,8 +14,10 @@ Feature: Bike - Stop areas for public transport
Scenario: Bike - railway platforms
Given the node map
| a | b | c | d |
| | s | t | |
"""
a b c d
s t
"""
And the nodes
| node | public_transport |
+24 -23
View File
@@ -7,42 +7,43 @@ Feature: Bike - Surfaces
Scenario: Bicycle - Slow surfaces
Then routability should be
| highway | surface | bothw |
| cycleway | | 48s |
| cycleway | asphalt | 48s |
| cycleway | cobblestone:flattened | 72s |
| cycleway | paving_stones | 72s |
| cycleway | compacted | 72s |
| cycleway | cobblestone | 120s |
| cycleway | unpaved | 120s |
| cycleway | fine_gravel | 120s |
| cycleway | gravel | 120s |
| cycleway | pebblestone | 120s |
| cycleway | dirt | 120s |
| cycleway | earth | 120s |
| cycleway | grass | 120s |
| cycleway | mud | 240s |
| cycleway | sand | 240s |
| cycleway | | 48 s |
| cycleway | asphalt | 48 s |
| cycleway | cobblestone:flattened | 72 s |
| cycleway | paving_stones | 72 s |
| cycleway | compacted | 72 s |
| cycleway | cobblestone | 120 s |
| cycleway | fine_gravel | 120 s |
| cycleway | gravel | 120 s |
| cycleway | pebblestone | 120 s |
| cycleway | dirt | 120 s |
| cycleway | earth | 120 s |
| cycleway | grass | 120 s |
| cycleway | mud | 240 s |
| cycleway | sand | 240 s |
Scenario: Bicycle - Good surfaces on small paths
Then routability should be
| highway | surface | bothw |
| cycleway | | 48s |
| path | | 60s |
| track | | 60s |
| track | asphalt | 48s |
| path | asphalt | 48s |
| cycleway | | 48 s |
| path | | 60 s |
| track | | 60 s |
| track | asphalt | 60 s |
| path | asphalt | 60 s |
Scenario: Bicycle - Surfaces should not make unknown ways routable
Then routability should be
| highway | surface | bothw |
| cycleway | | 48s |
| cycleway | | 48 s |
| nosense | | |
| nosense | asphalt | |
Scenario: Bicycle - Surfaces should not increase speed when pushing bikes
Given the node map
| a | b |
| c | d |
"""
a b
c d
"""
And the ways
| nodes | highway | oneway | surface |
+5 -3
View File
@@ -7,9 +7,11 @@ Feature: Turn Penalties
Scenario: Bike - turns should incur a delay that depend on the angle
Given the node map
| c | d | e |
| b | j | f |
| a | s | g |
"""
c d e
b j f
a s g
"""
And the ways
| nodes |
+2
View File
@@ -170,6 +170,8 @@ Feature: Car - Restricted access
| primary | | designated | | -1 | | x |
| primary | | | designated | yes | | |
| primary | | | designated | -1 | | |
| primary | | | designated\| | yes | x | |
| primary | | | designated\| | -1 | | x |
| primary | | | designated\|designated | yes | | |
| primary | | | designated\|designated | -1 | | |
| primary | | | designated\|yes | yes | x | |
+27 -17
View File
@@ -8,7 +8,9 @@ OSRM will use 4/5 of the projected free-flow speed.
Scenario: Car - Advisory speed overwrites maxspeed
Given the node map
| a | b | c |
"""
a b c
"""
And the ways
| nodes | highway | maxspeed | maxspeed:advisory |
@@ -17,12 +19,14 @@ OSRM will use 4/5 of the projected free-flow speed.
When I route I should get
| from | to | route | speed |
| a | b | ab,ab | 47 km/h +- 1 |
| b | c | bc,bc | 47 km/h +- 1 |
| a | b | ab,ab | 36 km/h +- 1 |
| b | c | bc,bc | 36 km/h +- 1 |
Scenario: Car - Advisory speed overwrites forward maxspeed
Given the node map
| a | b | c |
"""
a b c
"""
And the ways
| nodes | highway | maxspeed:forward | maxspeed:advisory:forward |
@@ -31,12 +35,14 @@ OSRM will use 4/5 of the projected free-flow speed.
When I route I should get
| from | to | route | speed |
| a | b | ab,ab | 47 km/h +- 1 |
| b | c | bc,bc | 47 km/h +- 1 |
| a | b | ab,ab | 36 km/h +- 1 |
| b | c | bc,bc | 36 km/h +- 1 |
Scenario: Car - Advisory speed overwrites backwards maxspeed
Given the node map
| a | b | c |
"""
a b c
"""
And the ways
| nodes | highway | maxspeed:backward | maxspeed:advisory:backward |
@@ -45,12 +51,14 @@ OSRM will use 4/5 of the projected free-flow speed.
When I route I should get
| from | to | route | speed |
| b | a | ab,ab | 47 km/h +- 1 |
| c | b | bc,bc | 47 km/h +- 1 |
| b | a | ab,ab | 36 km/h +- 1 |
| c | b | bc,bc | 36 km/h +- 1 |
Scenario: Car - Advisory speed overwrites backwards maxspeed
Given the node map
| a | b | c | d |
"""
a b c d
"""
And the ways
| nodes | highway | maxspeed:backward | maxspeed:advisory:backward |
@@ -60,12 +68,14 @@ OSRM will use 4/5 of the projected free-flow speed.
When I route I should get
| from | to | route | speed |
| c | b | bc,bc | 47 km/h +- 1 |
| d | c | cd,cd | 47 km/h +- 1 |
| c | b | bc,bc | 36 km/h +- 1 |
| d | c | cd,cd | 36 km/h +- 1 |
Scenario: Car - Directional advisory speeds play nice with eachother
Given the node map
| a | b | c |
"""
a b c
"""
And the ways
| nodes | highway | maxspeed:advisory | maxspeed:advisory:forward | maxspeed:advisory:backward |
@@ -74,9 +84,9 @@ OSRM will use 4/5 of the projected free-flow speed.
When I route I should get
| from | to | route | speed |
| a | b | ab,ab | 47 km/h +- 1 |
| b | a | ab,ab | 59 km/h +- 1 |
| b | c | bc,bc | 59 km/h +- 1 |
| c | b | bc,bc | 47 km/h +- 1 |
| a | b | ab,ab | 36 km/h +- 1 |
| b | a | ab,ab | 48 km/h +- 1 |
| b | c | bc,bc | 48 km/h +- 1 |
| c | b | bc,bc | 36 km/h +- 1 |
+18 -14
View File
@@ -6,9 +6,11 @@ Feature: Car - Handle driving
Scenario: Car - Use a ferry route
Given the node map
| a | b | c | | |
| | | d | | |
| | | e | f | g |
"""
a b c
d
e f g
"""
And the ways
| nodes | highway | bridge | bicycle |
@@ -17,21 +19,23 @@ Feature: Car - Handle driving
| efg | primary | | |
When I route I should get
| from | to | route | modes |
| from | to | route | modes |
| a | g | abc,cde,efg,efg | driving,driving,driving,driving |
| b | f | abc,cde,efg,efg | driving,driving,driving,driving |
| e | c | cde,cde | driving,driving |
| e | c | cde,cde | driving,driving |
| e | b | cde,abc,abc | driving,driving,driving |
| e | a | cde,abc,abc | driving,driving,driving |
| c | e | cde,cde | driving,driving |
| c | e | cde,cde | driving,driving |
| c | f | cde,efg,efg | driving,driving,driving |
| c | g | cde,efg,efg | driving,driving,driving |
Scenario: Car - Properly handle durations
Given the node map
| a | b | c | | |
| | | d | | |
| | | e | f | g |
"""
a b c
d
e f g
"""
And the ways
| nodes | highway | bridge | duration |
@@ -40,8 +44,8 @@ Feature: Car - Handle driving
| efg | primary | | |
When I route I should get
| from | to | route | modes | speed |
| a | g | abc,cde,efg,efg | driving,driving,driving,driving | 7 km/h |
| b | f | abc,cde,efg,efg | driving,driving,driving,driving | 5 km/h |
| c | e | cde,cde | driving,driving | 2 km/h |
| e | c | cde,cde | driving,driving | 2 km/h |
| from | to | route | modes | speed |
| a | g | abc,cde,efg,efg | driving,driving,driving,driving | 6 km/h |
| b | f | abc,cde,efg,efg | driving,driving,driving,driving | 4 km/h |
| c | e | cde,cde | driving,driving | 2 km/h |
| e | c | cde,cde | driving,driving | 2 km/h |
+17 -11
View File
@@ -6,10 +6,12 @@ Feature: Car - Destination only, no passing through
Scenario: Car - Destination only street
Given the node map
| a | | | | e |
| | b | c | d | |
| | | | | |
| x | | | | y |
"""
a e
b c d
x y
"""
And the ways
| nodes | access |
@@ -31,10 +33,12 @@ Feature: Car - Destination only, no passing through
Scenario: Car - Destination only street
Given the node map
| a | | | | e |
| | b | c | d | |
| | | | | |
| x | | | | y |
"""
a e
b c d
x y
"""
And the ways
| nodes | access |
@@ -57,9 +61,11 @@ Feature: Car - Destination only, no passing through
Scenario: Car - Routing inside a destination only area
Given the node map
| a | | c | | e |
| | b | | d | |
| x | | | | y |
"""
a c e
b d
x y
"""
And the ways
| nodes | access |
+17 -11
View File
@@ -6,9 +6,11 @@ Feature: Car - Handle ferry routes
Scenario: Car - Use a ferry route
Given the node map
| a | b | c | | |
| | | d | | |
| | | e | f | g |
"""
a b c
d
e f g
"""
And the ways
| nodes | highway | route | bicycle |
@@ -29,9 +31,11 @@ Feature: Car - Handle ferry routes
Scenario: Car - Properly handle simple durations
Given the node map
| a | b | c | | |
| | | d | | |
| | | e | f | g |
"""
a b c
d
e f g
"""
And the ways
| nodes | highway | route | duration |
@@ -41,16 +45,18 @@ Feature: Car - Handle ferry routes
When I route I should get
| from | to | route | modes | speed |
| a | g | abc,cde,efg,efg | driving,ferry,driving,driving | 24 km/h |
| a | g | abc,cde,efg,efg | driving,ferry,driving,driving | 23 km/h |
| b | f | abc,cde,efg,efg | driving,ferry,driving,driving | 18 km/h |
| c | e | cde,cde | ferry,ferry | 11 km/h |
| e | c | cde,cde | ferry,ferry | 11 km/h |
Scenario: Car - Properly handle ISO 8601 durations
Given the node map
| a | b | c | | |
| | | d | | |
| | | e | f | g |
"""
a b c
d
e f g
"""
And the ways
| nodes | highway | route | duration |
@@ -60,7 +66,7 @@ Feature: Car - Handle ferry routes
When I route I should get
| from | to | route | modes | speed |
| a | g | abc,cde,efg,efg | driving,ferry,driving,driving | 24 km/h |
| a | g | abc,cde,efg,efg | driving,ferry,driving,driving | 23 km/h |
| b | f | abc,cde,efg,efg | driving,ferry,driving,driving | 18 km/h |
| c | e | cde,cde | ferry,ferry | 11 km/h |
| e | c | cde,cde | ferry,ferry | 11 km/h |
+20 -10
View File
@@ -9,8 +9,10 @@ Feature: Car - Speed on links
Scenario: Car - Use motorway_link when reasonable
Given the node map
| | | e | | | | f | | |
| x | a | b | | | | c | d | y |
"""
e f
x a b c d y
"""
And the ways
| nodes | highway |
@@ -30,8 +32,10 @@ Feature: Car - Speed on links
Scenario: Car - Use trunk_link when reasonable
Given the node map
| | | e | | | | f | | |
| x | a | b | | | | c | d | y |
"""
e f
x a b c d y
"""
And the ways
| nodes | highway |
@@ -50,8 +54,10 @@ Feature: Car - Speed on links
Scenario: Car - Use primary_link when reasonable
Given the node map
| | | e | | | | f | | |
| x | a | b | | | | c | d | y |
"""
e f
x a b c d y
"""
And the ways
| nodes | highway |
@@ -70,8 +76,10 @@ Feature: Car - Speed on links
Scenario: Car - Use secondary_link when reasonable
Given the node map
| | | e | | | | f | | |
| x | a | b | | | | c | d | y |
"""
e f
x a b c d y
"""
And the ways
| nodes | highway |
@@ -91,8 +99,10 @@ Feature: Car - Speed on links
Scenario: Car - Use tertiary_link when reasonable
Given the node map
| | | e | | | | f | | |
| x | a | b | | | | c | d | y |
"""
e f
x a b c d y
"""
And the ways
| nodes | highway |
+53 -49
View File
@@ -8,7 +8,9 @@ OSRM will use 4/5 of the projected free-flow speed.
Scenario: Car - Respect maxspeeds when lower that way type speed
Given the node map
| a | b | c | d | e | f | g |
"""
a b c d e f g
"""
And the ways
| nodes | highway | maxspeed |
@@ -20,17 +22,19 @@ OSRM will use 4/5 of the projected free-flow speed.
| fg | trunk | CH:motorway |
When I route I should get
| from | to | route | speed |
| a | b | ab,ab | 79 km/h |
| b | c | bc,bc | 59 km/h +- 1 |
| c | d | cd,cd | 51 km/h |
| d | e | de,de | 75 km/h |
| e | f | ef,ef | 91 km/h |
| f | g | fg,fg | 107 km/h |
| from | to | route | speed |
| a | b | ab,ab | 68 km/h |
| b | c | bc,bc | 48 km/h |
| c | d | cd,cd | 40 km/h |
| d | e | de,de | 64 km/h |
| e | f | ef,ef | 80 km/h |
| f | g | fg,fg | 96 km/h |
Scenario: Car - Do not ignore maxspeed when higher than way speed
Given the node map
| a | b | c | d |
"""
a b c d
"""
And the ways
| nodes | highway | maxspeed |
@@ -39,23 +43,23 @@ OSRM will use 4/5 of the projected free-flow speed.
| cd | living_street | FR:urban |
When I route I should get
| from | to | route | speed |
| a | b | ab,ab | 31 km/h |
| b | c | bc,bc | 83 km/h +- 1 |
| c | d | cd,cd | 51 km/h |
| from | to | route | speed |
| a | b | ab,ab | 20 km/h |
| b | c | bc,bc | 72 km/h |
| c | d | cd,cd | 40 km/h |
Scenario: Car - Forward/backward maxspeed
Given a grid size of 100 meters
Then routability should be
| highway | maxspeed | maxspeed:forward | maxspeed:backward | forw | backw |
| primary | | | | 65 km/h | 65 km/h |
| primary | 60 | | | 60 km/h | 60 km/h |
| primary | | 60 | | 60 km/h | 65 km/h |
| primary | | | 60 | 65 km/h | 60 km/h |
| primary | 15 | 60 | | 60 km/h | 23 km/h |
| primary | 15 | | 60 | 23 km/h | 60 km/h |
| primary | 15 | 30 | 60 | 34 km/h | 60 km/h |
| primary | | | | 52 km/h | 52 km/h |
| primary | 60 | | | 48 km/h | 48 km/h |
| primary | | 60 | | 48 km/h | 48 km/h +- 5 |
| primary | | | 60 | 52 km/h | 52 km/h +- 5 |
| primary | 15 | 60 | | 48 km/h | 12 km/h |
| primary | 15 | | 60 | 12 km/h | 48 km/h |
| primary | 15 | 30 | 60 | 24 km/h | 48 km/h |
Scenario: Car - Maxspeed should not allow routing on unroutable ways
Then routability should be
@@ -78,44 +82,44 @@ OSRM will use 4/5 of the projected free-flow speed.
Then routability should be
| highway | maxspeed | width | maxspeed:forward | maxspeed:backward | forw | backw |
| primary | | | | | 63 km/h | 63 km/h |
| primary | | | | | 52 km/h | 52 km/h |
| primary | | 3 | | | 32 km/h | 32 km/h |
| primary | 60 | | | | 59 km/h | 59 km/h |
| primary | 60 | 3 | | | 30 km/h | 30 km/h |
| primary | | | 60 | | 59 km/h | 63 km/h |
| primary | | 3 | 60 | | 30 km/h | 32 km/h |
| primary | | | | 60 | 63 km/h | 59 km/h |
| primary | | 3 | | 60 | 32 km/h | 30 km/h |
| primary | 15 | | 60 | | 59 km/h | 23 km/h |
| primary | 15 | 3 | 60 | | 30 km/h | 7 km/h |
| primary | 15 | | | 60 | 23 km/h | 59 km/h |
| primary | 15 | 3 | | 60 | 7 km/h | 30 km/h |
| primary | 15 | | 30 | 60 | 34 km/h | 59 km/h |
| primary | 15 | 3 | 30 | 60 | 15 km/h | 30 km/h |
| primary | 60 | | | | 47 km/h | 47 km/h |
| primary | 60 | 3 | | | 29 km/h | 29 km/h |
| primary | | | 60 | | 47 km/h | 52 km/h |
| primary | | 3 | 60 | | 29 km/h | 32 km/h |
| primary | | | | 60 | 52 km/h | 47 km/h |
| primary | | 3 | | 60 | 32 km/h | 29 km/h |
| primary | 15 | | 60 | | 47 km/h | 12 km/h |
| primary | 15 | 3 | 60 | | 29 km/h | 7 km/h |
| primary | 15 | | | 60 | 12 km/h | 47 km/h |
| primary | 15 | 3 | | 60 | 7 km/h | 29 km/h |
| primary | 15 | | 30 | 60 | 23 km/h | 47 km/h |
| primary | 15 | 3 | 30 | 60 | 14 km/h | 29 km/h |
Scenario: Car - Single lane streets be ignored or incur a penalty
Then routability should be
| highway | maxspeed | lanes | maxspeed:forward | maxspeed:backward | forw | backw |
| primary | | | | | 63 km/h | 63 km/h |
| primary | | | | | 52 km/h | 52 km/h |
| primary | | 1 | | | 32 km/h | 32 km/h |
| primary | 60 | | | | 59 km/h | 59 km/h |
| primary | 60 | 1 | | | 30 km/h | 30 km/h |
| primary | | | 60 | | 59 km/h | 63 km/h |
| primary | | 1 | 60 | | 30 km/h | 32 km/h |
| primary | | | | 60 | 63 km/h | 59 km/h |
| primary | | 1 | | 60 | 32 km/h | 30 km/h |
| primary | 15 | | 60 | | 59 km/h | 23 km/h |
| primary | 15 | 1 | 60 | | 30 km/h | 7 km/h |
| primary | 15 | | | 60 | 23 km/h | 59 km/h |
| primary | 15 | 1 | | 60 | 7 km/h | 30 km/h |
| primary | 15 | | 30 | 60 | 34 km/h | 59 km/h |
| primary | 15 | 1 | 30 | 60 | 15 km/h | 30 km/h |
| primary | 60 | | | | 47 km/h | 47 km/h |
| primary | 60 | 1 | | | 29 km/h | 29 km/h |
| primary | | | 60 | | 47 km/h | 52 km/h |
| primary | | 1 | 60 | | 29 km/h | 32 km/h |
| primary | | | | 60 | 52 km/h | 47 km/h |
| primary | | 1 | | 60 | 32 km/h | 29 km/h |
| primary | 15 | | 60 | | 47 km/h | 12 km/h |
| primary | 15 | 1 | 60 | | 29 km/h | 7 km/h |
| primary | 15 | | | 60 | 12 km/h | 47 km/h |
| primary | 15 | 1 | | 60 | 7 km/h | 29 km/h |
| primary | 15 | | 30 | 60 | 23 km/h | 47 km/h |
| primary | 15 | 1 | 30 | 60 | 14 km/h | 29 km/h |
Scenario: Car - Single lane streets only incure a penalty for two-way streets
Then routability should be
| highway | maxspeed | lanes | oneway | forw | backw |
| primary | 30 | 1 | yes | 34 km/h | |
| primary | 30 | 1 | -1 | | 34 km/h |
| primary | 30 | 1 | yes | 23 km/h | |
| primary | 30 | 1 | -1 | | 23 km/h |
| primary | 30 | 1 | | 15 km/h | 15 km/h |
| primary | 30 | 2 | | 34 km/h | 34 km/h |
| primary | 30 | 2 | | 23 km/h | 23 km/h |
+7 -3
View File
@@ -5,8 +5,10 @@ Feature: Car - Mode flag
Scenario: Car - Mode when using a ferry
Given the node map
| a | b | |
| | c | d |
"""
a b
c d
"""
And the ways
| nodes | highway | route | duration |
@@ -25,7 +27,9 @@ Feature: Car - Mode flag
Scenario: Car - Snapping when using a ferry
Given the node map
| a | b | | c | d | | e | f |
"""
a b c d e f
"""
And the ways
| nodes | highway | route | duration |
+33 -22
View File
@@ -3,11 +3,14 @@ Feature: Car - Street names in instructions
Background:
Given the profile "car"
Given a grid size of 5 meters
Scenario: Car - A named street
Given the node map
| a | b |
| | c |
"""
a b
c
"""
And the ways
| nodes | name | ref |
@@ -20,9 +23,11 @@ Feature: Car - Street names in instructions
Scenario: Car - A named street with pronunciation
Given the node map
| a | b | d |
| | 1 | |
| | c | |
"""
a b d
1
c
"""
And the ways
| nodes | name |name:pronunciation | ref |
@@ -31,16 +36,18 @@ Feature: Car - Street names in instructions
| cd | Your Way | yourewaye | |
When I route I should get
| from | to | route | pronunciations | ref |
| a | d | My Way,My Way | ,meyeway | ,A1 |
| 1 | c | Your Way,Your Way | yourewaye,yourewaye | , |
| from | to | route | pronunciations | ref |
| a | d | My Way,My Way,My Way | ,meyeway,meyeway | ,A1,A1 |
| 1 | c | Your Way,Your Way | yourewaye,yourewaye | , |
# See #2860
Scenario: Car - same street name but different pronunciation
Given the node map
| a | b | c |
| | d | |
| | e | |
"""
a b c
d
e
"""
And the ways
| nodes | name | name:pronunciation |
@@ -55,7 +62,9 @@ Feature: Car - Street names in instructions
@todo
Scenario: Car - Use way type to describe unnamed ways
Given the node map
| a | b | c | d |
"""
a b c d
"""
And the ways
| nodes | highway | name |
@@ -68,16 +77,18 @@ Feature: Car - Street names in instructions
Scenario: Inner city expressway with on road
Given the node map
| a | b | | | | c | g |
| | | | | f | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | d | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | e | |
"""
a b c g
f
d
e
"""
And the ways
| nodes | highway | name | name:pronunciation |
+16 -3
View File
@@ -35,8 +35,10 @@ Feature: Car - Oneway streets
Scenario: Car - Around the Block
Given the node map
| | a | b | |
| f | d | c | e |
"""
a b
f d c e
"""
And the ways
| nodes | oneway |
@@ -70,7 +72,9 @@ Feature: Car - Oneway streets
Scenario: Car - Two consecutive oneways
Given the node map
| a | b | | c |
"""
a b c
"""
And the ways
| nodes | oneway |
@@ -81,3 +85,12 @@ Feature: Car - Oneway streets
When I route I should get
| from | to | route |
| a | c | ab,bc,bc |
# Reversible oneways (low frequency) vs alternating oneways (high frequency).
# See: https://github.com/Project-OSRM/osrm-backend/issues/2837
Scenario: Car - Route over alternating but not reversible oneways
Then routability should be
| highway | oneway | forw | backw |
| primary | reversible | | |
| primary | alternating | x | x |
+99 -63
View File
@@ -10,9 +10,11 @@ Feature: Car - Turn restrictions
@no_turning
Scenario: Car - No left turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -34,9 +36,11 @@ Feature: Car - Turn restrictions
@no_turning
Scenario: Car - No straight on
Given the node map
| a | b | j | d | e |
| v | | | | z |
| | w | x | y | |
"""
a b j d e
v z
w x y
"""
And the ways
| nodes | oneway |
@@ -62,9 +66,11 @@ Feature: Car - Turn restrictions
@no_turning
Scenario: Car - No right turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -86,9 +92,11 @@ Feature: Car - Turn restrictions
@no_turning
Scenario: Car - No u-turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -110,9 +118,11 @@ Feature: Car - Turn restrictions
@no_turning
Scenario: Car - Handle any no_* relation
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -134,9 +144,11 @@ Feature: Car - Turn restrictions
@only_turning
Scenario: Car - Only left turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -151,9 +163,11 @@ Feature: Car - Turn restrictions
Scenario: Car - Only right turn, invalid
Given the node map
| | n | | |
| w | j | e | r |
| | s | | |
"""
n
w j e r
s
"""
And the ways
| nodes | oneway |
@@ -174,9 +188,11 @@ Feature: Car - Turn restrictions
@only_turning
Scenario: Car - Only right turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -198,9 +214,11 @@ Feature: Car - Turn restrictions
@only_turning
Scenario: Car - Only straight on
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -222,9 +240,11 @@ Feature: Car - Turn restrictions
@no_turning
Scenario: Car - Handle any only_* restriction
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -246,9 +266,11 @@ Feature: Car - Turn restrictions
@specific
Scenario: Car - :hgv-qualified on a standard turn restriction
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -270,9 +292,11 @@ Feature: Car - Turn restrictions
@specific
Scenario: Car - :motorcar-qualified on a standard turn restriction
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -294,9 +318,11 @@ Feature: Car - Turn restrictions
@except
Scenario: Car - Except tag and on no_ restrictions
Given the node map
| b | x | c |
| a | j | d |
| | s | |
"""
b x c
a j d
s
"""
And the ways
| nodes | oneway |
@@ -324,9 +350,11 @@ Feature: Car - Turn restrictions
@except
Scenario: Car - Except tag and on only_ restrictions
Given the node map
| a | | b |
| | j | |
| | s | |
"""
a b
j
s
"""
And the ways
| nodes | oneway |
@@ -346,10 +374,12 @@ Feature: Car - Turn restrictions
@except
Scenario: Car - Several only_ restrictions at the same segment
Given the node map
| | | | | y | | | | |
| i | j | f | b | x | a | e | g | h |
| | | | | | | | | |
| | | | c | | d | | | |
"""
y
i j f b x a e g h
c d
"""
And the ways
| nodes | oneway |
@@ -381,13 +411,15 @@ Feature: Car - Turn restrictions
@except
Scenario: Car - two only_ restrictions share same to-way
Given the node map
| | | e | | | | f | | |
| | | | | a | | | | |
| | | | | | | | | |
| | | c | | x | | d | | |
| | | | | y | | | | |
| | | | | | | | | |
| | | | | b | | | | |
"""
e f
a
c x d
y
b
"""
And the ways
| nodes | oneway |
@@ -415,13 +447,15 @@ Feature: Car - Turn restrictions
@except
Scenario: Car - two only_ restrictions share same from-way
Given the node map
| | | e | | | | f | | |
| | | | | a | | | | |
| | | | | | | | | |
| | | c | | x | | d | | |
| | | | | y | | | | |
| | | | | | | | | |
| | | | | b | | | | |
"""
e f
a
c x d
y
b
"""
And the ways
| nodes | oneway |
@@ -449,9 +483,11 @@ Feature: Car - Turn restrictions
@specific
Scenario: Car - Ignore unrecognized restriction
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
+3 -2
View File
@@ -9,5 +9,6 @@ Feature: Car - Surfaces
| highway | service | forw | backw |
| service | alley | 5 km/h +-1 | 5 km/h +-1 |
| service | emergency_access | | |
| service | driveway | 15 km/h +-1| 15 km/h +-1 |
| service | driveway | 5 km/h +-1 | 5 km/h +-1 |
| service | drive-through | 5 km/h +-1 | 5 km/h +-1 |
| service | parking | 5 km/h +-1 | 5 km/h +-1 |
+5 -3
View File
@@ -6,9 +6,11 @@ Feature: Car - Handle ferryshuttle train routes
Scenario: Car - Use a ferry route
Given the node map
| a | b | c | | | |
| | | d | | | |
| | | e | f | g | h |
"""
a b c
d
e f g h
"""
And the ways
| nodes | highway | route | bicycle |
+28 -15
View File
@@ -7,18 +7,31 @@ Feature: Car - speeds
Scenario: Car - speed of various way types
Then routability should be
| highway | oneway | bothw |
| motorway | no | 82 km/h |
| motorway_link | no | 47 km/h |
| trunk | no | 79 km/h +- 1 |
| trunk_link | no | 43 km/h +- 1 |
| primary | no | 63 km/h +- 1 |
| primary_link | no | 34 km/h |
| secondary | no | 54 km/h +- 1 |
| secondary_link | no | 31 km/h |
| tertiary | no | 43 km/h |
| tertiary_link | no | 26 km/h |
| unclassified | no | 31 km/h |
| residential | no | 31 km/h |
| living_street | no | 18 km/h |
| service | no | 23 km/h |
| highway | oneway | bothw |
| motorway | no | 71 km/h |
| motorway_link | no | 36 km/h |
| trunk | no | 68 km/h |
| trunk_link | no | 31 km/h |
| primary | no | 52 km/h |
| primary_link | no | 23 km/h |
| secondary | no | 44 km/h |
| secondary_link | no | 19 km/h |
| tertiary | no | 31 km/h |
| tertiary_link | no | 16 km/h |
| unclassified | no | 19 km/h |
| residential | no | 19 km/h |
| living_street | no | 8 km/h |
| service | no | 11 km/h |
# Alternating oneways have to take average waiting time into account.
Scenario: Car - scaled speeds for oneway=alternating
Then routability should be
| highway | oneway | junction | forw | backw | # |
| tertiary | | | 31 km/h | 31 km/h | |
| tertiary | alternating | | 12 km/h +- 1 | 12 km/h +- 1 | |
| motorway | | | 71 km/h | | implied oneway |
| motorway | alternating | | 28 km/h +- 1 | | implied oneway |
| motorway | reversible | | | | unroutable |
| primary | | roundabout | 52 km/h | | implied oneway |
| primary | alternating | roundabout | 20 km/h +- 1 | | implied oneway |
| primary | reversible | roundabout | | | unroutable |
+22 -10
View File
@@ -8,11 +8,13 @@ Feature: Basic Routing
@smallest
Scenario: Summaries when routing on a simple network
Given the node map
| b | | | f |
| | | | |
| c | d | | g |
| | | | |
| a | | e | |
"""
b f
c d g
a e
"""
And the ways
| nodes | name |
@@ -30,7 +32,9 @@ Feature: Basic Routing
Scenario: Name Empty
Given the node map
| a | | b | | | c |
"""
a b c
"""
And the ways
| nodes | name |
@@ -43,7 +47,9 @@ Feature: Basic Routing
Scenario: Name Empty But Ref
Given the node map
| a | | b | | | c |
"""
a b c
"""
And the ways
| nodes | name | ref |
@@ -56,7 +62,9 @@ Feature: Basic Routing
Scenario: Only Refs
Given the node map
| a | | b | | | c |
"""
a b c
"""
And the ways
| nodes | name | ref |
@@ -69,7 +77,9 @@ Feature: Basic Routing
Scenario: Single Ref
Given the node map
| a | | b | | | c |
"""
a b c
"""
And the ways
| nodes | name | ref |
@@ -82,7 +92,9 @@ Feature: Basic Routing
Scenario: Nothing
Given the node map
| a | | b | | | c |
"""
a b c
"""
And the ways
| nodes | name |
+49 -50
View File
@@ -4,7 +4,7 @@ Feature: Car - Surfaces
Background:
Given the profile "car"
Scenario: Car - Routeability of tracktype tags
Scenario: Car - Routability of tracktype tags
Then routability should be
| highway | tracktype | bothw |
| trunk | grade1 | x |
@@ -26,8 +26,8 @@ Feature: Car - Surfaces
| trunk | very_horrible | x |
| trunk | impassable | |
| trunk | nonsense | x |
Scenario: Car - Routabiliy of surface tags
Scenario: Car - Routability of surface tags
Then routability should be
| highway | surface | bothw |
| trunk | asphalt | x |
@@ -64,64 +64,64 @@ Feature: Car - Surfaces
Scenario: Car - Surface should reduce speed
Then routability should be
| highway | oneway | surface | forw | backw |
| motorway | no | | 80 km/h +-1 | 80 km/h +-1 |
| motorway | no | asphalt | 80 km/h +-1 | 80 km/h +-1 |
| motorway | no | concrete | 80 km/h +-1 | 80 km/h +-1 |
| motorway | no | concrete:plates | 80 km/h +-1 | 80 km/h +-1 |
| motorway | no | concrete:lanes | 80 km/h +-1 | 80 km/h +-1 |
| motorway | no | paved | 80 km/h +-1 | 80 km/h +-1 |
| motorway | no | cement | 72 km/h +-1 | 72 km/h +-1 |
| motorway | no | compacted | 72 km/h +-1 | 72 km/h +-1 |
| motorway | no | fine_gravel | 72 km/h +-1 | 72 km/h +-1 |
| motorway | no | paving_stones | 60 km/h +-1 | 60 km/h +-1 |
| motorway | no | metal | 60 km/h +-1 | 60 km/h +-1 |
| motorway | no | bricks | 60 km/h +-1 | 60 km/h +-1 |
| motorway | no | grass | 42 km/h +-1 | 42 km/h +-1 |
| motorway | no | wood | 42 km/h +-1 | 42 km/h +-1 |
| motorway | no | sett | 42 km/h +-1 | 42 km/h +-1 |
| motorway | no | grass_paver | 42 km/h +-1 | 42 km/h +-1 |
| motorway | no | gravel | 42 km/h +-1 | 42 km/h +-1 |
| motorway | no | unpaved | 42 km/h +-1 | 42 km/h +-1 |
| motorway | no | ground | 42 km/h +-1 | 42 km/h +-1 |
| motorway | no | dirt | 42 km/h +-1 | 42 km/h +-1 |
| motorway | no | pebblestone | 42 km/h +-1 | 42 km/h +-1 |
| motorway | no | tartan | 42 km/h +-1 | 42 km/h +-1 |
| motorway | no | cobblestone | 34 km/h +-1 | 34 km/h +-1 |
| motorway | no | clay | 34 km/h +-1 | 34 km/h +-1 |
| motorway | no | earth | 26 km/h +-1 | 26 km/h +-1 |
| motorway | no | stone | 26 km/h +-1 | 26 km/h +-1 |
| motorway | no | rocky | 26 km/h +-1 | 26 km/h +-1 |
| motorway | no | sand | 26 km/h +-1 | 26 km/h +-1 |
| motorway | no | | 72 km/h | 72 km/h |
| motorway | no | asphalt | 72 km/h | 72 km/h +-1 |
| motorway | no | concrete | 72 km/h +-1 | 72 km/h +-1 |
| motorway | no | concrete:plates | 72 km/h +-1 | 72 km/h +-1 |
| motorway | no | concrete:lanes | 72 km/h +-1 | 72 km/h +-1 |
| motorway | no | paved | 72 km/h +-1 | 72 km/h +-1 |
| motorway | no | cement | 64 km/h +-1 | 64 km/h +-1 |
| motorway | no | compacted | 64 km/h +-1 | 64 km/h +-1 |
| motorway | no | fine_gravel | 64 km/h +-1 | 64 km/h +-1 |
| motorway | no | paving_stones | 48 km/h +-1 | 48 km/h +-1 |
| motorway | no | metal | 48 km/h +-1 | 48 km/h +-1 |
| motorway | no | bricks | 48 km/h +-1 | 48 km/h +-1 |
| motorway | no | grass | 32 km/h +-1 | 32 km/h +-1 |
| motorway | no | wood | 32 km/h +-1 | 32 km/h +-1 |
| motorway | no | sett | 32 km/h +-1 | 32 km/h +-1 |
| motorway | no | grass_paver | 32 km/h +-1 | 32 km/h +-1 |
| motorway | no | gravel | 32 km/h +-1 | 32 km/h +-1 |
| motorway | no | unpaved | 32 km/h +-1 | 32 km/h +-1 |
| motorway | no | ground | 32 km/h +-1 | 32 km/h +-1 |
| motorway | no | dirt | 32 km/h +-1 | 32 km/h +-1 |
| motorway | no | pebblestone | 32 km/h +-1 | 32 km/h +-1 |
| motorway | no | tartan | 32 km/h +-1 | 32 km/h +-1 |
| motorway | no | cobblestone | 24 km/h +-1 | 24 km/h +-1 |
| motorway | no | clay | 24 km/h +-1 | 24 km/h +-1 |
| motorway | no | earth | 16 km/h +-1 | 16 km/h +-1 |
| motorway | no | stone | 16 km/h +-1 | 16 km/h +-1 |
| motorway | no | rocky | 16 km/h +-1 | 16 km/h +-1 |
| motorway | no | sand | 16 km/h +-1 | 16 km/h +-1 |
Scenario: Car - Tracktypes should reduce speed
Then routability should be
| highway | oneway | tracktype | forw | backw |
| motorway | no | | 80 km/h +-1 | 80 km/h +-1 |
| motorway | no | grade1 | 60 km/h +-1 | 60 km/h +-1 |
| motorway | no | grade2 | 42 km/h +-1 | 42 km/h +-1 |
| motorway | no | grade3 | 34 km/h +-1 | 34 km/h +-1 |
| motorway | no | grade4 | 31 km/h +-1 | 31 km/h +-1 |
| motorway | no | grade5 | 26 km/h +-1 | 26 km/h +-1 |
| motorway | no | | 72 km/h | 72 km/h |
| motorway | no | grade1 | 48 km/h +-1 | 48 km/h +-1 |
| motorway | no | grade2 | 32 km/h +-1 | 32 km/h +-1 |
| motorway | no | grade3 | 24 km/h +-1 | 24 km/h +-1 |
| motorway | no | grade4 | 20 km/h +-1 | 20 km/h +-1 |
| motorway | no | grade5 | 16 km/h +-1 | 16 km/h +-1 |
Scenario: Car - Smoothness should reduce speed
Then routability should be
| highway | oneway | smoothness | forw | backw |
| motorway | no | | 80 km/h +-1 | 80 km/h +-1 |
| motorway | no | intermediate | 72 km/h +-1 | 72 km/h +-1 |
| motorway | no | bad | 42 km/h +-1 | 42 km/h +-1 |
| motorway | no | very_bad | 26 km/h +-1 | 26 km/h +-1 |
| motorway | no | horrible | 18 km/h +-1 | 18 km/h +-1 |
| motorway | no | very_horrible | 15 km/h +-1 | 15 km/h +-1 |
| motorway | no | | 72 km/h | 72 km/h |
| motorway | no | intermediate | 64 km/h | 64 km/h |
| motorway | no | bad | 32 km/h +-1 | 32 km/h +-1 |
| motorway | no | very_bad | 16 km/h +-1 | 16 km/h +-1 |
| motorway | no | horrible | 8 km/h +-1 | 8 km/h +-1 |
| motorway | no | very_horrible | 4 km/h +-1 | 4 km/h +-1 |
Scenario: Car - Combination of surface tags should use lowest speed
Then routability should be
| highway | oneway | tracktype | surface | smoothness | backw | forw |
| motorway | no | | | | 80 km/h | 80 km/h |
| service | no | grade1 | asphalt | excellent | 23 km/h | 23 km/h |
| motorway | no | grade5 | asphalt | excellent | 26 km/h | 26 km/h |
| motorway | no | grade1 | mud | excellent | 18 km/h | 18 km/h |
| motorway | no | grade1 | asphalt | very_horrible | 15 km/h | 15 km/h |
| service | no | grade5 | mud | very_horrible | 15 km/h | 15 km/h |
| motorway | no | | | | 72 km/h | 72 km/h |
| service | no | grade1 | asphalt | excellent | 12 km/h | 12 km/h |
| motorway | no | grade5 | asphalt | excellent | 16 km/h | 16 km/h |
| motorway | no | grade1 | mud | excellent | 8 km/h | 8 km/h |
| motorway | no | grade1 | asphalt | very_horrible | 4 km/h | 4 km/h |
| service | no | grade5 | mud | very_horrible | 4 km/h | 4 km/h |
Scenario: Car - Surfaces should not affect oneway direction
Then routability should be
@@ -138,4 +138,3 @@ Feature: Car - Surfaces
| primary | -1 | grade1 | excellent | asphalt | | x |
| primary | -1 | grade5 | very_bad | mud | | x |
| primary | -1 | nonsense | nonsense | nonsense | | x |
+15 -15
View File
@@ -7,12 +7,12 @@ Feature: Traffic - speeds
Given the node locations
| node | lat | lon |
| a | 0.1 | 0.1 |
| b | .05 | 0.1 |
| b | 0.05 | 0.1 |
| c | 0.0 | 0.1 |
| d | .05 | .03 |
| e | .05 | .066 |
| f | .075 | .066 |
| g | .075 | 0.1 |
| d | 0.05 | 0.03 |
| e | 0.05 | 0.066 |
| f | 0.075 | 0.066 |
| g | 0.075 | 0.1 |
And the ways
| nodes | highway |
| ab | primary |
@@ -50,12 +50,12 @@ Feature: Traffic - speeds
Given the node locations
| node | lat | lon |
| a | 0.1 | 0.1 |
| b | .05 | 0.1 |
| b | 0.05 | 0.1 |
| c | 0.0 | 0.1 |
| d | .05 | .03 |
| e | .05 | .066 |
| f | .075 | .066 |
| g | .075 | 0.1 |
| d | 0.05 | 0.03 |
| e | 0.05 | 0.066 |
| f | 0.075 | 0.066 |
| g | 0.075 | 0.1 |
| h | 2.075 | 19.1 |
And the ways
| nodes | highway |
@@ -93,12 +93,12 @@ Feature: Traffic - speeds
Given the node locations
| node | lat | lon |
| a | 0.1 | 0.1 |
| b | .05 | 0.1 |
| b | 0.05 | 0.1 |
| c | 0.0 | 0.1 |
| d | .05 | .03 |
| e | .05 | .066 |
| f | .075 | .066 |
| g | .075 | 0.1 |
| d | 0.05 | 0.03 |
| e | 0.05 | 0.066 |
| f | 0.075 | 0.066 |
| g | 0.075 | 0.1 |
| h | 1.075 | 10.1 |
And the ways
| nodes | highway |
+45 -23
View File
@@ -3,11 +3,33 @@ Feature: Traffic - turn penalties
Background: Evenly spaced grid with multiple intersections
Given the node map
| | a:1 | | b:2 | |
| c:3 | d:4 | e:5 | f:6 | g:7 |
| | h:8 | | i:9 | |
| j:10 | k:11 | l:12 | m:13 | n:14 |
| | o:15 | | p:16 | |
"""
a b
c d e f g
h i
j k l m n
o p
"""
And the nodes
| node | id |
| a | 1 |
| b | 2 |
| c | 3 |
| d | 4 |
| e | 5 |
| f | 6 |
| g | 7 |
| h | 8 |
| i | 9 |
| j | 10 |
| k | 11 |
| l | 12 |
| m | 13 |
| n | 14 |
| o | 15 |
| p | 16 |
And the ways
| nodes | highway |
| ad | primary |
@@ -31,21 +53,21 @@ Feature: Traffic - turn penalties
Scenario: Weighting not based on turn penalty file
When I route I should get
| from | to | route | speed | time |
| a | h | ad,dhk,dhk | 63 km/h | 11.5s +-1 |
| a | h | ad,dhk,dhk | 52 km/h | 14s +-1 |
# straight
| i | g | fim,fg,fg | 53 km/h | 13.5s +-1 |
| i | g | fim,fg,fg | 45 km/h | 16s +-1 |
# right
| a | e | ad,def,def | 43 km/h | 16.7s +-1 |
| a | e | ad,def,def | 38 km/h | 19s +-1 |
# left
| c | g | cd,def,fg,fg | 63 km/h | 23s +-1 |
| c | g | cd,def,fg,fg | 52 km/h | 27s +-1 |
# double straight
| p | g | mp,fim,fg,fg | 58 km/h | 24.9s +-1 |
| p | g | mp,fim,fg,fg | 48 km/h | 29s +-1 |
# straight-right
| a | l | ad,dhk,klm,klm | 51 km/h | 28.1s +-1 |
| a | l | ad,dhk,klm,klm | 44 km/h | 33s +-1 |
# straight-left
| l | e | klm,dhk,def,def | 53 km/h | 27s +-1 |
| l | e | klm,dhk,def,def | 45 km/h | 32s +-1 |
# double right
| g | n | fg,fim,mn,mn | 43 km/h | 33.4s +-1 |
| g | n | fg,fim,mn,mn | 38 km/h | 38s +-1 |
# double left
Scenario: Weighting based on turn penalty file
@@ -53,7 +75,7 @@ Feature: Traffic - turn penalties
"""
9,6,7,1.8
9,13,14,24.5
8,4,3,30
8,4,3,35
12,11,8,9
8,11,12,23
1,4,5,-0.2
@@ -61,23 +83,23 @@ Feature: Traffic - turn penalties
And the contract extra arguments "--turn-penalty-file {penalties_file}"
When I route I should get
| from | to | route | speed | time |
| a | h | ad,dhk,dhk | 63 km/h | 11.5s +-1 |
| a | h | ad,dhk,dhk | 52 km/h | 14s +-1 |
# straight
| i | g | fim,fg,fg | 55 km/h | 13s +-1 |
| i | g | fim,fg,fg | 46 km/h | 15s +-1 |
# right - ifg penalty
| a | e | ad,def,def | 64 km/h | 11s +-1 |
| a | e | ad,def,def | 53 km/h | 14s +-1 |
# left - faster because of negative ade penalty
| c | g | cd,def,fg,fg | 63 km/h | 23s +-1 |
| c | g | cd,def,fg,fg | 52 km/h | 27s +-1 |
# double straight
| p | g | mp,fim,fg,fg | 59 km/h | 24.5s +-1 |
| p | g | mp,fim,fg,fg | 49 km/h | 29s +-1 |
# straight-right - ifg penalty
| a | l | ad,def,fim,klm,klm | 57 km/h | 38.2s +-1 |
| a | l | ad,def,fim,klm,klm | 48 km/h | 45s +-1 |
# was straight-left - forced around by hkl penalty
| l | e | klm,fim,def,def | 43 km/h | 33.4s +-1 |
| l | e | klm,fim,def,def | 38 km/h | 38s +-1 |
# double right - forced left by lkh penalty
| g | n | fg,fim,mn,mn | 27 km/h | 52.6s +-1 |
| g | n | fg,fim,mn,mn | 25 km/h | 57s +-1 |
# double left - imn penalty
| j | c | jk,klm,fim,def,cd,cd | 51 km/h | 56.2s +-1 |
| j | c | jk,klm,fim,def,cd,cd | 44 km/h | 65.8s +-1 |
# double left - hdc penalty ever so slightly higher than imn; forces all the way around
Scenario: Too-negative penalty clamps, but does not fail
+19 -11
View File
@@ -7,9 +7,11 @@ Feature: Foot - Squares and other areas
@square
Scenario: Foot - Route along edge of a squares
Given the node map
| x | |
| a | b |
| d | c |
"""
x
a b
d c
"""
And the ways
| nodes | area | highway |
@@ -30,9 +32,11 @@ Feature: Foot - Squares and other areas
@building
Scenario: Foot - Don't route on buildings
Given the node map
| x | |
| a | b |
| d | c |
"""
x
a b
d c
"""
And the ways
| nodes | highway | area | building | access |
@@ -53,9 +57,11 @@ Feature: Foot - Squares and other areas
@parking
Scenario: Foot - parking areas
Given the node map
| e | | | f |
| x | a | b | y |
| | d | c | |
"""
e f
x a b y
d c
"""
And the ways
| nodes | highway | amenity |
@@ -80,8 +86,10 @@ Feature: Foot - Squares and other areas
@train @platform
Scenario: Foot - railway platforms
Given the node map
| x | a | b | y |
| | d | c | |
"""
x a b y
d c
"""
And the ways
| nodes | highway | railway |
+15 -9
View File
@@ -6,9 +6,11 @@ Feature: Foot - Handle ferry routes
Scenario: Foot - Ferry route
Given the node map
| a | b | c | | |
| | | d | | |
| | | e | f | g |
"""
a b c
d
e f g
"""
And the ways
| nodes | highway | route | foot |
@@ -29,10 +31,12 @@ Feature: Foot - Handle ferry routes
Scenario: Foot - Ferry duration, single node
Given the node map
| a | b | c | d |
| | | e | f |
| | | g | h |
| | | i | j |
"""
a b c d
e f
g h
i j
"""
And the ways
| nodes | highway | route | foot | duration |
@@ -48,8 +52,10 @@ Feature: Foot - Handle ferry routes
Scenario: Foot - Ferry duration, multiple nodes
Given the node map
| x | | | | | y |
| | a | b | c | d | |
"""
x y
a b c d
"""
And the ways
| nodes | highway | route | foot | duration |
+11 -11
View File
@@ -6,14 +6,14 @@ Background: Use specific speeds
Scenario: Foot - Ignore maxspeed
Then routability should be
| highway | maxspeed | bothw |
| residential | | 145s ~10% |
| residential | 1 | 145s ~10% |
| residential | 100 | 145s ~10% |
| residential | 1 | 145s ~10% |
| residential | 1mph | 145s ~10% |
| residential | 1 mph | 145s ~10% |
| residential | 1unknown | 145s ~10% |
| residential | 1 unknown | 145s ~10% |
| residential | none | 145s ~10% |
| residential | signals | 145s ~10% |
| highway | maxspeed | bothw |
| residential | | 145 s ~10% |
| residential | 1 | 145 s ~10% |
| residential | 100 | 145 s ~10% |
| residential | 1 | 145 s ~10% |
| residential | 1mph | 145 s ~10% |
| residential | 1 mph | 145 s ~10% |
| residential | 1unknown | 145 s ~10% |
| residential | 1 unknown | 145 s ~10% |
| residential | none | 145 s ~10% |
| residential | signals | 145 s ~10% |
+10 -6
View File
@@ -6,8 +6,10 @@ Feature: Foot - Street names in instructions
Scenario: Foot - A named street
Given the node map
| a | b |
| | c |
"""
a b
c
"""
And the ways
| nodes | name | ref |
@@ -19,9 +21,11 @@ Feature: Foot - Street names in instructions
| a | c | My Way,Your Way,Your Way |
@unnamed
Scenario: Foot - Use way type to describe unnamed ways
Scenario: Foot - No longer use way type to describe unnamed ways, see #3231
Given the node map
| a | b | c | d |
"""
a b c d
"""
And the ways
| nodes | highway | name |
@@ -29,5 +33,5 @@ Feature: Foot - Street names in instructions
| bcd | track | |
When I route I should get
| from | to | route |
| a | d | {highway:footway},{highway:track},{highway:track} |
| from | to | route |
| a | d | , |
+13 -7
View File
@@ -6,31 +6,37 @@ Feature: Foot - Way ref
Scenario: Foot - Way with both name and ref
Given the node map
| a | b |
"""
a b
"""
And the ways
| nodes | name | ref |
| ab | Utopia Drive | E7 |
When I route I should get
| from | to | route |
| a | b | Utopia Drive,Utopia Drive |
| from | to | route | ref |
| a | b | Utopia Drive,Utopia Drive | E7,E7 |
Scenario: Foot - Way with only ref
Given the node map
| a | b |
"""
a b
"""
And the ways
| nodes | name | ref |
| ab | | E7 |
When I route I should get
| from | to | route |
| a | b | {highway:primary},{highway:primary} |
| from | to | route | ref |
| a | b | , | E7,E7 |
Scenario: Foot - Way with only name
Given the node map
| a | b |
"""
a b
"""
And the ways
| nodes | name |
+58 -36
View File
@@ -8,9 +8,11 @@ Feature: Foot - Turn restrictions
@no_turning
Scenario: Foot - No left turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -32,9 +34,11 @@ Feature: Foot - Turn restrictions
@no_turning
Scenario: Foot - No right turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -56,9 +60,11 @@ Feature: Foot - Turn restrictions
@no_turning
Scenario: Foot - No u-turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -80,9 +86,11 @@ Feature: Foot - Turn restrictions
@no_turning
Scenario: Foot - Handle any no_* relation
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -104,9 +112,11 @@ Feature: Foot - Turn restrictions
@only_turning
Scenario: Foot - Only left turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -128,9 +138,11 @@ Feature: Foot - Turn restrictions
@only_turning
Scenario: Foot - Only right turn
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -152,9 +164,11 @@ Feature: Foot - Turn restrictions
@only_turning
Scenario: Foot - Only straight on
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -176,9 +190,11 @@ Feature: Foot - Turn restrictions
@no_turning
Scenario: Foot - Handle any only_* restriction
Given the node map
| | n | |
| w | j | e |
| | s | |
"""
n
w j e
s
"""
And the ways
| nodes | oneway |
@@ -200,9 +216,11 @@ Feature: Foot - Turn restrictions
@except
Scenario: Foot - Except tag and on no_ restrictions
Given the node map
| b | x | c |
| a | j | d |
| | s | |
"""
b x c
a j d
s
"""
And the ways
| nodes | oneway |
@@ -230,9 +248,11 @@ Feature: Foot - Turn restrictions
@except
Scenario: Foot - Except tag and on only_ restrictions
Given the node map
| a | | b |
| | j | |
| | s | |
"""
a b
j
s
"""
And the ways
| nodes | oneway |
@@ -252,12 +272,14 @@ Feature: Foot - Turn restrictions
@except
Scenario: Foot - Multiple except tag values
Given the node map
| s | j | a |
| | | b |
| | | c |
| | | d |
| | | e |
| | | f |
"""
s j a
b
c
d
e
f
"""
And the ways
| nodes | oneway |
+7 -5
View File
@@ -10,11 +10,13 @@ Feature: Roundabout Instructions
# make sense when you're going the opposite way around the roundabout.
Given the node map
| | | v | | |
| | | d | | |
| s | a | | c | u |
| | | b | | |
| | | t | | |
"""
v
d
s a c u
b
t
"""
And the ways
| nodes | junction |
+7 -7
View File
@@ -6,10 +6,10 @@ Feature: Foot - Surfaces
Scenario: Foot - Slow surfaces
Then routability should be
| highway | surface | bothw |
| footway | | 145s ~10% |
| footway | fine_gravel | 193s ~10% |
| footway | gravel | 193s ~10% |
| footway | pebblestone | 193s ~10% |
| footway | mud | 289s ~10% |
| footway | sand | 289s ~10% |
| highway | surface | bothw |
| footway | | 145 s ~10% |
| footway | fine_gravel | 193 s ~10% |
| footway | gravel | 193 s ~10% |
| footway | pebblestone | 193 s ~10% |
| footway | mud | 289 s ~10% |
| footway | sand | 289 s ~10% |
+71 -59
View File
@@ -8,10 +8,12 @@ Feature: Turn Lane Guidance
@sliproads
Scenario: Separate Turn Lanes
Given the node map
| | | | | | | | e | |
| a | | | b | | | | c | g |
| | | | | | | | d | |
| | | | | | | | f | |
"""
e
a b c g
d
f
"""
And the ways
| nodes | turn:lanes:forward | name | oneway |
@@ -37,10 +39,12 @@ Feature: Turn Lane Guidance
@sliproads
Scenario: Separate Turn Lanes
Given the node map
| | | | | | | | e | |
| a | | | b | | | | c | g |
| | | | | | | | d | |
| | | | | | | | f | |
"""
e
a b c g
d
f
"""
And the ways
| nodes | turn:lanes:forward | name | oneway |
@@ -66,17 +70,19 @@ Feature: Turn Lane Guidance
@sliproads
Scenario: Separate Turn Lanes Next to other turns
Given the node map
| | | | | | | | e | |
| a | | | b | | | | c | g |
| | | | | | | | d | |
| | | | | | | | f | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| i | | | h | | | | j | |
"""
e
a b c g
d
f
i h j
"""
And the ways
| nodes | turn:lanes:forward | name | oneway |
@@ -108,12 +114,14 @@ Feature: Turn Lane Guidance
#http://www.openstreetmap.org/export#map=19/52.56054/13.32152
Scenario: Kurt-Schuhmacher-Damm
Given the node map
| | | | g | | f |
| | | | | | |
| j | | | h | | e |
| | | | | | |
| a | | | b | | c |
| | | | i | | d |
"""
g f
j h e
a b c
i d
"""
And the ways
| nodes | name | highway | oneway | turn:lanes |
@@ -136,23 +144,25 @@ Feature: Turn Lane Guidance
#http://www.openstreetmap.org/#map=19/37.77308/-122.42238
Scenario: Market/Haight without Through Street
Given the node map
| | | | | | | | g | j | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | f |
| | | | | | | | | e | |
| | | | | | | | d | | |
| a | | | | | | b | c | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | l | | | h | i | |
"""
g j
f
e
d
a b c
l h i
"""
And the ways
| nodes | name | highway | oneway | turn:lanes:forward |
@@ -182,23 +192,25 @@ Feature: Turn Lane Guidance
#http://www.openstreetmap.org/#map=19/37.77308/-122.42238
Scenario: Market/Haight without Through Street
Given the node map
| | | | | | | | g | j | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | f |
| | | | | | | | | e | |
| | | | | | | | d | | |
| a | | | | | | b | c | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | l | | | h | i | |
"""
g j
f
e
d
a b c
l h i
"""
And the ways
| nodes | name | highway | oneway | turn:lanes:forward |
+251 -183
View File
@@ -8,11 +8,13 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Anticipate Lane Change for subsequent multi-lane intersections
Given the node map
| a | | b | | x | | |
| | | | | | | |
| | | c | | d | | z |
| | | | | | | |
| | | y | | e | | |
"""
a b x
|
c d z
| |
y e
"""
And the ways
| nodes | turn:lanes:forward |
@@ -32,11 +34,13 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Anticipate Lane Change for quick same direction turns, staying on the same street
Given the node map
| a | | b | x |
| | | | |
| | | c | |
| | | | |
| e | | d | y |
"""
a b x
|
c
|
e d y
"""
And the ways
| nodes | turn:lanes:forward | turn:lanes:backward | name |
@@ -55,11 +59,13 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Anticipate Lane Change for quick same direction turns, changing between streets
Given the node map
| a | | b | x |
| | | | |
| | | c | |
| | | | |
| e | | d | y |
"""
a b x
|
c
|
e d y
"""
And the ways
| nodes | turn:lanes:forward | turn:lanes:backward | name |
@@ -79,9 +85,13 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Anticipate Lane Change for quick turns during a merge
Given the node map
| a | | | | |
| x | b | | c | y |
| | | | | d |
"""
a
\
x b c y
|
d
"""
And the ways
| nodes | turn:lanes:forward | name | highway | oneway |
@@ -100,9 +110,12 @@ Feature: Turn Lane Guidance
Scenario: Schoenefelder Kreuz
# https://www.openstreetmap.org/way/264306388#map=16/52.3202/13.5568
Given the node map
| a | b | x | | | i |
| | | c | d | | |
| | | | | | j |
"""
a b x
\ / i
c d
\ j
"""
And the ways
| nodes | turn:lanes:forward | lanes | highway | oneway | name |
@@ -123,8 +136,11 @@ Feature: Turn Lane Guidance
Scenario: Kreuz Oranienburg
# https://www.openstreetmap.org/way/4484007#map=18/52.70439/13.20269
Given the node map
| i | | | | | a |
| j | | c | b | | x |
"""
i a
' . . '
j c b x
"""
And the ways
| nodes | turn:lanes:forward | lanes | highway | oneway | name |
@@ -143,11 +159,13 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Lane anticipation for fan-in
Given the node map
| a | | b | | x | | |
| | | | | | | |
| | | c | | d | | z |
| | | | | | | |
| | | y | | e | | |
"""
a b x
|
c d z
| |
y e
"""
And the ways
| nodes | turn:lanes:forward | name |
@@ -166,11 +184,13 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Lane anticipation for fan-out
Given the node map
| a | | b | | x | | |
| | | | | | | |
| | | c | | d | | z |
| | | | | | | |
| | | y | | e | | |
"""
a b x
|
c d z
| |
y e
"""
And the ways
| nodes | turn:lanes:forward | name |
@@ -189,11 +209,13 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Lane anticipation for fan-in followed by fan-out
Given the node map
| a | | b | | x | | |
| | | | | | | |
| | | c | | d | | z |
| | | | | | | |
| | | y | | e | | |
"""
a b x
|
c d z
| |
y e
"""
And the ways
| nodes | turn:lanes:forward | name |
@@ -212,11 +234,13 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Lane anticipation for fan-out followed by fan-in
Given the node map
| a | | b | | x | | |
| | | | | | | |
| | | c | | d | | z |
| | | | | | | |
| | | y | | e | | |
"""
a b x
|
c d z
| |
y e
"""
And the ways
| nodes | turn:lanes:forward | name |
@@ -235,13 +259,15 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Lane anticipation for multiple hops with same number of lanes
Given the node map
| a | | b | | x | | |
| | | | | | | |
| | | c | | d | | z |
| | | | | | | |
| | | y | | e | | f |
| | | | | | | |
| | | | | w | | |
"""
a b x
|
c d z
| |
y e f
|
w
"""
And the ways
| nodes | turn:lanes:forward | name |
@@ -262,11 +288,13 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Anticipate Lanes for through, through with lanes
Given the node map
| | | | f | g | |
| | | | | | |
| a | b | c | d | | e |
| | | | | | |
| | | | h | i | |
"""
f g
/ /
a b c d e
\ \
h i
"""
And the ways
| nodes | turn:lanes:forward | name |
@@ -286,11 +314,13 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Anticipate Lanes for through and collapse multiple use lanes
Given the node map
| | | e | f | g |
| | | | | |
| a | b | c | d | |
| | | | | |
| | | h | i | j |
"""
e f g
/ / /
a b c d
\ \ \
h i j
"""
And the ways
| nodes | turn:lanes:forward | name |
@@ -312,11 +342,13 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Anticipate Lanes for through followed by left/right
Given the node map
| | | f | g | |
| | | | | d |
| a | b | c | x | |
| | | | | e |
| | | h | i | |
"""
f g d
/ / /
a b c x
\ \ \
h i e
"""
And the ways
| nodes | turn:lanes:forward | name |
@@ -338,11 +370,11 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Anticipate Lanes for through with turn before / after
Given the node map
| a | b | c |
| | d | |
| f | e | g |
| | h | |
| j | i | l |
"""
c g l
b d e h - i
a f j
"""
And the ways
| nodes | turn:lanes:forward | name | oneway |
@@ -370,27 +402,33 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Anticipate Lanes for turns with through before and after
Given a grid size of 10 meters
Given the node map
| a | b | q | | s | h | i |
| | | e | f | g | | |
| c | d | r | | t | j | k |
"""
a b q s h i
\ / /
e f g
/ \ \
c d r t j k
"""
And the ways
| nodes | turn:lanes:forward | name |
| ab | through\|right\|right\|right | top |
| be | | top |
| bq | | off |
| ef | left\|through\|through\|through\|through\|right | main |
| fg | left\|left\|right\|right | main |
| fs | | off |
| ft | | off |
| gh | | top |
| hi | | top |
| cd | left\|left\|left\|through | bot |
| de | | bot |
| dr | | off |
| gj | | bot |
| jk | | bot |
| nodes | turn:lanes:forward | name | highway | oneway |
| ab | through\|right\|right\|right | top | primary | yes |
| be | | top | primary | yes |
| bq | | off | primary | yes |
| ef | left\|through\|through\|through\|through\|right | main | primary | yes |
| fg | left\|left\|right\|right | main | primary | yes |
| fs | | off | primary | yes |
| ft | | off | primary | yes |
| gh | | top | primary | yes |
| hi | | top | primary | yes |
| cd | left\|left\|left\|through | bot | primary | yes |
| de | | bot | primary | yes |
| dr | | off | primary | yes |
| gj | | bot | primary | yes |
| jk | | bot | primary | yes |
When I route I should get
| waypoints | route | turns | lanes |
@@ -402,10 +440,15 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Anticipate Lanes for turn between throughs
Given the node map
| | q | | |
| a | b | c | s |
| | r | d | t |
| | | e | |
"""
q
|
a b c s
| |
r d t
|
e
"""
And the ways
| nodes | turn:lanes:forward | name |
@@ -425,13 +468,15 @@ Feature: Turn Lane Guidance
@anticipate @todo @2661
Scenario: Anticipate with lanes in roundabout: roundabouts as the unit of anticipation
Given the node map
| | | e | | |
| a | b | | d | f |
| | | c | | |
| | | | | |
| | | g | | |
| k | h | | j | l |
| | | i | | |
"""
/e\
a b d f
\c/
|
/g\
k h j l
\i/
"""
And the ways
| nodes | turn:lanes:forward | highway | junction | # |
@@ -459,9 +504,11 @@ Feature: Turn Lane Guidance
@anticipate @todo
Scenario: Roundabout with lanes only tagged on exit
Given the node map
| | | e | | |
| a | b | | d | f |
| | | c | | |
"""
/e\
a b d f
\c/
"""
And the ways
| nodes | turn:lanes:forward | highway | junction |
@@ -479,13 +526,16 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: No Lanes for Roundabouts, see #2626
Given the node map
| | | a | | |
| | | b | | |
| | c | | g | h |
| | | | | |
| | d | | f | |
| | | e | | |
| x | | | | y |
"""
a
|
/b\
c g h
/| |
| d f
|/ \e/ \
x \ y
"""
And the ways
| nodes | turn:lanes:forward | highway | junction |
@@ -509,9 +559,11 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: No Lanes for Roundabouts, see #2626
Given the node map
| | | a | | |
| x | b | | d | y |
| | | c | | |
"""
/a\
x b d y
\c/
"""
And the ways
| nodes | turn:lanes:forward | highway | junction | name |
@@ -530,15 +582,21 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: No Lanes for Roundabouts, see #2626
Given the profile "lhs"
Given the profile file "car" extended with
"""
properties.left_hand_driving = true
"""
And the node map
| | | a | | |
| | | b | | |
| h | c | | g | |
| | | | | |
| | d | | f | |
| | | e | | |
| x | | | | y |
"""
a
|
/b\
h c g
| |\
d f |
/ \e/ \|
x / y
"""
And the ways
| nodes | turn:lanes:forward | highway | junction |
@@ -562,43 +620,45 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: No Lanes for Roundabouts, see #2626
Given the node map
| | | a | | |
| x | b | | d | y |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | c | | |
"""
/a\
x b d y
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
|
|
|
|
|
|
|
|
c
"""
And the ways
| nodes | turn:lanes:forward | highway | junction | name |
@@ -618,12 +678,15 @@ Feature: Turn Lane Guidance
@anticipate @todo @2032
Scenario: No Lanes for Roundabouts, see #2626
Given the node map
| a | b | | | x |
| | c | | | |
| d | | f | g | z |
| | e | | h | |
| | | | | |
| | y | | | |
"""
a b x
|
/c\
d f g z
\e/ |
| h
y
"""
And the ways
| nodes | turn:lanes:forward | highway | junction | name |
@@ -646,10 +709,11 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Anticipate none tags
Given the node map
| a | b | c |
| | d | |
| f | e | g |
| | h | |
"""
c g l
b d e h - i
a f j
"""
And the ways
| nodes | turn:lanes:forward | highway | name |
@@ -669,14 +733,16 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Triple Right keeping Left
Given the node map
| a | | | | b | | i |
| | | | | | | |
| | | | | | | |
| f | | e | | | | g |
| | | | | | | |
| | | | | | | |
| | j | d | | c | | |
| | | | | h | | |
"""
a b i
|
f e g |
| |
| |
j d c
|
h
"""
And the ways
| nodes | turn:lanes:forward | highway | name |
@@ -694,14 +760,16 @@ Feature: Turn Lane Guidance
@anticipate
Scenario: Tripple Left keeping Right
Given the node map
| i | | b | | | | a |
| | | | | | | |
| | | | | | | |
| g | | | | e | | f |
| | | | | | | |
| | | | | | | |
| | | c | | d | j | |
| | | h | | | | |
"""
i b a
|
| g e f
| |
| |
c d j
|
h
"""
And the ways
| nodes | turn:lanes:forward | highway | name |
@@ -0,0 +1,33 @@
@routing @bicycle @mode
Feature: Bike - Mode flag
Background:
Given the profile "bicycle"
Given a grid size of 5 meters
Scenario: Bike Sliproad
Given the node map
"""
i
a b - c-d
` |
g-e-h
|
|
f
"""
And the nodes
| node | highway |
| c | traffic_signals |
And the ways
| nodes | highway | name | oneway:bicycle |
| abcd | cycleway | street | |
| eb | path | | yes |
| icef | tertiary | road | |
| geh | secondary | street | |
When I route I should get
| waypoints | route | turns |
| a,f | street,,road,road | depart,turn right,turn right,arrive |
+54 -42
View File
@@ -6,7 +6,9 @@ Feature: Car - Guidance - Bridges and Tunnels
Scenario: Simple Bridge
Given the node map
| a | b | c | d |
"""
a b c d
"""
And the ways
| nodes | highway | bridge | name |
@@ -20,9 +22,11 @@ Feature: Car - Guidance - Bridges and Tunnels
Scenario: Bridge with Immediate Turn
Given the node map
| | | | d |
| a | | b | c |
| | | | e |
"""
d
a b c
e
"""
And the ways
| nodes | highway | bridge | name |
@@ -31,17 +35,19 @@ Feature: Car - Guidance - Bridges and Tunnels
| dce | primary | | Nebenstraße |
When I route I should get
| from | to | route | turns |
| a | d | Hauptstraße,Nebenstraße,Nebenstraße | depart,end of road left,arrive |
| a | e | Hauptstraße,Nebenstraße,Nebenstraße | depart,end of road right,arrive |
| e | a | Nebenstraße,Hauptstraßenbrücke,Hauptstraße | depart,turn left,arrive |
| d | a | Nebenstraße,Hauptstraßenbrücke,Hauptstraße | depart,turn right,arrive |
| from | to | route | turns |
| a | d | Hauptstraße,Nebenstraße,Nebenstraße | depart,turn left,arrive |
| a | e | Hauptstraße,Nebenstraße,Nebenstraße | depart,turn right,arrive |
| e | a | Nebenstraße,Hauptstraßenbrücke,Hauptstraße | depart,turn left,arrive |
| d | a | Nebenstraße,Hauptstraßenbrücke,Hauptstraße | depart,turn right,arrive |
Scenario: Bridge with Immediate Turn Front and Back
Given the node map
| f | | | d |
| a | | b | c |
| g | | | e |
"""
f d
a b c
g e
"""
And the ways
| nodes | highway | bridge | name |
@@ -51,19 +57,21 @@ Feature: Car - Guidance - Bridges and Tunnels
| gaf | primary | | Anderestraße |
When I route I should get
| from | to | route | turns |
| f | d | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn left,end of road left,arrive |
| f | e | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn left,end of road right,arrive |
| g | d | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn right,end of road left,arrive |
| g | e | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn right,end of road right,arrive |
| e | f | Nebenstraße,Hauptstraßenbrücke,Anderestraße,Anderestraße | depart,turn left,end of road right,arrive |
| e | g | Nebenstraße,Hauptstraßenbrücke,Anderestraße,Anderestraße | depart,turn left,end of road left,arrive |
| d | f | Nebenstraße,Hauptstraßenbrücke,Anderestraße,Anderestraße | depart,turn right,end of road right,arrive |
| d | g | Nebenstraße,Hauptstraßenbrücke,Anderestraße,Anderestraße | depart,turn right,end of road left,arrive |
| from | to | route | turns |
| f | d | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn left,turn left,arrive |
| f | e | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn left,turn right,arrive |
| g | d | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn right,turn left,arrive |
| g | e | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn right,turn right,arrive |
| e | f | Nebenstraße,Hauptstraßenbrücke,Anderestraße,Anderestraße | depart,turn left,turn right,arrive |
| e | g | Nebenstraße,Hauptstraßenbrücke,Anderestraße,Anderestraße | depart,turn left,turn left,arrive |
| d | f | Nebenstraße,Hauptstraßenbrücke,Anderestraße,Anderestraße | depart,turn right,turn right,arrive |
| d | g | Nebenstraße,Hauptstraßenbrücke,Anderestraße,Anderestraße | depart,turn right,turn left,arrive |
Scenario: Simple Tunnel
Given the node map
| a | b | c | d |
"""
a b c d
"""
And the ways
| nodes | highway | tunnel | name |
@@ -77,9 +85,11 @@ Feature: Car - Guidance - Bridges and Tunnels
Scenario: Tunnel with Immediate Turn
Given the node map
| | | | d |
| a | | b | c |
| | | | e |
"""
d
a b c
e
"""
And the ways
| nodes | highway | tunnel | name |
@@ -88,17 +98,19 @@ Feature: Car - Guidance - Bridges and Tunnels
| dce | primary | | Nebenstraße |
When I route I should get
| from | to | route | turns |
| a | d | Hauptstraße,Nebenstraße,Nebenstraße | depart,end of road left,arrive |
| a | e | Hauptstraße,Nebenstraße,Nebenstraße | depart,end of road right,arrive |
| e | a | Nebenstraße,Hauptstraßentunnel,Hauptstraße | depart,turn left,arrive |
| d | a | Nebenstraße,Hauptstraßentunnel,Hauptstraße | depart,turn right,arrive |
| from | to | route | turns |
| a | d | Hauptstraße,Nebenstraße,Nebenstraße | depart,turn left,arrive |
| a | e | Hauptstraße,Nebenstraße,Nebenstraße | depart,turn right,arrive |
| e | a | Nebenstraße,Hauptstraßentunnel,Hauptstraße | depart,turn left,arrive |
| d | a | Nebenstraße,Hauptstraßentunnel,Hauptstraße | depart,turn right,arrive |
Scenario: Tunnel with Immediate Turn Front and Back
Given the node map
| f | | | d |
| a | | b | c |
| g | | | e |
"""
f d
a b c
g e
"""
And the ways
| nodes | highway | bridge | name |
@@ -108,13 +120,13 @@ Feature: Car - Guidance - Bridges and Tunnels
| gaf | primary | | Anderestraße |
When I route I should get
| from | to | route | turns |
| f | d | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn left,end of road left,arrive |
| f | e | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn left,end of road right,arrive |
| g | d | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn right,end of road left,arrive |
| g | e | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn right,end of road right,arrive |
| e | f | Nebenstraße,Hauptstraßentunnel,Anderestraße,Anderestraße | depart,turn left,end of road right,arrive |
| e | g | Nebenstraße,Hauptstraßentunnel,Anderestraße,Anderestraße | depart,turn left,end of road left,arrive |
| d | f | Nebenstraße,Hauptstraßentunnel,Anderestraße,Anderestraße | depart,turn right,end of road right,arrive |
| d | g | Nebenstraße,Hauptstraßentunnel,Anderestraße,Anderestraße | depart,turn right,end of road left,arrive |
| from | to | route | turns |
| f | d | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn left,turn left,arrive |
| f | e | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn left,turn right,arrive |
| g | d | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn right,turn left,arrive |
| g | e | Anderestraße,Hauptstraße,Nebenstraße,Nebenstraße | depart,turn right,turn right,arrive |
| e | f | Nebenstraße,Hauptstraßentunnel,Anderestraße,Anderestraße | depart,turn left,turn right,arrive |
| e | g | Nebenstraße,Hauptstraßentunnel,Anderestraße,Anderestraße | depart,turn left,turn left,arrive |
| d | f | Nebenstraße,Hauptstraßentunnel,Anderestraße,Anderestraße | depart,turn right,turn right,arrive |
| d | g | Nebenstraße,Hauptstraßentunnel,Anderestraße,Anderestraße | depart,turn right,turn left,arrive |
+24 -7
View File
@@ -8,13 +8,15 @@ Feature: Features related to bugs
@2852
Scenario: Loop
Given the node map
| a | 1 | | g | | | b |
| | | | | | | |
| | | | | | | |
| e | | | | | | f |
| | | | | | | |
| | | | | | | 2 |
| d | | | h | | | c |
"""
a 1 g b
e f
2
d h c
"""
And the ways
| nodes | name | oneway |
@@ -33,3 +35,18 @@ Feature: Features related to bugs
When I route I should get
| waypoints | route | turns |
| 1,2 | top,right,right | depart,new name right,arrive |
@3156
Scenario: Incorrect lanes tag
Given the node map
"""
a b
"""
And the ways
| nodes | lanes |
| ab | 1; 2 |
And the data has been saved to disk
When I try to run "osrm-extract {osm_file} --profile {profile_file}"
Then it should exit successfully
+15 -11
View File
@@ -8,17 +8,19 @@ Feature: Collapse
@reverse
Scenario: Collapse U-Turn Triangle Intersection
Given the node map
| g | | f | | e | | d |
| | | | | | | |
| | | | | | | |
| a | | | b | | | c |
"""
g f e d
a b c
"""
And the ways
| nodes | highway | name | oneway |
| abc | primary | road | yes |
| defg | primary | road | yes |
| fb | primary_link | | |
| be | primary_link | | |
| fb | primary_link | | yes |
| be | primary_link | | yes |
When I route I should get
| waypoints | route | turns |
@@ -28,11 +30,13 @@ Feature: Collapse
@reverse @traffic-signals
Scenario: Collapse U-Turn Triangle Intersection
Given the node map
| g | | f | | j | | e | | d |
| | | | | | | | | |
| | | | h | | i | | | |
| | | | | | | | | |
| a | | | | b | | | | c |
"""
g f j e d
h i
a b c
"""
And the ways
| nodes | highway | name | oneway |
+357 -190
View File
@@ -7,12 +7,14 @@ Feature: Collapse
Scenario: Segregated Intersection, Cross Belonging to Single Street
Given the node map
| | | i | l | | |
| | | | | | |
| d | | c | b | | a |
| e | | f | g | | h |
| | | | | | |
| | | j | k | | |
"""
i l
d c b a
e f g h
j k
"""
And the ways
| nodes | highway | name | oneway |
@@ -50,12 +52,14 @@ Feature: Collapse
Scenario: Segregated Intersection, Cross Belonging to Correct Street
Given the node map
| | | i | l | | |
| | | | | | |
| d | | c | b | | a |
| e | | f | g | | h |
| | | | | | |
| | | j | k | | |
"""
i l
d c b a
e f g h
j k
"""
And the ways
| nodes | highway | name | oneway |
@@ -93,12 +97,14 @@ Feature: Collapse
Scenario: Segregated Intersection, Cross Belonging to Mixed Streets
Given the node map
| | | i | l | | |
| | | | | | |
| d | | c | b | | a |
| e | | f | g | | h |
| | | | | | |
| | | j | k | | |
"""
i l
d c b a
e f g h
j k
"""
And the ways
| nodes | highway | name | oneway |
@@ -136,26 +142,28 @@ Feature: Collapse
Scenario: Partly Segregated Intersection, Two Segregated Roads
Given the node map
| | n | | m | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | g | | h | |
| | | | | |
| | | | | |
| c | | b | | a |
| d | | e | | f |
| | | | | |
| | | | | |
| | j | | i | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | k | | l | |
"""
n m
g h
c b a
d e f
j i
k l
"""
And the ways
| nodes | highway | name | oneway |
@@ -188,22 +196,24 @@ Feature: Collapse
Scenario: Partly Segregated Intersection, Two Segregated Roads, Intersection belongs to Second
Given the node map
| | n | | m | |
| | | | | |
| | | | | |
| | | | | |
| | g | | h | |
| | | | | |
| | | | | |
| c | | b | | a |
| d | | e | | f |
| | | | | |
| | | | | |
| | j | | i | |
| | | | | |
| | | | | |
| | | | | |
| | k | | l | |
"""
n m
g h
c b a
d e f
j i
k l
"""
And the ways
| nodes | highway | name | oneway |
@@ -236,12 +246,14 @@ Feature: Collapse
Scenario: Segregated Intersection, Cross Belonging to Mixed Streets - Slight Angles
Given the node map
| | | i | l | | |
| | | | | | a |
| | | c | b | | h |
| d | | f | g | | |
| e | | | | | |
| | | j | k | | |
"""
i l
a
c b h
d f g
e
j k
"""
And the ways
| nodes | highway | name | oneway |
@@ -279,12 +291,14 @@ Feature: Collapse
Scenario: Segregated Intersection, Cross Belonging to Mixed Streets - Slight Angles (2)
Given the node map
| | | i | l | | |
| | | | | | |
| | | c | b | | |
| d | | f | g | | a |
| e | | | | | h |
| | | j | k | | |
"""
i l
c b
d f g a
e h
j k
"""
And the ways
| nodes | highway | name | oneway |
@@ -322,12 +336,14 @@ Feature: Collapse
Scenario: Entering a segregated road
Given the node map
| | a | f | | | | g |
| | | | | | | |
| | b | e | | | | |
| | | | | | | |
| | | | | | | |
| c | d | | | | | |
"""
a f g
b e
c d
"""
And the ways
| nodes | highway | name | oneway |
@@ -347,9 +363,11 @@ Feature: Collapse
Scenario: Do not collapse turning roads
Given the node map
| | | e | | |
| | | c | | d |
| a | | b | f | |
"""
e
c d
a b f
"""
And the ways
| nodes | highway | name | oneway |
@@ -367,7 +385,9 @@ Feature: Collapse
Scenario: Bridge on unnamed road
Given the node map
| a | b | | | | c | d |
"""
a b c d
"""
And the ways
| nodes | highway | name |
@@ -381,9 +401,11 @@ Feature: Collapse
Scenario: Crossing Bridge into Segregated Turn
Given the node map
| | | | | | f |
| i | h | | | g | e |
| a | b | | | c | d |
"""
f
i h g e
a b c d
"""
And the ways
| nodes | highway | oneway | name |
@@ -402,9 +424,11 @@ Feature: Collapse
Scenario: Pankenbruecke
Given the node map
| j | | | | h | | | | | | i | | | | | | |
| | | | | | | b | c | d | e | f | | | | | | g |
| k | | | | a | | | | | | | | | | | | |
"""
j h i
b c d e f g
k a
"""
And the ways
| nodes | highway | name | oneway |
@@ -421,11 +445,13 @@ Feature: Collapse
Scenario: Close Turns - Don't Collapse
Given the node map
| | g | d | |
| | | | |
| e | b | c | f |
| | | | |
| | a | h | |
"""
g d
e b c f
a h
"""
And the ways
| nodes | highway | name |
@@ -443,8 +469,10 @@ Feature: Collapse
Scenario: No Name During Turns
Given the node map
| a | b | |
| | c | d |
"""
a b
c d
"""
And the ways
| nodes | highway | name |
@@ -458,8 +486,10 @@ Feature: Collapse
Scenario: No Name During Turns, Random Oneway
Given the node map
| a | b | |
| | c | d |
"""
a b
c d
"""
And the ways
| nodes | highway | name | oneway |
@@ -473,9 +503,11 @@ Feature: Collapse
Scenario: Pulled Back Turn
Given the node map
| | | d |
| a | b | c |
| | e | |
"""
d
a b c
e
"""
And the ways
| nodes | highway | name |
@@ -490,8 +522,10 @@ Feature: Collapse
Scenario: No Name During Turns, keep important turns
Given the node map
| a | b | e |
| | c | d |
"""
a b e
c d
"""
And the ways
| nodes | highway | name |
@@ -506,17 +540,19 @@ Feature: Collapse
Scenario: Segregated Intersection into Slight Turn
Given the node map
| h | | | | | | |
| a | | | | | | |
| | | | | | | |
| | | g | | | | |
| | | b | f | | | |
| | | | c | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | e |
| | | | | | | d |
| | | j | i | | | |
"""
h
a
g
b f
c
e
d
j i
"""
And the ways
| nodes | highway | name | oneway |
@@ -533,20 +569,22 @@ Feature: Collapse
Scenario: Segregated Intersection into Very Slight Turn
Given the node map
| h | | | | | | |
| a | | | | | | |
| | | | | | | |
| | | | | | | |
| | | g | | | | |
| | | b | | | | |
| | | | f | | | |
| | | | c | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | e |
| | | | | | | d |
| | | j | i | | | |
"""
h
a
g
b
f
c
e
d
j i
"""
And the ways
| nodes | highway | name | oneway |
@@ -563,9 +601,11 @@ Feature: Collapse
Scenario: Don't collapse everything to u-turn / too wide
Given the node map
| a | | b | | e |
| | | | | |
| d | | c | | f |
"""
a b e
d c f
"""
And the ways
| nodes | highway | name |
@@ -580,12 +620,14 @@ Feature: Collapse
Scenario: Forking before a turn
Given the node map
| | | | g | |
| | | | | |
| | | | c | |
| a | | b | d | e |
| | | | | |
| | | | f | |
"""
g
c
a b d e
f
"""
And the ways
| nodes | name | oneway | highway |
@@ -593,12 +635,14 @@ Feature: Collapse
| bd | road | yes | primary |
| bc | road | yes | primary |
| de | road | yes | primary |
| fdcg | cross | no | secondary |
| fd | cross | no | secondary |
| dc | cross | no | secondary |
| cg | cross | no | secondary |
And the relations
| type | way:from | way:to | node:via | restriction |
| restriction | bd | fdcg | d | no_left_turn |
| restriction | bc | fdcg | c | no_right_turn |
| restriction | bd | dc | d | no_left_turn |
| restriction | bc | dc | c | no_right_turn |
When I route I should get
| waypoints | route | turns |
@@ -607,12 +651,14 @@ Feature: Collapse
Scenario: Forking before a turn (narrow)
Given the node map
| | | | g | |
| | | | | |
| | | | c | |
| a | b | | d | e |
| | | | | |
| | | | f | |
"""
g
c
a b d e
f
"""
And the ways
| nodes | name | oneway | highway |
@@ -636,12 +682,14 @@ Feature: Collapse
Scenario: Forking before a turn (forky)
Given the node map
| | | | | | g | | |
| | | | | | | | |
| | | | | | c | | |
| a | | | b | | | | |
| | | | | | | d | |
| | | | | | | f | e |
"""
g
c
a b
d
f e
"""
And the ways
| nodes | name | oneway | highway |
@@ -667,9 +715,11 @@ Feature: Collapse
Scenario: On-Off on Highway
Given the node map
| f | | | |
| a | b | c | d |
| | | | e |
"""
f
a b c d
e
"""
And the ways
| nodes | name | highway | oneway |
@@ -687,13 +737,15 @@ Feature: Collapse
@negative @straight
Scenario: Don't collapse going straight if actual turn
Given the node map
| | c | e | | |
| | | d | | f |
| | | | | |
| | | b | | |
| | | | | |
| | | | | |
| | | a | | |
"""
c e
d f
b
a
"""
And the ways
| nodes | name | highway |
@@ -709,12 +761,14 @@ Feature: Collapse
Scenario: Entering a segregated road
Given the node map
| | a | f | | |
| | | | | g |
| | b | e | | |
| | | | | |
| | | | | |
| c | d | | | |
"""
a f
g
b e
c d
"""
And the ways
| nodes | highway | name | oneway |
@@ -729,12 +783,14 @@ Feature: Collapse
Scenario: Entering a segregated road slight turn
Given the node map
| | | a | f | |
| | | | | g |
| | b | e | | |
| | | | | |
| | | | | |
| c | d | | | |
"""
a f
g
b e
c d
"""
And the ways
| nodes | highway | name | oneway |
@@ -749,11 +805,13 @@ Feature: Collapse
Scenario: Do not collapse UseLane step when lanes change
Given the node map
| | | | f | g | |
| | | | | | |
| a | b | c | d | | e |
| | | | | | |
| | | | h | i | |
"""
f g
a b c d e
h i
"""
And the ways
| nodes | turn:lanes:forward | name |
@@ -772,11 +830,13 @@ Feature: Collapse
Scenario: But _do_ collapse UseLane step when lanes stay the same
Given the node map
| | | | f | g | |
| | | | | | |
| a | b | c | d | | e |
| | | | | | |
| | | | h | i | |
"""
f g
a b c d e
h i
"""
And the ways
| nodes | turn:lanes:forward | name |
@@ -795,10 +855,12 @@ Feature: Collapse
Scenario: Don't collapse different travel modes
Given the node map
| g | | | | | | | h | |
| a | b | | c | | | | e | f |
| | | | | | d | | | |
| | | | i | j | | | | |
"""
g h
a b c e f
d
i j
"""
And the ways
| nodes | highway | route | name |
@@ -818,23 +880,128 @@ Feature: Collapse
Scenario: U-Turn onto a Ferry
Given the node map
| | | | | | | i | | |
| j | e | | | | | d | c | h |
| | | | | | | | | |
| | | | | | | | | |
| k | g | | | | | a | b | f |
"""
i
j e d c h
k g a b f
"""
And the ways
| nodes | highway | route | name | oneway |
| bf | primary | | road | yes |
| abf | primary | | road | yes |
| hcd | primary | | road | yes |
| bc | primary | | | yes |
| di | service | | serv | yes |
| ed | | ferry | ferry | |
| gab | | ferry | ferry | |
| ga | | ferry | ferry | |
| kg | primary | | on | yes |
| ej | primary | | off | yes |
When I route I should get
| waypoints | route | turns |
| k,j | on,ferry,,ferry,off,off | depart,new name straight,continue uturn,turn straight,new name straight,arrive |
| waypoints | route | turns |
| k,j | on,ferry,road,road,ferry,off,off | depart,notification straight,notification straight,continue uturn,turn straight,notification straight,arrive |
# http://www.openstreetmap.org/#map=19/37.78090/-122.41251
Scenario: U-Turn onto unnamed-road
Given the node map
"""
d . _ h
' b . _ |
| ' e g
| f '
| 1 '
a '
"""
And the ways
| nodes | highway | turn:lanes | name | oneway |
| ab | secondary | | up | yes |
| gfa | secondary | | | yes |
| dbe | tertiary | | turn | no |
| he | secondary | through\|right | down | yes |
| ef | secondary | | down | yes |
When I route I should get
| waypoints | route | turns |
| a,1 | up,turn,, | depart,turn right,turn sharp right,arrive |
#http://www.openstreetmap.org/#map=19/52.48778/13.30024
Scenario: Hohenzollerdammbrücke
Given the node map
"""
q s
p o
.. . .
. . . .
j - i - - - h - - - g - f
> k < > l <
a - b - - - c - - - d - e
. . . .
.. ..
m n
t r
"""
And the ways
| nodes | highway | name | oneway |
| ab | secondary | hohe | yes |
| bc | secondary | hohebruecke | yes |
| cd | secondary | hohebruecke | yes |
| bk | secondary | hohebruecke | yes |
| kh | secondary | hohebruecke | yes |
| ki | secondary | hohebruecke | yes |
| ck | secondary | hohebruecke | yes |
| de | secondary | hohe | yes |
| fg | secondary | hohe | yes |
| gh | secondary | hohebruecke | yes |
| hi | secondary | hohebruecke | yes |
| gl | secondary | hohebruecke | yes |
| lc | secondary | hohebruecke | yes |
| hl | secondary | hohebruecke | yes |
| ld | secondary | hohebruecke | yes |
| ij | secondary | hohe | yes |
| bm | motorway_link | a100 | yes |
| cm | motorway_link | a100 | yes |
| nc | motorway_link | a100 | yes |
| nd | motorway_link | a100 | yes |
| go | motorway_link | a100 | yes |
| ho | motorway_link | a100 | yes |
| ph | motorway_link | a100 | yes |
| pi | motorway_link | a100 | yes |
| qp | motorway_link | a100 | yes |
| mt | motorway_link | a100 | yes |
| rn | motorway_link | a100 | yes |
| os | motorway_link | a100 | yes |
And the relations
| type | way:from | way:to | node:via | restriction |
| restriction | ck | kh | k | no_right_turn |
| restriction | bk | ki | k | no_left_turn |
| restriction | hl | lc | l | no_right_turn |
| restriction | gl | ld | l | no_left_turn |
| restriction | bc | cm | c | no_right_turn |
| restriction | bc | ck | c | no_left_turn |
| restriction | nc | cm | c | no_left_turn |
| restriction | nc | cd | c | no_right_turn |
| restriction | lc | ck | c | no_left_turn |
| restriction | lc | cd | c | no_right_turn |
| restriction | gh | ho | h | no_right_turn |
| restriction | gh | hl | h | no_left_turn |
| restriction | kh | hi | h | no_left_turn |
| restriction | kh | hl | h | no_right_turn |
| restriction | ph | ho | h | no_left_turn |
| restriction | ph | hi | h | no_right_turn |
When I route I should get
| waypoints | route | turns |
| a,e | hohe,hohe | depart,arrive |
| a,s | hohe,a100,a100 | depart,on ramp left,arrive |
| a,t | hohe,a100,a100 | depart,on ramp right,arrive |
| a,j | | |
| f,j | hohe,hohe | depart,arrive |
| a,t | hohe,a100,a100 | depart,on ramp right,arrive |
| f,e | | |
| q,j | a100,hohe,hohe | depart,turn right,arrive |
| q,e | a100,a100,hohe | depart,continue left,arrive |
+38 -23
View File
@@ -7,8 +7,10 @@ Feature: Continue Instructions
Scenario: Road turning left
Given the node map
| | | c | |
| a | | b | d |
"""
c
a b d
"""
And the ways
| nodes | highway |
@@ -22,8 +24,10 @@ Feature: Continue Instructions
Scenario: Road turning left and straight
Given the node map
| | | c | |
| a | | b | d |
"""
c
a b d
"""
And the ways
| nodes | highway | name |
@@ -37,9 +41,11 @@ Feature: Continue Instructions
Scenario: Road turning left and straight
Given the node map
| | | c | |
| a | | b | d |
| | | e | |
"""
c
a b d
e
"""
And the ways
| nodes | highway | name |
@@ -55,8 +61,10 @@ Feature: Continue Instructions
Scenario: Road turning right
Given the node map
| a | | b | d |
| | | c | |
"""
a b d
c
"""
And the ways
| nodes | highway |
@@ -70,10 +78,12 @@ Feature: Continue Instructions
Scenario: Road turning slight left
Given the node map
| | | | | c |
| | | | | |
| a | | b | | |
| | | | d | |
"""
c
a b
d
"""
And the ways
| nodes | highway |
@@ -87,10 +97,12 @@ Feature: Continue Instructions
Scenario: Road turning slight right
Given the node map
| | | | d | |
| a | | b | | |
| | | | | |
| | | | | c |
"""
d
a b
c
"""
And the ways
| nodes | highway |
@@ -104,11 +116,13 @@ Feature: Continue Instructions
Scenario: Road Loop
Given the node map
| | | f | | e |
| | | | | |
| a | | b | g | |
| | | | | |
| | | c | | d |
"""
f e
a b g
c d
"""
And the ways
| nodes | highway |
@@ -120,4 +134,5 @@ Feature: Continue Instructions
| a,c | abcdefb,abcdefb,abcdefb | depart,continue right,arrive |
| a,f | abcdefb,abcdefb,abcdefb | depart,continue left,arrive |
| a,d | abcdefb,abcdefb,abcdefb | depart,continue right,arrive |
| a,e | abcdefb,abcdefb,abcdefb | depart,continue left,arrive |
# continuing right here, since the turn to the left is more expensive
| a,e | abcdefb,abcdefb,abcdefb | depart,continue right,arrive |
+238 -156
View File
@@ -7,43 +7,85 @@ Feature: Slipways and Dedicated Turn Lanes
Scenario: Turn Instead of Ramp
Given the node map
| | | | | e | |
| a | b | | | c | d |
| | | | h | | |
| | | | | | |
| | | | 1 | | |
| | | | | | |
| | | | | f | |
| | | | | | |
| | | | | g | |
"""
e
a b c d
h
1
f
g
"""
And the ways
| nodes | highway | name |
| abcd | trunk | first |
| abc | trunk | first |
| cd | trunk | first |
| bhf | trunk_link | |
| ecfg | primary | second |
| cfg | primary | second |
| ec | primary | second |
And the relations
| type | way:from | way:to | node:via | restriction |
| restriction | abcd | ecfg | c | no_right_turn |
| restriction | abc | cfg | c | no_right_turn |
When I route I should get
| waypoints | route | turns |
| a,g | first,second,second | depart,turn right,arrive |
| a,1 | first,, | depart,turn slight right,arrive |
Scenario: Turn Instead of Ramp - Max-Speed
Given the node map
"""
e
a-b-----c-------------------------d
`h |
||
1||
`|
f
|
g
"""
And the ways
| nodes | highway | name | maxspeed |
| abc | trunk | first | 70 |
| cd | trunk | first | 2 |
| bhf | trunk_link | | 2 |
| cfg | primary | second | 50 |
| ec | primary | second | 50 |
And the relations
| type | way:from | way:to | node:via | restriction |
| restriction | abc | cfg | c | no_right_turn |
When I route I should get
| waypoints | route | turns |
| a,g | first,second,second | depart,turn right,arrive |
| a,1 | first,, | depart,turn slight right,arrive |
Scenario: Turn Instead of Ramp
Given the node map
| | | | | e | |
| a | b | | | c | d |
| | | | h | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | f | |
| | | | | | |
| | | | | | |
| | | | | g | |
"""
e
a b c d
h
f
g
"""
And the ways
| nodes | highway | name |
@@ -55,18 +97,45 @@ Feature: Slipways and Dedicated Turn Lanes
| waypoints | route | turns |
| a,g | first,,second,second | depart,off ramp slight right,turn straight,arrive |
Scenario: Turn Instead of Ramp
Given the node map
"""
e
a b c d
h
f
g
"""
And the ways
| nodes | highway | name |
| abcd | motorway | first |
| bhf | motorway_link | |
| efg | primary | second |
When I route I should get
| waypoints | route | turns |
| a,g | first,,second,second | depart,off ramp slight right,turn straight,arrive |
Scenario: Inner city expressway with on road
Given the node map
| a | b | | | | c | g |
| | | | | f | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | d | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | e | |
"""
a b c g
f
d
e
"""
And the ways
| nodes | highway | name |
@@ -86,14 +155,16 @@ Feature: Slipways and Dedicated Turn Lanes
Scenario: Slipway Round U-Turn
Given the node map
| a | | f |
| | | |
| b | | e |
| | | |
| | | |
| | g | |
| | | |
| c | | d |
"""
a f
b e
g
c d
"""
And the ways
| nodes | highway | name | oneway |
@@ -107,13 +178,15 @@ Feature: Slipways and Dedicated Turn Lanes
Scenario: Slipway Steep U-Turn
Given the node map
| a | | f |
| | | |
| b | | e |
| | g | |
| | | |
| | | |
| c | | d |
"""
a f
b e
g
c d
"""
And the ways
| nodes | highway | name | oneway |
@@ -127,21 +200,23 @@ Feature: Slipways and Dedicated Turn Lanes
Scenario: Schwarzwaldstrasse Autobahn
Given the node map
| | | | | i | | | | | | h | | | | | g |
| | | j | | | | | | | | | | | | | |
| a | | | | | | | k | | | | | | | | |
| | | | b | | r | c | | d | | e | | | | | f |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | l | | | | | | | | | | |
| | | | | | m | | | | | | | | | | |
| | | | | | | n | | q | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | o | | p | | | | | | | |
"""
. i . . . . . h . . . . g
.j '. . '
a . k
' b . r c . d . e . . . . f
. . .
. . .
. . .
. . .
l . .
m . .
n q
. .
. .
. .
o p
"""
And the nodes
# the traffic light at `l` is not actually in the data, but necessary for the test to check everything
@@ -166,20 +241,22 @@ Feature: Slipways and Dedicated Turn Lanes
When I route I should get
| waypoints | route | turns | ref |
| a,o | Schwarzwaldstrasse,Ettlinger Allee,Ettlinger Allee | depart,turn right,arrive | L561,, |
| a,o | Schwarzwaldstrasse,Ettlinger Allee,Ettlinger Allee | depart,turn right,arrive | L561,L561, |
Scenario: Traffic Lights everywhere
#http://map.project-osrm.org/?z=18&center=48.995336%2C8.383813&loc=48.995467%2C8.384548&loc=48.995115%2C8.382761&hl=en&alt=0
Given the node map
| a | | | k | l | | | j | |
| | | | | | d | b | c | i |
| | | | | | | | | |
| | | | | | | e | g | |
| | | | | | | | | |
| | | | | | | 1 | | |
| | | | | | | | h | |
| | | | | | | | | |
| | | | | | | | f | |
"""
a k l j
d b c i
e g
1
h
f
"""
And the nodes
| node | highway |
@@ -194,33 +271,34 @@ Feature: Slipways and Dedicated Turn Lanes
| jcghf | primary | Brauerstrasse | yes |
When I route I should get
| waypoints | route | turns |
| a,i | Ebertstrasse,Ebertstrasse | depart,arrive |
| a,l | Ebertstrasse,Ebertstrasse | depart,arrive |
| a,f | Ebertstrasse,Brauerstrasse,Brauerstrasse | depart,turn right,arrive |
| a,1 | Ebertstrasse,, | depart,turn slight right,arrive |
| waypoints | route | turns |
| a,i | Ebertstrasse,Ebertstrasse | depart,arrive |
| a,l | Ebertstrasse,Ebertstrasse | depart,arrive |
| a,f | Ebertstrasse,Brauerstrasse,Brauerstrasse | depart,turn right,arrive |
| a,1 | Ebertstrasse,, | depart,turn right,arrive |
#2839
Scenario: Self-Loop
Given the node map
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| | | | | | | | | | | | | | | | | | | | | | l | | | k | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | j | | | |
| | | | | | | | | | | | | | | | | | | | m | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | n | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g |
| | | | | | | | | | | | | | | | | | | o | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f | |
| | | | | | | | | | | | | | | | | | p | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | e | | | |
| a | | | | | b | | | | | | | | | c | | | | | | | | | | d | | | | | | |
"""
l k
j
m
i
h
n
g
o
f
p
e
a b c d
"""
And the ways
| nodes | name | oneway | highway | lanes |
@@ -237,24 +315,25 @@ Feature: Slipways and Dedicated Turn Lanes
#has to remain as todo (see #https://github.com/Project-OSRM/osrm-backend/pull/2849)
Scenario: Self-Loop - Bidirectional
Given the node map
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| | | | | | | | | | | | | | | | | | | | | | l | | | k | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | j | | | |
| | | | | | | | | | | | | | | | | | | | m | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | n | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g |
| | | | | | | | | | | | | | | | | | | o | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f | |
| | | | | | | | | | | | | | | | | | p | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | e | | | |
| a | | | | | b | | | | | | | | | c | | | | | | | | | | d | | | | | | |
"""
l k
j
m
i
h
n
g
o
f
p
e
a b c d
"""
And the ways
| nodes | name | oneway | highway | lanes |
@@ -268,34 +347,35 @@ Feature: Slipways and Dedicated Turn Lanes
#http://www.openstreetmap.org/#map=19/38.90597/-77.01276
Scenario: Don't falsly classify as sliproads
Given the node map
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| | | | | | | | | | | | | | | | | | | | | | | | j | | | | | | | |
| a | b | | | | | | | | | | | | | | | | | | | | | | c | | | | | | | d |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | 1 | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | f | | | | | g | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | i | | | | | | | h |
"""
j
a b c d
e
1
f g
i h
"""
And the ways
| nodes | name | highway | oneway | maxspeed |
@@ -317,21 +397,23 @@ Feature: Slipways and Dedicated Turn Lanes
# Merging into degree two loop on dedicated turn detection / 2927
Scenario: Turn Instead of Ramp
Given the node map
| | | | | | | | | | | | | | | | f |
| | | | | g | | | | | | h | | | | | |
| | | | | | | | | | | | | d | | | e |
| i | | | | c | | | | | | j | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | b | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | a | | | | | | | | | | | | | |
"""
f
g h
d e
i c j
b
a
"""
And the ways
| nodes | highway | name | oneway |
+21 -19
View File
@@ -6,15 +6,17 @@ Feature: Destination Signs
Scenario: Car - route name assembly with destination signs
Given the node map
| a | b |
| c | d |
| e | f |
| g | h |
| i | j |
| k | l |
| m | n |
| o | p |
| q | r |
"""
a b
c d
e f
g h
i j
k l
m n
o p
q r
"""
And the ways
| nodes | name | ref | destination | destination:ref | oneway | # |
@@ -29,13 +31,13 @@ Feature: Destination Signs
| qr | QR | | | A1;A2 | yes | |
When I route I should get
| from | to | route | destinations | ref | # |
| a | b | AB,AB | , | E1,E1 | |
| c | d | CD,CD | Berlin,Berlin | , | |
| e | f | EF,EF | A1: Berlin,A1: Berlin | , | |
| g | h | , | A1: Berlin,A1: Berlin | , | |
| i | j | , | Berlin,Berlin | , | |
| k | l | KL,KL | A1: Berlin,A1: Berlin | E1,E1 | |
| m | n | MN,MN | A1, A2: Berlin, Hamburg,A1, A2: Berlin, Hamburg | , | |
| o | p | OP,OP | , | , | guard against mis-tagging |
| q | r | QR,QR | A1, A2,A1, A2 | , | |
| from | to | route | destinations | ref | # |
| a | b | AB,AB | , | E1,E1 | |
| c | d | CD,CD | Berlin,Berlin | , | |
| e | f | EF,EF | A1: Berlin,A1: Berlin | , | |
| g | h | , | A1: Berlin,A1: Berlin | , | |
| i | j | , | Berlin,Berlin | , | |
| k | l | KL,KL | A1: Berlin,A1: Berlin | E1,E1 | |
| m | n | MN,MN | A1, A2: Berlin, Hamburg,A1, A2: Berlin, Hamburg | , | |
| o | p | OP,OP | , | , | guard against mis-tagging |
| q | r | QR,QR | A1, A2,A1, A2 | , | |
@@ -0,0 +1,43 @@
@routing @guidance
Feature: Destination Signs
Background:
Given the profile "car"
Scenario: Car - route name assembly with destination signs accounting for directional tags
Given the node map
"""
a b
c d
e f
g h
i j
k l
m n
o p
q r
"""
And the ways
| nodes | name | ref | destination | destination:ref | destination:forward | destination:backward | oneway | # |
| ab | AB | | Berlin | | | | yes | |
| cd | CD | | | | Berlin | | yes | |
| ef | EF | | | | Berlin | Hamburg | -1 | |
| gh | GH | | | A1 | | | yes | |
| ij | IJ | | Berlin | A1 | | | no | mis-tagged destination: not a oneway |
| kl | KL | | | A1 | Berlin | Hamburg | yes | |
| mn | MN | | Berlin | A1 | Berlin | Hamburg | yes | |
| op | OP | | Berlin | | | Hamburg | -1 | |
| qr | QR | | | | | Hamburg | -1 | |
When I route I should get
| from | to | route | destinations | ref | # |
| a | b | AB,AB | Berlin,Berlin | , | |
| c | d | CD,CD | Berlin,Berlin | , | |
| f | e | EF,EF | Hamburg,Hamburg | , | |
| g | h | GH,GH | A1,A1 | , | |
| i | j | IJ,IJ | , | , | guard against mis-tagging |
| k | l | KL,KL | A1: Berlin,A1: Berlin | , | |
| m | n | MN,MN | A1: Berlin,A1: Berlin | , | |
| p | o | OP,OP | Hamburg,Hamburg | , | |
| r | q | QR,QR | Hamburg,Hamburg | , | |
@@ -0,0 +1,39 @@
@routing @guidance
Feature: Destination Signs
Background:
Given the profile "car"
Scenario: Car - route name assembly with destination signs accounting for directional:ref tags
Given the node map
"""
a b
c d
e f
g h
i j
k l
m n
o p
q r
"""
And the ways
| nodes | name | destination | destination:ref | destination:ref:forward | destination:ref:backward | destination:forward | destination:backward | oneway | # |
| ab | AB | Berlin | A1 | A1 | A2 | | | yes | |
| cd | CD | | A1 | A1 | A2 | Berlin | Hamburg | -1 | |
| ef | EF | | | A1 | A2 | Berlin | Hamburg | yes | |
| gh | GH | | | A1 | A2 | Berlin | Hamburg | -1 | |
| ij | IJ | Berlin | A1 | | A2 | Berlin | Hamburg | yes | |
| kl | KL | | A1 | | A2 | Berlin | Hamburg | -1 | |
| mn | MN | Berlin | A1 | A1 | | Berlin | Hamburg | no | mis-tagged destination: not a oneway |
When I route I should get
| from | to | route | destinations | ref | # |
| a | b | AB,AB | A1: Berlin,A1: Berlin | , | |
| d | c | CD,CD | A2: Hamburg,A2: Hamburg | , | |
| e | f | EF,EF | A1: Berlin,A1: Berlin | , | |
| h | g | GH,GH | A2: Hamburg,A2: Hamburg | , | |
| i | j | IJ,IJ | A1: Berlin,A1: Berlin | , | |
| l | k | KL,KL | A2: Hamburg,A2: Hamburg | , | |
| m | n | MN,MN | , | , | guard against mis-tagging |
+50 -34
View File
@@ -7,9 +7,11 @@ Feature: End Of Road Instructions
Scenario: End of Road with through street
Given the node map
| | | c |
| a | e | b |
| | f | d |
"""
c
a e b
f d
"""
And the ways
| nodes | highway |
@@ -24,9 +26,11 @@ Feature: End Of Road Instructions
Scenario: End of Road with three streets
Given the node map
| | | c |
| a | e | b |
| | f | d |
"""
c
a e b
f d
"""
And the ways
| nodes | highway |
@@ -42,9 +46,11 @@ Feature: End Of Road Instructions
Scenario: End of Road with three streets, slightly angled
Given the node map
| a | e | | | | c |
| | f | | | | b |
| | | | | | d |
"""
a e c
f b
d
"""
And the ways
| nodes | highway |
@@ -60,9 +66,11 @@ Feature: End Of Road Instructions
Scenario: End of Road with three streets, slightly angled
Given the node map
| | | | | | c |
| | f | | | | b |
| a | e | | | | d |
"""
c
f b
a e d
"""
And the ways
| nodes | highway |
@@ -78,9 +86,11 @@ Feature: End Of Road Instructions
Scenario: End of Road with through street, slightly angled
Given the node map
| a | e | | | | c |
| | f | | | | b |
| | | | | | d |
"""
a e c
f b
d
"""
And the ways
| nodes | highway |
@@ -95,9 +105,11 @@ Feature: End Of Road Instructions
Scenario: End of Road with through street, slightly angled
Given the node map
| | | | | | c |
| | f | | | | b |
| a | e | | | | d |
"""
c
f b
a e d
"""
And the ways
| nodes | highway |
@@ -112,9 +124,11 @@ Feature: End Of Road Instructions
Scenario: End of Road with two ramps - prefer ramp over end of road
Given the node map
| | | c |
| a | e | b |
| | f | d |
"""
c
a e b
f d
"""
And the ways
| nodes | highway |
@@ -132,19 +146,21 @@ Feature: End Of Road Instructions
@end-of-road @negative
Scenario: Don't Handle Circles as End-Of-Road
Given the node map
| | r | | | | q | | | | | | |
| | | | | | a | s | | | | | |
| | | | b | | | | | | | | |
| | | | | | | | j | | | | |
| | | | | | | | | | | | |
| l | | c | | | | | i | | | | k |
| | | | | | | | | | | | |
| | | | | | | | h | | | | |
| m | | | | | | | | | | | |
| | | d | | | | | | | | | n |
| | | | e | | | g | | | | | |
| | | | | f | | | | | | | |
| | | | | o | | p | | | | | |
"""
r q
a s
b
j
l c i k
h
m
d n
e g
f
o p
"""
And the ways
| nodes | highway | name | oneway |
+125 -54
View File
@@ -7,9 +7,11 @@ Feature: Fork Instructions
Scenario: Fork Same Road Class
Given the node map
| | | | | c |
| a | | b | | |
| | | | | d |
"""
c
a b
d
"""
And the ways
| nodes | highway |
@@ -22,11 +24,48 @@ Feature: Fork Instructions
| a,c | ab,bc,bc | depart,fork slight left,arrive |
| a,d | ab,bd,bd | depart,fork slight right,arrive |
Scenario: Don't Fork On Single Road
Given the node map
"""
c
a b
d
"""
And the ways
| nodes | highway | oneway |
| ab | primary | no |
| cb | primary | yes |
| bd | primary | yes |
When I route I should get
| waypoints | route | turns |
| a,d | ab,bd,bd | depart,new name slight right,arrive |
Scenario: Don't Fork On Single Road
Given the node map
"""
c
a b d
"""
And the ways
| nodes | highway | oneway | name |
| ab | primary | no | road |
| cb | primary | yes | road |
| bd | primary | yes | turn |
When I route I should get
| waypoints | route | turns |
| a,d | road,turn,turn | depart,new name straight,arrive |
Scenario: Do not fork on link type
Given the node map
| | | | | c |
| a | | b | | |
| | | | | d |
"""
c
a b
d
"""
And the ways
| nodes | highway |
@@ -41,9 +80,11 @@ Feature: Fork Instructions
Scenario: Fork in presence of other roads
Given the node map
| | | | | c |
| a | | b | | |
| | e | | | d |
"""
c
a b
e d
"""
And the ways
| nodes | highway |
@@ -59,10 +100,12 @@ Feature: Fork Instructions
Scenario: Fork Turning Slight Left
Given the node map
| | | | | | c |
| | | | | | |
| a | | b | | | |
| | | | | d | |
"""
c
a b
d
"""
And the ways
| nodes | highway |
@@ -77,10 +120,12 @@ Feature: Fork Instructions
Scenario: Fork Turning Slight Right
Given the node map
| | | | | c | |
| a | | b | | | |
| | | | | | |
| | | | | | d |
"""
c
a b
d
"""
And the ways
| nodes | highway |
@@ -95,9 +140,11 @@ Feature: Fork Instructions
Scenario: Do not fork on service
Given the node map
| | | | | c |
| a | | b | | |
| | | | | d |
"""
c
a b
d
"""
And the ways
| nodes | highway |
@@ -111,9 +158,11 @@ Feature: Fork Instructions
Scenario: Fork Both Turning Slight Right
Given the node map
| a | | b | | | |
| | | | | | c |
| | | | | | d |
"""
a b
c
d
"""
And the ways
| nodes | highway |
@@ -128,9 +177,11 @@ Feature: Fork Instructions
Scenario: Fork Both Turning Slight Left
Given the node map
| | | | | | c |
| | | | | | d |
| a | | b | | | |
"""
c
d
a b
"""
And the ways
| nodes | highway |
@@ -145,9 +196,11 @@ Feature: Fork Instructions
Scenario: Fork Both Turning Slight Right - Unnamed
Given the node map
| a | | b | | | |
| | | | | | c |
| | | | | | d |
"""
a b
c
d
"""
And the ways
| nodes | highway | name |
@@ -162,9 +215,11 @@ Feature: Fork Instructions
Scenario: Fork Both Turning Slight Left - Unnamed
Given the node map
| | | | | | c |
| | | | | | d |
| a | | b | | | |
"""
c
d
a b
"""
And the ways
| nodes | highway | name |
@@ -179,9 +234,11 @@ Feature: Fork Instructions
Scenario: Fork Both Turning Very Slightly Right - Unnamed
Given the node map
| a | | b | | | | | | | | | | | | | | | |
| | | | | | | | | | | | c | | | | | | |
| | | | | | | | | | | | | | | | | | d |
"""
a b
c
d
"""
And the ways
| nodes | highway | name |
@@ -196,9 +253,11 @@ Feature: Fork Instructions
Scenario: Fork Both Turning Very Slightly Right - Unnamed Ramps
Given the node map
| a | | b | | | | | | | | | | | | | | | |
| | | | | | | | | | | | c | | | | | | |
| | | | | | | | | | | | | | | | | | d |
"""
a b
c
d
"""
And the ways
| nodes | highway | name |
@@ -213,9 +272,11 @@ Feature: Fork Instructions
Scenario: Non-Fork on complex intersection - left
Given the node map
| | | | | c |
| a | | b | | |
| | e | | | d |
"""
c
a b
e d
"""
And the ways
| nodes | highway |
@@ -230,9 +291,11 @@ Feature: Fork Instructions
Scenario: Non-Fork on complex intersection - right
Given the node map
| | e | | | c |
| a | | b | | |
| | | | | d |
"""
e c
a b
d
"""
And the ways
| nodes | highway |
@@ -247,9 +310,11 @@ Feature: Fork Instructions
Scenario: Tripple fork
Given the node map
| | | | | | | | | c |
| a | | b | | d | | | | |
| | | | | | | | | e |
"""
c
a b d
e
"""
And the ways
| nodes | highway |
@@ -266,9 +331,11 @@ Feature: Fork Instructions
Scenario: Tripple fork -- middle obvious
Given the node map
| | | | | c |
| a | | b | | d |
| | | | | e |
"""
c
a b d
e
"""
And the ways
| nodes | highway |
@@ -284,8 +351,10 @@ Feature: Fork Instructions
Scenario: Don't Fork when leaving Road
Given the node map
| a | | b | | c |
| | | | | d |
"""
a b c
d
"""
And the ways
| nodes | highway |
@@ -299,8 +368,10 @@ Feature: Fork Instructions
Scenario: Fork on motorway links - don't fork on through
Given the node map
| i | | | | | a |
| j | | c | b | | x |
"""
i a
j c b x
"""
And the ways
| nodes | name | highway |
+39 -25
View File
@@ -7,8 +7,10 @@ Feature: Intersections Data
Scenario: Passing Three Way South
Given the node map
| a | | b | | c |
| | | d | | |
"""
a b c
d
"""
And the ways
| nodes | name |
@@ -22,8 +24,10 @@ Feature: Intersections Data
Scenario: Passing Three Way North
Given the node map
| | | d | | |
| a | | b | | c |
"""
d
a b c
"""
And the ways
| nodes | name |
@@ -37,8 +41,10 @@ Feature: Intersections Data
Scenario: Passing Oneway Street In
Given the node map
| | | d | | |
| a | | b | | c |
"""
d
a b c
"""
And the ways
| nodes | name | oneway |
@@ -52,8 +58,10 @@ Feature: Intersections Data
Scenario: Passing Oneway Street Out
Given the node map
| | | d | | |
| a | | b | | c |
"""
d
a b c
"""
And the ways
| nodes | name | oneway |
@@ -67,9 +75,11 @@ Feature: Intersections Data
Scenario: Passing Two Intersections
Given the node map
| | | e | | | | |
| a | | b | | c | | d |
| | | | | f | | |
"""
e
a b c d
f
"""
And the ways
| nodes | name |
@@ -85,9 +95,11 @@ Feature: Intersections Data
Scenario: Passing Two Intersections, Collapsing
Given the node map
| | | e | | | | |
| a | | b | | c | | d |
| | | | | f | | |
"""
e
a b c d
f
"""
And the ways
| nodes | name |
@@ -104,17 +116,19 @@ Feature: Intersections Data
Scenario: Roundabouts
Given the node map
| | | | | e | | | | |
| | | | | | | | | |
| | | | | a | | | | |
| | | | 1 | | 4 | | | |
| | | | | | | | | |
| f | | b | | | | d | | h |
| | | | | | | | | |
| | | | 2 | | 3 | | | |
| | | | | c | | | | |
| | | | | | | | | |
| | | | | g | | | | |
"""
e
a
1 4
f b d h
2 3
c
g
"""
And the ways
| nodes | junction |
+40 -28
View File
@@ -8,9 +8,11 @@ Feature: Merging
@merge
Scenario: Merge on Four Way Intersection
Given the node map
| d | | | | | | | | | |
| a | | b | | | | | | | c |
| e | | | | | | | | | |
"""
d
a b c
e
"""
And the ways
| nodes | highway |
@@ -26,8 +28,10 @@ Feature: Merging
@merge
Scenario: Merge on Three Way Intersection Right
Given the node map
| d | | | | | | | | | |
| a | | b | | | | | | | c |
"""
d
a b c
"""
And the ways
| nodes | highway |
@@ -41,8 +45,10 @@ Feature: Merging
@merge @negative
Scenario: Don't Merge on Short-Three Way Intersection Right
Given the node map
| d | | | | | | | |
| a | | b | | | | | c |
"""
d
a b c
"""
And the ways
| nodes | highway |
@@ -57,8 +63,10 @@ Feature: Merging
@merge
Scenario: Merge on Three Way Intersection Right
Given the node map
| a | | b | | | | | | | c |
| d | | | | | | | | | |
"""
a b c
d
"""
And the ways
| nodes | highway |
@@ -72,23 +80,25 @@ Feature: Merging
@merge
Scenario: Merge onto a turning road
Given the node map
| | | | | | | e |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | d | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | c | | |
| | | | b | | | |
| a | | | | | | f |
"""
e
d
c
b
a f
"""
And the ways
| nodes | highway | name |
@@ -103,8 +113,10 @@ Feature: Merging
@merge
Scenario: Merge onto a motorway
Given the node map
| d | | | | | | | | | |
| a | | | b | | | | | | c |
"""
d
a b c
"""
And the ways
| nodes | name | highway | oneway |
+64 -36
View File
@@ -7,8 +7,10 @@ Feature: Motorway Guidance
Scenario: Ramp Exit Right
Given the node map
| a | b | c | d | e |
| | | | f | g |
"""
a b c d e
f g
"""
And the ways
| nodes | highway | oneway |
@@ -22,9 +24,11 @@ Feature: Motorway Guidance
Scenario: Ramp Exit Right Curved Right
Given the node map
| a | b | c | | |
| | | f | d | |
| | | | g | e |
"""
a b c
f d
g e
"""
And the ways
| nodes | highway | oneway |
@@ -38,9 +42,11 @@ Feature: Motorway Guidance
Scenario: Ramp Exit Right Curved Left
Given the node map
| | | | | e |
| | | | d | g |
| a | b | c | f | |
"""
e
d g
a b c f
"""
And the ways
@@ -56,8 +62,10 @@ Feature: Motorway Guidance
Scenario: Ramp Exit Left
Given the node map
| | | | f | g |
| a | b | c | d | e |
"""
f g
a b c d e
"""
And the ways
| nodes | highway | oneway |
@@ -71,9 +79,11 @@ Feature: Motorway Guidance
Scenario: Ramp Exit Left Curved Left
Given the node map
| | | | g | e |
| | | f | d | |
| a | b | c | | |
"""
g e
f d
a b c
"""
And the ways
| nodes | highway | oneway |
@@ -87,9 +97,11 @@ Feature: Motorway Guidance
Scenario: Ramp Exit Left Curved Right
Given the node map
| a | b | c | f | |
| | | | d | g |
| | | | | e |
"""
a b c f
d g
e
"""
And the ways
| nodes | highway | oneway |
@@ -103,8 +115,10 @@ Feature: Motorway Guidance
Scenario: On Ramp Right
Given the node map
| a | b | c | d | e |
| f | g | | | |
"""
a b c d e
f g
"""
And the ways
| nodes | highway | oneway |
@@ -118,8 +132,10 @@ Feature: Motorway Guidance
Scenario: On Ramp Left
Given the node map
| f | g | | | |
| a | b | c | d | e |
"""
f g
a b c d e
"""
And the ways
| nodes | highway | oneway |
@@ -133,9 +149,11 @@ Feature: Motorway Guidance
Scenario: Highway Fork
Given the node map
| | | | | d | e |
| a | b | c | | | |
| | | | | f | g |
"""
d e
a b c
f g
"""
And the ways
| nodes | highway |
@@ -149,9 +167,11 @@ Feature: Motorway Guidance
Scenario: Fork After Ramp
Given the node map
| | | | | d | e |
| a | b | c | | | |
| | | | | f | g |
"""
d e
a b c
f g
"""
And the ways
| nodes | highway | oneway |
@@ -166,8 +186,10 @@ Feature: Motorway Guidance
Scenario: On And Off Ramp Right
Given the node map
| a | b | | c | | d | e |
| f | g | | | | h | i |
"""
a b c d e
f g h i
"""
And the ways
| nodes | highway | oneway |
@@ -184,8 +206,10 @@ Feature: Motorway Guidance
Scenario: On And Off Ramp Left
Given the node map
| f | g | | | | h | i |
| a | b | | c | | d | e |
"""
f g h i
a b c d e
"""
And the ways
| nodes | highway | oneway |
@@ -202,9 +226,11 @@ Feature: Motorway Guidance
Scenario: Merging Motorways
Given the node map
| e | | |
| a | b | c |
| d | | |
"""
e
a b c
d
"""
And the ways
| nodes | highway |
@@ -219,9 +245,11 @@ Feature: Motorway Guidance
Scenario: Handle 90 degree off ramps correctly
Given the node map
| a | | | | |
| x | b | | c | y |
| | | | d | |
"""
a
x b c y
d
"""
And the ways
| nodes | name | highway | oneway |
+110 -32
View File
@@ -7,7 +7,9 @@ Feature: New-Name Instructions
Scenario: Undisturbed name Change
Given the node map
| a | | b | | c |
"""
a b c
"""
And the ways
| nodes |
@@ -21,8 +23,10 @@ Feature: New-Name Instructions
Scenario: Undisturbed Name Change with unannounced Turn Right
Given the node map
| a | | b | | |
| | | | | c |
"""
a b
c
"""
And the ways
| nodes |
@@ -35,8 +39,10 @@ Feature: New-Name Instructions
Scenario: Undisturbed Name Change with unannounced Turn Left
Given the node map
| | | | | c |
| a | | b | | |
"""
c
a b
"""
And the ways
| nodes |
@@ -49,8 +55,10 @@ Feature: New-Name Instructions
Scenario: Disturbed Name Change with Turn
Given the node map
| a | | b | | |
| | d | | | c |
"""
a b
d c
"""
And the ways
| nodes |
@@ -64,8 +72,10 @@ Feature: New-Name Instructions
Scenario: Undisturbed Name Change with announced Turn Left
Given the node map
| | | c |
| a | | b |
"""
c
a b
"""
And the ways
| nodes |
@@ -78,8 +88,10 @@ Feature: New-Name Instructions
Scenario: Undisturbed Name Change with announced Turn Sharp Left
Given the node map
| c | | |
| a | | b |
"""
c
a b
"""
And the ways
| nodes |
@@ -92,8 +104,10 @@ Feature: New-Name Instructions
Scenario: Undisturbed Name Change with announced Turn Right
Given the node map
| a | | b |
| | | c |
"""
a b
c
"""
And the ways
| nodes |
@@ -106,8 +120,10 @@ Feature: New-Name Instructions
Scenario: Undisturbed Name Change with announced Turn Sharp Right
Given the node map
| a | | b |
| c | | |
"""
a b
c
"""
And the ways
| nodes |
@@ -121,8 +137,10 @@ Feature: New-Name Instructions
Scenario: Disturbed Name Change with minor road class
Given the node map
| a | | b | | d |
| | | | | c |
"""
a b d
c
"""
And the ways
| nodes | highway | oneway |
@@ -136,7 +154,9 @@ Feature: New-Name Instructions
Scenario: Empty road names - Announce Change From, suppress Change To
Given the node map
| a | | b | 1 | c | | d |
"""
a b 1 c d
"""
And the ways
| nodes | name |
@@ -151,7 +171,9 @@ Feature: New-Name Instructions
Scenario: Empty road names - Loose name shortly
Given the node map
| a | | b | | c | | d | | e |
"""
a b c d e
"""
And the ways
| nodes | name |
@@ -167,7 +189,9 @@ Feature: New-Name Instructions
Scenario: Both Name and Ref Empty
Given the node map
| a | | b | | c |
"""
a b c
"""
And the ways
| nodes | name | ref |
@@ -180,7 +204,9 @@ Feature: New-Name Instructions
Scenario: Same Name, Ref Extended
Given the node map
| a | | b | | c |
"""
a b c
"""
And the ways
| nodes | name | ref |
@@ -193,7 +219,9 @@ Feature: New-Name Instructions
Scenario: Same Name, Ref Removed
Given the node map
| a | | b | | c |
"""
a b c
"""
And the ways
| nodes | name | ref |
@@ -206,7 +234,9 @@ Feature: New-Name Instructions
Scenario: Name Removed, Ref Extended
Given the node map
| a | | b | | c |
"""
a b c
"""
And the ways
| nodes | name | ref |
@@ -219,7 +249,9 @@ Feature: New-Name Instructions
Scenario: Name Added, Ref Removed
Given the node map
| a | | b | | c |
"""
a b c
"""
And the ways
| nodes | name | ref |
@@ -232,7 +264,9 @@ Feature: New-Name Instructions
Scenario: Prefix Change
Given the node map
| a | | | | b | | | | c |
"""
a b c
"""
And the ways
| nodes | name | ref | highway |
@@ -245,7 +279,9 @@ Feature: New-Name Instructions
Scenario: Prefix Change
Given the node map
| a | | | | b | | | | c |
"""
a b c
"""
And the ways
| nodes | name | ref | highway |
@@ -258,7 +294,9 @@ Feature: New-Name Instructions
Scenario: No Name, Same Reference
Given the node map
| a | | | | b | | | | c |
"""
a b c
"""
And the ways
| nodes | name | ref | highway |
@@ -271,7 +309,9 @@ Feature: New-Name Instructions
Scenario: No Name, Same Reference
Given the node map
| a | | | | b | | | | c |
"""
a b c
"""
And the ways
| nodes | name | ref | highway |
@@ -284,7 +324,9 @@ Feature: New-Name Instructions
Scenario: No Name, Same Reference
Given the node map
| a | | | | b | | | | c |
"""
a b c
"""
And the ways
| nodes | name | ref | highway |
@@ -297,7 +339,9 @@ Feature: New-Name Instructions
Scenario: No Name, Same Reference
Given the node map
| a | | | | b | | | | c |
"""
a b c
"""
And the ways
| nodes | name | ref | highway |
@@ -310,7 +354,9 @@ Feature: New-Name Instructions
Scenario: No Name, Same Reference
Given the node map
| a | | | | b | | | | c |
"""
a b c
"""
And the ways
| nodes | name | ref | highway |
@@ -323,7 +369,9 @@ Feature: New-Name Instructions
Scenario: No Name, Same Reference
Given the node map
| a | | | | b | | | | c |
"""
a b c
"""
And the ways
| nodes | name | ref | highway |
@@ -333,3 +381,33 @@ Feature: New-Name Instructions
When I route I should get
| waypoints | route | turns |
| a,c | , | depart,arrive |
Scenario: Spaces in refs for containment check, #3086
Given the node map
"""
a b c
"""
And the ways
| nodes | name | ref | highway |
| ab | Keystone | US 64;US 412;OK 151 Detour | motorway |
| bc | Keystone | US 64; US 412 | motorway |
When I route I should get
| waypoints | route | turns |
| a,c | Keystone,Keystone | depart,arrive |
Scenario: More spaces in refs for containment check, #3086
Given the node map
"""
a b c
"""
And the ways
| nodes | name | ref | highway |
| ab | Keystone | US 64; US 412 ; OK 151 Detour | motorway |
| bc | Keystone | US 64 ; US 412 | motorway |
When I route I should get
| waypoints | route | turns |
| a,c | Keystone,Keystone | depart,arrive |
+63
View File
@@ -0,0 +1,63 @@
@routing @guidance @mode-change
Feature: Notification on turn onto mode change
Background:
Given the profile "car"
Given a grid size of 400 meters
Scenario: Turn onto a Ferry
Given the node map
"""
f
b d
a e
"""
And the ways
| nodes | highway | route | name |
| abf | primary | | |
| bd | | ferry | ferry |
| de | primary | | |
When I route I should get
| waypoints | route | turns | modes |
| a,e | ,ferry,, | depart,turn right,notification right,arrive | driving,ferry,driving,driving |
Scenario: Turn onto a Ferry
Given the node map
"""
h g
a c e
b f
"""
And the ways
| nodes | highway | route | name |
| ac | primary | | |
| bah | primary | | |
| ec | | ferry | ferry |
| gef | primary | | |
When I route I should get
| waypoints | route | turns | modes |
| g,h | ,ferry,,, | depart,turn right,notification straight,turn right,arrive | driving,ferry,driving,driving,driving |
| b,g | ,,ferry,, | depart,turn right,notification straight,turn left,arrive | driving,driving,ferry,driving,driving |
Scenario: Straight onto a Ferry
Given the node map
"""
c d i
a
f
"""
And the ways
| nodes | highway | route | name |
| ac | primary | | |
| dc | | ferry | ferry |
| df | primary | | |
When I route I should get
| waypoints | route | turns | modes |
| a,f | ,ferry,, | depart,notification right,notification right,arrive | driving,ferry,driving,driving |
+112 -46
View File
@@ -7,15 +7,17 @@ Feature: Simple Turns
Scenario: Turning into splitting road
Given the node map
| | a | | |
| | b | | |
| | | | |
| | | | |
| c | | d | |
| | | | |
| | | | e |
| | | | |
| | | f | |
"""
a
b
c d
e
f
"""
And the ways
| nodes | name | highway | oneway |
@@ -29,20 +31,52 @@ Feature: Simple Turns
| f,a | depart,arrive | road,road |
| e,a | depart,turn slight right,arrive | turn,road,road |
Scenario: Turning into splitting road
Given the node map
"""
a
g-b
/\
/ \
c d
|\
| e
|
f
"""
And the ways
| nodes | name | highway | oneway |
| ab | road | primary | no |
| bc | road | primary | yes |
| fdb | road | primary | yes |
| de | turn | primary | no |
| bg | left | primary | yes |
When I route I should get
| waypoints | turns | route |
| f,a | depart,arrive | road,road |
| e,a | depart,turn slight right,arrive | turn,road,road |
| e,g | depart,turn slight right,turn left,arrive | turn,road,left,left |
| f,g | depart,turn left,arrive | road,left,left |
| f,c | depart,continue uturn,arrive | road,road,road |
Scenario: Middle Island
Given the node map
| | a | |
| | | |
| | b | |
| c | | h |
| | | |
| | | |
| | | |
| | | |
| d | | g |
| | e | |
| | | |
| | f | |
"""
a
b
c h
d g
e
f
"""
And the ways
| nodes | name | oneway |
@@ -60,18 +94,20 @@ Feature: Simple Turns
Scenario: Middle Island Over Bridge
Given the node map
| | a | |
| | | |
| | b | |
| c | | h |
| | | |
| | | |
| 1 | | 2 |
| | | |
| d | | g |
| | e | |
| | | |
| | f | |
"""
a
b
c h
1 2
d g
e
f
"""
And the ways
| nodes | name | oneway |
@@ -96,19 +132,21 @@ Feature: Simple Turns
@negative
Scenario: Don't Collapse Places:
Given the node map
| | | | | | | h | | | | | | |
| | | | | | | g | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| a | b | | | | | | | | | | e | f |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | c | | | | | | |
| | | | | | | d | | | | | | |
"""
h
g
a b e f
c
d
"""
And the ways
| nodes | name | oneway |
@@ -124,3 +162,31 @@ Feature: Simple Turns
| a,f | depart,continue left,continue right,arrive | place,place,place,place |
| d,f | depart,turn right,continue right,arrive | bottom,place,place,place |
| d,h | depart,turn right,continue left,turn right,arrive | bottom,place,place,top,top |
@bug @not-sorted @3179
Scenario: Adjusting road angles to not be sorted
Given the node map
"""
g
|
|
|
_e - - - - - - - - - f
/
a - - - - -b <
i \ _
h c - - - - - - - - - d
"""
And the ways
| nodes | name | oneway |
| ab | road | no |
| febcd | road | yes |
| ge | in | yes |
| eh | right | yes |
| ei | left | yes |
When I route I should get
| waypoints | route |
| g,a | in,road,road |
+5 -3
View File
@@ -8,9 +8,11 @@ Feature: General Post-Processing related features
# this testcase used to crash geometry generation (at that time handled during intersection generation)
Scenario: Regression test #2424
Given the node map
| | | e | | | | | | i | | | | |
| a | | b | | c | | d | | h | | k | | m |
| | | | | f | | | | | | l | | |
"""
e i
a b c d h k m
f l
"""
And the ways
| nodes | name |
+87 -38
View File
@@ -7,8 +7,10 @@ Feature: Ramp Guidance
Scenario: Ramp On Through Street Right
Given the node map
| a | b | c |
| | d | |
"""
a b c
d
"""
And the ways
| nodes | highway |
@@ -21,8 +23,10 @@ Feature: Ramp Guidance
Scenario: Ramp On Through Street Left
Given the node map
| | d | |
| a | b | c |
"""
d
a b c
"""
And the ways
| nodes | highway |
@@ -35,9 +39,11 @@ Feature: Ramp Guidance
Scenario: Ramp On Through Street Left and Right
Given the node map
| | e | |
| a | b | c |
| | d | |
"""
e
a b c
d
"""
And the ways
| nodes | highway |
@@ -52,8 +58,10 @@ Feature: Ramp Guidance
Scenario: Ramp On Three Way Intersection Right
Given the node map
| a | b | c |
| | d | |
"""
a b c
d
"""
And the ways
| nodes | highway |
@@ -67,9 +75,11 @@ Feature: Ramp Guidance
Scenario: Ramp On Three Way Intersection Right
Given the node map
| | | c |
| a | b | |
| | d | |
"""
c
a b
d
"""
And the ways
| nodes | highway |
@@ -83,9 +93,11 @@ Feature: Ramp Guidance
Scenario: Ramp Off Though Street
Given the node map
| | | | | c |
| a | | | b | |
| | | | d | |
"""
c
a b
d
"""
And the ways
| nodes | highway | oneway |
@@ -99,8 +111,10 @@ Feature: Ramp Guidance
Scenario: Straight Ramp Off Turning Though Street
Given the node map
| | | c |
| a | b | d |
"""
c
a b d
"""
And the ways
| nodes | highway |
@@ -114,9 +128,11 @@ Feature: Ramp Guidance
Scenario: Fork Ramp Off Turning Though Street
Given the node map
| | | c |
| a | b | |
| | | d |
"""
c
a b
d
"""
And the ways
| nodes | highway |
@@ -130,9 +146,11 @@ Feature: Ramp Guidance
Scenario: Fork Ramp
Given the node map
| | | c |
| a | b | |
| | | d |
"""
c
a b
d
"""
And the ways
| nodes | highway |
@@ -147,9 +165,11 @@ Feature: Ramp Guidance
Scenario: Fork Slight Ramp
Given the node map
| | | | c |
| a | b | | |
| | | | d |
"""
c
a b
d
"""
And the ways
| nodes | highway |
@@ -164,9 +184,11 @@ Feature: Ramp Guidance
Scenario: Fork Slight Ramp on Through Street
Given the node map
| | | | c |
| a | b | | |
| | | | d |
"""
c
a b
d
"""
And the ways
| nodes | highway |
@@ -180,9 +202,11 @@ Feature: Ramp Guidance
Scenario: Fork Slight Ramp on Obvious Through Street
Given the node map
| | | | c |
| a | b | | |
| | | | d |
"""
c
a b
d
"""
And the ways
| nodes | highway |
@@ -196,9 +220,11 @@ Feature: Ramp Guidance
Scenario: Two Ramps Joining into common Motorway
Given the node map
| a | | | |
| | | c | d |
| b | | | |
"""
a
c d
b
"""
And the ways
| nodes | highway |
@@ -213,9 +239,11 @@ Feature: Ramp Guidance
Scenario: Two Ramps Joining into common Motorway Unnamed
Given the node map
| a | | | |
| | | c | d |
| b | | | |
"""
a
c d
b
"""
And the ways
| nodes | highway | name |
@@ -227,3 +255,24 @@ Feature: Ramp Guidance
| waypoints | route | turns |
| a,d | , | depart,arrive |
| b,d | , | depart,arrive |
Scenario: Ferry Onto A Ramp
Given the node map
"""
d - e - g
|
a - b ~ ~ ~ ~ ~ ~ ~ c
` f
"""
And the ways
| nodes | highway | route | name | ref |
| ab | primary | | boarding | |
| bc | | ferry | boaty mc boatface | m2 |
| cf | | ferry | boaty mc boatface | |
| cd | | ferry | boaty mc boatface's cousin | |
| de | motorway_link | | | |
When I route I should get
| waypoints | route |
| a,e | boarding,boaty mc boatface,boaty mc boatface's cousin,, |
+35 -25
View File
@@ -7,11 +7,13 @@ Feature: Rotary
Scenario: Enter and Exit
Given the node map
| | | a | | |
| | | b | | |
| h | g | | c | d |
| | | e | | |
| | | f | | |
"""
a
b
h g c d
e
f
"""
And the ways
| nodes | junction |
@@ -38,11 +40,13 @@ Feature: Rotary
Scenario: Only Enter
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -69,11 +73,13 @@ Feature: Rotary
Scenario: Only Exit
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -101,11 +107,13 @@ Feature: Rotary
Scenario: Drive Around
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -133,11 +141,13 @@ Feature: Rotary
#needs to be adjusted when name-discovery works for entrys
Scenario: Mixed Entry and Exit
Given the node map
| | c | | a | |
| j | | b | | f |
| | k | | e | |
| l | | h | | d |
| | g | | i | |
"""
c a
j b f
k e
l h d
g i
"""
And the ways
| nodes | junction | oneway |
+65 -45
View File
@@ -7,11 +7,13 @@ Feature: Rotary
Scenario: Enter and Exit
Given the node map
| | | a | | |
| | | b | | |
| h | g | | c | d |
| | | e | | |
| | | f | | |
"""
a
b
h g c d
e
f
"""
And the ways
| nodes | junction |
@@ -38,11 +40,13 @@ Feature: Rotary
Scenario: Only Enter
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -69,11 +73,13 @@ Feature: Rotary
Scenario: Only Exit
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -101,11 +107,13 @@ Feature: Rotary
Scenario: Drive Around
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -133,11 +141,13 @@ Feature: Rotary
#needs to be adjusted when name-discovery works for entrys
Scenario: Mixed Entry and Exit
Given the node map
| | c | | a | |
| j | | b | | f |
| | k | | e | |
| l | | h | | d |
| | g | | i | |
"""
c a
j b f
k e
l h d
g i
"""
And the ways
| nodes | junction | oneway |
@@ -168,10 +178,12 @@ Feature: Rotary
Scenario: Collinear in X,Y
Given the node map
| a | | |
| b | | |
| c | d | f |
| e | | |
"""
a
b
c d f
e
"""
And the ways
| nodes | junction |
@@ -187,10 +199,12 @@ Feature: Rotary
Scenario: Collinear in X,Y
Given the node map
| a | | |
| d | | |
| b | c | f |
| e | | |
"""
a
d
b c f
e
"""
And the ways
| nodes | junction |
@@ -206,10 +220,12 @@ Feature: Rotary
Scenario: Collinear in X,Y
Given the node map
| a | | |
| c | | |
| d | b | f |
| e | | |
"""
a
c
d b f
e
"""
And the ways
| nodes | junction |
@@ -225,10 +241,12 @@ Feature: Rotary
Scenario: Collinear in X,Y
Given the node map
| f | | |
| d | c | e |
| | b | |
| | a | |
"""
f
d c e
b
a
"""
And the ways
| nodes | junction |
@@ -244,10 +262,12 @@ Feature: Rotary
Scenario: Collinear in X,Y
Given the node map
| f | | |
| d | c | e |
| b | | |
| a | | |
"""
f
d c e
b
a
"""
And the ways
| nodes | junction |
+28 -20
View File
@@ -7,11 +7,13 @@ Feature: Basic Roundabout
Scenario: Only Enter
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -38,11 +40,13 @@ Feature: Basic Roundabout
Scenario: Only Exit
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -70,11 +74,13 @@ Feature: Basic Roundabout
Scenario: Drive Around
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -101,11 +107,13 @@ Feature: Basic Roundabout
Scenario: Mixed Entry and Exit
Given the node map
| | c | | a | |
| j | | b | | f |
| | k | | e | |
| l | | h | | d |
| | g | | i | |
"""
c a
j b f
k e
l h d
g i
"""
And the ways
| nodes | junction | oneway |
@@ -7,11 +7,13 @@ Feature: Basic Roundabout
Scenario: Enter and Exit
Given the node map
| | | a | | |
| | | b | | |
| h | g | | c | d |
| | | e | | |
| | | f | | |
"""
a
b
h g c d
e
f
"""
And the ways
| nodes | junction |
+157 -99
View File
@@ -7,11 +7,13 @@ Feature: Basic Roundabout
Scenario: Enter and Exit
Given the node map
| | | a | | |
| | | b | | |
| h | g | | c | d |
| | | e | | |
| | | f | | |
"""
a
b
h g c d
e
f
"""
And the ways
| nodes | junction |
@@ -38,10 +40,12 @@ Feature: Basic Roundabout
Scenario: Enter and Exit - Rotated
Given the node map
| a | | | d |
| | b | c | |
| | g | e | |
| h | | | f |
"""
a d
b c
g e
h f
"""
And the ways
| nodes | junction |
@@ -68,11 +72,13 @@ Feature: Basic Roundabout
Scenario: Only Enter
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -99,11 +105,13 @@ Feature: Basic Roundabout
Scenario: Only Exit
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -131,11 +139,13 @@ Feature: Basic Roundabout
Scenario: Drive Around
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -162,11 +172,13 @@ Feature: Basic Roundabout
Scenario: Mixed Entry and Exit - Not an Intersection
Given the node map
| | c | | a | |
| j | | b | | f |
| | k | | e | |
| l | | h | | d |
| | g | | i | |
"""
c a
j b f
k e
l h d
g i
"""
And the ways
| nodes | junction | oneway |
@@ -197,11 +209,13 @@ Feature: Basic Roundabout
Scenario: Segregated roads - Not an intersection
Given the node map
| | a | | c | |
| l | | b | | d |
| | k | | e | |
| j | | h | | f |
| | i | | g | |
"""
a c
l b d
k e
j h f
i g
"""
And the ways
| nodes | junction | oneway |
@@ -232,8 +246,10 @@ Feature: Basic Roundabout
Scenario: Collinear in X
Given the node map
| a | b | c | d | f |
| | | e | | |
"""
a b c d f
e
"""
And the ways
| nodes | junction |
@@ -243,16 +259,40 @@ Feature: Basic Roundabout
| df | |
When I route I should get
| waypoints | route | turns |
| a,e | ab,ce,ce | depart,roundabout-exit-1,arrive |
| a,f | ab,df,df | depart,roundabout-exit-2,arrive |
| waypoints | route | turns |
| a,e | ab,ce,ce | depart,roundabout turn right exit-1,arrive |
| a,f | ab,df,df | depart,roundabout turn straight exit-2,arrive |
Scenario: Collinear in Y
Given the node map
"""
a
b
e c
d
f
"""
And the ways
| nodes | junction |
| ab | |
| bcdb | roundabout |
| ce | |
| df | |
When I route I should get
| waypoints | route | turns |
| a,e | ab,ce,ce | depart,roundabout turn right exit-1,arrive |
| a,f | ab,df,df | depart,roundabout turn straight exit-2,arrive |
Scenario: Collinear in X,Y
Given the node map
| a | | |
| b | | |
| c | d | f |
| e | | |
"""
a
b
c d f
e
"""
And the ways
| nodes | junction |
@@ -268,10 +308,12 @@ Feature: Basic Roundabout
Scenario: Collinear in X,Y
Given the node map
| a | | |
| d | | |
| b | c | f |
| e | | |
"""
a
d
b c f
e
"""
And the ways
| nodes | junction |
@@ -287,10 +329,12 @@ Feature: Basic Roundabout
Scenario: Collinear in X,Y
Given the node map
| a | | |
| c | | |
| d | b | f |
| e | | |
"""
a
c
d b f
e
"""
And the ways
| nodes | junction |
@@ -306,11 +350,13 @@ Feature: Basic Roundabout
Scenario: Enter and Exit -- too complex
Given the node map
| j | | a | | |
| | i | b | | |
| | g | | c | d |
| h | | e | | |
| | | f | | |
"""
j a
i b
g c d
h e
f
"""
And the ways
| nodes | junction |
@@ -338,11 +384,13 @@ Feature: Basic Roundabout
Scenario: Enter and Exit -- Non-Distinct
Given the node map
| | | a | | |
| | | b | | |
| | g | | c | d |
| | | e | | |
| h | | f | | |
"""
a
b
g c d
e
h f
"""
And the ways
| nodes | junction |
@@ -369,11 +417,13 @@ Feature: Basic Roundabout
Scenario: Enter and Exit -- Bearing
Given the node map
| | | a | | |
| | | b | | |
| h | g | | c | d |
| | | e | | |
| | | f | | |
"""
a
b
h g c d
e
f
"""
And the ways
| nodes | junction |
@@ -385,19 +435,21 @@ Feature: Basic Roundabout
When I route I should get
| waypoints | route | turns | bearing |
| a,d | ab,cd,cd | depart,roundabout turn left exit-3,arrive | 0->180,180->224,90->0 |
| a,f | ab,ef,ef | depart,roundabout turn straight exit-2,arrive | 0->180,180->224,180->0 |
| a,h | ab,gh,gh | depart,roundabout turn right exit-1,arrive | 0->180,180->224,270->0 |
| a,d | ab,cd,cd | depart,roundabout turn left exit-3,arrive | 0->180,180->225,90->0 |
| a,f | ab,ef,ef | depart,roundabout turn straight exit-2,arrive | 0->180,180->225,180->0 |
| a,h | ab,gh,gh | depart,roundabout turn right exit-1,arrive | 0->180,180->225,270->0 |
Scenario: Enter and Exit - Bearings
Given the node map
| | | | a | | | |
| | | | | | | |
| | | i | b | l | | |
| h | | g | | c | | d |
| | | j | e | k | | |
| | | | | | | |
| | | | f | | | |
"""
a
i b l
h g c d
j e k
f
"""
And the ways
| nodes | junction |
@@ -417,19 +469,21 @@ Feature: Basic Roundabout
# http://www.openstreetmap.org/way/348812150
# Note: grid size is 3 meter, this roundabout is more like 5-10 meters in radius
Given the node map
| | | | a | | | | | |
| | | | | | | | | |
| | | | b | | n | | | |
| | | | | | | | | |
| | | c | | | | m | | |
| | | | | | | | | |
| e | | d | | | | k | | l |
| | | | | | | | | |
| | | f | | | | j | | |
| | | | | | | | | |
| | | | g | | i | | | |
| | | | | | | | | |
| | | | h | | | | | |
"""
a
b n
c m
e d k l
f j
g i
h
"""
And the ways
| nodes | junction | highway | name |
@@ -456,11 +510,13 @@ Feature: Basic Roundabout
Scenario: Enter and Exit - Traffic Signals
Given the node map
| | | a | | |
| | i | b | l | |
| h | g | | c | d |
| | j | e | k | |
| | | f | | |
"""
a
i b l
h g c d
j e k
f
"""
And the nodes
| node | highway |
@@ -496,11 +552,13 @@ Feature: Basic Roundabout
#at some point we probably want to recognise these situations and don't mention the roundabout at all here
Scenario: Enter And Exit Throughabout
Given the node map
| | | | | | h | | | | |
| | | | | | | | | | |
| c | b | | d | | | | e | | f |
| | | | | | | | | | |
| | a | | | | g | | | | |
"""
h
c b d e f
a g
"""
And the ways
| nodes | highway | name | junction | oneway |
+204 -139
View File
@@ -7,11 +7,13 @@ Feature: Basic Roundabout
Scenario: Only Enter
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -39,13 +41,11 @@ Feature: Basic Roundabout
#2927
Scenario: Only Roundabout
Given the node map
| | | a | | |
| | | | | |
| | | | | |
| b | | | | d |
| | | | | |
| | | | | |
| | | c | | |
"""
a
b d
c
"""
And the ways
| nodes | junction |
@@ -57,11 +57,13 @@ Feature: Basic Roundabout
Scenario: Only Exit
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -89,11 +91,13 @@ Feature: Basic Roundabout
Scenario: Drive Around
Given the node map
| | | a | | |
| | | b | | |
| d | c | | g | h |
| | | e | | |
| | | f | | |
"""
a
b
d c g h
e
f
"""
And the ways
| nodes | junction |
@@ -120,11 +124,13 @@ Feature: Basic Roundabout
Scenario: Mixed Entry and Exit
Given the node map
| | c | | a | |
| j | | b | | f |
| | k | | e | |
| l | | h | | d |
| | g | | i | |
"""
c a
j b f
k e
l h d
g i
"""
And the ways
| nodes | junction | oneway |
@@ -155,13 +161,15 @@ Feature: Basic Roundabout
Scenario: Mixed Entry and Exit - segregated roads
Given the node map
| | | a | | c | | |
| | | | | | | |
| l | | | b | | | d |
| | | k | | e | | |
| j | | | h | | | f |
| | | | | | | |
| | | i | | g | | |
"""
a c
l b d
k e
j h f
i g
"""
And the ways
| nodes | junction | oneway |
@@ -192,13 +200,15 @@ Feature: Basic Roundabout
Scenario: Mixed Entry and Exit - segregated roads, different names
Given the node map
| | | a | | c | | |
| | | | | | | |
| l | | | b | | | d |
| | | k | | e | | |
| j | | | h | | | f |
| | | | | | | |
| | | i | | g | | |
"""
a c
l b d
k e
j h f
i g
"""
And the ways
| nodes | junction | oneway |
@@ -231,61 +241,26 @@ Feature: Basic Roundabout
| j,f | jk,ef,ef | depart,roundabout-exit-2,arrive |
| j,c | jk,bc,bc | depart,roundabout-exit-3,arrive |
Scenario: Collinear in X
Given the node map
| a | b | c | d | f |
| | | e | | |
And the ways
| nodes | junction |
| ab | |
| bcdb | roundabout |
| ce | |
| df | |
When I route I should get
| waypoints | route | turns |
| a,e | ab,ce,ce | depart,roundabout-exit-1,arrive |
| a,f | ab,df,df | depart,roundabout-exit-2,arrive |
Scenario: Collinear in Y
Given the node map
| | a |
| | b |
| e | c |
| | d |
| | f |
And the ways
| nodes | junction |
| ab | |
| bcdb | roundabout |
| ce | |
| df | |
When I route I should get
| waypoints | route | turns |
| a,e | ab,ce,ce | depart,roundabout-exit-1,arrive |
| a,f | ab,df,df | depart,roundabout-exit-2,arrive |
Scenario: Motorway Roundabout
#See 39.933742 -75.082345
Given the node map
| | | | | l | | | | a | | i |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | b | | | | |
| | | | c | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | h | | |
| n | | | | | | | | | | |
| | | | | | | | | | | |
| | | d | | | | | | | | j |
| | | | | | | | | | | |
| | | | | m | | | g | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | e | | f | | | | | | |
"""
l a i
b
c
h
n
d j
m g
e f
"""
And the ways
| nodes | junction | name | highway | oneway | ref |
@@ -306,18 +281,25 @@ Feature: Basic Roundabout
| a,e | crescent,crescent,crescent | depart,roundabout-exit-3,arrive | US 130,US 130,US 130 |
| j,l | ,, | depart,roundabout-exit-2,arrive | NJ 38,NJ 38,NJ 38 |
@todo
# this test previously only passed by accident. We need to handle throughabouts correctly, since staying on massachusetts is actually
# the desired setting. Rotary instructions here are not wanted but rather no instruction at all to go through the roundabout (or add
# a throughabout instruction)
# see https://github.com/Project-OSRM/osrm-backend/issues/3142
Scenario: Double Roundabout with through-lane
#http://map.project-osrm.org/?z=18&center=38.911752%2C-77.048667&loc=38.912003%2C-77.050831&loc=38.909277%2C-77.042516&hl=en&alt=0
Given the node map
| | | | | o | | | | | | | | | | | | n | | | | |
| | | | | e | | | | | | | | | | | | j | | | | |
| | | | | | | | | | | | | | | | | | | | | |
| | | | | | | q | | | | | | | | | | | | | | |
| a | | b | | | | | | s | | f | | | | g | | | | i | | k |
| | | | | | | r | | | | | | | | | | | p | | | |
| | | | | | | | | | | t | | | | | | | | | | |
| | | | | c | | d | | | | | | | | | | h | | | | |
| | | | | l | | | | | | | | | | | | m | | | | |
"""
o n
.e. _j_.
/ '. / \
/ q__ / |
a---b | >s---f-------g i---k
. r'' | .' . .p'|
. | t . .'
'c---d 'h'
l m
"""
And the nodes
| node | highway |
@@ -327,9 +309,13 @@ Feature: Basic Roundabout
| nodes | junction | name | oneway |
| bcdrqeb | roundabout | sheridan circle | yes |
| ghi | roundabout | dupont circle | yes |
| ijg | roundabout | dupont circle | yes |
| ij | roundabout | dupont circle | yes |
| jg | roundabout | dupont circle | yes |
| ab | | massachusetts | no |
| sfgpik | | massachusetts | no |
| gp | | massachusetts | no |
| pi | | massachusetts | no |
| sfg | | massachusetts | no |
| ik | | massachusetts | no |
| cl | | 23rd street | no |
| oe | | r street | no |
| jn | | new hampshire | no |
@@ -339,45 +325,47 @@ Feature: Basic Roundabout
And the relations
| type | way:from | way:to | node:via | restriction |
| restriction | sfgpik | ijg | i | no_left_turn |
| restriction | pi | ij | i | no_left_turn |
When I route I should get
| waypoints | route | turns |
| a,k | massachusetts,massachusetts,massachusetts,massachusetts | depart,sheridan circle-exit-2,dupont circle-exit-1,arrive |
| waypoints | route | turns |
| a,k | massachusetts,massachusetts,massachusetts,massachusetts | depart,sheridan circle-exit-2,rotary-exit-1,arrive |
#2856 - http://www.openstreetmap.org/#map=19/47.23318/-1.56563
Scenario: Linked Roundabouts
Given the node map
| | | | | | | | | | | | | | x |
| | u | | | | | | | | | | | r | |
| | | | | | | | | | | | | | |
| | | | t | | | | | | | | | | |
| | | | | | | | | | | s | | | |
| | | v | | | i | | h | | g | | | | |
| | | | | | | | | | | | q | | |
| | | | | | | | | | | | | | |
| | | | j | | | | | | | | f | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | a | | | | | | | | e | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | b | | c | | d | | p | | |
| | | | | | | | | | | | | | |
| | | m | | | | | | | | n | | | |
| | | | | l | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | k | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | w | | | | | | | | | | o | | |
"""
x
u r
t
s
v i h g
q
j f
a e
b c d p
m n
l
k
w o
"""
And the ways
| nodes | junction | name | highway | oneway |
@@ -398,8 +386,85 @@ Feature: Basic Roundabout
| h | give_way |
When I route I should get
| waypoints | route | turns |
| waypoints | route | turns |
# since we cannot handle these invalid roundabout tags yet, we cannout output roundabout taggings. This will hopefully change some day
#| w,x | ll,egg,egg,tr,tr | depart,roundabout-exit-1,roundabout-exit-2,arrive |
| w,x | ll,egg,egg,tr,tr | depart,turn right,continue left,turn slight left,arrive |
| w,x | ll,egg,egg,tr,tr | depart,turn right,continue left,turn straight,arrive |
Scenario: Use Lane in Roundabout
Given the node map
"""
. i . . . .. .
.' '.
a - b. f - g
. |
'. 1 /
'. /
j - - - c . . e
' d '
' h
"""
#using roundabout as name, we can ignore whether we see a roundabout or a rotary here. Cucumber output will be the same
And the ways
| nodes | junction | name | oneway | turn:lanes:forward |
| ba | | left-out | yes | |
| jc | | left-in | yes | |
| dh | | right-bot-out | yes | |
| fg | | right-top-out | yes | |
| bc | roundabout | roundabout | yes | left;through\|through |
| cdefib | roundabout | roundabout | yes | |
When I route I should get
| waypoints | route | turns |
| 1,h | roundabout,right-bot-out,right-bot-out | depart,roundabout-exit-1,arrive |
@3254
Scenario: Driving up to and through a roundabout
Given the node map
"""
g a
| / \
e-f- - - - b d - - - h
| \ /
i c
|
k
"""
And the ways
| nodes | junction | name | highway |
| abcda | roundabout | roundabout | residential |
| gfi | | side | residential |
| efb | | left | residential |
| dh | | right | residential |
| ck | | bottom | residential |
When I route I should get
| waypoints | route | turns |
| e,h | left,right,right | depart,roundabout-exit-2,arrive |
@3254
Scenario: Driving up to and through a roundabout
Given the node map
"""
g a
| / \
e-f - b d - - - h
| \ /
i c
|
k
"""
And the ways
| nodes | junction | name | highway |
| abcda | roundabout | roundabout | residential |
| gfi | | side | residential |
| efb | | left | residential |
| dh | | right | residential |
| ck | | bottom | residential |
When I route I should get
| waypoints | route | turns |
| e,h | left,right,right | depart,roundabout-exit-2,arrive |
@@ -9,12 +9,14 @@ Feature: Staggered Intersections
# https://www.openstreetmap.org/#map=19/39.26022/-84.25144
Scenario: Staggered Intersection: Oak St, Cedar Dr
Given the node map
| | | j | | |
| a | b | c | | |
| | | d | | |
| | | e | f | g |
| | | h | | |
| | | i | | |
"""
j
a b c
d
e f g
h
i
"""
And the ways
| nodes | highway | name |
@@ -29,16 +31,18 @@ Feature: Staggered Intersections
Scenario: Staggered Intersection: do not collapse if long segment in between
Given the node map
| | | j | | |
| a | b | c | | |
| | | | | |
| | | | | |
| | | d | | |
| | | | | |
| | | | | |
| | | e | f | g |
| | | h | | |
| | | i | | |
"""
j
a b c
d
e f g
h
i
"""
And the ways
| nodes | highway | name |
@@ -53,12 +57,14 @@ Feature: Staggered Intersections
Scenario: Staggered Intersection: do not collapse if not left-right or right-left
Given the node map
| | | j | | |
| a | b | c | | |
| | | d | | |
| g | f | e | | |
| | | h | | |
| | | i | | |
"""
j
a b c
d
g f e
h
i
"""
And the ways
| nodes | highway | name |
@@ -73,12 +79,14 @@ Feature: Staggered Intersections
Scenario: Staggered Intersection: do not collapse if the names are not the same
Given the node map
| | | j | | |
| a | b | c | | |
| | | d | | |
| | | e | f | g |
| | | h | | |
| | | i | | |
"""
j
a b c
d
e f g
h
i
"""
And the ways
| nodes | highway | name |
+28 -12
View File
@@ -7,7 +7,9 @@ Feature: Suppress New Names on dedicated Suffices
Scenario: Suffix To Suffix
Given the node map
| a | | b | | c |
"""
a b c
"""
And the ways
| nodes | name |
@@ -20,7 +22,9 @@ Feature: Suppress New Names on dedicated Suffices
Scenario: Suffix To Suffix Ref
Given the node map
| a | | b | | c |
"""
a b c
"""
And the ways
| nodes | name | ref |
@@ -33,7 +37,9 @@ Feature: Suppress New Names on dedicated Suffices
Scenario: Prefix Change
Given the node map
| a | | b | | c |
"""
a b c
"""
And the ways
| nodes | name |
@@ -46,7 +52,9 @@ Feature: Suppress New Names on dedicated Suffices
Scenario: Prefix Change ref
Given the node map
| a | | b | | c |
"""
a b c
"""
And the ways
| nodes | name |
@@ -59,7 +67,9 @@ Feature: Suppress New Names on dedicated Suffices
Scenario: Prefix Change and Reference
Given the node map
| a | | b | | c |
"""
a b c
"""
And the ways
| nodes | name | ref |
@@ -72,8 +82,10 @@ Feature: Suppress New Names on dedicated Suffices
Scenario: Suffix To Suffix - Turn
Given the node map
| a | | b | | c |
| | | d | | |
"""
a b c
d
"""
And the ways
| nodes | name |
@@ -82,13 +94,15 @@ Feature: Suppress New Names on dedicated Suffices
| bd | 42 E |
When I route I should get
| waypoints | route | turns |
| a,c | 42 N,42 S | depart,arrive |
| a,d | 42 N,42 E,42 E | depart,turn right,arrive |
| waypoints | route | turns |
| a,c | 42 N,42 S | depart,arrive |
| a,d | 42 N,42 E,42 E | depart,continue right,arrive |
Scenario: Suffix To No Suffix
Given the node map
| a | | b | | c |
"""
a b c
"""
And the ways
| nodes | name |
@@ -101,7 +115,9 @@ Feature: Suppress New Names on dedicated Suffices
Scenario: No Suffix To Suffix
Given the node map
| a | | b | | c |
"""
a b c
"""
And the ways
| nodes | name |
+15 -7
View File
@@ -7,8 +7,10 @@ Feature: Suppressed Turns
Scenario: Do not announce passing a exit ramp
Given the node map
| a | b | c | d | e |
| | | | f | g |
"""
a b c d e
f g
"""
And the ways
| nodes | highway |
@@ -21,7 +23,9 @@ Feature: Suppressed Turns
Scenario: Do not announce reference changes
Given the node map
| a | b | c | d | e | f |
"""
a b c d e f
"""
And the ways
| nodes | highway | name | ref |
@@ -38,8 +42,10 @@ Feature: Suppressed Turns
Scenario: Don't Announce Turn on following major road class -- service
Given the node map
| a | b | d |
| | | c |
"""
a b d
c
"""
And the ways
| nodes | highway |
@@ -52,8 +58,10 @@ Feature: Suppressed Turns
Scenario: Don't Announce Turn on following major road class -- residential
Given the node map
| a | b | d |
| | | c |
"""
a b d
c
"""
And the ways
| nodes | highway |
+34 -32
View File
@@ -8,38 +8,40 @@ Feature: General Post-Processing related features
# this testcase used to crash geometry generation (at that time handled during intersection generation)
Scenario: Regression Test 2754
Given the node map
| a | b | c | d | e | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | f | g | h | i | j |
"""
a b c d e
f g h i j
"""
And the ways
| nodes |
File diff suppressed because it is too large Load Diff
+301 -169
View File
@@ -8,8 +8,10 @@ Feature: Turn Lane Guidance
@simple
Scenario: Basic Turn Lane 3-way Turn with empty lanes
Given the node map
| a | | b | | c |
| | | d | | |
"""
a b c
d
"""
And the ways
| nodes | turn:lanes | turn:lanes:forward | turn:lanes:backward | name |
@@ -26,8 +28,10 @@ Feature: Turn Lane Guidance
Scenario: Basic Turn Lane 3-way Turn with designated lane
Given the node map
| a | | b | | c |
| | | d | | |
"""
a b c
d
"""
And the ways
| nodes | turn:lanes | turn:lanes:forward | name | vehicle:lanes:forward |
@@ -43,9 +47,11 @@ Feature: Turn Lane Guidance
@simple
Scenario: Basic Turn Lane 4-Way Turn
Given the node map
| | | e | | |
| a | | b | | c |
| | | d | | |
"""
e
a b c
d
"""
And the ways
| nodes | turn:lanes | turn:lanes:forward | turn:lanes:backward | name |
@@ -66,9 +72,11 @@ Feature: Turn Lane Guidance
@simple @none
Scenario: Basic Turn Lane 4-Way Turn using none
Given the node map
| | | e | | |
| a | | b | | c |
| | | d | | |
"""
e
a b c
d
"""
And the ways
| nodes | turn:lanes | turn:lanes:forward | turn:lanes:backward | name |
@@ -86,9 +94,11 @@ Feature: Turn Lane Guidance
@simple @reverse
Scenario: Basic Turn Lane 4-Way With U-Turn Lane
Given the node map
| | | e | | |
| a | 1 | b | | c |
| | | d | | |
"""
e
a 1 b c
d
"""
And the ways
| nodes | turn:lanes | turn:lanes:forward | name |
@@ -109,9 +119,11 @@ Feature: Turn Lane Guidance
@simple @psv @none
Scenario: Turn with Bus-Lane
Given the node map
| a | | b | | c |
| | | | | |
| | | d | | |
"""
a b c
d
"""
And the ways
| nodes | name | turn:lanes:forward | lanes:psv:forward |
@@ -126,10 +138,12 @@ Feature: Turn Lane Guidance
Scenario: Turn with Bus-Lane Left
Given the node map
| | | d | | | | |
| | | | | | | |
| a | | b | | c | | f |
| | | | | e | | |
"""
d
a b c f
e
"""
And the ways
| nodes | name | turn:lanes:forward | lanes:psv:forward | oneway |
@@ -147,9 +161,11 @@ Feature: Turn Lane Guidance
# This tests whether empty/invalid PSV tags cause osrm-extract to crash
Scenario: Turn with Bus-Lane
Given the node map
| a | | b | | c |
| | | | | |
| | | d | | |
"""
a b c
d
"""
And the ways
| nodes | name | turn:lanes:forward | lanes:psv:forward | lanes:psv:backward |
@@ -164,9 +180,11 @@ Feature: Turn Lane Guidance
@simple @psv
Scenario: Turn with Bus-Lane but without lanes
Given the node map
| a | | b | | c |
| | | | | |
| | | d | | |
"""
a b c
d
"""
And the ways
| nodes | name | lanes:psv |
@@ -183,12 +201,14 @@ Feature: Turn Lane Guidance
@todo @collapse @partition-lanes
Scenario: Turn Lanes at Segregated Road
Given the node map
| | | i | l | | |
| | | | | | |
| h | | g | f | | e |
| a | | b | c | | d |
| | | | | | |
| | | j | k | | |
"""
i l
h g f e
a b c d
j k
"""
And the ways
| nodes | name | turn:lanes:forward | oneway |
@@ -228,12 +248,14 @@ Feature: Turn Lane Guidance
@collapse @partition-lanes
Scenario: Turn Lanes at Segregated Road
Given the node map
| | | i | l | | |
| | | | | | |
| h | | g | f | | e |
| a | | b | c | | d |
| | | | | | |
| | | j | k | | |
"""
i l
h g f e
a b c d
j k
"""
And the ways
| nodes | name | turn:lanes:forward | oneway |
@@ -262,10 +284,12 @@ Feature: Turn Lane Guidance
@partition-lanes
Scenario: Turn Lanes at Segregated Road
Given the node map
| | | g | f | | |
| a | | b | c | | d |
| | | | | | |
| | | j | k | | |
"""
g f
a b c d
j k
"""
And the ways
| nodes | name | turn:lanes:forward | oneway |
@@ -285,9 +309,11 @@ Feature: Turn Lane Guidance
@2654 @previous-lanes
Scenario: Turn Lanes Given earlier than actual turn
Given the node map
| a | | b | c | | d |
| | | | | | |
| | | | e | | |
"""
a b c d
e
"""
And the ways
| nodes | name | turn:lanes:forward |
@@ -304,8 +330,10 @@ Feature: Turn Lane Guidance
@2654 @previous-lanes
Scenario: Turn Lanes Given earlier than actual turn
Given the node map
| a | | b | c | d | | e | | f | g | h | | i |
| | | j | | | | | | | | k | | |
"""
a b c d e f g h i
j k
"""
And the ways
| nodes | name | turn:lanes:forward | turn:lanes:backward |
@@ -327,8 +355,10 @@ Feature: Turn Lane Guidance
@previous-lanes
Scenario: Passing a one-way street
Given the node map
| e | | | f | |
| a | | b | c | d |
"""
e f
a b c d
"""
And the ways
| nodes | name | turn:lanes:forward | oneway |
@@ -344,9 +374,11 @@ Feature: Turn Lane Guidance
@partition-lanes
Scenario: Passing a one-way street, partly pulled back lanes
Given the node map
| e | | | f | |
| a | | b | c | d |
| | | g | | |
"""
e f
a b c d
g
"""
And the ways
| nodes | name | turn:lanes:forward | oneway |
@@ -365,9 +397,11 @@ Feature: Turn Lane Guidance
@partition-lanes @previous-lanes
Scenario: Passing a one-way street, partly pulled back lanes, no through
Given the node map
| e | | | f |
| a | | b | c |
| | | g | |
"""
e f
a b c
g
"""
And the ways
| nodes | name | turn:lanes:forward | oneway |
@@ -385,10 +419,12 @@ Feature: Turn Lane Guidance
@todo @partition-lanes @previous-lanes
Scenario: Narrowing Turn Lanes
Given the node map
| | | | | g | |
| | | | | | |
| a | | b | c | d | e |
| | | | f | | |
"""
g
a b c d e
f
"""
And the ways
| nodes | name | turn:lanes:forward |
@@ -408,8 +444,10 @@ Feature: Turn Lane Guidance
@previous-lanes
Scenario: Turn at a traffic light
Given the node map
| a | b | c | d |
| | | e | |
"""
a b c d
e
"""
And the nodes
| node | highway |
@@ -430,17 +468,19 @@ Feature: Turn Lane Guidance
@todo @roundabout
Scenario: Theodor Heuss Platz
Given the node map
| | | | i | o | | | l | |
| | | b | | | | a | | m |
| | c | | | | | | | |
| | | | | | | | h | |
| | | | | | | | | |
| j | | | | | | | | |
| | | | | | | | g | |
| | | | | | | | | |
| | d | | | | | | | |
| | | e | | | | f | | |
| | | | | k | | | | n |
"""
i o l
b a m
c
h
j
g
d
e f
k n
"""
And the nodes
| node | highway |
@@ -467,12 +507,14 @@ Feature: Turn Lane Guidance
@sliproads
Scenario: Turn Lanes Breaking up
Given the node map
| | | | g | |
| | | | | |
| | | | c | |
| a | b | | d | e |
| | | | | |
| | | | f | |
"""
g
c
a b d e
f
"""
And the ways
| nodes | name | turn:lanes:forward | oneway | highway |
@@ -481,8 +523,8 @@ Feature: Turn Lane Guidance
| bc | road | left\|left | yes | primary |
| de | road | | yes | primary |
| fd | cross | | | secondary |
| dc | cross | | | secondary |
| cg | cross | | | secondary |
| dc | cross | | | secondary |
| cg | cross | | | secondary |
And the relations
| type | way:from | way:to | node:via | restriction |
@@ -498,11 +540,13 @@ Feature: Turn Lane Guidance
@reverse @previous-lanes
Scenario: U-Turn Road at Intersection
Given the node map
| | | | | | | h | |
| | | | | f | | e | j |
| a | b | | | | | | |
| | | | | c | | d | i |
| | | | | | | g | |
"""
h
f e j
a b
c d i
g
"""
And the ways
| nodes | name | turn:lanes:forward | oneway | highway |
@@ -532,13 +576,15 @@ Feature: Turn Lane Guidance
@reverse
Scenario: Segregated Intersection Merges With Lanes
Given the node map
| | | | | | | f |
| | | | | | | |
| e | | | d | | | |
| | | | | | c | g |
| a | | | b | | | |
| | | | | | | |
| | | | | | h | |
"""
f
e d
c g
a b
h
"""
And the ways
| nodes | name | turn:lanes:forward | oneway | highway |
@@ -557,13 +603,15 @@ Feature: Turn Lane Guidance
@todo @roundabout
Scenario: Passing Through a Roundabout
Given the node map
| | | h | | g | | |
| | a | | | | f | k |
| i | | | | | | |
| | | | | | | |
| | b | | | | e | |
| | | c | | d | | |
| | | | | j | | |
"""
h g
a f k
i
b e
c d
j
"""
And the ways
| nodes | name | turn:lanes:forward | oneway | highway | junction |
@@ -584,8 +632,10 @@ Feature: Turn Lane Guidance
@previous-lanes
Scenario: Crossing Traffic Light
Given the node map
| a | | b | | c | | d |
| | | | | | | e |
"""
a b c d
e
"""
And the nodes
| node | highway |
@@ -605,8 +655,10 @@ Feature: Turn Lane Guidance
@ramp
Scenario: Highway Ramp
Given the node map
| a | | b | | c | | d |
| | | | | | | e |
"""
a b c d
e
"""
And the ways
| nodes | name | turn:lanes:forward | highway |
@@ -622,10 +674,12 @@ Feature: Turn Lane Guidance
@todo
Scenario: Turning Off Ramp
Given the node map
| | a | |
| d | c | b |
| e | f | g |
| | h | |
"""
a
d c b
e f g
h
"""
And the ways
| nodes | name | turn:lanes:forward | highway | oneway |
@@ -644,10 +698,12 @@ Feature: Turn Lane Guidance
@ramp
Scenario: Off Ramp In a Turn
Given the node map
| a | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | b | | | | | | c |
| | | | | | | | | | | d | |
"""
a
b c
d
"""
And the ways
| nodes | name | turn:lanes:forward | highway | oneway |
@@ -663,10 +719,12 @@ Feature: Turn Lane Guidance
@reverse
Scenario: Reverse Lane in Segregated Road
Given the node map
| h | | | | | g | | | | | | f |
| | | | | | | | e | | | | |
| | | | | | | | d | | | | |
| a | | | | | b | | | | | | c |
"""
h g f
e
d
a b c
"""
And the ways
| nodes | name | turn:lanes:forward | highway | oneway |
@@ -682,10 +740,12 @@ Feature: Turn Lane Guidance
@reverse
Scenario: Reverse Lane in Segregated Road with none
Given the node map
| h | | | | | g | | | | | | f |
| | | | | | | | e | | | | |
| | | | | | | | d | | | | |
| a | | | | | b | | | | | | c |
"""
h g f
e
d
a b c
"""
And the ways
| nodes | name | turn:lanes:forward | highway | oneway |
@@ -701,11 +761,13 @@ Feature: Turn Lane Guidance
@reverse
Scenario: Reverse Lane in Segregated Road with none, Service Turn Prior
Given the node map
| h | | | | | g | | | | | | f |
| | | | | | | | e | | | | |
| | | | | | | | d | | | | |
| a | | j | | | b | | | | | | c |
| | | i | | | | | | | | | |
"""
h g f
e
d
a j b c
i
"""
And the ways
| nodes | name | turn:lanes:forward | highway | oneway |
@@ -722,9 +784,11 @@ Feature: Turn Lane Guidance
@simple
Scenario: Don't collapse everything to u-turn / too wide
Given the node map
| a | | b | | e |
| | | | | |
| d | | c | | f |
"""
a b e
d c f
"""
And the ways
| nodes | highway | name | turn:lanes:forward |
@@ -742,8 +806,10 @@ Feature: Turn Lane Guidance
@simple
Scenario: Merge Lanes Onto Freeway
Given the node map
| a | | | b | c |
| | d | | | |
"""
a b c
d
"""
And the ways
| nodes | highway | name | turn:lanes:forward |
@@ -757,8 +823,10 @@ Feature: Turn Lane Guidance
@2654 @simple
Scenario: Fork on motorway links - don't fork on through but use lane
Given the node map
| i | | | | | a |
| j | | c | b | | x |
"""
i a
j c b x
"""
And the ways
| nodes | name | highway | turn:lanes:forward |
@@ -777,10 +845,12 @@ Feature: Turn Lane Guidance
@todo @ramp @2645
Scenario: Kreuz Schoeneberg - Continue on ramp, don't merge
Given the node map
| i | | | | | j | | | | | | | | | | | |
| | | | | k | | | | | | | | | | | | |
| h | g | | l | | | f | | | | | | | | | | e |
| d | | | | | | | | c | | | | | b | | | a |
"""
i j
k
h g l f e
d c b a
"""
And the ways
| nodes | highway | name | oneway | lanes | turn:lanes |
@@ -808,8 +878,10 @@ Feature: Turn Lane Guidance
@collapse @use-lane
Scenario: Collapse Multiple Use Lanes
Given the node map
| x | a | | b | | | c | | | d |
| | | | e | | | f | | | |
"""
x a b c d
e f
"""
And the ways
| nodes | name | highway | turn:lanes:forward |
@@ -825,14 +897,39 @@ Feature: Turn Lane Guidance
| x,d | road,road | depart,arrive | , |
@partition-lanes
Scenario: Partitioned turn, Slight Curve - maxspeed
Given the node map
"""
f e
| |
| |
| c
a - b ' |
g d
"""
And the ways
| nodes | name | highway | oneway | turn:lanes:forward | maxspeed |
| ab | road | primary | yes | left\|right | 1 |
| bc | cross | primary | yes | | 1 |
| fbg | cross | primary | yes | | 1 |
| dce | cross | primary | yes | | 1 |
When I route I should get
| waypoints | route | turns | lanes |
| a,g | road,cross,cross | depart,turn right,arrive | ,left:false right:true, |
| a,e | road,cross,cross | depart,turn left,arrive | ,left:true right:false, |
Scenario: Partitioned turn, Slight Curve
Given the node map
| | | f | | e |
| | | | | |
| | | | | |
| | | | | c |
| a | | b | | |
| | | g | | d |
"""
f e
| |
| |
| c
a - b ' |
g d
"""
And the ways
| nodes | name | highway | oneway | turn:lanes:forward |
@@ -848,9 +945,11 @@ Feature: Turn Lane Guidance
Scenario: Lane Parsing Issue #2694
Given the node map
| | c |
| a | b |
| | d |
"""
c
a b
d
"""
And the ways
| nodes | highway | turn:lanes:forward |
@@ -866,12 +965,14 @@ Feature: Turn Lane Guidance
@todo
Scenario: Lane Parsing Issue #2706: None Assignments I
Given the node map
| | f | | | j | |
| | | | | | |
| a | b | c | | d | e |
| | | | | | |
| | | | | i | |
| | g | | | h | |
"""
f j
a b c d e
i
g h
"""
And the nodes
| node | highway |
@@ -906,10 +1007,12 @@ Feature: Turn Lane Guidance
@todo
Scenario: Lane Parsing Issue #2706: None Assignments II
Given the node map
| | k | l | |
| j | a | b | f |
| i | c | d | e |
| | h | g | |
"""
k l
j a b f
i c d e
h g
"""
And the ways
| nodes | highway | name | oneway | turn:lanes |
@@ -941,10 +1044,12 @@ Feature: Turn Lane Guidance
@todo
Scenario: Lane Parsing Issue #2706: None Assignments III - Minimal reproduction recipe
Given the node map
| | | l | |
| | a | b | |
| | | d | |
| | | | |
"""
l
a b
d
"""
And the ways
| nodes | highway | name | oneway | turn:lanes |
@@ -960,9 +1065,11 @@ Feature: Turn Lane Guidance
@reverse @2730 @todo
Scenario: Reverse on the right
Given the node map
| a | | | c | |
| | | | b | d |
| f | | | e | |
"""
a c
b d
f e
"""
And the ways
| nodes | highway | name | turn:lanes:forward | oneway |
@@ -983,12 +1090,14 @@ Feature: Turn Lane Guidance
#http://www.openstreetmap.org/export#map=19/52.56054/13.32152
Scenario: Kurt-Schuhmacher-Damm
Given the node map
| | | | g | | f |
| | | | | | |
| j | | | h | | e |
| | | | | | |
| a | | | b | | c |
| | | | i | | d |
"""
g f
j h e
a b c
i d
"""
And the ways
| nodes | name | highway | oneway | turn:lanes |
@@ -1005,3 +1114,26 @@ Feature: Turn Lane Guidance
| waypoints | route | turns | lanes |
| a,f | ,ksd,ksd | depart,turn left,arrive | ,left:true none:true right:false, |
| a,i | ,ksd,ksd | depart,turn right,arrive | ,left:false none:true right:true, |
Scenario: Reverse Not Allowed
Given the node map
"""
n o
f - - e\- - g-j-m
d | |
a - 1 b/- - c-i-l
h k
"""
And the ways
| nodes | name | highway | oneway | turn:lanes:forward |
| abc | road | secondary | yes | left\|through\|right |
| cil | road | secondary | yes | |
| mjgef | road | secondary | yes | |
| bde | road | secondary_link | yes | |
| ngch | turn | secondary | yes | |
| kijo | turn | secondary | yes | |
When I route I should get
| waypoints | bearings | route | turns |
| 1,a | 90,2 180,180 | | |
+23
View File
@@ -0,0 +1,23 @@
@routing @guidance
Feature: Turn Location Feature
Background:
Given the profile "car"
Given a grid size of 10 meters
Scenario: Simple feature to test turn locations
Given the node map
"""
c
a b d
"""
And the ways
| nodes | highway |
| ab | primary |
| cb | primary |
| db | primary |
When I route I should get
| waypoints | route | turns | locations |
| a,c | ab,cb,cb | depart,turn left,arrive | a,b,c |
File diff suppressed because it is too large Load Diff
+4
View File
@@ -113,6 +113,10 @@ class Node {
addTag (k, v) {
this.tags[k] = v;
}
setID (id ) {
this.id = id;
}
}
class Way {
+15 -11
View File
@@ -6,11 +6,13 @@ Feature: Locating Nearest node on a Way - pick closest way
Scenario: Nearest - two ways crossing
Given the node map
| | 0 | c | 1 | |
| 7 | | n | | 2 |
| a | k | x | m | b |
| 6 | | l | | 3 |
| | 5 | d | 4 | |
"""
0 c 1
7 n 2
a k x m b
6 l 3
5 d 4
"""
And the ways
| nodes |
@@ -34,12 +36,14 @@ Feature: Locating Nearest node on a Way - pick closest way
Scenario: Nearest - inside a triangle
Given the node map
| | | | | | c | | | | | |
| | | | | | | | | | | |
| | | | y | | | | z | | | |
| | | | | 0 | | 1 | | | | |
| | | | 2 | | 3 | | 4 | | | |
| a | | | x | | u | | w | | | b |
"""
c
y z
0 1
2 3 4
a x u w b
"""
And the ways
| nodes |
+28 -20
View File
@@ -6,9 +6,11 @@ Feature: Locating Nearest node on a Way - basic projection onto way
Scenario: Nearest - easy-west way
Given the node map
| 0 | 1 | 2 | 3 | 4 |
| | a | x | b | |
| 5 | 6 | 7 | 8 | 9 |
"""
0 1 2 3 4
a x b
5 6 7 8 9
"""
And the ways
| nodes |
@@ -29,11 +31,13 @@ Feature: Locating Nearest node on a Way - basic projection onto way
Scenario: Nearest - north-south way
Given the node map
| 0 | | 5 |
| 1 | a | 6 |
| 2 | x | 7 |
| 3 | b | 8 |
| 4 | | 9 |
"""
0 5
1 a 6
2 x 7
3 b 8
4 9
"""
And the ways
| nodes |
@@ -54,12 +58,14 @@ Feature: Locating Nearest node on a Way - basic projection onto way
Scenario: Nearest - diagonal 1
Given the node map
| 8 | | 4 | | | |
| | a | | 5 | | |
| 0 | | x | | 6 | |
| | 1 | | y | | 7 |
| | | 2 | | b | |
| | | | 3 | | 9 |
"""
8 4
a 5
0 x 6
1 y 7
2 b
3 9
"""
And the ways
| nodes |
@@ -80,12 +86,14 @@ Feature: Locating Nearest node on a Way - basic projection onto way
Scenario: Nearest - diagonal 2
Given the node map
| | | | 3 | | 9 |
| | | 2 | | b | |
| | 1 | | y | | 7 |
| 0 | | x | | 6 | |
| | a | | 5 | | |
| 8 | | 4 | | | |
"""
3 9
2 b
1 y 7
0 x 6
a 5
8 4
"""
And the ways
| nodes |
+10 -8
View File
@@ -7,22 +7,24 @@ Feature: osrm-contract command line options: datasources
Given the profile "testbot"
Given the extract extra arguments "--generate-edge-lookup"
And the node map
| a | b |
"""
a b
"""
And the ways
| nodes |
| ab |
And the speed file
"""
1,2,27
2,1,27
2,3,27
3,2,27
1,4,27
4,1,27
1,2,50
2,1,50
2,3,50
3,2,50
1,4,50
4,1,50
"""
And the data has been extracted
Scenario: osrm-contract - Passing base file
When I run "osrm-contract --segment-speed-file {speeds_file} {processed_file}"
Then datasource names should contain "lua profile,25_osrmcontract_passing_base_file_speeds"
Then datasource names should contain "lua profile,27_osrmcontract_passing_base_file_speeds"
And it should exit successfully
@@ -0,0 +1,30 @@
@contract @options @edge-weight-updates-over-factor
Feature: osrm-contract command line option: edge-weight-updates-over-factor
Background: Log edge weight updates over given factor
Given the node locations
| node | lat | lon |
| a | 0.1 | 0.1 |
| b | 0.05 | 0.1 |
| c | 0.3 | 0.1 |
And the ways
| nodes | highway |
| ab | residential |
| ac | primary |
Given the profile "testbot"
Given the speed file
"""
1,2,100
1,3,100
"""
And the data has been saved to disk
Scenario: Logging weight with updates over factor of 2, long segment
When I run "osrm-extract --profile {profile_file} {osm_file} --generate-edge-lookup"
When I run "osrm-contract --edge-weight-updates-over-factor 2 --segment-speed-file {speeds_file} {processed_file}"
And stderr should contain "weight updates"
And stderr should contain "New speed: 100 kph"
And I route I should get
| from | to | route | speed |
| a | b | ab,ab | 100 km/h |
| a | c | ac,ac | 100 km/h |
+3 -1
View File
@@ -3,7 +3,9 @@ Feature: osrm-contract command line options: files
Background:
Given the profile "testbot"
And the node map
| a | b |
"""
a b
"""
And the ways
| nodes |
| ab |
+1 -1
View File
@@ -6,7 +6,7 @@ Feature: osrm-contract command line options: version
Background:
Given the profile "testbot"
Scenario: osrm-contract - Version, short
When I run "osrm-contract --v"
Then stderr should be empty
+3 -1
View File
@@ -7,7 +7,9 @@ Feature: osrm-extract command line options: files
Background:
Given the profile "testbot"
And the node map
| a | b |
"""
a b
"""
And the ways
| nodes |
| ab |
+3 -1
View File
@@ -15,7 +15,9 @@ Feature: osrm-routed command line options: files
Background:
Given the profile "testbot"
And the node map
| a | b |
"""
a b
"""
And the ways
| nodes |
| ab |

Some files were not shown because too many files have changed in this diff Show More