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
{
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;
continue;
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;
continue;
}
}
}