Eclipse SUMO - Simulation of Urban MObility
NIImporter_OpenStreetMap.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
18 // Importer for networks stored in OpenStreetMap format
19 /****************************************************************************/
20 #ifndef NIImporter_OpenStreetMap_h
21 #define NIImporter_OpenStreetMap_h
22 
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #include <config.h>
28 
29 #include <string>
30 #include <map>
34 #include <netbuild/NBPTPlatform.h>
35 
36 
37 // ===========================================================================
38 // class declarations
39 // ===========================================================================
40 class NBEdge;
41 class NBEdgeCont;
42 class NBNetBuilder;
43 class NBNode;
44 class NBNodeCont;
46 class NBTypeCont;
47 class OptionsCont;
48 
49 
50 // ===========================================================================
51 // class definitions
52 // ===========================================================================
59 public:
71  static void loadNetwork(const OptionsCont& oc, NBNetBuilder& nb);
72 
73 protected:
76  struct NIOSMNode {
77  NIOSMNode(long long int _id, double _lon, double _lat)
78  :
79  id(_id), lon(_lon), lat(_lat), ele(0),
80  tlsControlled(false),
81  railwayCrossing(false),
82  railwaySignal(false),
83  railwayBufferStop(false),
84  ptStopPosition(false), ptStopLength(0), name(""),
86  positionMeters(std::numeric_limits<double>::max()),
87  node(0) { }
88 
90  const long long int id;
92  const double lon;
94  const double lat;
96  double ele;
108  double ptStopLength;
110  std::string name;
114  std::string position;
119 
120  private:
122  NIOSMNode& operator=(const NIOSMNode& s) = delete;
123 
124 
125  };
126 
127 public:
129  static SUMOVehicleClass interpretTransportType(const std::string& type, NIOSMNode* toSet = nullptr);
130 
131 protected:
132 
133 
137  enum WayType {
138  WAY_NONE = 0,
143  };
144 
145  enum ParkingType {
154  };
155 
156 
159  struct Edge : public Parameterised {
160 
161  explicit Edge(long long int _id)
162  :
164  myCyclewayType(WAY_UNKNOWN), // building of extra lane depends on bikelaneWidth of loaded typemap
165  myBuswayType(WAY_NONE), // buslanes are always built when declared
166  mySidewalkType(WAY_UNKNOWN), // building of extra lanes depends on sidewalkWidth of loaded typemap
167  myRailDirection(WAY_UNKNOWN), // store direction(s) of railway usage
168  myParkingType(PARKING_NONE), // parking areas exported optionally
169  myLayer(0), // layer is non-zero only in conflict areas
170  myCurrentIsRoad(false),
171  myCurrentIsPlatform(false),
173  { }
174 
175 
177  const long long int id;
179  std::string streetName;
181  std::string ref;
187  double myMaxSpeed;
189  std::string myHighWayType;
191  std::string myIsOneWay;
203  int myLayer;
205  std::vector<long long int> myCurrentNodes;
212 
213  private:
215  Edge& operator=(const Edge& s) = delete;
216 
217 
218  };
219 
220 
222 
224 
225  void load(const OptionsCont& oc, NBNetBuilder& nb);
226 
227 private:
231  class CompareNodes {
232  public:
233  bool operator()(const NIOSMNode* n1, const NIOSMNode* n2) const {
234  return (n1->lat > n2->lat) || (n1->lat == n2->lat && n1->lon > n2->lon);
235  }
236  };
237 
238 
240  static const std::string compoundTypeSeparator;
241 
243 
247  std::map<long long int, NIOSMNode*> myOSMNodes;
248 
250  std::set<NIOSMNode*, CompareNodes> myUniqueNodes;
251 
252 
254  std::map<long long int, Edge*> myEdges;
255 
257  std::map<long long int, Edge*> myPlatformShapes;
258 
260  std::set<std::string> myUnusableTypes;
261 
263  std::map<std::string, std::string> myKnownCompoundTypes;
264 
279  NBNode* insertNodeChecking(long long int id, NBNodeCont& nc, NBTrafficLightLogicCont& tlsc);
280 
281 
294  int insertEdge(Edge* e, int index, NBNode* from, NBNode* to,
295  const std::vector<long long int>& passed, NBNetBuilder& nb);
296 
298  void reconstructLayerElevation(double layerElevation, NBNetBuilder& nb);
299 
301  std::map<NBNode*, std::pair<double, double> >
302  getNeighboringNodes(NBNode* node, double maxDist, const std::set<NBNode*>& knownElevation);
303 
305  std::string usableType(const std::string& type, const std::string& id, NBTypeCont& tc);
306 
308  void extendRailwayDistances(Edge* e, NBTypeCont& tc);
309 
311  static double interpretDistance(NIOSMNode* node);
312 
313 protected:
314  static const double MAXSPEED_UNGIVEN;
315  static const long long int INVALID_ID;
316 
321  friend class NodesHandler;
322  class NodesHandler : public SUMOSAXHandler {
323  public:
329  NodesHandler(std::map<long long int, NIOSMNode*>& toFill, std::set<NIOSMNode*,
330  CompareNodes>& uniqueNodes,
331  const OptionsCont& cont);
332 
333 
335  ~NodesHandler() override;
336 
337 
338  protected:
340 
341 
349  void myStartElement(int element, const SUMOSAXAttributes& attrs) override;
350 
351 
358  void myEndElement(int element) override;
360 
361 
362  private:
363 
365  std::map<long long int, NIOSMNode*>& myToFill;
366 
368  long long int myLastNodeID;
369 
372 
375 
377  std::set<NIOSMNode*, CompareNodes>& myUniqueNodes;
378 
380  const bool myImportElevation;
381 
384 
385 
386  private:
388  NodesHandler(const NodesHandler& s);
389 
392 
393  };
394 
395 
400  class EdgesHandler : public SUMOSAXHandler {
401  public:
407  EdgesHandler(const std::map<long long int, NIOSMNode*>& osmNodes,
408  std::map<long long int, Edge*>& toFill, std::map<long long int, Edge*>& platformShapes);
409 
410 
412  ~EdgesHandler() override;
413 
414 
415  protected:
417 
418 
426  void myStartElement(int element, const SUMOSAXAttributes& attrs) override;
427 
428 
435  void myEndElement(int element) override;
437 
438 
439  private:
441  const std::map<long long int, NIOSMNode*>& myOSMNodes;
442 
444  std::map<long long int, Edge*>& myEdgeMap;
445 
447  std::map<long long int, Edge*>& myPlatformShapesMap;
448 
451 
453  std::vector<int> myParentElements;
454 
456  std::map<std::string, double> mySpeedMap;
457 
460 
461  private:
463  EdgesHandler(const EdgesHandler& s);
464 
467 
468  };
469 
476  public:
482  RelationHandler(const std::map<long long int, NIOSMNode*>& osmNodes,
483  const std::map<long long int, Edge*>& osmEdges, NBPTStopCont* nbptStopCont,
484  const std::map<long long int, Edge*>& platfromShapes, NBPTLineCont* nbptLineCont,
485  const OptionsCont& oc);
486 
487 
489  ~RelationHandler() override;
490 
491 
492  protected:
494 
495 
503  void myStartElement(int element, const SUMOSAXAttributes& attrs) override;
504 
505 
512  void myEndElement(int element) override;
514 
515 
516  private:
518  const std::map<long long int, NIOSMNode*>& myOSMNodes;
519 
521  const std::map<long long int, Edge*>& myOSMEdges;
522 
524  const std::map<long long int, Edge*>& myPlatformShapes;
525 
528 
531 
533  long long int myCurrentRelation;
534 
536  std::vector<int> myParentElements;
537 
540 
542  long long int myFromWay;
543 
545  long long int myToWay;
546 
548  long long int myViaNode;
549  long long int myViaWay;
550 
551 
554 
565  };
567 
569  void resetValues();
570 
572  bool checkEdgeRef(long long int ref) const;
573 
575  bool applyRestriction() const;
576 
578  NBEdge* findEdgeRef(long long int wayRef, const std::vector<NBEdge*>& candidates) const;
579 
580  private:
583 
586 
588  std::vector<long long int> myStops;
589 
590 
591  struct NIIPTPlatform {
592  long long int ref;
593  bool isWay;
594  };
595 
597  std::vector<NIIPTPlatform> myPlatforms;
598 
600  std::vector<long long int> myWays;
601 
604 
606  bool myIsRoute;
607 
609  std::string myPTRouteType;
610 
612  std::string myName;
613 
615  std::string myRef;
616 
619 
621  std::string myNightService;
622  };
623 
624 };
625 
626 
627 #endif
628 
629 /****************************************************************************/
630 
NIImporter_OpenStreetMap::NIOSMNode::name
std::string name
The name of the node.
Definition: NIImporter_OpenStreetMap.h:110
NIImporter_OpenStreetMap::Edge::myIsOneWay
std::string myIsOneWay
Information whether this is an one-way road.
Definition: NIImporter_OpenStreetMap.h:191
NIImporter_OpenStreetMap::RelationHandler::myNBPTStopCont
NBPTStopCont * myNBPTStopCont
The previously filled pt stop container.
Definition: NIImporter_OpenStreetMap.h:527
NIImporter_OpenStreetMap::RelationHandler::operator=
RelationHandler & operator=(const RelationHandler &s)
invalidated assignment operator
SUMOVehicleClass
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
Definition: SUMOVehicleClass.h:133
NIImporter_OpenStreetMap::NodesHandler::myIsInValidNodeTag
bool myIsInValidNodeTag
Hierarchy helper for parsing a node's tags.
Definition: NIImporter_OpenStreetMap.h:371
NIImporter_OpenStreetMap::myKnownCompoundTypes
std::map< std::string, std::string > myKnownCompoundTypes
The compound types that have already been mapped to other known types.
Definition: NIImporter_OpenStreetMap.h:263
NIImporter_OpenStreetMap::insertNodeChecking
NBNode * insertNodeChecking(long long int id, NBNodeCont &nc, NBTrafficLightLogicCont &tlsc)
Builds an NBNode.
Definition: NIImporter_OpenStreetMap.cpp:265
NIImporter_OpenStreetMap::NIOSMNode::NIOSMNode
NIOSMNode(long long int _id, double _lon, double _lat)
Definition: NIImporter_OpenStreetMap.h:77
NBPTStopCont
Definition: NBPTStopCont.h:27
NIImporter_OpenStreetMap::NIOSMNode
An internal representation of an OSM-node.
Definition: NIImporter_OpenStreetMap.h:76
NIImporter_OpenStreetMap::RelationHandler::myOSMNodes
const std::map< long long int, NIOSMNode * > & myOSMNodes
The previously parsed nodes.
Definition: NIImporter_OpenStreetMap.h:518
NIImporter_OpenStreetMap::loadNetwork
static void loadNetwork(const OptionsCont &oc, NBNetBuilder &nb)
Loads content of the optionally given OSM file.
Definition: NIImporter_OpenStreetMap.cpp:102
NIImporter_OpenStreetMap::RelationHandler::myName
std::string myName
name of the relation
Definition: NIImporter_OpenStreetMap.h:612
Parameterised
An upper class for objects with additional parameters.
Definition: Parameterised.h:42
NIImporter_OpenStreetMap::NIOSMNode::ele
double ele
The elevation of this node.
Definition: NIImporter_OpenStreetMap.h:96
NIImporter_OpenStreetMap::PARKING_NONE
@ PARKING_NONE
Definition: NIImporter_OpenStreetMap.h:146
NIImporter_OpenStreetMap::Edge::id
const long long int id
The edge's id.
Definition: NIImporter_OpenStreetMap.h:177
NIImporter_OpenStreetMap::Edge::myBuswayType
WayType myBuswayType
Information about the kind of busway along this road.
Definition: NIImporter_OpenStreetMap.h:195
NBEdgeCont
Storage for edges, including some functionality operating on multiple edges.
Definition: NBEdgeCont.h:60
NIImporter_OpenStreetMap::NIOSMNode::ptStopLength
double ptStopLength
The length of the pt stop.
Definition: NIImporter_OpenStreetMap.h:108
NIImporter_OpenStreetMap::PARKING_RIGHT
@ PARKING_RIGHT
Definition: NIImporter_OpenStreetMap.h:148
NIImporter_OpenStreetMap::RelationHandler::myNightService
std::string myNightService
night service information of the pt line
Definition: NIImporter_OpenStreetMap.h:621
SUMOSAXHandler
SAX-handler base for SUMO-files.
Definition: SUMOSAXHandler.h:41
NBNetBuilder
Instance responsible for building networks.
Definition: NBNetBuilder.h:109
NIImporter_OpenStreetMap::ParkingType
ParkingType
Definition: NIImporter_OpenStreetMap.h:145
NBTrafficLightLogicCont
A container for traffic light definitions and built programs.
Definition: NBTrafficLightLogicCont.h:57
NIImporter_OpenStreetMap::RelationHandler::myRef
std::string myRef
ref of the pt line
Definition: NIImporter_OpenStreetMap.h:615
NIImporter_OpenStreetMap::RelationHandler::myPlatforms
std::vector< NIIPTPlatform > myPlatforms
bus stop platforms
Definition: NIImporter_OpenStreetMap.h:597
NIImporter_OpenStreetMap::PARKING_PERPENDICULAR
@ PARKING_PERPENDICULAR
Definition: NIImporter_OpenStreetMap.h:152
NBPTPlatform.h
NIImporter_OpenStreetMap::CompareNodes
Functor which compares two NIOSMNodes according to their coordinates.
Definition: NIImporter_OpenStreetMap.h:231
NIImporter_OpenStreetMap::RelationHandler::RESTRICTION_ONLY
@ RESTRICTION_ONLY
The only valid connection is declared.
Definition: NIImporter_OpenStreetMap.h:560
NIImporter_OpenStreetMap::Edge::myCurrentIsElectrified
bool myCurrentIsElectrified
Information whether this is railway is electrified.
Definition: NIImporter_OpenStreetMap.h:211
NIImporter_OpenStreetMap::NIOSMNode::railwayCrossing
bool railwayCrossing
Whether this is a railway crossing.
Definition: NIImporter_OpenStreetMap.h:100
NIImporter_OpenStreetMap::RelationHandler::~RelationHandler
~RelationHandler() override
Destructor.
NIImporter_OpenStreetMap::RelationHandler::resetValues
void resetValues()
reset members to their defaults for parsing a new relation
Definition: NIImporter_OpenStreetMap.cpp:1077
SUMOSAXHandler.h
NIImporter_OpenStreetMap::RelationHandler::myRestrictionType
RestrictionType myRestrictionType
Definition: NIImporter_OpenStreetMap.h:566
NIImporter_OpenStreetMap::EdgesHandler::myCurrentEdge
Edge * myCurrentEdge
The currently built edge.
Definition: NIImporter_OpenStreetMap.h:450
NIImporter_OpenStreetMap::NIOSMNode::railwayBufferStop
bool railwayBufferStop
Whether this is a railway buffer stop.
Definition: NIImporter_OpenStreetMap.h:104
NIImporter_OpenStreetMap::CompareNodes::operator()
bool operator()(const NIOSMNode *n1, const NIOSMNode *n2) const
Definition: NIImporter_OpenStreetMap.h:233
NIImporter_OpenStreetMap::NIOSMNode::tlsControlled
bool tlsControlled
Whether this is a tls controlled junction.
Definition: NIImporter_OpenStreetMap.h:98
NIImporter_OpenStreetMap::RelationHandler::myStartElement
void myStartElement(int element, const SUMOSAXAttributes &attrs) override
Called on the opening of a tag;.
Definition: NIImporter_OpenStreetMap.cpp:1094
NIImporter_OpenStreetMap::PARKING_DIAGONAL
@ PARKING_DIAGONAL
Definition: NIImporter_OpenStreetMap.h:153
NIImporter_OpenStreetMap::Edge
An internal definition of a loaded edge.
Definition: NIImporter_OpenStreetMap.h:159
NIImporter_OpenStreetMap::NodesHandler
A class which extracts OSM-nodes from a parsed OSM-file.
Definition: NIImporter_OpenStreetMap.h:322
NIImporter_OpenStreetMap::Edge::myCurrentNodes
std::vector< long long int > myCurrentNodes
The list of nodes this edge is made of.
Definition: NIImporter_OpenStreetMap.h:205
NIImporter_OpenStreetMap::NodesHandler::myHierarchyLevel
int myHierarchyLevel
The current hierarchy level.
Definition: NIImporter_OpenStreetMap.h:374
NIImporter_OpenStreetMap::WAY_NONE
@ WAY_NONE
Definition: NIImporter_OpenStreetMap.h:138
NIImporter_OpenStreetMap::reconstructLayerElevation
void reconstructLayerElevation(double layerElevation, NBNetBuilder &nb)
reconstruct elevation from layer info
Definition: NIImporter_OpenStreetMap.cpp:1442
NIImporter_OpenStreetMap::load
void load(const OptionsCont &oc, NBNetBuilder &nb)
Definition: NIImporter_OpenStreetMap.cpp:125
NIImporter_OpenStreetMap::RelationHandler::myOSMEdges
const std::map< long long int, Edge * > & myOSMEdges
The previously parsed edges.
Definition: NIImporter_OpenStreetMap.h:521
NIImporter_OpenStreetMap::RelationHandler::myEndElement
void myEndElement(int element) override
Called when a closing tag occurs.
Definition: NIImporter_OpenStreetMap.cpp:1235
NIImporter_OpenStreetMap::NIOSMNode::id
const long long int id
The node's id.
Definition: NIImporter_OpenStreetMap.h:90
NIImporter_OpenStreetMap::EdgesHandler::myParentElements
std::vector< int > myParentElements
The element stack.
Definition: NIImporter_OpenStreetMap.h:453
NIImporter_OpenStreetMap::WAY_UNKNOWN
@ WAY_UNKNOWN
Definition: NIImporter_OpenStreetMap.h:142
NIImporter_OpenStreetMap::RelationHandler::findEdgeRef
NBEdge * findEdgeRef(long long int wayRef, const std::vector< NBEdge * > &candidates) const
try to find the way segment among candidates
Definition: NIImporter_OpenStreetMap.cpp:1421
NIImporter_OpenStreetMap::MAXSPEED_UNGIVEN
static const double MAXSPEED_UNGIVEN
Definition: NIImporter_OpenStreetMap.h:314
NBNodeCont
Container for nodes during the netbuilding process.
Definition: NBNodeCont.h:59
NIImporter_OpenStreetMap::NodesHandler::NodesHandler
NodesHandler(std::map< long long int, NIOSMNode * > &toFill, std::set< NIOSMNode *, CompareNodes > &uniqueNodes, const OptionsCont &cont)
Contructor.
Definition: NIImporter_OpenStreetMap.cpp:596
NBEdge
The representation of a single edge during network building.
Definition: NBEdge.h:91
NIImporter_OpenStreetMap::Edge::myNoLanesForward
int myNoLanesForward
number of lanes in forward direction or 0 if unknown, negative if backwards lanes are meant
Definition: NIImporter_OpenStreetMap.h:185
NIImporter_OpenStreetMap::RelationHandler::RESTRICTION_UNKNOWN
@ RESTRICTION_UNKNOWN
The relation tag was missing.
Definition: NIImporter_OpenStreetMap.h:564
NIImporter_OpenStreetMap::EdgesHandler::myStartElement
void myStartElement(int element, const SUMOSAXAttributes &attrs) override
Called on the opening of a tag;.
Definition: NIImporter_OpenStreetMap.cpp:758
NIImporter_OpenStreetMap::RelationHandler::RestrictionType
RestrictionType
whether the only allowed or the only forbidden connection is defined
Definition: NIImporter_OpenStreetMap.h:558
NIImporter_OpenStreetMap::NodesHandler::myStartElement
void myStartElement(int element, const SUMOSAXAttributes &attrs) override
Called on the opening of a tag;.
Definition: NIImporter_OpenStreetMap.cpp:614
NIImporter_OpenStreetMap::NIOSMNode::operator=
NIOSMNode & operator=(const NIOSMNode &s)=delete
invalidated assignment operator
NIImporter_OpenStreetMap::interpretTransportType
static SUMOVehicleClass interpretTransportType(const std::string &type, NIOSMNode *toSet=nullptr)
translate osm transport designations into sumo vehicle class
Definition: NIImporter_OpenStreetMap.cpp:1839
NIImporter_OpenStreetMap::RelationHandler::myPTRouteType
std::string myPTRouteType
indicates whether current relation is a pt route
Definition: NIImporter_OpenStreetMap.h:609
NIImporter_OpenStreetMap::EdgesHandler::mySpeedMap
std::map< std::string, double > mySpeedMap
A map of non-numeric speed descriptions to their numeric values.
Definition: NIImporter_OpenStreetMap.h:456
NIImporter_OpenStreetMap::RelationHandler::RESTRICTION_NO
@ RESTRICTION_NO
The only invalid connection is declared.
Definition: NIImporter_OpenStreetMap.h:562
NBPTLineCont
Definition: NBPTLineCont.h:26
NIImporter_OpenStreetMap::extendRailwayDistances
void extendRailwayDistances(Edge *e, NBTypeCont &tc)
extend kilometrage data for all nodes along railway
Definition: NIImporter_OpenStreetMap.cpp:1756
NIImporter_OpenStreetMap::RelationHandler::myStops
std::vector< long long int > myStops
bus stop references
Definition: NIImporter_OpenStreetMap.h:588
NIImporter_OpenStreetMap::RelationHandler::RelationHandler
RelationHandler(const std::map< long long int, NIOSMNode * > &osmNodes, const std::map< long long int, Edge * > &osmEdges, NBPTStopCont *nbptStopCont, const std::map< long long int, Edge * > &platfromShapes, NBPTLineCont *nbptLineCont, const OptionsCont &oc)
Constructor.
Definition: NIImporter_OpenStreetMap.cpp:1057
SVCPermissions
int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
Definition: SUMOVehicleClass.h:218
NIImporter_OpenStreetMap::WAY_BOTH
@ WAY_BOTH
Definition: NIImporter_OpenStreetMap.h:141
NIImporter_OpenStreetMap::WayType
WayType
Definition: NIImporter_OpenStreetMap.h:137
NIImporter_OpenStreetMap::RelationHandler::NIIPTPlatform::isWay
bool isWay
Definition: NIImporter_OpenStreetMap.h:593
Parameterised.h
NIImporter_OpenStreetMap::Edge::myCyclewayType
WayType myCyclewayType
Information about the kind of cycleway along this road.
Definition: NIImporter_OpenStreetMap.h:193
NIImporter_OpenStreetMap::RelationHandler::myOptionsCont
const OptionsCont & myOptionsCont
the options cont
Definition: NIImporter_OpenStreetMap.h:553
NIImporter_OpenStreetMap::NodesHandler::myOptionsCont
const OptionsCont & myOptionsCont
the options
Definition: NIImporter_OpenStreetMap.h:383
NIImporter_OpenStreetMap::NIOSMNode::permissions
SVCPermissions permissions
type of pt stop
Definition: NIImporter_OpenStreetMap.h:112
NIImporter_OpenStreetMap::RelationHandler::checkEdgeRef
bool checkEdgeRef(long long int ref) const
check whether a referenced way has a corresponding edge
Definition: NIImporter_OpenStreetMap.cpp:1223
NIImporter_OpenStreetMap::RelationHandler::myFromWay
long long int myFromWay
the origination way for the current restriction
Definition: NIImporter_OpenStreetMap.h:542
NIImporter_OpenStreetMap::RelationHandler::myWays
std::vector< long long int > myWays
ways in pt line references
Definition: NIImporter_OpenStreetMap.h:600
NIImporter_OpenStreetMap::insertEdge
int insertEdge(Edge *e, int index, NBNode *from, NBNode *to, const std::vector< long long int > &passed, NBNetBuilder &nb)
Builds an NBEdge.
Definition: NIImporter_OpenStreetMap.cpp:306
NIImporter_OpenStreetMap::RelationHandler::myCurrentRelation
long long int myCurrentRelation
The currently parsed relation.
Definition: NIImporter_OpenStreetMap.h:533
NIImporter_OpenStreetMap::RelationHandler::myViaNode
long long int myViaNode
the via node/way for the current restriction
Definition: NIImporter_OpenStreetMap.h:548
NIImporter_OpenStreetMap::myOSMNodes
std::map< long long int, NIOSMNode * > myOSMNodes
the map from OSM node ids to actual nodes
Definition: NIImporter_OpenStreetMap.h:242
NIImporter_OpenStreetMap::INVALID_ID
static const long long int INVALID_ID
Definition: NIImporter_OpenStreetMap.h:315
NIImporter_OpenStreetMap::myUnusableTypes
std::set< std::string > myUnusableTypes
The compounds types that do not contain known types.
Definition: NIImporter_OpenStreetMap.h:260
NIImporter_OpenStreetMap::interpretDistance
static double interpretDistance(NIOSMNode *node)
read distance value from node and return value in m
Definition: NIImporter_OpenStreetMap.cpp:1822
NIImporter_OpenStreetMap::RelationHandler::myPlatformShapes
const std::map< long long int, Edge * > & myPlatformShapes
The previously parsed platform shapes.
Definition: NIImporter_OpenStreetMap.h:524
NIImporter_OpenStreetMap::WAY_BACKWARD
@ WAY_BACKWARD
Definition: NIImporter_OpenStreetMap.h:140
NIImporter_OpenStreetMap::Edge::Edge
Edge(long long int _id)
Definition: NIImporter_OpenStreetMap.h:161
NIImporter_OpenStreetMap::Edge::myParkingType
int myParkingType
Information about road-side parking.
Definition: NIImporter_OpenStreetMap.h:201
NIImporter_OpenStreetMap::NIOSMNode::position
std::string position
kilometrage/mileage
Definition: NIImporter_OpenStreetMap.h:114
UtilExceptions.h
NIImporter_OpenStreetMap::EdgesHandler::~EdgesHandler
~EdgesHandler() override
Destructor.
NIImporter_OpenStreetMap::EdgesHandler::myEndElement
void myEndElement(int element) override
Called when a closing tag occurs.
Definition: NIImporter_OpenStreetMap.cpp:1040
OptionsCont
A storage for options typed value containers)
Definition: OptionsCont.h:89
NIImporter_OpenStreetMap::RelationHandler::myInterval
int myInterval
service interval of the pt line in minutes
Definition: NIImporter_OpenStreetMap.h:618
NIImporter_OpenStreetMap::WAY_FORWARD
@ WAY_FORWARD
Definition: NIImporter_OpenStreetMap.h:139
NIImporter_OpenStreetMap::NodesHandler::operator=
NodesHandler & operator=(const NodesHandler &s)
invalidated assignment operator
NIImporter_OpenStreetMap::NIImporter_OpenStreetMap
NIImporter_OpenStreetMap()
NIImporter_OpenStreetMap::NIOSMNode::positionMeters
double positionMeters
position converted to m (using highest precision available)
Definition: NIImporter_OpenStreetMap.h:116
NIImporter_OpenStreetMap::Edge::myMaxSpeed
double myMaxSpeed
maximum speed in km/h, or MAXSPEED_UNGIVEN
Definition: NIImporter_OpenStreetMap.h:187
NIImporter_OpenStreetMap::myUniqueNodes
std::set< NIOSMNode *, CompareNodes > myUniqueNodes
the set of unique nodes used in NodesHandler, used when freeing memory
Definition: NIImporter_OpenStreetMap.h:250
NIImporter_OpenStreetMap::PARKING_LEFT
@ PARKING_LEFT
Definition: NIImporter_OpenStreetMap.h:147
NIImporter_OpenStreetMap::EdgesHandler::myPlatformShapesMap
std::map< long long int, Edge * > & myPlatformShapesMap
A map of built edges.
Definition: NIImporter_OpenStreetMap.h:447
NIImporter_OpenStreetMap::Edge::ref
std::string ref
The edge's track name.
Definition: NIImporter_OpenStreetMap.h:181
NIImporter_OpenStreetMap::RelationHandler::myIsRoute
bool myIsRoute
indicates whether current relation is a route
Definition: NIImporter_OpenStreetMap.h:606
NIImporter_OpenStreetMap::EdgesHandler::myOSMNodes
const std::map< long long int, NIOSMNode * > & myOSMNodes
The previously parsed nodes.
Definition: NIImporter_OpenStreetMap.h:441
NIImporter_OpenStreetMap::RelationHandler::myIsRestriction
bool myIsRestriction
whether the currently parsed relation is a restriction
Definition: NIImporter_OpenStreetMap.h:539
NIImporter_OpenStreetMap::CompareEdges
Functor which compares two Edges.
Definition: NIImporter_OpenStreetMap.cpp:70
NIImporter_OpenStreetMap::RelationHandler
A class which extracts relevant relation information from a parsed OSM-file.
Definition: NIImporter_OpenStreetMap.h:475
NIImporter_OpenStreetMap::compoundTypeSeparator
static const std::string compoundTypeSeparator
The separator within newly created compound type names.
Definition: NIImporter_OpenStreetMap.h:240
NIImporter_OpenStreetMap::Edge::mySidewalkType
WayType mySidewalkType
Information about the kind of sidwalk along this road.
Definition: NIImporter_OpenStreetMap.h:197
NIImporter_OpenStreetMap::EdgesHandler::myAllAttributes
bool myAllAttributes
whether additional way attributes shall be added to the edge
Definition: NIImporter_OpenStreetMap.h:459
NIImporter_OpenStreetMap::myPlatformShapes
std::map< long long int, Edge * > myPlatformShapes
the map from OSM way ids to platform shapes
Definition: NIImporter_OpenStreetMap.h:257
NIImporter_OpenStreetMap::NIOSMNode::ptStopPosition
bool ptStopPosition
Whether this is a public transport stop position.
Definition: NIImporter_OpenStreetMap.h:106
NIImporter_OpenStreetMap::RelationHandler::applyRestriction
bool applyRestriction() const
try to apply the parsed restriction and return whether successful
Definition: NIImporter_OpenStreetMap.cpp:1389
NIImporter_OpenStreetMap::PARKING_BOTH
@ PARKING_BOTH
Definition: NIImporter_OpenStreetMap.h:149
NIImporter_OpenStreetMap::Edge::myLayer
int myLayer
Information about the relative z-ordering of ways.
Definition: NIImporter_OpenStreetMap.h:203
NIImporter_OpenStreetMap::RelationHandler::myParentElements
std::vector< int > myParentElements
The element stack.
Definition: NIImporter_OpenStreetMap.h:536
NIImporter_OpenStreetMap::usableType
std::string usableType(const std::string &type, const std::string &id, NBTypeCont &tc)
check whether the type is known or consists of known type compounds. return empty string otherwise
Definition: NIImporter_OpenStreetMap.cpp:1665
NIImporter_OpenStreetMap::Edge::myNoLanes
int myNoLanes
number of lanes, or -1 if unknown
Definition: NIImporter_OpenStreetMap.h:183
NIImporter_OpenStreetMap::RelationHandler::myNBPTLineCont
NBPTLineCont * myNBPTLineCont
PT Line container to be filled.
Definition: NIImporter_OpenStreetMap.h:530
NIImporter_OpenStreetMap::RelationHandler::NIIPTPlatform::ref
long long int ref
Definition: NIImporter_OpenStreetMap.h:592
NBTypeCont
A storage for available types of edges.
Definition: NBTypeCont.h:54
NIImporter_OpenStreetMap::NIOSMNode::node
NBNode * node
the NBNode that was instantiated
Definition: NIImporter_OpenStreetMap.h:118
NIImporter_OpenStreetMap::Edge::myCurrentIsPlatform
bool myCurrentIsPlatform
Information whether this is a pt platform.
Definition: NIImporter_OpenStreetMap.h:209
NIImporter_OpenStreetMap::Edge::myHighWayType
std::string myHighWayType
The type, stored in "highway" key.
Definition: NIImporter_OpenStreetMap.h:189
NIImporter_OpenStreetMap::EdgesHandler::myEdgeMap
std::map< long long int, Edge * > & myEdgeMap
A map of built edges.
Definition: NIImporter_OpenStreetMap.h:444
NIImporter_OpenStreetMap::Edge::myCurrentIsRoad
bool myCurrentIsRoad
Information whether this is a road.
Definition: NIImporter_OpenStreetMap.h:207
NIImporter_OpenStreetMap::EdgesHandler
A class which extracts OSM-edges from a parsed OSM-file.
Definition: NIImporter_OpenStreetMap.h:400
NIImporter_OpenStreetMap::NIOSMNode::railwaySignal
bool railwaySignal
Whether this is a railway (main) signal.
Definition: NIImporter_OpenStreetMap.h:102
config.h
NIImporter_OpenStreetMap
Importer for networks stored in OpenStreetMap format.
Definition: NIImporter_OpenStreetMap.h:58
NIImporter_OpenStreetMap::EdgesHandler::EdgesHandler
EdgesHandler(const std::map< long long int, NIOSMNode * > &osmNodes, std::map< long long int, Edge * > &toFill, std::map< long long int, Edge * > &platformShapes)
Constructor.
Definition: NIImporter_OpenStreetMap.cpp:737
NIImporter_OpenStreetMap::NodesHandler::myEndElement
void myEndElement(int element) override
Called when a closing tag occurs.
Definition: NIImporter_OpenStreetMap.cpp:726
NIImporter_OpenStreetMap::NodesHandler::myToFill
std::map< long long int, NIOSMNode * > & myToFill
The nodes container to fill.
Definition: NIImporter_OpenStreetMap.h:365
NIImporter_OpenStreetMap::~NIImporter_OpenStreetMap
~NIImporter_OpenStreetMap()
Definition: NIImporter_OpenStreetMap.cpp:109
NIImporter_OpenStreetMap::RelationHandler::myToWay
long long int myToWay
the destination way for the current restriction
Definition: NIImporter_OpenStreetMap.h:545
NIImporter_OpenStreetMap::NIOSMNode::lat
const double lat
The latitude the node is located at.
Definition: NIImporter_OpenStreetMap.h:94
NIImporter_OpenStreetMap::Edge::operator=
Edge & operator=(const Edge &s)=delete
invalidated assignment operator
NIImporter_OpenStreetMap::NodesHandler::myImportElevation
const bool myImportElevation
whether elevation data should be imported
Definition: NIImporter_OpenStreetMap.h:380
NBNode
Represents a single node (junction) during network building.
Definition: NBNode.h:67
NIImporter_OpenStreetMap::NodesHandler::~NodesHandler
~NodesHandler() override
Destructor.
NIImporter_OpenStreetMap::RelationHandler::NIIPTPlatform
Definition: NIImporter_OpenStreetMap.h:591
NIImporter_OpenStreetMap::EdgesHandler::operator=
EdgesHandler & operator=(const EdgesHandler &s)
invalidated assignment operator
SVC_IGNORING
@ SVC_IGNORING
vehicles ignoring classes
Definition: SUMOVehicleClass.h:135
SUMOSAXAttributes
Encapsulated SAX-Attributes.
Definition: SUMOSAXAttributes.h:56
NIImporter_OpenStreetMap::NodesHandler::myLastNodeID
long long int myLastNodeID
ID of the currently parsed node, for reporting mainly.
Definition: NIImporter_OpenStreetMap.h:368
NIImporter_OpenStreetMap::NIOSMNode::lon
const double lon
The longitude the node is located at.
Definition: NIImporter_OpenStreetMap.h:92
NIImporter_OpenStreetMap::Edge::myRailDirection
WayType myRailDirection
Information about the direction(s) of railway usage.
Definition: NIImporter_OpenStreetMap.h:199
NIImporter_OpenStreetMap::getNeighboringNodes
std::map< NBNode *, std::pair< double, double > > getNeighboringNodes(NBNode *node, double maxDist, const std::set< NBNode * > &knownElevation)
collect neighboring nodes with their road distance and maximum between-speed. Search does not continu...
Definition: NIImporter_OpenStreetMap.cpp:1626
NIImporter_OpenStreetMap::RelationHandler::myIsStopArea
bool myIsStopArea
indicates whether current relation is a pt stop area
Definition: NIImporter_OpenStreetMap.h:603
NIImporter_OpenStreetMap::PARKING_UNKNOWN
@ PARKING_UNKNOWN
Definition: NIImporter_OpenStreetMap.h:150
NIImporter_OpenStreetMap::PARKING_FORBIDDEN
@ PARKING_FORBIDDEN
Definition: NIImporter_OpenStreetMap.h:151
NIImporter_OpenStreetMap::myEdges
std::map< long long int, Edge * > myEdges
the map from OSM way ids to edge objects
Definition: NIImporter_OpenStreetMap.h:254
NIImporter_OpenStreetMap::NodesHandler::myUniqueNodes
std::set< NIOSMNode *, CompareNodes > & myUniqueNodes
the set of unique nodes (used for duplicate detection/substitution)
Definition: NIImporter_OpenStreetMap.h:377
NIImporter_OpenStreetMap::Edge::streetName
std::string streetName
The edge's street name.
Definition: NIImporter_OpenStreetMap.h:179
NIImporter_OpenStreetMap::RelationHandler::myViaWay
long long int myViaWay
Definition: NIImporter_OpenStreetMap.h:549