Skip to content

Commit

Permalink
Handle motorway forks with links as a normal motorway ...
Browse files Browse the repository at this point in the history
passing some ramps or mering onto another motorway
  • Loading branch information
oxidase committed Feb 16, 2018
1 parent 4ffca4a commit 802bdb1
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
- CHANGED #4830: Announce reference change if names are empty
- CHANGED #4835: MAXIMAL_ALLOWED_SEPARATION_WIDTH increased to 12 meters
- CHANGED #4842: Lower priority links from a motorway now are used as motorway links [#4842](https://github.com/Project-OSRM/osrm-backend/pull/4842)
- CHANGED #4893: Handle motorway forks with links as normal motorway intersections
- Profile:
- FIXED: `highway=service` will now be used for restricted access, `access=private` is still disabled for snapping.
- ADDED #4775: Exposes more information to the turn function, now being able to set turn weights with highway and access information of the turn as well as other roads at the intersection [#4775](https://github.com/Project-OSRM/osrm-backend/issues/4775)
Expand Down
9 changes: 5 additions & 4 deletions features/guidance/motorway.feature
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,7 @@ Feature: Motorway Guidance
| a,g | abcde,bfg,bfg | depart,off ramp slight right,arrive |


# https://www.openstreetmap.org/edit#map=20/53.46176/-2.24501
Scenario: Highway Fork with a Link
Given the node map
"""
Expand All @@ -316,7 +317,7 @@ Feature: Motorway Guidance
| cd | motorway_link |

When I route I should get
| waypoints | route | turns |
| a,d | abce,cd,cd | depart,turn straight,arrive |
| a,e | abce,abce,abce | depart,fork slight left,arrive |
| a,f | abce,cf,cf | depart,fork slight right,arrive |
| waypoints | route | turns |
| a,d | abce,cd,cd | depart,off ramp slight left,arrive |
| a,e | abce,abce | depart,arrive |
| a,f | abce,cf,cf | depart,turn slight right,arrive |
7 changes: 5 additions & 2 deletions src/guidance/motorway_handler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,10 @@ Intersection MotorwayHandler::fromMotorway(const EdgeID via_eid, Intersection in
}
else
{
const unsigned exiting_motorways = countExitingMotorways(intersection);
const auto valid_exits = std::count_if(intersection.begin(),
intersection.end(),
[](const auto &road) { return road.entry_allowed; });
const auto exiting_motorways = countExitingMotorways(intersection);

if (exiting_motorways == 0)
{
Expand All @@ -233,7 +236,7 @@ Intersection MotorwayHandler::fromMotorway(const EdgeID via_eid, Intersection in
}
}
}
else if (exiting_motorways == 1)
else if (exiting_motorways == 1 || exiting_motorways != valid_exits)
{
// normal motorway passing some ramps or mering onto another motorway
if (intersection.size() == 2)
Expand Down

0 comments on commit 802bdb1

Please sign in to comment.