adjusted to in/out. only emit one of them for depart/arrive

This commit is contained in:
Moritz Kobitzsch
2016-05-12 11:16:52 +02:00
committed by Patrick Niklaus
parent 4d9aa65e78
commit 9c8bf820de
10 changed files with 161 additions and 105 deletions
+5 -2
View File
@@ -48,6 +48,7 @@
#include <thread>
#include <unordered_map>
#include <vector>
#include <type_traits>
namespace osrm
{
@@ -644,8 +645,10 @@ void Extractor::WriteIntersectionClassificationData(
file_out_stream.write( reinterpret_cast<const char*>(&bearings[0]), sizeof(bearings[0]) * bearings.size() );
}
static_assert(std::is_trivially_copyable<util::guidance::EntryClass>::value,
"EntryClass Serialization requires trivial copyable entry classes");
// FIXME
// This should be here, but g++4.8 does not have it...
// static_assert(std::is_trivially_copyable<util::guidance::EntryClass>::value,
// "EntryClass Serialization requires trivial copyable entry classes");
util::serializeVector(file_out_stream, entry_classes);
TIMER_STOP(write_edges);
@@ -54,11 +54,7 @@ classifyIntersection(NodeID nid,
std::sort(turns.begin(), turns.end(),
[](const TurnPossibility left, const TurnPossibility right) {
return util::guidance::BearingClass::getDiscreteBearing(left.bearing) <
util::guidance::BearingClass::getDiscreteBearing(right.bearing) ||
(util::guidance::BearingClass::getDiscreteBearing(left.bearing) ==
util::guidance::BearingClass::getDiscreteBearing(right.bearing) &&
left.bearing < right.bearing);
return left.bearing < right.bearing;
});
util::guidance::EntryClass entry_class;
@@ -85,6 +81,12 @@ classifyIntersection(NodeID nid,
std::size_t number = 0;
if (canBeDiscretized)
{
if(util::guidance::BearingClass::getDiscreteBearing(turns.back().bearing) <
util::guidance::BearingClass::getDiscreteBearing(turns.front().bearing))
{
turns.insert(turns.begin(), turns.back());
turns.pop_back();
}
for (const auto turn : turns)
{
if (turn.entry_allowed)