diff --git a/include/engine/guidance/route_step.hpp b/include/engine/guidance/route_step.hpp index d5950a61d..a527f8594 100644 --- a/include/engine/guidance/route_step.hpp +++ b/include/engine/guidance/route_step.hpp @@ -34,6 +34,11 @@ struct RouteStep std::size_t geometry_begin; std::size_t geometry_end; }; + +inline RouteStep getInvalidRouteStep() +{ + return {0, "", "", 0, 0, TRAVEL_MODE_INACCESSIBLE, getInvalidStepManeuver(), 0, 0}; +} } } } diff --git a/include/engine/guidance/step_maneuver.hpp b/include/engine/guidance/step_maneuver.hpp index 5ae70f9f6..084a9991a 100644 --- a/include/engine/guidance/step_maneuver.hpp +++ b/include/engine/guidance/step_maneuver.hpp @@ -1,8 +1,8 @@ #ifndef ENGINE_GUIDANCE_STEP_MANEUVER_HPP #define ENGINE_GUIDANCE_STEP_MANEUVER_HPP -#include "util/coordinate.hpp" #include "extractor/guidance/turn_instruction.hpp" +#include "util/coordinate.hpp" #include #include @@ -21,7 +21,7 @@ enum class WaypointType : std::uint8_t Depart, }; -//A represenetation of intermediate intersections +// A represenetation of intermediate intersections struct IntermediateIntersection { double duration; @@ -39,6 +39,18 @@ struct StepManeuver unsigned exit; std::vector intersections; }; + +inline StepManeuver getInvalidStepManeuver() +{ + return {util::Coordinate{util::FloatLongitude{0.0}, util::FloatLatitude{0.0}}, + 0, + 0, + extractor::guidance::TurnInstruction::NO_TURN(), + WaypointType::None, + 0, + {}}; +} + } // namespace guidance } // namespace engine } // namespace osrmn diff --git a/src/engine/guidance/post_processing.cpp b/src/engine/guidance/post_processing.cpp index b1819e407..5d1516b6e 100644 --- a/src/engine/guidance/post_processing.cpp +++ b/src/engine/guidance/post_processing.cpp @@ -35,8 +35,7 @@ namespace // invalidate a step and set its content to nothing void invalidateStep(RouteStep &step) { - step = {}; - step.maneuver.instruction = TurnInstruction::NO_TURN(); + step = getInvalidRouteStep(); } void print(const std::vector &steps) diff --git a/src/extractor/guidance/classification_data.cpp b/src/extractor/guidance/classification_data.cpp index e578fad40..78a8684bc 100644 --- a/src/extractor/guidance/classification_data.cpp +++ b/src/extractor/guidance/classification_data.cpp @@ -42,7 +42,8 @@ FunctionalRoadClass functionalRoadClassFromTag(std::string const &value) } else { - util::SimpleLogger().Write(logDEBUG) << "Unknown road class encountered: " << value; + // TODO activate again, when road classes are moved to the profile + // util::SimpleLogger().Write(logDEBUG) << "Unknown road class encountered: " << value; return FunctionalRoadClass::UNKNOWN; } } diff --git a/src/extractor/guidance/turn_handler.cpp b/src/extractor/guidance/turn_handler.cpp index 2240123d9..9fc1ba8fd 100644 --- a/src/extractor/guidance/turn_handler.cpp +++ b/src/extractor/guidance/turn_handler.cpp @@ -303,20 +303,7 @@ Intersection TurnHandler::handleComplexTurn(const EdgeID via_edge, Intersection } else { - if (fallback_count++ < 10) - { - util::SimpleLogger().Write(logWARNING) - << "Resolved to keep fallback on complex turn assignment" - << "Straightmost: " << straightmost_turn; - ; - for (const auto &road : intersection) - { - const auto &out_data = node_based_graph.GetEdgeData(road.turn.eid); - util::SimpleLogger().Write(logWARNING) - << "road: " << toString(road) << " Name: " << out_data.name_id - << " Road Class: " << (int)out_data.road_classification.road_class; - } - } + assignTrivialTurns(via_edge,intersection,1,intersection.size()); } return intersection; }