1#ifndef OSMSCOUT_IMPORT_GENROUTEDAT_H
2#define OSMSCOUT_IMPORT_GENROUTEDAT_H
25#include <unordered_map>
64 std::list<ObjectFileRef> objects;
67 struct TurnRestrictionData
92 explicit IndexEntry(FileOffset offset)
99 typedef std::unordered_map<FileOffset,WayRef> FileOffsetWayMap;
100 typedef std::unordered_map<FileOffset,AreaRef> FileOffsetAreaMap;
101 typedef std::unordered_set<Id> RouteNodeIdSet;
102 typedef std::list<RawRouteNode> RawRouteNodeList;
103 typedef std::map<Id,std::list<ObjectFileRef>> NodeIdObjectsMap;
104 typedef std::unordered_map<Id,std::vector<TurnRestrictionData>> ViaTurnRestrictionMap;
112 AccessFeatureValue GetAccess(
const FeatureValueBuffer& buffer)
const;
114 inline AccessFeatureValue GetAccess(
const Way& way)
const
116 return GetAccess(way.GetFeatureValueBuffer());
119 uint8_t GetMaxSpeed(
const Way& way)
const;
120 uint8_t GetGrade(
const Way& way)
const;
122 uint8_t CopyFlags(
const Area::Ring& ring)
const;
123 uint8_t CopyFlagsForward(
const Way& way)
const;
124 uint8_t CopyFlagsBackward(
const Way& way)
const;
126 uint16_t RegisterOrUseObjectVariantData(std::map<ObjectVariantData,uint16_t>& routeDataMap,
127 const TypeInfoRef& type,
131 bool IsAnyRoutable(Progress& progress,
132 const RawRouteNode& node,
133 const std::unordered_map<FileOffset,WayRef>& waysMap,
134 const std::unordered_map<FileOffset,AreaRef>& areasMap,
135 VehicleMask vehicles)
const;
140 bool ReadTurnRestrictionIds(
const ImportParameter& parameter,
142 std::map<OSMId,FileOffset>& wayIdOffsetMap,
143 std::map<OSMId,Id>& nodeMap);
148 bool ResolveWayIds(
const ImportParameter& parameter,
150 std::map<OSMId,FileOffset>& wayIdOffsetMap);
155 bool ResolveNodeIds(
const ImportParameter& parameter,
157 std::map<OSMId,Id>& nodeIdMap);
162 bool ReadTurnRestrictionData(
const ImportParameter& parameter,
164 const std::map<OSMId,Id>& nodeIdMap,
165 const std::map<OSMId,FileOffset>& wayIdOffsetMap,
166 ViaTurnRestrictionMap& restrictions);
172 bool ReadTurnRestrictions(
const ImportParameter& parameter,
174 ViaTurnRestrictionMap& restrictions);
180 bool CanTurn(
const std::vector<TurnRestrictionData>& restrictions,
182 FileOffset to)
const;
187 bool ReadIntersections(
const ImportParameter& parameter,
189 const TypeConfig& typeConfig,
190 NodeUseMap& nodeUseMap);
195 bool ReadObjectsAtIntersections(
const ImportParameter& parameter,
197 const TypeConfig& typeConfig,
198 const NodeUseMap& nodeUseMap,
199 NodeIdObjectsMap& nodeObjectsMap);
201 bool WriteIntersections(
const ImportParameter& parameter,
203 NodeIdObjectsMap& nodeIdObjectsMap);
208 FileOffsetWayMap LoadWays(Progress& progress,
209 const TypeConfig& typeConfig,
210 FileScanner& scanner,
211 RawRouteNodeList::const_iterator startNode,
212 RawRouteNodeList::const_iterator endNode);
217 FileOffsetAreaMap LoadAreas(Progress& progress,
218 const TypeConfig& typeConfig,
219 FileScanner& scanner,
220 RawRouteNodeList::const_iterator startNode,
221 RawRouteNodeList::const_iterator endNode);
223 bool GetRouteNodePoint(Progress& progress,
224 const RawRouteNode& node,
225 FileOffsetWayMap& waysMap,
226 FileOffsetAreaMap& areasMap,
238 void CalculateAreaPaths(RouteNode& routeNode,
240 uint16_t objectVariantIndex,
241 const RouteNodeIdSet& routeNodeIdSet);
246 void CalculateCircularWayPaths(RouteNode& routeNode,
248 uint16_t objectVariantIndex,
249 const RouteNodeIdSet& routeNodeIdSet);
254 void CalculateWayPaths(RouteNode& routeNode,
256 uint16_t objectVariantIndex,
257 const RouteNodeIdSet& routeNodeIdSet);
262 void FillRoutePathExcludes(RouteNode& routeNode,
263 const RawRouteNode& node,
264 const ViaTurnRestrictionMap& restrictions);
266 bool WriteObjectVariantData(Progress& progress,
267 const std::string& variantFilename,
268 const std::map<ObjectVariantData,uint16_t>& routeDataMap);
270 bool WriteRouteGraph(
const ImportParameter& parameter,
272 const TypeConfig& typeConfig,
273 const RawRouteNodeList& rawRouteNodes,
274 const RouteNodeIdSet& routeNodeIdSet,
275 const ViaTurnRestrictionMap& restrictions,
276 VehicleMask vehicles,
277 const std::string& dataFilename,
278 const std::string& variantFilename);
284 ImportModuleDescription& description)
const override;
void GetDescription(const ImportParameter ¶meter, ImportModuleDescription &description) const override
RouteDataGenerator()=default
bool Import(const TypeConfigRef &typeConfig, const ImportParameter ¶meter, Progress &progress) override
Definition ImportModule.h:101
uint64_t Id
Definition OSMScoutTypes.h:40
uint64_t FileOffset
Definition OSMScoutTypes.h:46
std::shared_ptr< TypeConfig > TypeConfigRef
Definition TypeConfig.h:1396
FeatureValueReader< MaxSpeedFeature, MaxSpeedFeatureValue > MaxSpeedFeatureValueReader
Definition MaxSpeedFeature.h:97
FeatureValueReader< GradeFeature, GradeFeatureValue > GradeFeatureValueReader
Definition GradeFeature.h:88
FeatureValueReader< AccessRestrictedFeature, AccessRestrictedFeatureValue > AccessRestrictedFeatureValueReader
Definition AccessRestrictedFeature.h:159
FeatureValueReader< AccessFeature, AccessFeatureValue > AccessFeatureValueReader
Definition AccessFeature.h:276