From fa56abcd580d407a9eaac00b16a04472ff41d439 Mon Sep 17 00:00:00 2001 From: Patrick Niklaus Date: Mon, 7 Mar 2016 18:59:39 +0100 Subject: [PATCH] Don't pass down unsnapped coordinates. All information is already there --- include/engine/api/match_api.hpp | 2 +- include/engine/api/route_api.hpp | 21 +++++---------------- include/engine/api/trip_api.hpp | 5 ++--- include/engine/guidance/assemble_steps.hpp | 18 +++++++++--------- src/engine/plugins/trip.cpp | 7 +------ src/engine/plugins/viaroute.cpp | 2 +- 6 files changed, 19 insertions(+), 36 deletions(-) diff --git a/include/engine/api/match_api.hpp b/include/engine/api/match_api.hpp index 9d2edbd7f..15e62d466 100644 --- a/include/engine/api/match_api.hpp +++ b/include/engine/api/match_api.hpp @@ -39,7 +39,7 @@ class MatchAPI final : public RouteAPI auto route = MakeRoute(sub_routes[index].segment_end_coordinates, sub_routes[index].unpacked_path_segments, sub_routes[index].source_traversed_in_reverse, - sub_routes[index].target_traversed_in_reverse, nullptr); + sub_routes[index].target_traversed_in_reverse); route.values["confidence"] = sub_matchings[index].confidence; routes.values.push_back(std::move(route)); } diff --git a/include/engine/api/route_api.hpp b/include/engine/api/route_api.hpp index 38d136978..d08789cea 100644 --- a/include/engine/api/route_api.hpp +++ b/include/engine/api/route_api.hpp @@ -37,23 +37,21 @@ class RouteAPI : public BaseAPI } void MakeResponse(const InternalRouteResult &raw_route, - util::json::Object &response, - const std::vector *const locations) const + util::json::Object &response) const { auto number_of_routes = raw_route.has_alternative() ? 2UL : 1UL; util::json::Array routes; routes.values.resize(number_of_routes); routes.values[0] = MakeRoute(raw_route.segment_end_coordinates, raw_route.unpacked_path_segments, - raw_route.source_traversed_in_reverse, raw_route.target_traversed_in_reverse, - locations); + raw_route.source_traversed_in_reverse, raw_route.target_traversed_in_reverse); if (raw_route.has_alternative()) { std::vector> wrapped_leg(1); wrapped_leg.front() = std::move(raw_route.unpacked_alternative); routes.values[1] = MakeRoute(raw_route.segment_end_coordinates, wrapped_leg, raw_route.alt_source_traversed_in_reverse, - raw_route.alt_target_traversed_in_reverse, locations); + raw_route.alt_target_traversed_in_reverse); } response.values["waypoints"] = BaseAPI::MakeWaypoints(raw_route.segment_end_coordinates); response.values["routes"] = std::move(routes); @@ -76,8 +74,7 @@ class RouteAPI : public BaseAPI util::json::Object MakeRoute(const std::vector &segment_end_coordinates, std::vector> unpacked_path_segments, const std::vector &source_traversed_in_reverse, - const std::vector &target_traversed_in_reverse, - const std::vector *const locations) const + const std::vector &target_traversed_in_reverse) const { std::vector legs; std::vector leg_geometries; @@ -102,17 +99,9 @@ class RouteAPI : public BaseAPI if (parameters.steps) { - const auto getLoc = [](const std::vector *const locations, - int idx) -> boost::optional - { - if (locations) - return (*locations)[idx]; - return {}; - }; leg.steps = guidance::assembleSteps( BaseAPI::facade, path_data, leg_geometry, phantoms.source_phantom, - phantoms.target_phantom, reversed_source, reversed_target, - getLoc(locations, idx), getLoc(locations, idx + 1)); + phantoms.target_phantom, reversed_source, reversed_target); ; } diff --git a/include/engine/api/trip_api.hpp b/include/engine/api/trip_api.hpp index eb807ebf8..3cd0744fc 100644 --- a/include/engine/api/trip_api.hpp +++ b/include/engine/api/trip_api.hpp @@ -28,8 +28,7 @@ class TripAPI final : public RouteAPI void MakeResponse(const std::vector> &sub_trips, const std::vector &sub_routes, const std::vector &phantoms, - util::json::Object &response, - const std::vector> &coordinates) const + util::json::Object &response) const { auto number_of_routes = sub_trips.size(); util::json::Array routes; @@ -40,7 +39,7 @@ class TripAPI final : public RouteAPI auto route = MakeRoute( sub_routes[index].segment_end_coordinates, sub_routes[index].unpacked_path_segments, sub_routes[index].source_traversed_in_reverse, - sub_routes[index].target_traversed_in_reverse, &coordinates[index]); + sub_routes[index].target_traversed_in_reverse); routes.values.push_back(std::move(route)); } response.values["waypoints"] = MakeWaypoints(sub_trips, phantoms); diff --git a/include/engine/guidance/assemble_steps.hpp b/include/engine/guidance/assemble_steps.hpp index 253e76d1c..890c658f4 100644 --- a/include/engine/guidance/assemble_steps.hpp +++ b/include/engine/guidance/assemble_steps.hpp @@ -37,9 +37,7 @@ std::vector assembleSteps(const DataFacadeT &facade, const PhantomNode &source_node, const PhantomNode &target_node, const bool source_traversed_in_reverse, - const bool target_traversed_in_reverse, - boost::optional source_location, - boost::optional target_location) + const bool target_traversed_in_reverse) { const auto source_duration = (source_traversed_in_reverse ? source_node.GetReverseWeightPlusOffset() @@ -62,10 +60,11 @@ std::vector assembleSteps(const DataFacadeT &facade, std::size_t segment_index = 0; const auto initial_modifier = - (source_location && leg_geometry.locations.size() >= 2) + leg_geometry.locations.size() >= 3 ? angleToDirectionModifier(util::coordinate_calculation::computeAngle( - source_location.get(), *(leg_geometry.locations.begin()), - *(leg_geometry.locations.begin() + 1))) + leg_geometry.locations[0], + leg_geometry.locations[1], + leg_geometry.locations[2])) : extractor::guidance::DirectionModifier::UTurn; if (leg_data.size() > 0) @@ -122,10 +121,11 @@ std::vector assembleSteps(const DataFacadeT &facade, BOOST_ASSERT(segment_index == number_of_segments - 1); const auto final_modifier = - (target_location && leg_geometry.locations.size() >= 2) + leg_geometry.locations.size() >= 3 ? angleToDirectionModifier(util::coordinate_calculation::computeAngle( - *(leg_geometry.locations.end() - 2), *(leg_geometry.locations.end() - 1), - target_location.get())) + leg_geometry.locations[leg_geometry.locations.size() - 3], + leg_geometry.locations[leg_geometry.locations.size() - 2], + leg_geometry.locations[leg_geometry.locations.size() - 1])) : extractor::guidance::DirectionModifier::UTurn; // This step has length zero, the only reason we need it is the target location steps.push_back(RouteStep{ diff --git a/src/engine/plugins/trip.cpp b/src/engine/plugins/trip.cpp index 280ead658..209fb7b38 100644 --- a/src/engine/plugins/trip.cpp +++ b/src/engine/plugins/trip.cpp @@ -243,18 +243,13 @@ Status TripPlugin::HandleRequest(const api::TripParameters ¶meters, // compute all round trip routes std::vector routes; routes.reserve(trips.size()); - std::vector> ordered_coordinates; - ordered_coordinates.reserve(trips.size()); for (const auto &trip : trips) { routes.push_back(ComputeRoute(snapped_phantoms, parameters, trip)); - ordered_coordinates.push_back(std::vector()); - for (const auto nid : trip) - ordered_coordinates.back().push_back(parameters.coordinates[nid]); } api::TripAPI trip_api{BasePlugin::facade, parameters}; - trip_api.MakeResponse(trips, routes, snapped_phantoms, json_result, ordered_coordinates); + trip_api.MakeResponse(trips, routes, snapped_phantoms, json_result); return Status::Ok; } diff --git a/src/engine/plugins/viaroute.cpp b/src/engine/plugins/viaroute.cpp index 333923bba..f558a26c7 100644 --- a/src/engine/plugins/viaroute.cpp +++ b/src/engine/plugins/viaroute.cpp @@ -87,7 +87,7 @@ Status ViaRoutePlugin::HandleRequest(const api::RouteParameters &route_parameter if (raw_route.is_valid()) { api::RouteAPI route_api{BasePlugin::facade, route_parameters}; - route_api.MakeResponse(raw_route, json_result, &route_parameters.coordinates); + route_api.MakeResponse(raw_route, json_result); } else {