Fix uturns at dead-end streets

This commit is contained in:
Patrick Niklaus 2016-01-15 16:10:20 +01:00
parent cc4713d878
commit 22e83013e3

View File

@ -421,10 +421,23 @@ 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)
{ {
++skipped_uturns_counter; auto number_of_emmiting_bidirectional_edges = 0;
continue; 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;
continue;
}
} }
} }