Take stop signs into account during routing

This commit is contained in:
Siarhei Fedartsou 2022-10-31 21:36:08 +01:00
parent 62298cf409
commit be1b86657c
4 changed files with 82 additions and 6 deletions

View File

@ -33,7 +33,45 @@ Feature: Car - Handle give way signs
When I route I should get
| from | to | time | # |
| 1 | 2 | 11.1s | no turn with no stop sign |
| 3 | 4 | 13.1s | no turn with stop sign |
| g | j | 18.7s | turn with no stop sign |
| k | n | 20.7s | turn with stop sign |
| 1 | 2 | 11.1s | no turn with no give way |
| 3 | 4 | 13.1s | no turn with give way |
| g | j | 18.7s | turn with no give way |
| k | n | 20.7s | turn with give way |
Scenario: Car - Give way direction
Given the node map
"""
a-1-b-2-c
d-3-e-4-f
g-5-h-6-i
j-7-k-8-l
"""
And the ways
| nodes | highway |
| abc | primary |
| def | primary |
| ghi | primary |
| jkl | primary |
And the nodes
| node | highway | direction |
| e | give_way | |
| h | give_way | forward |
| k | give_way | backward |
When I route I should get
| from | to | time | weight | # |
| 1 | 2 | 11.1s | 11.1 | no turn with no give way |
| 2 | 1 | 11.1s | 11.1 | no turn with no give way |
| 3 | 4 | 13.1s | 13.1 | no turn with give way |
| 4 | 3 | 13.1s | 13.1 | no turn with give way |
| 5 | 6 | 13.1s | 13.1 | no turn with give way |
| 6 | 5 | 11.1s | 11.1 | no turn with no give way |
| 7 | 8 | 11.1s | 11.1 | no turn with no give way |
| 8 | 7 | 13.1s | 13.1 | no turn with give way |

View File

@ -37,3 +37,40 @@ Feature: Car - Handle stop signs
| 3 | 4 | 13.1s | no turn with stop sign |
| g | j | 18.7s | turn with no stop sign |
| k | n | 20.7s | turn with stop sign |
Scenario: Car - Stop sign direction
Given the node map
"""
a-1-b-2-c
d-3-e-4-f
g-5-h-6-i
j-7-k-8-l
"""
And the ways
| nodes | highway |
| abc | primary |
| def | primary |
| ghi | primary |
| jkl | primary |
And the nodes
| node | highway | direction |
| e | stop | |
| h | stop | forward |
| k | stop | backward |
When I route I should get
| from | to | time | weight | # |
| 1 | 2 | 11.1s | 11.1 | no turn with no stop sign |
| 2 | 1 | 11.1s | 11.1 | no turn with no stop sign |
| 3 | 4 | 13.1s | 13.1 | no turn with stop sign |
| 4 | 3 | 13.1s | 13.1 | no turn with stop sign |
| 5 | 6 | 13.1s | 13.1 | no turn with stop sign |
| 6 | 5 | 11.1s | 11.1 | no turn with no stop sign |
| 7 | 8 | 11.1s | 11.1 | no turn with no stop sign |
| 8 | 7 | 13.1s | 13.1 | no turn with stop sign |

View File

@ -1197,7 +1197,7 @@ ExtractionContainers::IdentifyTrafficFlowControlNodes(
};
std::for_each(external_nodes.begin(), external_nodes.end(), mark_traffic_nodes);
// Extract all the segments that lead up to unidirectional traffic signals.
// Extract all the segments that lead up to unidirectional traffic flow control nodes.
const auto set_segments = [&](const size_t way_list_idx, auto const & /*unused*/) {
const auto node_start_offset =
used_node_id_list.begin() + way_node_id_offsets[way_list_idx];

View File

@ -126,6 +126,7 @@
{"key": "route", "object_types": ["way"]},
{"key": "highway", "value": "traffic_signals", "object_types": ["node"]},
{"key": "highway", "value": "stop", "object_types": ["node"]},
{"key": "highway", "value": "give_way", "object_types": ["node"]},
{"key": "highway", "value": "crossing", "object_types": ["node"]},
{"key": "access", "value": "yes"},
{"key": "access", "value": "motorcar"},