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.
385 lines
16 KiB
Gherkin
385 lines
16 KiB
Gherkin
@routing @guidance
|
|
Feature: Basic Roundabout
|
|
|
|
Background:
|
|
Given the profile "car"
|
|
Given a grid size of 10 meters
|
|
|
|
Scenario: Only Enter
|
|
Given the node map
|
|
"""
|
|
a
|
|
b
|
|
d c g h
|
|
e
|
|
f
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | junction |
|
|
| ab | |
|
|
| cd | |
|
|
| ef | |
|
|
| gh | |
|
|
| bcegb | roundabout |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns |
|
|
| a,c | ab,bcegb,bcegb | depart,roundabout-exit-undefined,arrive |
|
|
| a,e | ab,bcegb,bcegb | depart,roundabout-exit-undefined,arrive |
|
|
| a,g | ab,bcegb,bcegb | depart,roundabout-exit-undefined,arrive |
|
|
| d,e | cd,bcegb,bcegb | depart,roundabout-exit-undefined,arrive |
|
|
| d,g | cd,bcegb,bcegb | depart,roundabout-exit-undefined,arrive |
|
|
| d,b | cd,bcegb,bcegb | depart,roundabout-exit-undefined,arrive |
|
|
| f,g | ef,bcegb,bcegb | depart,roundabout-exit-undefined,arrive |
|
|
| f,b | ef,bcegb,bcegb | depart,roundabout-exit-undefined,arrive |
|
|
| f,c | ef,bcegb,bcegb | depart,roundabout-exit-undefined,arrive |
|
|
| h,b | gh,bcegb,bcegb | depart,roundabout-exit-undefined,arrive |
|
|
| h,c | gh,bcegb,bcegb | depart,roundabout-exit-undefined,arrive |
|
|
| h,e | gh,bcegb,bcegb | depart,roundabout-exit-undefined,arrive |
|
|
|
|
#2927
|
|
Scenario: Only Roundabout
|
|
Given the node map
|
|
"""
|
|
a
|
|
b d
|
|
c
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | junction |
|
|
| abcda | roundabout |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns |
|
|
| a,c | abcda,abcda | depart,arrive |
|
|
|
|
Scenario: Only Exit
|
|
Given the node map
|
|
"""
|
|
a
|
|
b
|
|
d c g h
|
|
e
|
|
f
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | junction |
|
|
| ab | |
|
|
| cd | |
|
|
| ef | |
|
|
| gh | |
|
|
| bcegb | roundabout |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns |
|
|
| b,d | bcegb,cd,cd | depart,roundabout-exit-1,arrive |
|
|
| b,f | bcegb,ef,ef | depart,roundabout-exit-2,arrive |
|
|
| b,h | bcegb,gh,gh | depart,roundabout-exit-3,arrive |
|
|
| c,f | bcegb,ef,ef | depart,roundabout-exit-1,arrive |
|
|
| c,h | bcegb,gh,gh | depart,roundabout-exit-2,arrive |
|
|
| c,a | bcegb,ab,ab | depart,roundabout-exit-3,arrive |
|
|
| e,h | bcegb,gh,gh | depart,roundabout-exit-1,arrive |
|
|
| e,a | bcegb,ab,ab | depart,roundabout-exit-2,arrive |
|
|
| e,d | bcegb,cd,cd | depart,roundabout-exit-3,arrive |
|
|
| g,a | bcegb,ab,ab | depart,roundabout-exit-1,arrive |
|
|
| g,d | bcegb,cd,cd | depart,roundabout-exit-2,arrive |
|
|
| g,f | bcegb,ef,ef | depart,roundabout-exit-3,arrive |
|
|
#phantom node snapping can result in a full round-trip here, therefore we cannot test b->a and the other direct exits
|
|
|
|
Scenario: Drive Around
|
|
Given the node map
|
|
"""
|
|
a
|
|
b
|
|
d c g h
|
|
e
|
|
f
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | junction |
|
|
| ab | |
|
|
| cd | |
|
|
| ef | |
|
|
| gh | |
|
|
| bcegb | roundabout |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns |
|
|
| b,c | bcegb,bcegb | depart,arrive |
|
|
| b,e | bcegb,bcegb | depart,arrive |
|
|
| b,g | bcegb,bcegb | depart,arrive |
|
|
| c,e | bcegb,bcegb | depart,arrive |
|
|
| c,g | bcegb,bcegb | depart,arrive |
|
|
| c,b | bcegb,bcegb | depart,arrive |
|
|
| e,g | bcegb,bcegb | depart,arrive |
|
|
| e,b | bcegb,bcegb | depart,arrive |
|
|
| e,c | bcegb,bcegb | depart,arrive |
|
|
| g,b | bcegb,bcegb | depart,arrive |
|
|
| g,c | bcegb,bcegb | depart,arrive |
|
|
| g,e | bcegb,bcegb | depart,arrive |
|
|
|
|
Scenario: Mixed Entry and Exit
|
|
Given the node map
|
|
"""
|
|
c a
|
|
j b f
|
|
k e
|
|
l h d
|
|
g i
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | junction | oneway |
|
|
| abc | | yes |
|
|
| def | | yes |
|
|
| ghi | | yes |
|
|
| jkl | | yes |
|
|
| bkheb | roundabout | yes |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns |
|
|
| a,c | abc,abc,abc | depart,roundabout-exit-1,arrive |
|
|
| a,l | abc,jkl,jkl | depart,roundabout-exit-2,arrive |
|
|
| a,i | abc,ghi,ghi | depart,roundabout-exit-3,arrive |
|
|
| a,f | abc,def,def | depart,roundabout-exit-4,arrive |
|
|
| d,f | def,def,def | depart,roundabout-exit-1,arrive |
|
|
| d,c | def,abc,abc | depart,roundabout-exit-2,arrive |
|
|
| d,l | def,jkl,jkl | depart,roundabout-exit-3,arrive |
|
|
| d,i | def,ghi,ghi | depart,roundabout-exit-4,arrive |
|
|
| g,i | ghi,ghi,ghi | depart,roundabout-exit-1,arrive |
|
|
| g,f | ghi,def,def | depart,roundabout-exit-2,arrive |
|
|
| g,c | ghi,abc,abc | depart,roundabout-exit-3,arrive |
|
|
| g,l | ghi,jkl,jkl | depart,roundabout-exit-4,arrive |
|
|
| j,l | jkl,jkl,jkl | depart,roundabout-exit-1,arrive |
|
|
| j,i | jkl,ghi,ghi | depart,roundabout-exit-2,arrive |
|
|
| j,f | jkl,def,def | depart,roundabout-exit-3,arrive |
|
|
| j,c | jkl,abc,abc | depart,roundabout-exit-4,arrive |
|
|
|
|
Scenario: Mixed Entry and Exit - segregated roads
|
|
Given the node map
|
|
"""
|
|
a c
|
|
|
|
l b d
|
|
k e
|
|
j h f
|
|
|
|
i g
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | junction | oneway |
|
|
| abc | | yes |
|
|
| def | | yes |
|
|
| ghi | | yes |
|
|
| jkl | | yes |
|
|
| bkheb | roundabout | yes |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns |
|
|
| a,c | abc,abc,abc | depart,roundabout-exit-4,arrive |
|
|
| a,l | abc,jkl,jkl | depart,roundabout-exit-1,arrive |
|
|
| a,i | abc,ghi,ghi | depart,roundabout-exit-2,arrive |
|
|
| a,f | abc,def,def | depart,roundabout-exit-3,arrive |
|
|
| d,f | def,def,def | depart,roundabout-exit-4,arrive |
|
|
| d,c | def,abc,abc | depart,roundabout-exit-1,arrive |
|
|
| d,l | def,jkl,jkl | depart,roundabout-exit-2,arrive |
|
|
| d,i | def,ghi,ghi | depart,roundabout-exit-3,arrive |
|
|
| g,i | ghi,ghi,ghi | depart,roundabout-exit-4,arrive |
|
|
| g,f | ghi,def,def | depart,roundabout-exit-1,arrive |
|
|
| g,c | ghi,abc,abc | depart,roundabout-exit-2,arrive |
|
|
| g,l | ghi,jkl,jkl | depart,roundabout-exit-3,arrive |
|
|
| j,l | jkl,jkl,jkl | depart,roundabout-exit-4,arrive |
|
|
| j,i | jkl,ghi,ghi | depart,roundabout-exit-1,arrive |
|
|
| j,f | jkl,def,def | depart,roundabout-exit-2,arrive |
|
|
| j,c | jkl,abc,abc | depart,roundabout-exit-3,arrive |
|
|
|
|
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
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | junction | oneway |
|
|
| ab | | yes |
|
|
| bc | | yes |
|
|
| de | | yes |
|
|
| ef | | yes |
|
|
| gh | | yes |
|
|
| hi | | yes |
|
|
| jk | | yes |
|
|
| kl | | yes |
|
|
| bkheb | roundabout | yes |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns |
|
|
| a,c | ab,bc,bc | depart,roundabout-exit-4,arrive |
|
|
| a,l | ab,kl,kl | depart,roundabout-exit-1,arrive |
|
|
| a,i | ab,hi,hi | depart,roundabout-exit-2,arrive |
|
|
| a,f | ab,ef,ef | depart,roundabout-exit-3,arrive |
|
|
| d,f | de,ef,ef | depart,roundabout-exit-4,arrive |
|
|
| d,c | de,bc,bc | depart,roundabout-exit-1,arrive |
|
|
| d,l | de,kl,kl | depart,roundabout-exit-2,arrive |
|
|
| d,i | de,hi,hi | depart,roundabout-exit-3,arrive |
|
|
| g,i | gh,hi,hi | depart,roundabout-exit-4,arrive |
|
|
| g,f | gh,ef,ef | depart,roundabout-exit-1,arrive |
|
|
| g,c | gh,bc,bc | depart,roundabout-exit-2,arrive |
|
|
| g,l | gh,kl,kl | depart,roundabout-exit-3,arrive |
|
|
| j,l | jk,kl,kl | depart,roundabout-exit-4,arrive |
|
|
| j,i | jk,hi,hi | depart,roundabout-exit-1,arrive |
|
|
| j,f | jk,ef,ef | depart,roundabout-exit-2,arrive |
|
|
| j,c | jk,bc,bc | depart,roundabout-exit-3,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
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | junction | name | highway | oneway | ref |
|
|
| ab | | crescent | trunk | yes | US 130 |
|
|
| bcd | roundabout | crescent | trunk | yes | US 130 |
|
|
| de | | crescent | trunk | yes | US 130 |
|
|
| fg | | crescent | trunk | yes | US 130 |
|
|
| gh | roundabout | crescent | trunk | yes | US 130 |
|
|
| hi | | crescent | trunk | yes | US 130 |
|
|
| jh | | | trunk_link | yes | NJ 38 |
|
|
| hb | roundabout | | trunk_link | yes | NJ 38 |
|
|
| bl | | | trunk_link | yes | NJ 38 |
|
|
| cnd | | kaighns | trunk_link | yes | |
|
|
| dmg | roundabout | | trunk_link | yes | |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns | ref |
|
|
| 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 |
|
|
|
|
Scenario: Double Roundabout with through-lane
|
|
#http://map.project-osrm.org/?z=18¢er=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
|
|
"""
|
|
|
|
And the nodes
|
|
| node | highway |
|
|
| i | traffic_signals |
|
|
|
|
And the ways
|
|
| nodes | junction | name | oneway |
|
|
| bcdrqeb | roundabout | sheridan circle | yes |
|
|
| ghi | roundabout | dupont circle | yes |
|
|
| ijg | roundabout | dupont circle | yes |
|
|
| ab | | massachusetts | no |
|
|
| sfgpik | | massachusetts | no |
|
|
| cl | | 23rd street | no |
|
|
| oe | | r street | no |
|
|
| jn | | new hampshire | no |
|
|
| mh | | new hampshire | yes |
|
|
| rsq | | massachusetts | yes |
|
|
| ft | | suppressed | no |
|
|
|
|
And the relations
|
|
| type | way:from | way:to | node:via | restriction |
|
|
| restriction | sfgpik | ijg | 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 |
|
|
|
|
#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
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | junction | name | highway | oneway |
|
|
| abija | roundabout | egg | primary | yes |
|
|
| defgd | roundabout | egg | primary | yes |
|
|
| bcd | roundabout | egg | primary | yes |
|
|
| ghi | | egg | primary | yes |
|
|
| amklb | | ll | primary | yes |
|
|
| wk | | ll | primary | no |
|
|
| dnope | | lr | secondary | yes |
|
|
| fqrsg | | tr | primary | yes |
|
|
| rx | | tr | primary | no |
|
|
| ituvj | | tl | primary | yes |
|
|
|
|
And the nodes
|
|
| node | highway |
|
|
| c | give_way |
|
|
| h | give_way |
|
|
|
|
When I route I should get
|
|
| 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 straight,arrive |
|
|
|