1#ifndef OSMSCOUT_ROUTINGSERVICE_H
2#define OSMSCOUT_ROUTINGSERVICE_H
28#include <unordered_map>
29#include <unordered_set>
31#include <osmscout/lib/CoreFeatures.h>
80 return object.Valid();
102 RoutePosition routePosition;
112 return routePosition;
122 return routePosition.IsValid();
139 bool debugPerformance;
171 virtual void Progress(
const Distance ¤tMaxDistance,
172 const Distance &overallDistance) = 0;
246 const ObjectFileRef&
object)
256 const ObjectFileRef&
object,
286 if (a->overallCost==b->overallCost) {
290 return a->overallCost<b->overallCost;
358 const ObjectFileRef&
object,
385 using OpenList = std::set<RNodeRef, RNodeCostCompare>;
386 using OpenListRef = std::set<RNodeRef, RNodeCostCompare>::iterator;
388 using OpenMap = std::unordered_map<DBId, OpenListRef>;
389 using ClosedSet = std::unordered_set<VNode, ClosedNodeHasher>;
#define CLASS_FINAL
Definition Compiler.h:26
#define OSMSCOUT_API
Definition CoreImportExport.h:45
bool IsDebugPerformance() const
RoutingProgressRef GetProgress() const
Definition RoutingService.h:201
Distance GetDistance() const
Definition RoutingService.h:115
RoutePositionResult(const RoutePosition &routePosition, const Distance &distance)
BreakerRef GetBreaker() const
Definition RoutingService.h:196
RoutePosition GetRoutePosition() const
Definition RoutingService.h:110
void SetProgress(const RoutingProgressRef &progress)
bool IsValid() const
Definition RoutingService.h:78
ObjectFileRef GetObjectFileRef() const
Definition RoutingService.h:83
size_t GetNodeIndex() const
Definition RoutingService.h:88
void SetBreaker(const BreakerRef &breaker)
void SetDebugPerformance(bool debug)
RoutePosition(const ObjectFileRef &object, size_t nodeIndex, DatabaseId database)
DatabaseId GetDatabaseId() const
Definition RoutingService.h:93
Definition RoutingService.h:155
virtual ~RoutingProgress()=default
virtual void Progress(const Distance ¤tMaxDistance, const Distance &overallDistance)=0
std::unordered_set< VNode, ClosedNodeHasher > ClosedSet
Definition RoutingService.h:389
std::unordered_map< DBId, OpenListRef > OpenMap
Definition RoutingService.h:388
static std::string GetDataFilename(const std::string &filenamebase)
std::shared_ptr< RNode > RNodeRef
Definition RoutingService.h:279
static const char *const FILENAME_INTERSECTIONS_DAT
Relative filename of the intersection data file.
Definition RoutingService.h:393
virtual ~RoutingService()
std::set< RNodeRef, RNodeCostCompare >::iterator OpenListRef
Definition RoutingService.h:386
static const char *const DEFAULT_FILENAME_BASE
Relative filebase name for touting data as generated by default by the importer.
Definition RoutingService.h:398
static std::string GetIndexFilename(const std::string &filenamebase)
static std::string GetData2Filename(const std::string &filenamebase)
static const char *const FILENAME_INTERSECTIONS_IDX
Relative filename of the intersection index file.
Definition RoutingService.h:395
std::set< RNodeRef, RNodeCostCompare > OpenList
Definition RoutingService.h:385
std::shared_ptr< RoutingProgress > RoutingProgressRef
Definition RoutingService.h:178
uint64_t Id
Definition OSMScoutTypes.h:40
std::shared_ptr< Breaker > BreakerRef
Definition Breaker.h:64
uint32_t DatabaseId
Definition DBFileOffset.h:30
std::shared_ptr< RouteNode > RouteNodeRef
Definition RouteNode.h:177
Definition DBFileOffset.h:39
DatabaseId database
Definition DBFileOffset.h:40
Id id
Definition DBFileOffset.h:41
Definition RoutingService.h:376
size_t operator()(const VNode &node) const
Definition RoutingService.h:377
Definition RoutingService.h:282
bool operator()(const RNodeRef &a, const RNodeRef &b) const
Definition RoutingService.h:283
ObjectFileRef object
The object (way/area) visited from the current route node.
Definition RoutingService.h:229
bool operator==(const RNode &other) const
Definition RoutingService.h:268
double currentCost
The cost of the current up to the current node.
Definition RoutingService.h:231
bool leaveRestricted
Definition RoutingService.h:240
RNode(const DBId &id, const RouteNodeRef &node, const ObjectFileRef &object, const DBId &prev, bool prevRestricted)
Definition RoutingService.h:254
DBId prev
The file offset of the previous route node.
Definition RoutingService.h:225
DBId id
The file offset of the current route node.
Definition RoutingService.h:223
bool prevRestricted
previous node is restricted
Definition RoutingService.h:228
RNode(const DBId &id, const RouteNodeRef &node, const ObjectFileRef &object)
Definition RoutingService.h:244
bool restricted
Flag to signal, if access to this node is restricted ("access restrictions").
Definition RoutingService.h:235
bool operator<(const RNode &other) const
Definition RoutingService.h:273
double overallCost
The overall costs (currentCost+estimateCost).
Definition RoutingService.h:233
RouteNodeRef node
The current route node.
Definition RoutingService.h:224
Id exclude
Definition RoutingService.h:226
double estimateCost
The estimated cost from here to the target.
Definition RoutingService.h:232
Definition RoutingService.h:313
DBId currentNode
FileOffset of this route node.
Definition RoutingService.h:314
ObjectFileRef object
The object (way/area) visited from the current route node.
Definition RoutingService.h:318
bool operator==(const VNode &other) const
Definition RoutingService.h:328
bool currentRestricted
Current node is accessed from restricted way.
Definition RoutingService.h:315
VNode(const DBId ¤tNode, bool currentRestricted, const ObjectFileRef &object, const DBId &previousNode, bool previousRestricted)
Definition RoutingService.h:356
VNode(const DBId ¤tNode, bool currentRestricted)
Definition RoutingService.h:340
bool previousRestricted
Previous node was accessed from restricted way.
Definition RoutingService.h:317
DBId previousNode
FileOffset of the previous route node.
Definition RoutingService.h:316