mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-29 17:23:47 +00:00
[routing] OSM tag based time and turn penalties
Signed-off-by: Henry Sternberg <dev@bluelightmaps.com> Co-Authored-By: eisa01 <eisa01@gmail.com> Co-Authored-By: x7z4w <x7z4w@noreply.codeberg.org> Co-Authored-By: Yannik Bloscheck <git@yannikbloscheck.com>
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#include "geometry/point_with_altitude.hpp"
|
||||
|
||||
#include <memory>
|
||||
#include <unordered_map>
|
||||
|
||||
class DataSource;
|
||||
|
||||
@@ -27,8 +28,8 @@ public:
|
||||
ETA
|
||||
};
|
||||
|
||||
EdgeEstimator(double maxWeightSpeedKMpH, SpeedKMpH const & offroadSpeedKMpH, DataSource * dataSourcePtr = nullptr,
|
||||
std::shared_ptr<NumMwmIds> numMwmIds = nullptr);
|
||||
EdgeEstimator(VehicleType vehicleType, double maxWeightSpeedKMpH, SpeedKMpH const & offroadSpeedKMpH,
|
||||
DataSource * dataSourcePtr = nullptr, std::shared_ptr<NumMwmIds> numMwmIds = nullptr);
|
||||
virtual ~EdgeEstimator() = default;
|
||||
|
||||
double CalcHeuristic(ms::LatLon const & from, ms::LatLon const & to) const;
|
||||
@@ -47,6 +48,8 @@ public:
|
||||
|
||||
virtual double CalcSegmentWeight(Segment const & segment, RoadGeometry const & road, Purpose purpose) const = 0;
|
||||
virtual double GetUTurnPenalty(Purpose purpose) const = 0;
|
||||
virtual double GetTurnPenalty(Purpose purpose, double angle, RoadGeometry const & from_road,
|
||||
RoadGeometry const & to_road, bool is_left_hand_traffic = false) const = 0;
|
||||
virtual double GetFerryLandingPenalty(Purpose purpose) const = 0;
|
||||
|
||||
static std::shared_ptr<EdgeEstimator> Create(VehicleType vehicleType, double maxWeighSpeedKMpH,
|
||||
@@ -58,6 +61,11 @@ public:
|
||||
std::shared_ptr<TrafficStash> trafficStash, DataSource * dataSourcePtr,
|
||||
std::shared_ptr<NumMwmIds> numMwmIds);
|
||||
|
||||
protected:
|
||||
VehicleType const m_vehicleType;
|
||||
double m_defaultPenalty = 0.0;
|
||||
std::unordered_map<int, double> m_turnPenaltyMap;
|
||||
|
||||
private:
|
||||
double const m_maxWeightSpeedMpS;
|
||||
SpeedKMpH const m_offroadSpeedKMpH;
|
||||
|
||||
Reference in New Issue
Block a user