committed by
Patrick Niklaus
parent
bd9eb76a2d
commit
e9c0987e8a
@@ -174,10 +174,14 @@ Status MatchPlugin::HandleRequest(const datafacade::ContiguousInternalMemoryData
|
||||
});
|
||||
}
|
||||
|
||||
SubMatchingList sub_matchings;
|
||||
if (parameters.track_preprocessing == api::MatchParameters::PreprocessingType::Full)
|
||||
{
|
||||
// Transparently tidy match parameters, do map matching on tidied parameters.
|
||||
// Then use the mapping to restore the original <-> tidied relationship.
|
||||
auto tidied = api::tidy::tidy(parameters);
|
||||
|
||||
// TODO is search radiuses still actual
|
||||
auto candidates_lists = GetPhantomNodesInRange(facade, tidied.parameters, search_radiuses);
|
||||
|
||||
filterCandidates(tidied.parameters.coordinates, candidates_lists);
|
||||
@@ -193,12 +197,38 @@ Status MatchPlugin::HandleRequest(const datafacade::ContiguousInternalMemoryData
|
||||
}
|
||||
|
||||
// call the actual map matching
|
||||
SubMatchingList sub_matchings = algorithms.MapMatching(
|
||||
sub_matchings = algorithms.MapMatching(
|
||||
candidates_lists,
|
||||
tidied.parameters.coordinates,
|
||||
tidied.parameters.timestamps,
|
||||
tidied.parameters.radiuses,
|
||||
parameters.use_tidying);
|
||||
!(parameters.track_preprocessing == api::MatchParameters::PreprocessingType::False));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
auto candidates_lists = GetPhantomNodesInRange(facade, parameters, search_radiuses);
|
||||
|
||||
filterCandidates(parameters.coordinates, candidates_lists);
|
||||
if (std::all_of(candidates_lists.begin(),
|
||||
candidates_lists.end(),
|
||||
[](const std::vector<PhantomNodeWithDistance> &candidates) {
|
||||
return candidates.empty();
|
||||
}))
|
||||
{
|
||||
return Error("NoSegment",
|
||||
std::string("Could not find a matching segment for any coordinate."),
|
||||
json_result);
|
||||
}
|
||||
|
||||
// call the actual map matching
|
||||
sub_matchings = algorithms.MapMatching(
|
||||
candidates_lists,
|
||||
parameters.coordinates,
|
||||
parameters.timestamps,
|
||||
parameters.radiuses,
|
||||
!(parameters.track_preprocessing == api::MatchParameters::PreprocessingType::False));
|
||||
}
|
||||
|
||||
if (sub_matchings.size() == 0)
|
||||
{
|
||||
@@ -229,7 +259,7 @@ Status MatchPlugin::HandleRequest(const datafacade::ContiguousInternalMemoryData
|
||||
BOOST_ASSERT(sub_routes[index].shortest_path_length != INVALID_EDGE_WEIGHT);
|
||||
}
|
||||
|
||||
// TODO: restore original coordinates
|
||||
// TODO: restore original coordinates for tidyied parameters
|
||||
|
||||
api::MatchAPI match_api{facade, parameters};
|
||||
match_api.MakeResponse(sub_matchings, sub_routes, json_result);
|
||||
|
||||
Reference in New Issue
Block a user