Skip to content

Commit 2391ab5

Browse files
committed
Add support for a default_bearing_radius flag (#6575)
1 parent 24c13da commit 2391ab5

File tree

19 files changed

+95
-34
lines changed

19 files changed

+95
-34
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Unreleased
22
- Changes from 5.27.1
3+
- Features
4+
- ADDED: Add support for a default_radius flag. [#6575](https://github.com/Project-OSRM/osrm-backend/pull/6575)
35
- Build:
46
- ADDED: Add CI job which builds OSRM with gcc 12. [#6455](https://github.com/Project-OSRM/osrm-backend/pull/6455)
57
- CHANGED: Upgrade to clang-tidy 15. [#6439](https://github.com/Project-OSRM/osrm-backend/pull/6439)

docs/nodejs/api.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ var osrm = new OSRM('network.osrm');
3838
- `options.max_radius_map_matching` **[Number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** Max. radius size supported in map matching query (default: 5).
3939
- `options.max_results_nearest` **[Number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** Max. results supported in nearest query (default: unlimited).
4040
- `options.max_alternatives` **[Number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** Max. number of alternatives supported in alternative routes query (default: 3).
41+
- `options.default_radius` **[Number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** Default radius for queries (default: unlimited).
4142

4243
### route
4344

features/options/routed/help.feature

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ Feature: osrm-routed command line options: help
2222
And stdout should contain "--max-trip-size"
2323
And stdout should contain "--max-table-size"
2424
And stdout should contain "--max-matching-size"
25+
And stdout should contain "--default-radius"
2526
And it should exit successfully
2627

2728
Scenario: osrm-routed - Help, short
@@ -42,6 +43,7 @@ Feature: osrm-routed command line options: help
4243
And stdout should contain "--max-trip-size"
4344
And stdout should contain "--max-table-size"
4445
And stdout should contain "--max-matching-size"
46+
And stdout should contain "--default-radius"
4547
And it should exit successfully
4648

4749
Scenario: osrm-routed - Help, long
@@ -62,4 +64,5 @@ Feature: osrm-routed command line options: help
6264
And stdout should contain "--max-table-size"
6365
And stdout should contain "--max-table-size"
6466
And stdout should contain "--max-matching-size"
67+
And stdout should contain "--default-radius"
6568
And it should exit successfully

include/engine/engine.hpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,16 @@ template <typename Algorithm> class Engine final : public EngineInterface
4343
{
4444
public:
4545
explicit Engine(const EngineConfig &config)
46-
: route_plugin(config.max_locations_viaroute, config.max_alternatives), //
47-
table_plugin(config.max_locations_distance_table), //
48-
nearest_plugin(config.max_results_nearest), //
49-
trip_plugin(config.max_locations_trip), //
50-
match_plugin(config.max_locations_map_matching, config.max_radius_map_matching), //
51-
tile_plugin() //
46+
: route_plugin(config.max_locations_viaroute,
47+
config.max_alternatives,
48+
config.default_radius), //
49+
table_plugin(config.max_locations_distance_table, config.default_radius), //
50+
nearest_plugin(config.max_results_nearest, config.default_radius), //
51+
trip_plugin(config.max_locations_trip, config.default_radius), //
52+
match_plugin(config.max_locations_map_matching,
53+
config.max_radius_map_matching,
54+
config.default_radius), //
55+
tile_plugin() //
5256

5357
{
5458
if (config.use_shared_memory)

include/engine/engine_config.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ struct EngineConfig final
8383
int max_locations_map_matching = -1;
8484
double max_radius_map_matching = -1.0;
8585
int max_results_nearest = -1;
86+
boost::optional<double> default_radius;
8687
int max_alternatives = 3; // set an arbitrary upper bound; can be adjusted by user
8788
bool use_shared_memory = true;
8889
boost::filesystem::path memory_file;

include/engine/plugins/match.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@ class MatchPlugin : public BasePlugin
2020
using CandidateLists = routing_algorithms::CandidateLists;
2121
static const constexpr double RADIUS_MULTIPLIER = 3;
2222

23-
MatchPlugin(const int max_locations_map_matching, const double max_radius_map_matching)
24-
: max_locations_map_matching(max_locations_map_matching),
23+
MatchPlugin(const int max_locations_map_matching,
24+
const double max_radius_map_matching,
25+
const boost::optional<double> default_radius)
26+
: BasePlugin(default_radius), max_locations_map_matching(max_locations_map_matching),
2527
max_radius_map_matching(max_radius_map_matching)
2628
{
2729
}

include/engine/plugins/nearest.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace osrm::engine::plugins
1313
class NearestPlugin final : public BasePlugin
1414
{
1515
public:
16-
explicit NearestPlugin(const int max_results);
16+
explicit NearestPlugin(const int max_results, const boost::optional<double> default_radius);
1717

1818
Status HandleRequest(const RoutingAlgorithmsInterface &algorithms,
1919
const api::NearestParameters &params,

include/engine/plugins/plugin_base.hpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ namespace osrm::engine::plugins
2727
class BasePlugin
2828
{
2929
protected:
30+
BasePlugin() = default;
31+
32+
BasePlugin(const boost::optional<double> default_radius_) : default_radius(default_radius_) {}
33+
3034
bool CheckAllCoordinates(const std::vector<util::Coordinate> &coordinates) const
3135
{
3236
return !std::any_of(
@@ -237,7 +241,7 @@ class BasePlugin
237241
phantom_nodes[i] = facade.NearestPhantomNodes(
238242
parameters.coordinates[i],
239243
number_of_results,
240-
use_radiuses ? parameters.radiuses[i] : boost::none,
244+
use_radiuses ? parameters.radiuses[i] : default_radius,
241245
use_bearings ? parameters.bearings[i] : boost::none,
242246
use_approaches && parameters.approaches[i] ? parameters.approaches[i].get()
243247
: engine::Approach::UNRESTRICTED);
@@ -279,7 +283,7 @@ class BasePlugin
279283

280284
alternatives[i] = facade.NearestCandidatesWithAlternativeFromBigComponent(
281285
parameters.coordinates[i],
282-
use_radiuses ? parameters.radiuses[i] : boost::none,
286+
use_radiuses ? parameters.radiuses[i] : default_radius,
283287
use_bearings ? parameters.bearings[i] : boost::none,
284288
use_approaches && parameters.approaches[i] ? parameters.approaches[i].get()
285289
: engine::Approach::UNRESTRICTED,
@@ -320,6 +324,8 @@ class BasePlugin
320324
return std::string("Could not find a matching segment for coordinate ") +
321325
std::to_string(missing_index);
322326
}
327+
328+
const boost::optional<double> default_radius;
323329
};
324330
} // namespace osrm::engine::plugins
325331

include/engine/plugins/table.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ namespace osrm::engine::plugins
1414
class TablePlugin final : public BasePlugin
1515
{
1616
public:
17-
explicit TablePlugin(const int max_locations_distance_table);
17+
explicit TablePlugin(const int max_locations_distance_table,
18+
const boost::optional<double> default_radius);
1819

1920
Status HandleRequest(const RoutingAlgorithmsInterface &algorithms,
2021
const api::TableParameters &params,

include/engine/plugins/trip.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ class TripPlugin final : public BasePlugin
3232
const bool roundtrip) const;
3333

3434
public:
35-
explicit TripPlugin(const int max_locations_trip_) : max_locations_trip(max_locations_trip_) {}
35+
explicit TripPlugin(const int max_locations_trip_, boost::optional<double> default_radius)
36+
: BasePlugin(default_radius), max_locations_trip(max_locations_trip_)
37+
{
38+
}
3639

3740
Status HandleRequest(const RoutingAlgorithmsInterface &algorithms,
3841
const api::TripParameters &parameters,

0 commit comments

Comments
 (0)