1 #ifndef OSMSCOUT_IMPORT_GENROUTEDAT_H 2 #define OSMSCOUT_IMPORT_GENROUTEDAT_H 25 #include <unordered_map> 52 class RouteDataGenerator
CLASS_FINAL :
public ImportModule
60 std::list<ObjectFileRef> objects;
63 struct TurnRestrictionData
95 typedef std::unordered_map<FileOffset,WayRef> FileOffsetWayMap;
96 typedef std::unordered_map<FileOffset,AreaRef> FileOffsetAreaMap;
97 typedef std::unordered_set<Id> RouteNodeIdSet;
98 typedef std::list<RawRouteNode> RawRouteNodeList;
99 typedef std::map<Id,std::list<ObjectFileRef>> NodeIdObjectsMap;
100 typedef std::unordered_map<Id,std::vector<TurnRestrictionData>> ViaTurnRestrictionMap;
108 AccessFeatureValue GetAccess(
const FeatureValueBuffer& buffer)
const;
110 inline AccessFeatureValue GetAccess(
const Way& way)
const 112 return GetAccess(way.GetFeatureValueBuffer());
115 uint8_t GetMaxSpeed(
const Way& way)
const;
116 uint8_t GetGrade(
const Way& way)
const;
118 uint8_t CopyFlags(
const Area::Ring& ring)
const;
119 uint8_t CopyFlagsForward(
const Way& way)
const;
120 uint8_t CopyFlagsBackward(
const Way& way)
const;
122 uint16_t RegisterOrUseObjectVariantData(std::map<ObjectVariantData,uint16_t>& routeDataMap,
127 bool IsAnyRoutable(Progress& progress,
128 const RawRouteNode& node,
129 const std::unordered_map<FileOffset,WayRef>& waysMap,
130 const std::unordered_map<FileOffset,AreaRef>& areasMap,
136 bool ReadTurnRestrictionIds(
const ImportParameter& parameter,
138 std::map<OSMId,FileOffset>& wayIdOffsetMap,
139 std::map<OSMId,Id>& nodeMap);
144 bool ResolveWayIds(
const ImportParameter& parameter,
146 std::map<OSMId,FileOffset>& wayIdOffsetMap);
151 bool ResolveNodeIds(
const ImportParameter& parameter,
153 std::map<OSMId,Id>& nodeIdMap);
158 bool ReadTurnRestrictionData(
const ImportParameter& parameter,
160 const std::map<OSMId,Id>& nodeIdMap,
161 const std::map<OSMId,FileOffset>& wayIdOffsetMap,
162 ViaTurnRestrictionMap& restrictions);
168 bool ReadTurnRestrictions(
const ImportParameter& parameter,
170 ViaTurnRestrictionMap& restrictions);
176 bool CanTurn(
const std::vector<TurnRestrictionData>& restrictions,
183 bool ReadIntersections(
const ImportParameter& parameter,
185 const TypeConfig& typeConfig,
186 NodeUseMap& nodeUseMap);
191 bool ReadObjectsAtIntersections(
const ImportParameter& parameter,
193 const TypeConfig& typeConfig,
194 const NodeUseMap& nodeUseMap,
195 NodeIdObjectsMap& nodeObjectsMap);
197 bool WriteIntersections(
const ImportParameter& parameter,
199 NodeIdObjectsMap& nodeIdObjectsMap);
204 FileOffsetWayMap LoadWays(Progress& progress,
205 const TypeConfig& typeConfig,
206 FileScanner& scanner,
207 RawRouteNodeList::const_iterator startNode,
208 RawRouteNodeList::const_iterator endNode);
213 FileOffsetAreaMap LoadAreas(Progress& progress,
214 const TypeConfig& typeConfig,
215 FileScanner& scanner,
216 RawRouteNodeList::const_iterator startNode,
217 RawRouteNodeList::const_iterator endNode);
219 bool GetRouteNodePoint(Progress& progress,
220 const RawRouteNode& node,
221 FileOffsetWayMap& waysMap,
222 FileOffsetAreaMap& areasMap,
234 void CalculateAreaPaths(RouteNode& routeNode,
236 uint16_t objectVariantIndex,
237 const RouteNodeIdSet& routeNodeIdSet);
242 void CalculateCircularWayPaths(RouteNode& routeNode,
244 uint16_t objectVariantIndex,
245 const RouteNodeIdSet& routeNodeIdSet);
250 void CalculateWayPaths(RouteNode& routeNode,
252 uint16_t objectVariantIndex,
253 const RouteNodeIdSet& routeNodeIdSet);
258 void FillRoutePathExcludes(RouteNode& routeNode,
259 const RawRouteNode& node,
260 const ViaTurnRestrictionMap& restrictions);
262 bool WriteObjectVariantData(Progress& progress,
263 const std::string& variantFilename,
264 const std::map<ObjectVariantData,uint16_t>& routeDataMap);
266 bool WriteRouteGraph(
const ImportParameter& parameter,
268 const TypeConfig& typeConfig,
269 const RawRouteNodeList& rawRouteNodes,
270 const RouteNodeIdSet& routeNodeIdSet,
271 const ViaTurnRestrictionMap& restrictions,
273 const std::string& dataFilename,
274 const std::string& variantFilename);
277 RouteDataGenerator() =
default;
279 void GetDescription(
const ImportParameter& parameter,
280 ImportModuleDescription& description)
const override;
283 const ImportParameter& parameter,
284 Progress& progress)
override;
uint64_t Id
Definition: OSMScoutTypes.h:41
FeatureValueReader< MaxSpeedFeature, MaxSpeedFeatureValue > MaxSpeedFeatureValueReader
Definition: FeatureReader.h:269
#define CLASS_FINAL
Definition: Compiler.h:26
FeatureValueReader< AccessRestrictedFeature, AccessRestrictedFeatureValue > AccessRestrictedFeatureValueReader
Definition: FeatureReader.h:266
FeatureValueReader< AccessFeature, AccessFeatureValue > AccessFeatureValueReader
Definition: FeatureReader.h:265
std::shared_ptr< TypeInfo > TypeInfoRef
Definition: TypeConfig.h:58
uint64_t FileOffset
Definition: OSMScoutTypes.h:47
uint8_t VehicleMask
Definition: OSMScoutTypes.h:62
std::shared_ptr< TypeConfig > TypeConfigRef
Definition: TypeConfig.h:1227
FeatureValueReader< GradeFeature, GradeFeatureValue > GradeFeatureValueReader
Definition: FeatureReader.h:270