Fix crash on extracting Berlin in guidance
This commit is contained in:
parent
8322a7ccaf
commit
ba3f167b99
@ -523,21 +523,20 @@ handleMotorwayRamp(const NodeID from,
|
||||
{
|
||||
unsigned num_valid_turns = countValid(turn_candidates);
|
||||
// ramp straight into a motorway/ramp
|
||||
if (num_valid_turns == 1)
|
||||
if (turn_candidates.size() == 2 && num_valid_turns == 1)
|
||||
{
|
||||
BOOST_ASSERT(!turn_candidates[0].valid);
|
||||
BOOST_ASSERT(isMotorwayClass(turn_candidates[1].eid, node_based_graph));
|
||||
|
||||
turn_candidates[1].instruction =
|
||||
noTurnOrNewName(from, via_edge, turn_candidates[1], node_based_graph);
|
||||
//{TurnType::Merge,
|
||||
// getTurnDirection(turn_candidates[1].angle)};
|
||||
}
|
||||
else if (turn_candidates.size() == 3)
|
||||
{
|
||||
// merging onto a passing highway / or two ramps merging onto the same highway
|
||||
if (num_valid_turns == 1)
|
||||
{
|
||||
BOOST_ASSERT(!turn_candidates[0].valid);
|
||||
// check order of highways
|
||||
// 4
|
||||
// 5 3
|
||||
@ -565,6 +564,7 @@ handleMotorwayRamp(const NodeID from,
|
||||
}
|
||||
else
|
||||
{
|
||||
BOOST_ASSERT(turn_candidates[2].valid);
|
||||
if (isMotorwayClass(turn_candidates[2].eid, node_based_graph))
|
||||
{
|
||||
// circular order (5-0) onto 4
|
||||
@ -581,11 +581,13 @@ handleMotorwayRamp(const NodeID from,
|
||||
noTurnOrNewName(from, via_edge, turn_candidates[1], node_based_graph);
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
BOOST_ASSERT(num_valid_turns == 2);
|
||||
// UTurn on ramps is not possible
|
||||
BOOST_ASSERT(turn_candidates[1].valid && turn_candidates[2].valid);
|
||||
BOOST_ASSERT(!turn_candidates[0].valid);
|
||||
BOOST_ASSERT(turn_candidates[1].valid);
|
||||
BOOST_ASSERT(turn_candidates[2].valid);
|
||||
// two motorways starting at end of ramp (fork)
|
||||
// M M
|
||||
// \ /
|
||||
@ -680,7 +682,6 @@ handleMotorwayJunction(const NodeID from,
|
||||
{
|
||||
return handleFromMotorway(from, via_edge, std::move(turn_candidates), node_based_graph);
|
||||
}
|
||||
|
||||
else // coming from a ramp
|
||||
{
|
||||
return handleMotorwayRamp(from, via_edge, std::move(turn_candidates), node_based_graph);
|
||||
|
Loading…
Reference in New Issue
Block a user