1 #ifndef OSMSCOUT_ABSTRACTROUTINGSERVICE_H 2 #define OSMSCOUT_ABSTRACTROUTINGSERVICE_H 28 #include <unordered_map> 29 #include <unordered_set> 31 #include <osmscout/CoreFeatures.h> 55 Distance currentMaxDistance;
56 Distance overallDistance;
63 this->overallDistance=overallDistance;
68 this->currentMaxDistance=currentMaxDistance;
73 return overallDistance;
78 return currentMaxDistance;
93 return !route.IsEmpty();
101 explicit RoutePoints(
const std::list<Point>& points);
134 RouteDescriptionResult();
156 explicit RouteWayResult(
const WayRef& way);
174 template <
class RoutingState>
181 virtual Vehicle GetVehicle(
const RoutingState& state) = 0;
183 virtual bool CanUse(
const RoutingState& state,
186 size_t pathIndex) = 0;
188 virtual bool CanUseForward(
const RoutingState& state,
192 virtual bool CanUseBackward(
const RoutingState& state,
196 virtual double GetCosts(
const RoutingState& state,
200 size_t outPathIndex) = 0;
202 virtual double GetCosts(
const RoutingState& state,
205 const Distance &wayLength) = 0;
207 virtual double GetEstimateCosts(
const RoutingState& state,
209 const Distance &targetDistance) = 0;
211 virtual double GetCostLimit(
const RoutingState& state,
213 const Distance &targetDistance) = 0;
215 virtual std::string GetCostString(
const RoutingState& state,
217 double cost)
const = 0;
219 virtual bool GetRouteNodes(
const std::set<DBId> &routeNodeIds,
220 std::unordered_map<DBId,RouteNodeRef> &routeNodeMap) = 0;
231 virtual bool GetRouteNode(
const DBId &
id,
237 virtual bool GetWaysByOffset(
const std::set<DBFileOffset> &wayOffsets,
238 std::unordered_map<DBFileOffset,WayRef> &wayMap) = 0;
240 virtual bool GetAreaByOffset(
const DBFileOffset &offset,
243 virtual bool GetAreasByOffset(
const std::set<DBFileOffset> &areaOffsets,
244 std::unordered_map<DBFileOffset,AreaRef> &areaMap) = 0;
246 void ResolveRNodeChainToList(
DBId finalRouteNode,
249 std::list<VNode>& nodes);
251 virtual bool ResolveRouteDataJunctions(
RouteData& route) = 0;
253 virtual std::vector<DBId> GetNodeTwins(
const RoutingState& state,
257 void GetStartForwardRouteNode(
const RoutingState& state,
262 size_t& routeNodeIndex);
263 void GetStartBackwardRouteNode(
const RoutingState& state,
268 size_t& routeNodeIndex);
269 void GetTargetForwardRouteNode(
const RoutingState& state,
274 void GetTargetBackwardRouteNode(
const RoutingState& state,
280 bool GetStartNodes(
const RoutingState& state,
281 const RoutePosition& position,
282 GeoCoord& startCoord,
283 const GeoCoord& targetCoord,
289 bool GetWayTargetNodes(
const RoutingState& state,
290 const RoutePosition& position,
291 GeoCoord& targetCoord,
295 bool GetTargetNodes(
const RoutingState& state,
296 const RoutePosition& position,
297 GeoCoord& targetCoord,
301 bool GetRNode(
const RoutingState& state,
302 const RoutePosition& position,
304 size_t routeNodeIndex,
306 const GeoCoord& startCoord,
307 const GeoCoord& targetCoord,
313 size_t startNodeIndex,
314 const ObjectFileRef&
object,
317 size_t targetNodeIndex);
319 bool GetWayStartNodes(
const RoutingState& state,
320 const RoutePosition& position,
321 GeoCoord& startCoord,
322 const GeoCoord& targetCoord,
328 bool ResolveRNodesToRouteData(
const RoutingState& state,
329 const std::list<VNode>& nodes,
330 const RoutePosition& start,
331 const RoutePosition& target,
334 virtual bool WalkToOtherDatabases(
const RoutingState& state,
342 virtual bool WalkPaths(
const RoutingState& state,
349 RoutingResult &result,
350 const RoutingParameter& parameter,
351 const GeoCoord &targetCoord,
353 size_t &nodesIgnoredCount,
354 Distance ¤tMaxDistance,
355 const Distance &overallDistance,
356 const double &costLimit);
361 RoutingResult CalculateRoute(RoutingState& state,
362 const RoutePosition& start,
363 const RoutePosition& target,
364 const RoutingParameter& parameter);
366 RouteDescriptionResult TransformRouteDataToRouteDescription(
const RouteData& data);
367 RoutePointsResult TransformRouteDataToPoints(
const RouteData& data);
368 RouteWayResult TransformRouteDataToWay(
const RouteData& data);
376 virtual std::map<DatabaseId, std::string> GetDatabaseMapping()
const = 0;
bool debugPerformance
Definition: AbstractRoutingService.h:178
RouteData & GetRoute()
Definition: AbstractRoutingService.h:81
void SetCurrentMaxDistance(const Distance ¤tMaxDistance)
Definition: AbstractRoutingService.h:66
uint64_t Id
Definition: OSMScoutTypes.h:41
Definition: AbstractRoutingService.h:97
Distance GetCurrentMaxDistance() const
Definition: AbstractRoutingService.h:76
std::unordered_set< VNode, ClosedNodeHasher > ClosedSet
Definition: RoutingService.h:368
WayRef GetWay() const
Definition: AbstractRoutingService.h:163
Vehicle
Definition: OSMScoutTypes.h:55
std::shared_ptr< Way > WayRef
Definition: Way.h:202
Definition: RouteData.h:35
bool Success() const
Definition: AbstractRoutingService.h:91
const RouteData & GetRoute() const
Definition: AbstractRoutingService.h:86
std::shared_ptr< RoutePoints > RoutePointsRef
Definition: AbstractRoutingService.h:104
const std::vector< Point > points
Definition: AbstractRoutingService.h:99
std::unordered_map< DBId, OpenListRef > OpenMap
Definition: RoutingService.h:367
#define CLASS_FINAL
Definition: Compiler.h:26
std::shared_ptr< Area > AreaRef
Definition: Area.h:358
#define OSMSCOUT_API
Definition: CoreImportExport.h:45
std::shared_ptr< RNode > RNodeRef
Definition: RoutingService.h:272
Definition: AbstractRoutingService.h:175
RouteDescriptionRef GetDescription() const
Definition: AbstractRoutingService.h:142
Definition: RoutingService.h:211
std::shared_ptr< RouteNode > RouteNodeRef
Definition: RouteNode.h:160
std::set< RNodeRef, RNodeCostCompare > OpenList
Definition: RoutingService.h:364
void SetOverallDistance(const Distance &overallDistance)
Definition: AbstractRoutingService.h:61
RoutePointsRef GetPoints() const
Definition: AbstractRoutingService.h:121
std::shared_ptr< RouteDescription > RouteDescriptionRef
Definition: RouteDescription.h:814
Definition: DBFileOffset.h:38
Definition: DBFileOffset.h:92
Distance GetOverallDistance() const
Definition: AbstractRoutingService.h:71
Definition: RouteNode.h:61
uint32_t DatabaseId
Definition: DBFileOffset.h:30