Fix routing when start and target are on the same segment

Fixes issue #1864. Given the simple set-up:

a --> b --> c
^-----------|

This would translate into an edge based graph (ab) -> (bc),
(bc) -> (ca), (ca) -> (ab).

Starting at the end of the one-way street (ab) and going to
the beginning, the query has to find a self-loop within the
graph (ab) -> (bc) -> (ca) -> (ab), as both nodes map to the
same segment (ab).
This commit is contained in:
Moritz Kobitzsch
2016-01-07 10:33:47 +01:00
committed by Patrick Niklaus
parent 238e77d959
commit 1c1bfd7541
22 changed files with 744 additions and 287 deletions
+23 -5
View File
@@ -29,7 +29,7 @@ Feature: Basic Distance Matrix
| ab | primary |
| bc | secondary |
| cd | tertiary |
When I request a travel time matrix I should get
| | a | b | c | d |
| a | 0 | 100 | 300 | 600 |
@@ -49,7 +49,7 @@ Feature: Basic Distance Matrix
| | a | b |
| a | 0 | 95 +- 10 |
| b | 95 ~10% | 0 |
Scenario: Testbot - Travel time matrix of small grid
Given the node map
| a | b | c |
@@ -82,7 +82,7 @@ Feature: Basic Distance Matrix
| | a | b |
| a | 0 | 100 |
| b | | 0 |
Scenario: Testbot - Travel time matrix of network with oneways
Given the node map
| x | a | b | y |
@@ -136,7 +136,7 @@ Feature: Basic Distance Matrix
| a | 100 | 200 | 300 |
| b | 0 | 100 | 200 |
Scenario: Testbog - All coordinates are from same small component
Scenario: Testbot - All coordinates are from same small component
Given a grid size of 300 meters
Given the extract extra arguments "--small-component-size 4"
Given the node map
@@ -156,7 +156,7 @@ Feature: Basic Distance Matrix
| f | 0 | 300 |
| g | 300 | 0 |
Scenario: Testbog - Coordinates are from different small component and snap to big CC
Scenario: Testbot - Coordinates are from different small component and snap to big CC
Given a grid size of 300 meters
Given the extract extra arguments "--small-component-size 4"
Given the node map
@@ -179,3 +179,21 @@ Feature: Basic Distance Matrix
| h | 0 | 300 | 0 | 300 |
| i | 300 | 0 | 300 | 0 |
Scenario: Testbot - Travel time matrix with loops
Given the node map
| a | 1 | 2 | b |
| d | 4 | 3 | c |
And the ways
| nodes | oneway |
| ab | yes |
| bc | yes |
| cd | yes |
| da | yes |
When I request a travel time matrix I should get
| | 1 | 2 | 3 | 4 |
| 1 | 0 | 100 +-1 | 400 +-1 | 500 +-1 |
| 2 | 700 +-1 | 0 | 300 +-1 | 400 +-1 |
| 3 | 400 +-1 | 500 +-1 | 0 | 100 +-1 |
| 4 | 300 +-1 | 400 +-1 | 700 +-1 | 0 |