Add support for a default_bearing_radius flag (#6575)
This commit is contained in:
@@ -43,12 +43,16 @@ template <typename Algorithm> class Engine final : public EngineInterface
|
||||
{
|
||||
public:
|
||||
explicit Engine(const EngineConfig &config)
|
||||
: route_plugin(config.max_locations_viaroute, config.max_alternatives), //
|
||||
table_plugin(config.max_locations_distance_table), //
|
||||
nearest_plugin(config.max_results_nearest), //
|
||||
trip_plugin(config.max_locations_trip), //
|
||||
match_plugin(config.max_locations_map_matching, config.max_radius_map_matching), //
|
||||
tile_plugin() //
|
||||
: route_plugin(config.max_locations_viaroute,
|
||||
config.max_alternatives,
|
||||
config.default_radius), //
|
||||
table_plugin(config.max_locations_distance_table, config.default_radius), //
|
||||
nearest_plugin(config.max_results_nearest, config.default_radius), //
|
||||
trip_plugin(config.max_locations_trip, config.default_radius), //
|
||||
match_plugin(config.max_locations_map_matching,
|
||||
config.max_radius_map_matching,
|
||||
config.default_radius), //
|
||||
tile_plugin() //
|
||||
|
||||
{
|
||||
if (config.use_shared_memory)
|
||||
|
||||
@@ -83,6 +83,7 @@ struct EngineConfig final
|
||||
int max_locations_map_matching = -1;
|
||||
double max_radius_map_matching = -1.0;
|
||||
int max_results_nearest = -1;
|
||||
boost::optional<double> default_radius;
|
||||
int max_alternatives = 3; // set an arbitrary upper bound; can be adjusted by user
|
||||
bool use_shared_memory = true;
|
||||
boost::filesystem::path memory_file;
|
||||
|
||||
@@ -20,8 +20,10 @@ class MatchPlugin : public BasePlugin
|
||||
using CandidateLists = routing_algorithms::CandidateLists;
|
||||
static const constexpr double RADIUS_MULTIPLIER = 3;
|
||||
|
||||
MatchPlugin(const int max_locations_map_matching, const double max_radius_map_matching)
|
||||
: max_locations_map_matching(max_locations_map_matching),
|
||||
MatchPlugin(const int max_locations_map_matching,
|
||||
const double max_radius_map_matching,
|
||||
const boost::optional<double> default_radius)
|
||||
: BasePlugin(default_radius), max_locations_map_matching(max_locations_map_matching),
|
||||
max_radius_map_matching(max_radius_map_matching)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace osrm::engine::plugins
|
||||
class NearestPlugin final : public BasePlugin
|
||||
{
|
||||
public:
|
||||
explicit NearestPlugin(const int max_results);
|
||||
explicit NearestPlugin(const int max_results, const boost::optional<double> default_radius);
|
||||
|
||||
Status HandleRequest(const RoutingAlgorithmsInterface &algorithms,
|
||||
const api::NearestParameters ¶ms,
|
||||
|
||||
@@ -27,6 +27,10 @@ namespace osrm::engine::plugins
|
||||
class BasePlugin
|
||||
{
|
||||
protected:
|
||||
BasePlugin() = default;
|
||||
|
||||
BasePlugin(const boost::optional<double> default_radius_) : default_radius(default_radius_) {}
|
||||
|
||||
bool CheckAllCoordinates(const std::vector<util::Coordinate> &coordinates) const
|
||||
{
|
||||
return !std::any_of(
|
||||
@@ -237,7 +241,7 @@ class BasePlugin
|
||||
phantom_nodes[i] = facade.NearestPhantomNodes(
|
||||
parameters.coordinates[i],
|
||||
number_of_results,
|
||||
use_radiuses ? parameters.radiuses[i] : boost::none,
|
||||
use_radiuses ? parameters.radiuses[i] : default_radius,
|
||||
use_bearings ? parameters.bearings[i] : boost::none,
|
||||
use_approaches && parameters.approaches[i] ? parameters.approaches[i].get()
|
||||
: engine::Approach::UNRESTRICTED);
|
||||
@@ -279,7 +283,7 @@ class BasePlugin
|
||||
|
||||
alternatives[i] = facade.NearestCandidatesWithAlternativeFromBigComponent(
|
||||
parameters.coordinates[i],
|
||||
use_radiuses ? parameters.radiuses[i] : boost::none,
|
||||
use_radiuses ? parameters.radiuses[i] : default_radius,
|
||||
use_bearings ? parameters.bearings[i] : boost::none,
|
||||
use_approaches && parameters.approaches[i] ? parameters.approaches[i].get()
|
||||
: engine::Approach::UNRESTRICTED,
|
||||
@@ -320,6 +324,8 @@ class BasePlugin
|
||||
return std::string("Could not find a matching segment for coordinate ") +
|
||||
std::to_string(missing_index);
|
||||
}
|
||||
|
||||
const boost::optional<double> default_radius;
|
||||
};
|
||||
} // namespace osrm::engine::plugins
|
||||
|
||||
|
||||
@@ -14,7 +14,8 @@ namespace osrm::engine::plugins
|
||||
class TablePlugin final : public BasePlugin
|
||||
{
|
||||
public:
|
||||
explicit TablePlugin(const int max_locations_distance_table);
|
||||
explicit TablePlugin(const int max_locations_distance_table,
|
||||
const boost::optional<double> default_radius);
|
||||
|
||||
Status HandleRequest(const RoutingAlgorithmsInterface &algorithms,
|
||||
const api::TableParameters ¶ms,
|
||||
|
||||
@@ -32,7 +32,10 @@ class TripPlugin final : public BasePlugin
|
||||
const bool roundtrip) const;
|
||||
|
||||
public:
|
||||
explicit TripPlugin(const int max_locations_trip_) : max_locations_trip(max_locations_trip_) {}
|
||||
explicit TripPlugin(const int max_locations_trip_, boost::optional<double> default_radius)
|
||||
: BasePlugin(default_radius), max_locations_trip(max_locations_trip_)
|
||||
{
|
||||
}
|
||||
|
||||
Status HandleRequest(const RoutingAlgorithmsInterface &algorithms,
|
||||
const api::TripParameters ¶meters,
|
||||
|
||||
@@ -25,7 +25,9 @@ class ViaRoutePlugin final : public BasePlugin
|
||||
const int max_alternatives;
|
||||
|
||||
public:
|
||||
explicit ViaRoutePlugin(int max_locations_viaroute, int max_alternatives);
|
||||
explicit ViaRoutePlugin(int max_locations_viaroute,
|
||||
int max_alternatives,
|
||||
boost::optional<double> default_radius);
|
||||
|
||||
Status HandleRequest(const RoutingAlgorithmsInterface &algorithms,
|
||||
const api::RouteParameters &route_parameters,
|
||||
|
||||
Reference in New Issue
Block a user