Eclipse SUMO - Simulation of Urban MObility
NIImporter_ITSUMO.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 /****************************************************************************/
14 // Importer for networks stored in ITSUMO format
15 /****************************************************************************/
16 #ifndef NIImporter_ITSUMO_h
17 #define NIImporter_ITSUMO_h
18 
19 
20 // ===========================================================================
21 // included modules
22 // ===========================================================================
23 #include <config.h>
24 
25 #include <string>
26 #include <map>
30 
31 
32 // ===========================================================================
33 // class declarations
34 // ===========================================================================
35 class NBEdge;
36 class NBEdgeCont;
37 class NBNetBuilder;
38 class NBNode;
39 class NBNodeCont;
41 class NBTypeCont;
42 class OptionsCont;
43 
44 
45 // ===========================================================================
46 // class definitions
47 // ===========================================================================
54 public:
66  static void loadNetwork(const OptionsCont& oc, NBNetBuilder& nb);
67 
68 
69 private:
74  class Handler : public GenericSAXHandler {
75  public:
79  Handler(NBNetBuilder& toFill);
80 
81 
83  ~Handler();
84 
85 
86  protected:
88 
89 
97  void myStartElement(int element, const SUMOSAXAttributes& attrs);
98 
99 
108  void myCharacters(int element, const std::string& chars);
109 
110 
117  void myEndElement(int element);
119 
120 
121  private:
124 
126  std::map<std::string, std::string> myParameter;
127 
128 
129  struct Lane {
130  public:
131  Lane(const std::string& _id, int _idx, double _v)
132  : id(_id), index(_idx), v(_v) {}
133  std::string id;
134  int index;
135  double v;
136  };
137 
138  std::vector<Lane> myCurrentLanes;
139 
140  struct LaneSet {
141  public:
142  LaneSet(const std::string& _id, const std::vector<Lane>& _lanes, double _v, int _pos, NBNode* _from, NBNode* _to)
143  : id(_id), lanes(_lanes), v(_v), position(_pos), from(_from), to(_to) {}
144  std::string id;
145  std::vector<Lane> lanes;
146  double v;
147  int position;
150  };
151 
152  std::map<std::string, LaneSet*> myLaneSets;
153  std::vector<LaneSet*> myCurrentLaneSets;
154 
155  struct Section {
156  public:
157  Section(const std::string& _id, const std::vector<LaneSet*>& _laneSets)
158  : id(_id), laneSets(_laneSets) {}
159  std::string id;
160  std::vector<LaneSet*> laneSets;
161  };
162 
163  std::vector<Section*> mySections;
164 
165 
166  private:
168  Handler(const Handler& s);
169 
171  Handler& operator=(const Handler& s);
172 
173  };
174 
175 
176 
222  };
223 
224 
232  };
233 
236 
239 
240 
241 };
242 
243 
244 #endif
245 
246 /****************************************************************************/
247 
NIImporter_ITSUMO::Handler::LaneSet::from
NBNode * from
Definition: NIImporter_ITSUMO.h:148
NIImporter_ITSUMO::Handler::Section::Section
Section(const std::string &_id, const std::vector< LaneSet * > &_laneSets)
Definition: NIImporter_ITSUMO.h:157
NIImporter_ITSUMO::ITSUMO_TAG_SECTION_NAME
@ ITSUMO_TAG_SECTION_NAME
Definition: NIImporter_ITSUMO.h:203
NBEdgeCont
Storage for edges, including some functionality operating on multiple edges.
Definition: NBEdgeCont.h:60
NBNetBuilder
Instance responsible for building networks.
Definition: NBNetBuilder.h:109
NBTrafficLightLogicCont
A container for traffic light definitions and built programs.
Definition: NBTrafficLightLogicCont.h:57
NIImporter_ITSUMO::ITSUMO_TAG_SECTION_ID
@ ITSUMO_TAG_SECTION_ID
Definition: NIImporter_ITSUMO.h:202
NIImporter_ITSUMO::Handler::Lane
Definition: NIImporter_ITSUMO.h:129
NIImporter_ITSUMO::ITSUMO_TAG_SINKS
@ ITSUMO_TAG_SINKS
Definition: NIImporter_ITSUMO.h:194
NIImporter_ITSUMO::ITSUMO_TAG_LANE_ID
@ ITSUMO_TAG_LANE_ID
Definition: NIImporter_ITSUMO.h:218
NIImporter_ITSUMO::ITSUMO_TAG_NODE
@ ITSUMO_TAG_NODE
Definition: NIImporter_ITSUMO.h:188
SUMOSAXHandler.h
NIImporter_ITSUMO::ITSUMO_TAG_IS_PREFERENCIAL
@ ITSUMO_TAG_IS_PREFERENCIAL
Definition: NIImporter_ITSUMO.h:204
NIImporter_ITSUMO::Handler::myLaneSets
std::map< std::string, LaneSet * > myLaneSets
Definition: NIImporter_ITSUMO.h:152
NIImporter_ITSUMO::ITSUMO_TAG_SOURCES
@ ITSUMO_TAG_SOURCES
Definition: NIImporter_ITSUMO.h:193
NIImporter_ITSUMO::ITSUMO_TAG_STREETS
@ ITSUMO_TAG_STREETS
Definition: NIImporter_ITSUMO.h:196
NIImporter_ITSUMO::Handler::LaneSet::lanes
std::vector< Lane > lanes
Definition: NIImporter_ITSUMO.h:145
NIImporter_ITSUMO::Handler::LaneSet::id
std::string id
Definition: NIImporter_ITSUMO.h:144
NIImporter_ITSUMO::Handler::Handler
Handler(NBNetBuilder &toFill)
Contructor.
Definition: NIImporter_ITSUMO.cpp:133
NBNodeCont
Container for nodes during the netbuilding process.
Definition: NBNodeCont.h:59
NIImporter_ITSUMO::ITSUMO_TAG_LANESETS
@ ITSUMO_TAG_LANESETS
Definition: NIImporter_ITSUMO.h:206
NIImporter_ITSUMO::ITSUMO_TAG_LANE_POSITION
@ ITSUMO_TAG_LANE_POSITION
Definition: NIImporter_ITSUMO.h:219
NIImporter_ITSUMO::itsumoTags
static StringBijection< int >::Entry itsumoTags[]
The names of MATSIM-XML elements (for passing to GenericSAXHandler)
Definition: NIImporter_ITSUMO.h:235
NBEdge
The representation of a single edge during network building.
Definition: NBEdge.h:91
NIImporter_ITSUMO::Handler::Lane::index
int index
Definition: NIImporter_ITSUMO.h:134
NIImporter_ITSUMO::Handler::LaneSet::position
int position
Definition: NIImporter_ITSUMO.h:147
NIImporter_ITSUMO::ITSUMO_TAG_NOTHING
@ ITSUMO_TAG_NOTHING
Definition: NIImporter_ITSUMO.h:183
NIImporter_ITSUMO::Handler::myParameter
std::map< std::string, std::string > myParameter
A temporary parameter map.
Definition: NIImporter_ITSUMO.h:126
NIImporter_ITSUMO::Handler::myNetBuilder
NBNetBuilder & myNetBuilder
The container to fill.
Definition: NIImporter_ITSUMO.h:123
NIImporter_ITSUMO::ITSUMO_TAG_MAXIMUM_SPEED
@ ITSUMO_TAG_MAXIMUM_SPEED
Definition: NIImporter_ITSUMO.h:220
NIImporter_ITSUMO::ITSUMO_TAG_NODE_NAME
@ ITSUMO_TAG_NODE_NAME
Definition: NIImporter_ITSUMO.h:190
NIImporter_ITSUMO::ITSUMO_TAG_STREET
@ ITSUMO_TAG_STREET
Definition: NIImporter_ITSUMO.h:197
NIImporter_ITSUMO::Handler::~Handler
~Handler()
Destructor.
Definition: NIImporter_ITSUMO.cpp:138
StringBijection
Definition: StringBijection.h:43
NIImporter_ITSUMO::Handler::Lane::Lane
Lane(const std::string &_id, int _idx, double _v)
Definition: NIImporter_ITSUMO.h:131
NIImporter_ITSUMO::Handler::LaneSet::LaneSet
LaneSet(const std::string &_id, const std::vector< Lane > &_lanes, double _v, int _pos, NBNode *_from, NBNode *_to)
Definition: NIImporter_ITSUMO.h:142
NIImporter_ITSUMO::Handler::Section::laneSets
std::vector< LaneSet * > laneSets
Definition: NIImporter_ITSUMO.h:160
NIImporter_ITSUMO::ITSUMO_TAG_X_COORD
@ ITSUMO_TAG_X_COORD
Definition: NIImporter_ITSUMO.h:191
NIImporter_ITSUMO::ITSUMO_TAG_DELIMITING_NODE
@ ITSUMO_TAG_DELIMITING_NODE
Definition: NIImporter_ITSUMO.h:205
NIImporter_ITSUMO::ITSUMO_ATTR_NOTHING
@ ITSUMO_ATTR_NOTHING
Definition: NIImporter_ITSUMO.h:231
NIImporter_ITSUMO::ITSUMO_TAG_Y_COORD
@ ITSUMO_TAG_Y_COORD
Definition: NIImporter_ITSUMO.h:192
NBCapacity2Lanes.h
NIImporter_ITSUMO::ITSUMO_TAG_DESTINATION_LANESET
@ ITSUMO_TAG_DESTINATION_LANESET
Definition: NIImporter_ITSUMO.h:214
NIImporter_ITSUMO::ITSUMO_TAG_NETWORK_NAME
@ ITSUMO_TAG_NETWORK_NAME
Definition: NIImporter_ITSUMO.h:186
UtilExceptions.h
NIImporter_ITSUMO::Handler::operator=
Handler & operator=(const Handler &s)
invalidated assignment operator
OptionsCont
A storage for options typed value containers)
Definition: OptionsCont.h:89
NIImporter_ITSUMO::loadNetwork
static void loadNetwork(const OptionsCont &oc, NBNetBuilder &nb)
Loads content of the optionally given ITSUMO network files.
Definition: NIImporter_ITSUMO.cpp:104
NIImporter_ITSUMO::ITSUMO_TAG_NETWORK_ID
@ ITSUMO_TAG_NETWORK_ID
Definition: NIImporter_ITSUMO.h:185
NIImporter_ITSUMO::ItsumoXMLTag
ItsumoXMLTag
Numbers representing ITSUMO-XML - element names.
Definition: NIImporter_ITSUMO.h:182
NIImporter_ITSUMO::ITSUMO_TAG_SECTIONS
@ ITSUMO_TAG_SECTIONS
Definition: NIImporter_ITSUMO.h:200
NIImporter_ITSUMO::ITSUMO_TAG_LANE
@ ITSUMO_TAG_LANE
Definition: NIImporter_ITSUMO.h:217
NIImporter_ITSUMO::ITSUMO_TAG_SIMULATION
@ ITSUMO_TAG_SIMULATION
Definition: NIImporter_ITSUMO.h:184
NIImporter_ITSUMO::Handler::LaneSet
Definition: NIImporter_ITSUMO.h:140
NIImporter_ITSUMO::ITSUMO_TAG_NODE_ID
@ ITSUMO_TAG_NODE_ID
Definition: NIImporter_ITSUMO.h:189
NIImporter_ITSUMO::Handler::myStartElement
void myStartElement(int element, const SUMOSAXAttributes &attrs)
Called on the opening of a tag;.
Definition: NIImporter_ITSUMO.cpp:142
NIImporter_ITSUMO::ITSUMO_TAG_LANESET_POSITION
@ ITSUMO_TAG_LANESET_POSITION
Definition: NIImporter_ITSUMO.h:209
NIImporter_ITSUMO::ItsumoXMLAttr
ItsumoXMLAttr
Numbers representing MATSIM-XML - attributes.
Definition: NIImporter_ITSUMO.h:230
NIImporter_ITSUMO::Handler::mySections
std::vector< Section * > mySections
Definition: NIImporter_ITSUMO.h:163
NIImporter_ITSUMO::ITSUMO_TAG_STREET_ID
@ ITSUMO_TAG_STREET_ID
Definition: NIImporter_ITSUMO.h:198
NIImporter_ITSUMO::ITSUMO_TAG_DECELERATION_PROB
@ ITSUMO_TAG_DECELERATION_PROB
Definition: NIImporter_ITSUMO.h:221
NIImporter_ITSUMO::Handler::myCurrentLanes
std::vector< Lane > myCurrentLanes
Definition: NIImporter_ITSUMO.h:138
NIImporter_ITSUMO::ITSUMO_TAG_LANES
@ ITSUMO_TAG_LANES
Definition: NIImporter_ITSUMO.h:216
NIImporter_ITSUMO::Handler
Definition: NIImporter_ITSUMO.h:74
NBTypeCont
A storage for available types of edges.
Definition: NBTypeCont.h:54
NIImporter_ITSUMO::Handler::myEndElement
void myEndElement(int element)
Callback method for a closing tag to implement by derived classes.
Definition: NIImporter_ITSUMO.cpp:207
NIImporter_ITSUMO::Handler::Section
Definition: NIImporter_ITSUMO.h:155
NIImporter_ITSUMO::Handler::LaneSet::to
NBNode * to
Definition: NIImporter_ITSUMO.h:149
NIImporter_ITSUMO
Importer for networks stored in ITSUMO format.
Definition: NIImporter_ITSUMO.h:53
NIImporter_ITSUMO::ITSUMO_TAG_PROBABILITY
@ ITSUMO_TAG_PROBABILITY
Definition: NIImporter_ITSUMO.h:215
NIImporter_ITSUMO::Handler::Lane::id
std::string id
Definition: NIImporter_ITSUMO.h:133
NIImporter_ITSUMO::Handler::LaneSet::v
double v
Definition: NIImporter_ITSUMO.h:146
NIImporter_ITSUMO::Handler::myCharacters
void myCharacters(int element, const std::string &chars)
Callback method for characters to implement by derived classes.
Definition: NIImporter_ITSUMO.cpp:157
config.h
NIImporter_ITSUMO::ITSUMO_TAG_LANESET
@ ITSUMO_TAG_LANESET
Definition: NIImporter_ITSUMO.h:207
NIImporter_ITSUMO::Handler::myCurrentLaneSets
std::vector< LaneSet * > myCurrentLaneSets
Definition: NIImporter_ITSUMO.h:153
NIImporter_ITSUMO::ITSUMO_TAG_SECTION
@ ITSUMO_TAG_SECTION
Definition: NIImporter_ITSUMO.h:201
NBNode
Represents a single node (junction) during network building.
Definition: NBNode.h:67
NIImporter_ITSUMO::ITSUMO_TAG_TRAFFIC_LIGHTS
@ ITSUMO_TAG_TRAFFIC_LIGHTS
Definition: NIImporter_ITSUMO.h:195
NIImporter_ITSUMO::Handler::Lane::v
double v
Definition: NIImporter_ITSUMO.h:135
NIImporter_ITSUMO::ITSUMO_TAG_DIRECTION
@ ITSUMO_TAG_DIRECTION
Definition: NIImporter_ITSUMO.h:213
NIImporter_ITSUMO::ITSUMO_TAG_START_NODE
@ ITSUMO_TAG_START_NODE
Definition: NIImporter_ITSUMO.h:210
GenericSAXHandler
A handler which converts occuring elements and attributes into enums.
Definition: GenericSAXHandler.h:67
SUMOSAXAttributes
Encapsulated SAX-Attributes.
Definition: SUMOSAXAttributes.h:56
NIImporter_ITSUMO::itsumoAttrs
static StringBijection< int >::Entry itsumoAttrs[]
The names of MATSIM-XML attributes (for passing to GenericSAXHandler)
Definition: NIImporter_ITSUMO.h:238
NIImporter_ITSUMO::ITSUMO_TAG_END_NODE
@ ITSUMO_TAG_END_NODE
Definition: NIImporter_ITSUMO.h:211
NIImporter_ITSUMO::Handler::Section::id
std::string id
Definition: NIImporter_ITSUMO.h:159
NIImporter_ITSUMO::ITSUMO_TAG_NODES
@ ITSUMO_TAG_NODES
Definition: NIImporter_ITSUMO.h:187
NIImporter_ITSUMO::ITSUMO_TAG_LANESET_ID
@ ITSUMO_TAG_LANESET_ID
Definition: NIImporter_ITSUMO.h:208
NIImporter_ITSUMO::ITSUMO_TAG_TURNING_PROBABILITIES
@ ITSUMO_TAG_TURNING_PROBABILITIES
Definition: NIImporter_ITSUMO.h:212
NIImporter_ITSUMO::ITSUMO_TAG_STREET_NAME
@ ITSUMO_TAG_STREET_NAME
Definition: NIImporter_ITSUMO.h:199