Fix uturns at dead-end streets
This commit is contained in:
parent
a2e114e852
commit
f1140ec903
@ -445,12 +445,25 @@ void EdgeBasedGraphFactory::GenerateEdgeExpandedEdges(
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ((node_u == node_w) && (m_node_based_graph->GetOutDegree(node_v) > 1))
|
if (node_u == node_w && m_node_based_graph->GetOutDegree(node_v) > 1)
|
||||||
|
{
|
||||||
|
auto number_of_emmiting_bidirectional_edges = 0;
|
||||||
|
for (auto edge : m_node_based_graph->GetAdjacentEdgeRange(node_v))
|
||||||
|
{
|
||||||
|
auto target = m_node_based_graph->GetTarget(edge);
|
||||||
|
auto reverse_edge = m_node_based_graph->FindEdge(target, node_v);
|
||||||
|
if (!m_node_based_graph->GetEdgeData(reverse_edge).reversed)
|
||||||
|
{
|
||||||
|
++number_of_emmiting_bidirectional_edges;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (number_of_emmiting_bidirectional_edges > 1)
|
||||||
{
|
{
|
||||||
++skipped_uturns_counter;
|
++skipped_uturns_counter;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// only add an edge if turn is not a U-turn except when it is
|
// only add an edge if turn is not a U-turn except when it is
|
||||||
// at the end of a dead-end street
|
// at the end of a dead-end street
|
||||||
|
Loading…
Reference in New Issue
Block a user