This PR improves routing results by adding support for snapping to multiple ways at input locations. This means all edges at the snapped location can act as source/target candidates for routing search, ensuring we always find the best route, and not the one dependent on the edge selected.
715 lines
33 KiB
Gherkin
715 lines
33 KiB
Gherkin
@guidance @merge-segregated
|
|
Feature: Merge Segregated Roads
|
|
|
|
Background:
|
|
Given the profile "car"
|
|
Given a grid size of 3 meters
|
|
|
|
#http://www.openstreetmap.org/#map=18/52.49950/13.33916
|
|
@negative
|
|
Scenario: oneway link road
|
|
Given the node map
|
|
"""
|
|
f - - - - - - -_-_e - - - - d
|
|
...''
|
|
a - - - b'- - - - - - - - - c
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| abc | road | yes |
|
|
| def | road | yes |
|
|
| be | road | yes |
|
|
|
|
When I route I should get
|
|
| waypoints | route | intersections |
|
|
| a,c | road,road | true:90,true:75 true:90 false:270;true:270 |
|
|
| d,f | road,road | true:270,false:90 false:255 true:270;true:90 |
|
|
|
|
#http://www.openstreetmap.org/#map=18/52.48337/13.36184
|
|
@negative
|
|
Scenario: Square Area - Same Name as road for in/out
|
|
Given the node map
|
|
"""
|
|
i
|
|
|
|
|
|
|
|
|
|
|
g
|
|
/ \
|
|
/ \
|
|
/ \
|
|
/ \
|
|
/ \
|
|
a - - - - c e - - - - f
|
|
\ /
|
|
\ /
|
|
\ /
|
|
\ /
|
|
\ /
|
|
d
|
|
|
|
|
|
|
|
|
|
|
j
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ac | road | no |
|
|
| ef | road | no |
|
|
| cdegc | road | yes |
|
|
| ig | top | no |
|
|
| jd | bot | no |
|
|
|
|
When I route I should get
|
|
| waypoints | route | intersections |
|
|
| a,f | road,road,road | true:90,false:45 true:135 false:270;true:45 true:180 false:315,true:90 false:225 true:315;true:270 |
|
|
|
|
#https://www.openstreetmap.org/#map=19/52.50003/13.33915
|
|
@negative
|
|
Scenario: Short Segment due to different roads
|
|
Given the node map
|
|
"""
|
|
. d
|
|
. '
|
|
. '
|
|
. '
|
|
. '
|
|
a - - - - - - - b - - c - - - - - - e
|
|
. .
|
|
. .
|
|
. .
|
|
. .
|
|
.
|
|
f
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| abce | pass | no |
|
|
| db | pass | yes |
|
|
| fg | aug | no |
|
|
| bfc | aug | yes |
|
|
|
|
When I route I should get
|
|
| waypoints | route | intersections |
|
|
| a,e | pass,pass | true:90,false:60 true:90 true:165 false:270,true:90 false:195 false:270;true:270 |
|
|
|
|
@negative
|
|
Scenario: Tripple Merge should not be possible
|
|
Given the node map
|
|
"""
|
|
. f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - g
|
|
.
|
|
a - - - - b - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - e
|
|
'
|
|
' c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - d
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | in | no |
|
|
| gfb | merge | yes |
|
|
| be | merge | yes |
|
|
| dcb | merge | yes |
|
|
|
|
When I route I should get
|
|
| waypoints | route | intersections |
|
|
| a,e | in,merge,merge | true:90;false:60 true:90 false:120 false:270;true:270 |
|
|
|
|
Scenario: Tripple Merge should not be possible
|
|
Given the node map
|
|
"""
|
|
. f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - g
|
|
.
|
|
a - - - - b - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - e
|
|
'
|
|
' c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - d
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | in | no |
|
|
| gfb | merge | yes |
|
|
| eb | merge | yes |
|
|
| bcd | merge | yes |
|
|
|
|
When I route I should get
|
|
| waypoints | route | intersections |
|
|
| a,d | in,merge,merge | true:90;false:60 false:90 true:120 false:270;true:270 |
|
|
|
|
@negative
|
|
Scenario: Don't accept turn-restrictions
|
|
Given the node map
|
|
"""
|
|
c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - d
|
|
/ \
|
|
a - - - b g - - h
|
|
\ /
|
|
e - - - - - - - - - - - - - - - - - - - - - - - - - - - - - f
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | road | yes |
|
|
| befgh | road | yes |
|
|
| bcdg | road | yes |
|
|
|
|
# This is an artificial scenario - not reasonable. It is only to test the merging on turn-restrictions
|
|
And the relations
|
|
| type | way:from | way:to | node:via | restriction |
|
|
| restriction | ab | bcdg | b | no_left_turn |
|
|
|
|
When I route I should get
|
|
| waypoints | route | intersections |
|
|
| a,h | road,road | true:90,false:60 true:120 false:270,true:90 false:240 false:300;true:270 |
|
|
|
|
@negative
|
|
Scenario: Actual Turn into segregated ways
|
|
Given the node map
|
|
"""
|
|
a - - - b - < - < - < - < - < - < - < - < - < - < - < c -
|
|
| \
|
|
| |
|
|
| |
|
|
d |
|
|
\ |
|
|
\ |
|
|
e > - > - > - > - > - > - > - > - > - > - > f - - - - - - g
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | road | no |
|
|
| fcb | road | yes |
|
|
| bdef | road | yes |
|
|
| fg | road | no |
|
|
|
|
When I route I should get
|
|
| waypoints | route | intersections |
|
|
| a,g | road,road | true:90,false:90 true:165 false:270,true:90 false:270 true:345;true:270 |
|
|
|
|
Scenario: Merging parallel roads with intermediate bridges
|
|
# https://www.mapillary.com/app/?lat=52.466483333333336&lng=13.431908333333332&z=17&focus=photo&pKey=LWXnKqoGqUNLnG0lofiO0Q
|
|
# http://www.openstreetmap.org/#map=19/52.46750/13.43171
|
|
Given the node map
|
|
"""
|
|
f
|
|
|
|
|
.e.
|
|
/ \
|
|
/ \
|
|
g d
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
h c
|
|
\ /
|
|
\ /
|
|
\ /
|
|
b
|
|
|
|
|
a
|
|
|
|
|
|
|
|
r - x - s
|
|
|
|
|
|
|
|
y
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | highway | oneway | lanes |
|
|
| ab | Hermannstr | secondary | | 2 |
|
|
| bc | Hermannstr | secondary | yes | 2 |
|
|
| cd | Hermannbruecke | secondary | yes | 2 |
|
|
| de | Hermannstr | secondary | yes | 2 |
|
|
| ef | Hermannstr | secondary | | 4 |
|
|
| eg | Hermannstr | secondary | yes | 2 |
|
|
| gh | Hermannbruecke | secondary | yes | 2 |
|
|
| hb | Hermannstr | secondary | yes | 2 |
|
|
| xa | Hermannstr | secondary | | 4 |
|
|
| yx | Hermannstr | secondary | | 4 |
|
|
| rxs | Silbersteinstr | tertiary | | 1 |
|
|
|
|
And the nodes
|
|
| node | highway |
|
|
| x | traffic_signals |
|
|
|
|
#the intermediate intersections of degree two indicate short segments of new names. At some point, we probably want to get rid of these
|
|
When I route I should get
|
|
| waypoints | turns | route | intersections |
|
|
| a,f | depart,arrive | Hermannstr,Hermannstr | true:0,true:0 false:180,true:0 false:180;true:180 |
|
|
| f,a | depart,arrive | Hermannstr,Hermannstr | true:180,false:0 true:180,false:0 true:180;true:0 |
|
|
| y,f | depart,arrive | Hermannstr,Hermannstr | true:0,true:0 true:90 false:180 true:270,true:0 false:180,true:0 false:180;true:180 |
|
|
| f,y | depart,arrive | Hermannstr,Hermannstr | true:180,false:0 true:180,false:0 true:180,false:0 true:90 true:180 true:270;true:0 |
|
|
|
|
Scenario: Four Way Intersection Double Through Street Segregated
|
|
Given the node map
|
|
"""
|
|
q p
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
b c
|
|
\ /
|
|
\ /
|
|
\ /
|
|
j - - - - - - - - - - - - - - - - - i . \ / , d - - - - - - - - - - - - - - - - - o
|
|
. \/ .
|
|
> a <
|
|
. /\ '
|
|
. / \ '
|
|
k - - - - - - - - - - - - - - - - - h / \ e - - - - - - - - - - - - - - - - - n
|
|
/ \
|
|
/ \
|
|
g f
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
l m
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | highway | oneway | name | lanes |
|
|
| khaij | primary | yes | first | 4 |
|
|
| odaen | primary | yes | first | 4 |
|
|
| qbacp | primary | yes | second | 4 |
|
|
| mfagl | primary | yes | second | 4 |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns |
|
|
| f,e | second,first,first | depart,turn right,arrive |
|
|
| f,c | second,second | depart,arrive |
|
|
| f,i | second,first,first | depart,turn left,arrive |
|
|
| f,g | second,second,second | depart,continue uturn,arrive |
|
|
| d,c | first,second,second | depart,turn right,arrive |
|
|
| d,i | first,first | depart,arrive |
|
|
| d,g | first,second,second | depart,turn left,arrive |
|
|
| d,e | first,first,first | depart,continue uturn,arrive |
|
|
| b,i | second,first,first | depart,turn right,arrive |
|
|
| b,g | second,second | depart,arrive |
|
|
| b,e | second,first,first | depart,turn left,arrive |
|
|
| b,c | second,second,second | depart,continue uturn,arrive |
|
|
| h,g | first,second,second | depart,turn right,arrive |
|
|
| h,e | first,first | depart,arrive |
|
|
| h,c | first,second,second | depart,turn left,arrive |
|
|
| h,i | first,first,first | depart,continue uturn,arrive |
|
|
|
|
Scenario: Middle Island Over Bridge
|
|
Given the node map
|
|
"""
|
|
a
|
|
|
|
|
.b.
|
|
c h
|
|
1 |
|
|
| 4
|
|
| |
|
|
2 |
|
|
| 3
|
|
d g
|
|
'e'
|
|
|
|
|
f
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | road | no |
|
|
| ef | road | no |
|
|
| bc | road | yes |
|
|
| cd | bridge | yes |
|
|
| de | road | yes |
|
|
| eg | road | yes |
|
|
| gh | bridge | yes |
|
|
| hb | road | yes |
|
|
|
|
When I route I should get
|
|
| waypoints | turns | route | intersections |
|
|
| a,f | depart,arrive | road,road | true:180,false:0 true:180,false:0 true:180;true:0 |
|
|
| 1,f | depart,arrive | bridge,road | true:180,false:0 true:180;true:0 |
|
|
| 2,f | depart,arrive | bridge,road | true:180,false:0 true:180;true:0 |
|
|
| f,a | depart,arrive | road,road | true:0,true:0 false:180,true:0 false:180;true:180 |
|
|
| 3,a | depart,arrive | bridge,road | true:0,true:0 false:180;true:180 |
|
|
| 4,a | depart,arrive | bridge,road | true:0,true:0 false:180;true:180 |
|
|
|
|
@negative
|
|
Scenario: Traffic Circle
|
|
Given the node map
|
|
"""
|
|
a - - - - b - - - e - - - c - - - - d
|
|
\ /
|
|
\ /
|
|
f
|
|
|
|
|
|
|
|
|
|
|
g
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | left | no |
|
|
| bfceb | circle | yes |
|
|
| fg | bottom | no |
|
|
| cd | right | no |
|
|
|
|
When I route I should get
|
|
| waypoints | route | intersections |
|
|
| a,d | left,circle,right,right | true:90,false:90 true:120 false:270;true:60 true:180 false:300;true:90 false:240 true:270;true:270 |
|
|
| g,d | bottom,circle,right,right | true:0;true:60 false:180 false:300;true:90 false:240 true:270;true:270 |
|
|
|
|
Scenario: Middle Island
|
|
Given the node map
|
|
"""
|
|
a
|
|
|
|
|
b-----z
|
|
/ \
|
|
c h
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
d g
|
|
\ /
|
|
e
|
|
|
|
|
f
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | road | no |
|
|
| ef | road | no |
|
|
| bcde | road | yes |
|
|
| eghb | road | yes |
|
|
| bz | cross | no |
|
|
|
|
And the relations
|
|
| type | way:from | way:to | node:via | restriction |
|
|
| restriction | bz | bcde | b | no_left_turn |
|
|
|
|
When I route I should get
|
|
| waypoints | turns | route |
|
|
| a,f | depart,arrive | road,road |
|
|
| c,f | depart,arrive | road,road |
|
|
| f,a | depart,arrive | road,road |
|
|
| g,a | depart,arrive | road,road |
|
|
| z,a | depart,turn right,arrive | cross,road,road |
|
|
|
|
Scenario: Traffic Island
|
|
Given the node map
|
|
"""
|
|
f
|
|
a - - b < > d - - e
|
|
c
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | road | no |
|
|
| de | road | no |
|
|
| bcdfb | road | yes |
|
|
|
|
When I route I should get
|
|
| waypoints | route | intersections |
|
|
| a,e | road,road | true:90;true:270 |
|
|
|
|
@negative
|
|
Scenario: Turning Road, Don't remove sliproads
|
|
Given the node map
|
|
"""
|
|
h - - - - - g - - - - - - f - - - - - e
|
|
_ '
|
|
.
|
|
a - - - - - b - - - - - - c - - - - - d
|
|
|
|
|
|
|
|
|
|
|
i
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | road | yes |
|
|
| bcd | road | yes |
|
|
| efgh | road | yes |
|
|
| fb | road | yes |
|
|
| bi | turn | yes |
|
|
|
|
And the relations
|
|
| type | way:from | way:to | node:via | restriction |
|
|
| restriction | fb | bcd | b | no_left_turn |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns | intersections |
|
|
| a,d | road,road | depart,arrive | true:90,false:60 true:90 true:180 false:270;true:270 |
|
|
| e,h | road,road | depart,arrive | true:270,false:90 true:240 true:270;true:90 |
|
|
| e,i | road,turn,turn | depart,turn left,arrive | true:270;false:90 true:240 true:270,false:60 false:90 true:180 false:270;true:0 |
|
|
@negative
|
|
Scenario: Meeting Turn Roads
|
|
Given the node map
|
|
"""
|
|
k l
|
|
| |
|
|
| |
|
|
| |
|
|
h - - - - - g - - - - - - - f - - - - - e
|
|
| ' ' |
|
|
| x |
|
|
| . . |
|
|
a - - - - - b - - - - - - - c - - - - - d
|
|
| |
|
|
| |
|
|
| |
|
|
i j
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | horiz | yes |
|
|
| bc | horiz | yes |
|
|
| cd | horiz | yes |
|
|
| ef | horiz | yes |
|
|
| fg | horiz | yes |
|
|
| gh | horiz | yes |
|
|
| kg | vert | yes |
|
|
| gb | vert | yes |
|
|
| bi | vert | yes |
|
|
| jc | vert | yes |
|
|
| cf | vert | yes |
|
|
| fl | vert | yes |
|
|
| xg | horiz | no |
|
|
| xc | horiz | no |
|
|
| xf | horiz | no |
|
|
| xb | horiz | no |
|
|
And the relations
|
|
| type | way:from | way:to | node:via | restriction |
|
|
| restriction | bc | cf | c | no_left_turn |
|
|
| restriction | fg | gb | g | no_left_turn |
|
|
| restriction | gb | bc | b | no_left_turn |
|
|
| restriction | cf | fg | f | no_left_turn |
|
|
| restriction | xb | xf | x | only_straight_on |
|
|
| restriction | xf | xb | x | only_straight_on |
|
|
| restriction | xg | xc | x | only_straight_on |
|
|
| restriction | xc | xg | x | only_straight_on |
|
|
|
|
# the goal here should be not to mention the intersection in the middle at all and also suppress the segregated parts
|
|
When I route I should get
|
|
| waypoints | route | intersections |
|
|
| a,l | horiz,vert,vert | true:90;false:0 true:60 true:90 true:180 false:270,true:60 false:120 false:240 false:300,true:0 false:90 false:180 false:240 true:270;true:180 |
|
|
| a,d | horiz,horiz | true:90,false:0 true:60 true:90 true:180 false:270,false:0 true:90 false:180 false:270 true:300;true:270 |
|
|
| j,h | vert,horiz,horiz | true:0;true:0 true:90 false:180 false:270 true:300,false:60 false:120 false:240 true:300,false:0 false:90 false:120 true:180 true:270;true:90 |
|
|
| j,l | vert,vert | true:0,true:0 true:90 false:180 false:270 true:300,true:0 false:90 false:180 true:240 false:270;true:180 |
|
|
|
|
|
|
Scenario: Square Area - Don't merge almost circular roads
|
|
Given a grid size of 2 meters
|
|
Given the node map
|
|
"""
|
|
i
|
|
b `
|
|
` ` p .
|
|
a ` g` ` \ f
|
|
\ / o /
|
|
\ / \ /
|
|
h - - c n /
|
|
\ \/
|
|
k e
|
|
\ /
|
|
l /
|
|
\ /
|
|
m . d
|
|
/
|
|
j
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ac | Halenseestraße | yes |
|
|
| gb | Halenseestraße | yes |
|
|
| cklmdenopgc | Rathenauplatz | yes |
|
|
| ig | Kurfürstendamm | yes |
|
|
| ef | Kurfürstendamm | yes |
|
|
| ch | Hubertusallee | yes |
|
|
| jd | Hubertusallee | yes |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns |
|
|
| i,h | Kurfürstendamm,Rathenauplatz,Hubertusallee,Hubertusallee | depart,turn right,turn right,arrive |
|
|
|
|
# https://www.openstreetmap.org/#map=19/52.46339/13.40272
|
|
Scenario: Do not merge links between segregated roads
|
|
Given the node map
|
|
"""
|
|
f
|
|
`````````` ..............
|
|
` ` ` ` e - - - - - - - d
|
|
a 1
|
|
```````````.............. |
|
|
`````````` b - - - - - - - c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | germ | yes |
|
|
| bc | ober | yes |
|
|
| de | ober | yes |
|
|
| ef | germ | yes |
|
|
| eb | germ | no |
|
|
| gb | germ | no |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns |
|
|
| a,c | germ,ober | depart,arrive |
|
|
| a,g | germ,germ,germ | depart,continue right,arrive |
|
|
| a,1 | germ,germ,germ | depart,continue left,arrive |
|
|
| d,g | ober,germ,germ | depart,turn left,arrive |
|
|
|
|
# https://www.openstreetmap.org/#map=19/51.32888/6.57059
|
|
Scenario: Places in presence of oneways
|
|
Given the node map
|
|
"""
|
|
i l
|
|
| |
|
|
| |
|
|
g - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - f
|
|
| |
|
|
| |
|
|
a - - - b - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - - - - - - - - - - - - - - - c - - - d
|
|
| |
|
|
| |
|
|
j k
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | schwert | yes |
|
|
| cd | schwert | yes |
|
|
| ig | luise | yes |
|
|
| bj | luise | yes |
|
|
| kc | marianne | yes |
|
|
| fl | marianne | yes |
|
|
| bc | albrecht | no |
|
|
| fg | albrecht | no |
|
|
| gb | albrecht | yes |
|
|
| cf | albrecht | yes |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns |
|
|
| a,l | schwert,albrecht,marianne,marianne | depart,new name straight,turn left,arrive |
|
|
| a,j | schwert,luise,luise | depart,turn right,arrive |
|
|
| a,1 | schwert,albrecht,albrecht,albrecht | depart,new name straight,continue uturn,arrive |
|
|
| k,l | marianne,marianne | depart,arrive |
|
|
| k,j | marianne,albrecht,luise,luise | depart,turn left,turn left,arrive |
|
|
| k,d | marianne,schwert,schwert | depart,turn right,arrive |
|
|
| i,j | luise,luise | depart,arrive |
|
|
| i,d | luise,albrecht,schwert | depart,turn left,arrive |
|
|
| i,l | luise,albrecht,marianne,marianne | depart,turn left,turn left,arrive |
|
|
|
|
# https://www.openstreetmap.org/#map=19/52.46339/13.40272
|
|
Scenario: Do not merge links between segregated roads
|
|
Given the node map
|
|
"""
|
|
d
|
|
f............... |
|
|
`````````` .............. |
|
|
a............... ` ` ` ` e
|
|
``````````.............. 1
|
|
`````````` b
|
|
- - - - - - - c
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | otto | yes |
|
|
| bc | otto | no |
|
|
| de | neu | no |
|
|
| ef | otto | yes |
|
|
| eb | otto | no |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns | # |
|
|
| a,c | otto,otto | depart,arrive | |
|
|
| a,f | otto,otto,otto | depart,continue uturn,arrive | |
|
|
| a,1 | otto,otto,otto | depart,continue left,arrive | |
|
|
| a,d | otto,neu,neu | depart,turn left,arrive | |
|
|
| c,1 | otto,otto | depart,arrive | |
|
|
| c,f | otto,otto,otto | depart,continue left,arrive | Ideally, this would be depart,arrive, but the obvious discovery making the turn onto `1` from `c` obvious interferes here |
|
|
|
|
# https://www.openstreetmap.org/#map=18/50.94608/7.02030
|
|
Scenario: Do not merge oneway places
|
|
Given the node map
|
|
"""
|
|
j
|
|
|
|
|
|
|
|
g - f - - - - - - - e
|
|
| |
|
|
| |
|
|
| d
|
|
| \
|
|
| .c.
|
|
a - - - - - - b` `
|
|
| `
|
|
| ` h
|
|
|
|
|
|
|
|
i
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| efabc | kobe | yes |
|
|
| edc | kobe | no |
|
|
| fg | arn | no |
|
|
| ia | kobu | yes |
|
|
| hc | wei | no |
|
|
| ej | wei | no |
|
|
|
|
When I route I should get
|
|
| waypoints | route | turns |
|
|
| j,h | wei,wei | depart,arrive |
|
|
| a,d | kobe,kobe,kobe | depart,continue left,arrive |
|