SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NIImporter_SUMO.h
Go to the documentation of this file.
1 /****************************************************************************/
9 // Importer for networks stored in SUMO format
10 /****************************************************************************/
11 // SUMO, Simulation of Urban MObility; see http://sumo-sim.org/
12 // Copyright (C) 2001-2014 DLR (http://www.dlr.de/) and contributors
13 /****************************************************************************/
14 //
15 // This file is part of SUMO.
16 // SUMO is free software: you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation, either version 3 of the License, or
19 // (at your option) any later version.
20 //
21 /****************************************************************************/
22 #ifndef NIImporter_SUMO_h
23 #define NIImporter_SUMO_h
24 
25 
26 // ===========================================================================
27 // included modules
28 // ===========================================================================
29 #ifdef _MSC_VER
30 #include <windows_config.h>
31 #else
32 #include <config.h>
33 #endif
34 
35 #include <string>
36 #include <map>
40 
41 
42 // ===========================================================================
43 // class declarations
44 // ===========================================================================
45 class NBNetBuilder;
46 class NBEdge;
47 class OptionsCont;
48 
49 
50 // ===========================================================================
51 // class definitions
52 // ===========================================================================
59 public:
75  static void loadNetwork(OptionsCont& oc, NBNetBuilder& nb);
76 
79 
81  static void addPhase(const SUMOSAXAttributes& attrs, NBLoadedSUMOTLDef* currentTL);
82 
84  static GeoConvHelper* loadLocation(const SUMOSAXAttributes& attrs);
85 
86 protected:
91 
92 
95 
96 
97 
99 
100 
111  void myStartElement(int element,
112  const SUMOSAXAttributes& attrs);
113 
114 
121  void myEndElement(int element);
123 
124 
125 private:
127  void _loadNetwork(OptionsCont& oc);
128 
130 
131 
135  void addEdge(const SUMOSAXAttributes& attrs);
136 
137 
141  void addLane(const SUMOSAXAttributes& attrs);
142 
143 
147  void addJunction(const SUMOSAXAttributes& attrs);
148 
149 
154  void addConnection(const SUMOSAXAttributes& attrs);
155 
159  void addProhibition(const SUMOSAXAttributes& attrs);
160 
162 
163 
164 
165 private:
170  struct Connection {
172  std::string toEdgeID;
174  unsigned int toLaneIdx;
176  std::string tlID;
178  unsigned int tlLinkNo;
181  };
182 
183 
187  struct LaneAttrs {
193  std::vector<Connection> connections;
195  std::string allow;
197  std::string disallow;
202  };
203 
204 
208  struct EdgeAttrs {
210  std::string id;
212  std::string streetName;
214  std::string type;
218  std::string fromNode;
220  std::string toNode;
226  int priority;
230  std::vector<LaneAttrs*> lanes;
235  };
236 
237 
241  struct Prohibition {
242  std::string prohibitorFrom;
243  std::string prohibitorTo;
244  std::string prohibitedFrom;
245  std::string prohibitedTo;
246  };
247 
248 
250  std::map<std::string, EdgeAttrs*> myEdges;
251 
253  std::vector<Prohibition> myProhibitions;
254 
257 
260 
263 
266 
269 
272 
275 
278 
281 
286  LaneAttrs* getLaneAttrsFromID(EdgeAttrs* edge, std::string lane_id);
287 
293  static void interpretLaneID(const std::string& lane_id, std::string& edge_id, unsigned int& index);
294 
300  static PositionVector reconstructEdgeShape(const EdgeAttrs* edge, const Position& from, const Position& to);
301 
303  static Position readPosition(const SUMOSAXAttributes& attrs, const std::string& id, bool& ok);
304 
311  void parseProhibitionConnection(const std::string& attr, std::string& from, std::string& to, bool& ok);
312 };
313 
314 
315 #endif
316 
317 /****************************************************************************/
318 
std::map< std::string, EdgeAttrs * > myEdges
Loaded edge definitions.
LaneAttrs * myCurrentLane
The currently parsed lanes's definition (to add the shape to)
PositionVector shape
This edges's shape.
std::vector< Prohibition > myProhibitions
Loaded prohibitions.
static void addPhase(const SUMOSAXAttributes &attrs, NBLoadedSUMOTLDef *currentTL)
adds a phase to the traffic lights logic currently build
NBNodeCont & myNodeCont
The node container to fill.
void addEdge(const SUMOSAXAttributes &attrs)
Parses an edge and stores the values in "myCurrentEdge".
SUMOReal maxSpeed
The maximum velocity allowed on this lane.
A loaded (complete) traffic light logic.
std::vector< LaneAttrs * > lanes
This edge's lanes.
A container for traffic light definitions and built programs.
The representation of a single edge during network building.
Definition: NBEdge.h:71
A connection description.
static NBLoadedSUMOTLDef * initTrafficLightLogic(const SUMOSAXAttributes &attrs, NBLoadedSUMOTLDef *currentTL)
begins the reading of a traffic lights logic
SAX-handler base for SUMO-files.
NIImporter_SUMO(NBNetBuilder &nb)
Constructor.
Describes the values found in a lane's definition.
LaneAttrs * getLaneAttrsFromID(EdgeAttrs *edge, std::string lane_id)
Parses lane index from lane ID an retrieve lane from EdgeAttrs.
std::string toEdgeID
The id of the target edge.
bool myHaveSeenInternalEdge
whether the loaded network contains internal lanes
void addLane(const SUMOSAXAttributes &attrs)
Parses a lane and stores the values in "myCurrentLane".
NBNetBuilder & myNetBuilder
The network builder to fill.
void addConnection(const SUMOSAXAttributes &attrs)
Parses a connection and saves it into the lane's definition stored in "myCurrentLane".
std::string toNode
The node this edge ends at.
Describes the values found in an edge's definition and this edge's lanes.
static methods for processing the coordinates conversion for the current net
Definition: GeoConvHelper.h:59
std::string allow
This lane's allowed vehicle classes.
Encapsulated SAX-Attributes.
static GeoConvHelper * loadLocation(const SUMOSAXAttributes &attrs)
Parses network location description and registers it with GeoConveHelper::setLoaded.
Describes the values found in a prohibition.
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:46
Importer for networks stored in SUMO format.
std::string tlID
The id of the traffic light that controls this connection.
EdgeAttrs * myCurrentEdge
The currently parsed edge's definition (to add loaded lanes to)
A list of positions.
void parseProhibitionConnection(const std::string &attr, std::string &from, std::string &to, bool &ok)
parses connection string of a prohibition (very old school)
LaneSpreadFunction lsf
The lane spread function.
std::string disallow
This lane's disallowed vehicle classes.
unsigned int tlLinkNo
The index of this connection within the controlling traffic light.
NBEdge * builtEdge
The built edge.
static PositionVector reconstructEdgeShape(const EdgeAttrs *edge, const Position &from, const Position &to)
reconstructs the edge shape from the node positions and the given lane shapes since we do not know th...
SumoXMLEdgeFunc func
This edge's function.
void _loadNetwork(OptionsCont &oc)
load the network
SUMOReal width
The width of this lane.
static void interpretLaneID(const std::string &lane_id, std::string &edge_id, unsigned int &index)
parses edge-id and index from lane-id
std::string streetName
This edge's street name.
static void loadNetwork(OptionsCont &oc, NBNetBuilder &nb)
Loads content of the optionally given SUMO file.
SUMOReal maxSpeed
The maximum velocity allowed on this edge (!!!)
bool mayDefinitelyPass
Information about being definitely free to drive (on-ramps)
std::vector< Connection > connections
This lane's connections.
void addJunction(const SUMOSAXAttributes &attrs)
Parses a junction and saves it in the node control.
std::string type
This edge's type.
Instance responsible for building networks.
Definition: NBNetBuilder.h:113
unsigned int toLaneIdx
The index of the target lane.
SUMOReal offset
This lane's offset from the intersection.
bool mySuspectKeepShape
whether we suspect a net that was built with xml.keep-shape
static Position readPosition(const SUMOSAXAttributes &attrs, const std::string &id, bool &ok)
read position from the given attributes, attribute errors to id
A storage for options typed value containers)
Definition: OptionsCont.h:108
int priority
This edge's priority.
std::string id
This edge's id.
SumoXMLEdgeFunc
Numbers representing special SUMO-XML-attribute values for representing edge functions used in netbui...
void myEndElement(int element)
Called when a closing tag occurs.
LaneSpreadFunction
Numbers representing special SUMO-XML-attribute values Information how the edge's lateral offset shal...
std::string fromNode
The node this edge starts at.
void myStartElement(int element, const SUMOSAXAttributes &attrs)
Called on the opening of a tag;.
~NIImporter_SUMO()
Destructor.
GeoConvHelper * myLocation
The coordinate transformation which was used to build the loaded network.
PositionVector shape
This lane's shape (needed to reconstruct edge shape for legacy networks)
#define SUMOReal
Definition: config.h:215
NBTrafficLightLogicCont & myTLLCont
The node container to fill.
SUMOReal length
The length of the edge if set explicitly.
Container for nodes during the netbuilding process.
Definition: NBNodeCont.h:64
void addProhibition(const SUMOSAXAttributes &attrs)
Parses a prohibition and saves it.
NBLoadedSUMOTLDef * myCurrentTL
The currently parsed traffic light.