1 #ifndef OSMSCOUT_ROUTEPOSTPROCESSOR_H 2 #define OSMSCOUT_ROUTEPOSTPROCESSOR_H 26 #include <unordered_map> 28 #include <osmscout/CoreFeatures.h> 81 std::string startDescription;
97 std::string targetDescription;
155 const ObjectFileRef& originObject,
156 const ObjectFileRef& targetObject);
172 static const double curveMinInitialAngle;
173 static const double curveMaxInitialAngle;
174 static const Distance curveMaxNodeDistance;
175 static const Distance curveMaxDistance;
176 static const double curveMinAngle;
241 size_t roundaboutCrossingCounter;
242 bool roundaboutClockwise{
false};
255 bool HandleNameChange(
const std::list<RouteDescription::Node>& path,
256 std::list<RouteDescription::Node>::const_iterator& lastNode,
257 std::list<RouteDescription::Node>::iterator& node);
258 bool HandleDirectionChange(
const std::list<RouteDescription::Node>& path,
259 std::list<RouteDescription::Node>::iterator& node);
278 ObjectFileRef object;
281 std::list<RouteDescription::Node>::iterator node;
285 std::set<ObjectFileRef> CollectPaths(
const std::list<RouteDescription::Node>& nodes)
const;
287 const std::list<RouteDescription::Node>& nodes)
const;
289 const std::list<RouteDescription::Node>& nodes)
const;
290 std::map<ObjectFileRef,std::set<ObjectFileRef>> CollectPOICandidates(
const Database& database,
291 const std::set<ObjectFileRef>& paths,
292 const std::list<WayRef>& ways,
293 const std::list<AreaRef>& areas);
294 std::map<ObjectFileRef,POIAtRoute> AnalysePOICandidates(
const RoutePostprocessor& postprocessor,
296 std::list<RouteDescription::Node>& nodes,
297 const TypeInfoSet& nodeTypes,
298 const TypeInfoSet& areaTypes,
299 const std::unordered_map<FileOffset,NodeRef>& nodeMap,
300 const std::unordered_map<FileOffset,AreaRef>& areaMap,
301 const std::map<ObjectFileRef,std::set<ObjectFileRef>>& poiCandidates);
302 void SortInCollectedPOIs(
const DatabaseId& databaseId,
303 const std::map<ObjectFileRef,POIAtRoute>& pois);
343 Distance distanceBefore;
349 std::vector<RoutingProfileRef> profiles;
350 std::vector<DatabaseRef> databases;
352 std::unordered_map<DBFileOffset,AreaRef> areaMap;
353 std::unordered_map<DBFileOffset,WayRef> wayMap;
355 std::unordered_map<DatabaseId,NameFeatureValueReader*> nameReaders;
356 std::unordered_map<DatabaseId,RefFeatureValueReader*> refReaders;
357 std::unordered_map<DatabaseId,BridgeFeatureReader*> bridgeReaders;
358 std::unordered_map<DatabaseId,RoundaboutFeatureReader*> roundaboutReaders;
359 std::unordered_map<DatabaseId,DestinationFeatureValueReader*> destinationReaders;
360 std::unordered_map<DatabaseId,MaxSpeedFeatureValueReader*> maxSpeedReaders;
361 std::unordered_map<DatabaseId,LanesFeatureValueReader*> lanesReaders;
362 std::unordered_map<DatabaseId,AccessFeatureValueReader*> accessReaders;
364 std::unordered_map<DatabaseId,TypeInfoSet> motorwayTypes;
365 std::unordered_map<DatabaseId,TypeInfoSet> motorwayLinkTypes;
366 std::unordered_map<DatabaseId,TypeInfoSet> junctionTypes;
378 Duration GetTime(
DatabaseId dbId,
const Area& area,
const Distance &deltaDistance)
const;
383 const ObjectFileRef&
object)
const;
385 const Node& node)
const;
387 const Area& area)
const;
389 const Way& way)
const;
393 std::string junctionRef,
394 std::string junctionName)
const;
415 const ObjectFileRef&
object)
const;
419 const ObjectFileRef&
object)
const;
421 bool IsBackwardPath(
const ObjectFileRef&
object,
422 size_t fromNodeIndex,
423 size_t toNodeIndex)
const;
425 bool IsForwardPath(
const ObjectFileRef&
object,
426 size_t fromNodeIndex,
427 size_t toNodeIndex)
const;
430 const ObjectFileRef&
object)
const;
433 size_t nodeIndex)
const;
446 const std::vector<RoutingProfileRef>& profiles,
447 const std::vector<DatabaseRef>& databases,
448 const std::list<PostprocessorRef>& processors,
449 const std::set<std::string>& motorwayTypeNames=std::set<std::string>(),
450 const std::set<std::string>& motorwayLinkTypeNames=std::set<std::string>(),
451 const std::set<std::string>& junctionTypeNames=std::set<std::string>());
SuggestedLanesPostprocessor(const Distance &distanceBefore=Meters(500))
Definition: RoutePostprocessor.h:337
uint64_t Id
Definition: OSMScoutTypes.h:41
std::shared_ptr< InstructionPostprocessor > InstructionPostprocessorRef
Definition: RoutePostprocessor.h:267
Definition: RoutePostprocessor.h:273
std::shared_ptr< DestinationDescription > DestinationDescriptionRef
Definition: RouteDescription.h:492
std::shared_ptr< SuggestedLanesPostprocessor > SuggestedLanesPostprocessorRef
Definition: RoutePostprocessor.h:346
Definition: RouteDescription.h:667
std::shared_ptr< LanesPostprocessor > LanesPostprocessorRef
Definition: RoutePostprocessor.h:327
Definition: RoutePostprocessor.h:202
Definition: RouteDescription.h:53
Definition: RoutePostprocessor.h:123
std::shared_ptr< Way > WayRef
Definition: Way.h:202
std::shared_ptr< Postprocessor > PostprocessorRef
Definition: RoutePostprocessor.h:72
Definition: RoutePostprocessor.h:55
std::shared_ptr< NameDescription > NameDescriptionRef
Definition: RouteDescription.h:175
std::shared_ptr< POIsPostprocessor > POIsPostprocessorRef
Definition: RoutePostprocessor.h:312
Definition: RoutePostprocessor.h:110
Definition: RoutePostprocessor.h:94
friend Postprocessor
Definition: RoutePostprocessor.h:443
Definition: RoutePostprocessor.h:136
std::shared_ptr< Area > AreaRef
Definition: Area.h:358
#define OSMSCOUT_API
Definition: CoreImportExport.h:45
std::shared_ptr< CrossingWaysDescription > CrossingWaysDescriptionRef
Definition: RouteDescription.h:253
Definition: RoutePostprocessor.h:189
std::shared_ptr< LaneDescription > LaneDescriptionRef
Definition: RouteDescription.h:631
Definition: RoutePostprocessor.h:334
Definition: RoutePostprocessor.h:228
Definition: RoutePostprocessor.h:318
Distance Meters(double m)
Definition: Distance.h:358
Definition: RoutePostprocessor.h:63
Timestamp::duration Duration
Definition: Time.h:29
Definition: DBFileOffset.h:92
Definition: RoutePostprocessor.h:169
Definition: RoutePostprocessor.h:78
Definition: RoutePostprocessor.h:215
Definition: RoutePostprocessor.h:149
uint32_t DatabaseId
Definition: DBFileOffset.h:30