Allow counting of service exits on service roundabouts, see #4075

This commit is contained in:
Michael Krasnyk 2017-05-22 17:16:48 +02:00 committed by Patrick Niklaus
parent ac35757616
commit 1d26deb0be
3 changed files with 19 additions and 14 deletions

View File

@ -4,6 +4,9 @@
- Added conditional restriction support with `parse-conditional-restrictions=true|false` to osrm-extract. This option saves conditional turn restrictions to the .restrictions file for parsing by contract later. Added `parse-conditionals-from-now=utc time stamp` and `--time-zone-file=/path/to/file` to osrm-contract
- Files
- .osrm.nodes file was renamed to .nbg_nodes and .ebg_nodes was added
- Guidance
- #4075 Changed counting of exits on service roundabouts
# 5.7.1
- Bugfixes

View File

@ -796,26 +796,23 @@ Feature: Basic Roundabout
@4030 @4075
Scenario: Service roundabout with service exits
# Counting of service exits must be adjusted in #4075
Given the node map
"""
e
f a d
g b1c
h
g a d f
h b1c e
"""
And the ways
| nodes | highway | junction |
| abcda | service | roundabout |
| de | service | |
| af | service | |
| bg | tertiary | |
| ce | service | |
| df | service | |
| ag | tertiary | |
| bh | service | |
When I route I should get
| from | to | route | turns |
| 1 | e | abcda,de,de | depart,roundabout-exit-1,arrive |
| 1 | f | abcda,af,af | depart,roundabout-exit-1,arrive |
| 1 | g | abcda,bg,bg | depart,roundabout-exit-1,arrive |
| 1 | h | abcda,bh,bh | depart,roundabout-exit-1,arrive |
| 1 | e | abcda,ce,ce | depart,roundabout-exit-1,arrive |
| 1 | f | abcda,df,df | depart,roundabout-exit-2,arrive |
| 1 | g | abcda,ag,ag | depart,roundabout-exit-3,arrive |
| 1 | h | abcda,bh,bh | depart,roundabout-exit-4,arrive |

View File

@ -478,15 +478,20 @@ Intersection RoundaboutHandler::handleRoundabouts(const RoundaboutType roundabou
return true;
}
return false;
}();
};
if (has_non_ignorable_exit)
if (out_data.road_classification.IsLowPriorityRoadClass() ||
has_non_ignorable_exit())
{
turn.instruction = TurnInstruction::REMAIN_ROUNDABOUT(
roundabout_type, getTurnDirection(turn.angle));
}
else
{ // Suppress exit instructions from normal roundabouts to service roads
turn.instruction = {TurnType::Suppressed, getTurnDirection(turn.angle)};
}
}
}
else
{
turn.instruction =