704 lines
32 KiB
Gherkin
704 lines
32 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,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:150 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 2
|
|
| |
|
|
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 |
|
|
| c,f | depart,arrive | bridge,road | true:180,false:0 true:180;true:0 |
|
|
| 1,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 |
|
|
| g,a | depart,arrive | bridge,road | true:0,true:0 false:180;true:180 |
|
|
| 2,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,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
|
|
c h
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
d g
|
|
e
|
|
|
|
|
f
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | oneway |
|
|
| ab | road | no |
|
|
| ef | road | no |
|
|
| bcde | road | yes |
|
|
| eghb | road | yes |
|
|
|
|
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 |
|
|
|
|
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---- g .
|
|
/ p .
|
|
a / \ f
|
|
\ / o /
|
|
\ / \ /
|
|
c n /
|
|
/ \ \/
|
|
/ k e
|
|
/ \ /
|
|
h 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,Hubertusallee,Hubertusallee | depart,turn straight,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,schwert | depart,turn left,turn straight,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 |
|