use ADL and explicit instantiation for map matching
This commit is contained in:
parent
cf17a3a4c3
commit
7726576bb7
@ -30,8 +30,9 @@ SubMatchingList mapMatching(SearchEngineData<Algorithm> &engine_working_data,
|
|||||||
const std::vector<unsigned> &trace_timestamps,
|
const std::vector<unsigned> &trace_timestamps,
|
||||||
const std::vector<boost::optional<double>> &trace_gps_precision,
|
const std::vector<boost::optional<double>> &trace_gps_precision,
|
||||||
const bool allow_splitting);
|
const bool allow_splitting);
|
||||||
}
|
|
||||||
}
|
} // namespace routing_algorithms
|
||||||
}
|
} // namespace engine
|
||||||
|
} // namespace osrm
|
||||||
|
|
||||||
#endif /* MAP_MATCHING_HPP */
|
#endif /* MAP_MATCHING_HPP */
|
||||||
|
@ -48,14 +48,13 @@ unsigned getMedianSampleTime(const std::vector<unsigned> ×tamps)
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename Algorithm>
|
template <typename Algorithm>
|
||||||
SubMatchingList
|
SubMatchingList mapMatching(SearchEngineData<Algorithm> &engine_working_data,
|
||||||
mapMatchingImpl(SearchEngineData<Algorithm> &engine_working_data,
|
const datafacade::ContiguousInternalMemoryDataFacade<Algorithm> &facade,
|
||||||
const datafacade::ContiguousInternalMemoryDataFacade<Algorithm> &facade,
|
const CandidateLists &candidates_list,
|
||||||
const CandidateLists &candidates_list,
|
const std::vector<util::Coordinate> &trace_coordinates,
|
||||||
const std::vector<util::Coordinate> &trace_coordinates,
|
const std::vector<unsigned> &trace_timestamps,
|
||||||
const std::vector<unsigned> &trace_timestamps,
|
const std::vector<boost::optional<double>> &trace_gps_precision,
|
||||||
const std::vector<boost::optional<double>> &trace_gps_precision,
|
const bool allow_splitting)
|
||||||
const bool allow_splitting)
|
|
||||||
{
|
{
|
||||||
map_matching::MatchingConfidence confidence;
|
map_matching::MatchingConfidence confidence;
|
||||||
map_matching::EmissionLogProbability default_emission_log_probability(DEFAULT_GPS_PRECISION);
|
map_matching::EmissionLogProbability default_emission_log_probability(DEFAULT_GPS_PRECISION);
|
||||||
@ -220,14 +219,14 @@ mapMatchingImpl(SearchEngineData<Algorithm> &engine_working_data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
double network_distance =
|
double network_distance =
|
||||||
ch::getNetworkDistance(facade,
|
getNetworkDistance(facade,
|
||||||
forward_heap,
|
forward_heap,
|
||||||
reverse_heap,
|
reverse_heap,
|
||||||
forward_core_heap,
|
forward_core_heap,
|
||||||
reverse_core_heap,
|
reverse_core_heap,
|
||||||
prev_unbroken_timestamps_list[s].phantom_node,
|
prev_unbroken_timestamps_list[s].phantom_node,
|
||||||
current_timestamps_list[s_prime].phantom_node,
|
current_timestamps_list[s_prime].phantom_node,
|
||||||
duration_upper_bound);
|
duration_upper_bound);
|
||||||
|
|
||||||
// get distance diff between loc1/2 and locs/s_prime
|
// get distance diff between loc1/2 and locs/s_prime
|
||||||
const auto d_t = std::abs(network_distance - haversine_distance);
|
const auto d_t = std::abs(network_distance - haversine_distance);
|
||||||
@ -420,44 +419,23 @@ mapMatchingImpl(SearchEngineData<Algorithm> &engine_working_data,
|
|||||||
return sub_matchings;
|
return sub_matchings;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template SubMatchingList
|
||||||
SubMatchingList
|
|
||||||
mapMatching(SearchEngineData<ch::Algorithm> &engine_working_data,
|
mapMatching(SearchEngineData<ch::Algorithm> &engine_working_data,
|
||||||
const datafacade::ContiguousInternalMemoryDataFacade<ch::Algorithm> &facade,
|
const datafacade::ContiguousInternalMemoryDataFacade<ch::Algorithm> &facade,
|
||||||
const CandidateLists &candidates_list,
|
const CandidateLists &candidates_list,
|
||||||
const std::vector<util::Coordinate> &trace_coordinates,
|
const std::vector<util::Coordinate> &trace_coordinates,
|
||||||
const std::vector<unsigned> &trace_timestamps,
|
const std::vector<unsigned> &trace_timestamps,
|
||||||
const std::vector<boost::optional<double>> &trace_gps_precision,
|
const std::vector<boost::optional<double>> &trace_gps_precision,
|
||||||
const bool use_tidying)
|
const bool allow_splitting);
|
||||||
{
|
|
||||||
return mapMatchingImpl(engine_working_data,
|
|
||||||
facade,
|
|
||||||
candidates_list,
|
|
||||||
trace_coordinates,
|
|
||||||
trace_timestamps,
|
|
||||||
trace_gps_precision,
|
|
||||||
use_tidying);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <>
|
template SubMatchingList
|
||||||
SubMatchingList
|
|
||||||
mapMatching(SearchEngineData<corech::Algorithm> &engine_working_data,
|
mapMatching(SearchEngineData<corech::Algorithm> &engine_working_data,
|
||||||
const datafacade::ContiguousInternalMemoryDataFacade<corech::Algorithm> &facade,
|
const datafacade::ContiguousInternalMemoryDataFacade<corech::Algorithm> &facade,
|
||||||
const CandidateLists &candidates_list,
|
const CandidateLists &candidates_list,
|
||||||
const std::vector<util::Coordinate> &trace_coordinates,
|
const std::vector<util::Coordinate> &trace_coordinates,
|
||||||
const std::vector<unsigned> &trace_timestamps,
|
const std::vector<unsigned> &trace_timestamps,
|
||||||
const std::vector<boost::optional<double>> &trace_gps_precision,
|
const std::vector<boost::optional<double>> &trace_gps_precision,
|
||||||
const bool use_tidying)
|
const bool allow_splitting);
|
||||||
{
|
|
||||||
|
|
||||||
return mapMatchingImpl(engine_working_data,
|
|
||||||
facade,
|
|
||||||
candidates_list,
|
|
||||||
trace_coordinates,
|
|
||||||
trace_timestamps,
|
|
||||||
trace_gps_precision,
|
|
||||||
use_tidying);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace routing_algorithms
|
} // namespace routing_algorithms
|
||||||
} // namespace engine
|
} // namespace engine
|
||||||
|
Loading…
Reference in New Issue
Block a user