libosmscout  0.1
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules
osmscout::MultiDBRoutingService Class Referencefinal

#include <MultiDBRoutingService.h>

+ Inheritance diagram for osmscout::MultiDBRoutingService:

Public Types

using RoutingProfileBuilder = std::function< RoutingProfileRef(const DatabaseRef &)>
 

Public Member Functions

RoutingResult CalculateRoute (const RoutePosition &start, const RoutePosition &target, const std::optional< osmscout::Bearing > &bearing, const RoutingParameter &parameter)
 
RoutingResult CalculateRoute (const std::vector< osmscout::GeoCoord > &via, const Distance &radius, const RoutingParameter &parameter)
 Calculate a route going through all the via points. More...
 
void Close ()
 
RoutePositionResult GetClosestRoutableNode (const GeoCoord &coord, const Distance &radius=Kilometers(1)) const
 
std::optional< DatabaseIdGetDatabaseId (const std::string &databasePath) const
 
std::map< DatabaseId, std::string > GetDatabaseMapping () const override
 
RoutePositionResult GetRoutableNode (const DatabaseId &dbId, const std::vector< ObjectFileRef > &refs)
 Return first usable routable node from given object references. More...
 
 MultiDBRoutingService (const RouterParameter &parameter, const std::vector< DatabaseRef > &databases)
 
bool Open (RoutingProfileBuilder routingProfileBuilder)
 
bool PostProcessRouteDescription (RouteDescription &description, const std::list< RoutePostprocessor::PostprocessorRef > &postprocessors)
 
RoutePointsResult TransformRouteDataToPoints (const RouteData &data)
 
RouteDescriptionResult TransformRouteDataToRouteDescription (const RouteData &data)
 
RouteWayResult TransformRouteDataToWay (const RouteData &data)
 
 ~MultiDBRoutingService () override
 
- Public Member Functions inherited from osmscout::AbstractRoutingService< MultiDBRoutingState >
 AbstractRoutingService (const RouterParameter &parameter)
 
RoutingResult CalculateRoute (MultiDBRoutingState &state, const RoutePosition &start, const RoutePosition &target, const std::optional< osmscout::Bearing > &bearing, const RoutingParameter &parameter)
 Calculate a route. More...
 
virtual std::map< DatabaseId, std::string > GetDatabaseMapping () const=0
 Get current mapping of DatabaseId to db path than be used later for lookup objects in description. More...
 
RoutePointsResult TransformRouteDataToPoints (const RouteData &data)
 Transforms the route into a list of points. More...
 
RouteDescriptionResult TransformRouteDataToRouteDescription (const RouteData &data)
 Transform the route into a RouteDescription. More...
 
RouteWayResult TransformRouteDataToWay (const RouteData &data)
 Transforms the route into a Way (with empty type) More...
 
 ~AbstractRoutingService () override
 
- Public Member Functions inherited from osmscout::RoutingService
 RoutingService ()
 
virtual ~RoutingService ()
 

Additional Inherited Members

- Static Public Member Functions inherited from osmscout::RoutingService
static std::string GetData2Filename (const std::string &filenamebase)
 
static std::string GetDataFilename (const std::string &filenamebase)
 
static std::string GetIndexFilename (const std::string &filenamebase)
 
- Static Public Attributes inherited from osmscout::RoutingService
static const char *const DEFAULT_FILENAME_BASE = "router"
 Relative filebase name for touting data as generated by default by the importer. More...
 
static const char *const FILENAME_INTERSECTIONS_DAT = "intersections.dat"
 Relative filename of the intersection data file. More...
 
static const char *const FILENAME_INTERSECTIONS_IDX = "intersections.idx"
 Relative filename of the intersection index file. More...
 
- Protected Types inherited from osmscout::RoutingService
using ClosedSet = std::unordered_set< VNode, ClosedNodeHasher >
 
using OpenList = std::set< RNodeRef, RNodeCostCompare >
 
using OpenListRef = std::set< RNodeRef, RNodeCostCompare >::iterator
 
using OpenMap = std::unordered_map< DBId, OpenListRef >
 
using RNodeRef = std::shared_ptr< RNode >
 
- Protected Member Functions inherited from osmscout::AbstractRoutingService< MultiDBRoutingState >
void AddNodes (RouteData &route, DatabaseId database, Id startNodeId, size_t startNodeIndex, const ObjectFileRef &object, size_t idCount, bool oneway, size_t targetNodeIndex)
 
bool GetRNode (const MultiDBRoutingState &state, const RoutePosition &position, const WayRef &way, size_t routeNodeIndex, const RouteNodeRef &routeNode, const GeoCoord &startCoord, const GeoCoord &targetCoord, RNodeRef &node)
 
void GetStartBackwardRouteNode (const MultiDBRoutingState &state, const DatabaseId &database, const WayRef &way, size_t nodeIndex, RouteNodeRef &routeNode, size_t &routeNodeIndex)
 
void GetStartForwardRouteNode (const MultiDBRoutingState &state, const DatabaseId &database, const WayRef &way, size_t nodeIndex, RouteNodeRef &routeNode, size_t &routeNodeIndex)
 
bool GetStartNodes (const MultiDBRoutingState &state, const RoutePosition &position, GeoCoord &startCoord, const GeoCoord &targetCoord, RouteNodeRef &forwardRouteNode, RouteNodeRef &backwardRouteNode, RNodeRef &forwardRNode, RNodeRef &backwardRNode)
 The start position is at the given position defined by an object and the index of the node within the object. More...
 
void GetTargetBackwardRouteNode (const MultiDBRoutingState &state, const DatabaseId &database, const WayRef &way, size_t nodeIndex, RouteNodeRef &routeNode)
 Return the route node that allows navigating to the given node in backward direction. More...
 
void GetTargetForwardRouteNode (const MultiDBRoutingState &state, const DatabaseId &database, const WayRef &way, size_t nodeIndex, RouteNodeRef &routeNode)
 Return the route node that allows navigating to the given node in forward direction. More...
 
bool GetTargetNodes (const MultiDBRoutingState &state, const RoutePosition &position, GeoCoord &targetCoord, RouteNodeRef &forwardNode, RouteNodeRef &backwardNode)
 The target position is at the given position defined by an object and the index of the node within the object. More...
 
bool GetWayStartNodes (const MultiDBRoutingState &state, const RoutePosition &position, GeoCoord &startCoord, const GeoCoord &targetCoord, RouteNodeRef &forwardRouteNode, RouteNodeRef &backwardRouteNode, RNodeRef &forwardRNode, RNodeRef &backwardRNode)
 The start position is at the given way and the index of the node within the object. More...
 
bool GetWayTargetNodes (const MultiDBRoutingState &state, const RoutePosition &position, GeoCoord &targetCoord, RouteNodeRef &forwardNode, RouteNodeRef &backwardNode)
 The target position is at the given position defined by an object and the index of the node within the object. More...
 
void ResolveRNodeChainToList (const RNode &finalRouteNode, const ClosedSet &closedSet, std::list< VNode > &nodes)
 
bool ResolveRNodesToRouteData (const MultiDBRoutingState &state, const std::list< VNode > &nodes, const RoutePosition &start, const RoutePosition &target, RouteData &route)
 
bool RestrictInitialUTurn (const MultiDBRoutingState &state, const Bearing &vehicleBearing, const RoutePosition &start, RNodeRef startForwardNode, RNodeRef startBackwardNode)
 
virtual bool WalkPaths (const MultiDBRoutingState &state, RNodeRef &current, RouteNodeRef &currentRouteNode, OpenList &openList, OpenMap &openMap, ClosedSet &closedSet, RoutingResult &result, const RoutingParameter &parameter, const GeoCoord &targetCoord, const Vehicle &vehicle, size_t &nodesIgnoredCount, Distance &currentMaxDistance, const Distance &overallDistance, const double &costLimit)
 
virtual bool WalkToOtherDatabases (const MultiDBRoutingState &state, RNodeRef &current, RouteNodeRef &currentRouteNode, OpenList &openList, OpenMap &openMap, const ClosedSet &closedSet)
 
- Protected Attributes inherited from osmscout::AbstractRoutingService< MultiDBRoutingState >
bool debugPerformance
 

Detailed Description

Util class for routing cross databases

Member Typedef Documentation

◆ RoutingProfileBuilder

Constructor & Destructor Documentation

◆ MultiDBRoutingService()

osmscout::MultiDBRoutingService::MultiDBRoutingService ( const RouterParameter parameter,
const std::vector< DatabaseRef > &  databases 
)

◆ ~MultiDBRoutingService()

osmscout::MultiDBRoutingService::~MultiDBRoutingService ( )
override

References Close().

Member Function Documentation

◆ CalculateRoute() [1/2]

RoutingResult osmscout::MultiDBRoutingService::CalculateRoute ( const RoutePosition start,
const RoutePosition target,
const std::optional< osmscout::Bearing > &  bearing,
const RoutingParameter parameter 
)

◆ CalculateRoute() [2/2]

RoutingResult osmscout::MultiDBRoutingService::CalculateRoute ( const std::vector< osmscout::GeoCoord > &  via,
const Distance radius,
const RoutingParameter parameter 
)

Calculate a route going through all the via points.

Parameters
viaA vector of via points
radiusThe maximum radius to search in from the search center in meter
parameterA RoutingParamater object
Returns
A RoutingResult object

References osmscout::RouteData::Append(), osmscout::RoutingResult::AppendSectionLength(), CalculateRoute(), osmscout::RouteData::Clear(), osmscout::RoutingResult::ClearSectionLengths(), osmscout::RouteData::Entries(), GetClosestRoutableNode(), osmscout::RoutingResult::GetRoute(), osmscout::RoutePosition::IsValid(), osmscout::RouteData::PopEntry(), and osmscout::RoutingResult::Success().

◆ Close()

void osmscout::MultiDBRoutingService::Close ( )

Referenced by Open(), and ~MultiDBRoutingService().

◆ GetClosestRoutableNode()

◆ GetDatabaseId()

std::optional< DatabaseId > osmscout::MultiDBRoutingService::GetDatabaseId ( const std::string &  databasePath) const

◆ GetDatabaseMapping()

std::map< DatabaseId, std::string > osmscout::MultiDBRoutingService::GetDatabaseMapping ( ) const
override

◆ GetRoutableNode()

RoutePositionResult osmscout::MultiDBRoutingService::GetRoutableNode ( const DatabaseId dbId,
const std::vector< ObjectFileRef > &  refs 
)

Return first usable routable node from given object references.

Parameters
dbIdID of db where objects exists.
refsReferences to possible routable objects
Returns
routable node on object (way)

References osmscout::RoutePositionResult::GetDistance(), osmscout::RoutePosition::GetNodeIndex(), osmscout::RoutePosition::GetObjectFileRef(), osmscout::RoutePositionResult::GetRoutePosition(), and osmscout::RoutePositionResult::IsValid().

◆ Open()

◆ PostProcessRouteDescription()

bool osmscout::MultiDBRoutingService::PostProcessRouteDescription ( RouteDescription description,
const std::list< RoutePostprocessor::PostprocessorRef > &  postprocessors 
)

◆ TransformRouteDataToPoints()

RoutePointsResult osmscout::MultiDBRoutingService::TransformRouteDataToPoints ( const RouteData data)

◆ TransformRouteDataToRouteDescription()

RouteDescriptionResult osmscout::MultiDBRoutingService::TransformRouteDataToRouteDescription ( const RouteData data)

◆ TransformRouteDataToWay()

RouteWayResult osmscout::MultiDBRoutingService::TransformRouteDataToWay ( const RouteData data)

The documentation for this class was generated from the following files: