SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NIImporter_VISUM Class Reference

A VISUM network importer. More...

#include <NIImporter_VISUM.h>

Data Structures

struct  TypeParser
 A complete call description for parsing a single db. More...
 

Static Public Member Functions

static void loadNetwork (const OptionsCont &oc, NBNetBuilder &nb)
 Loads network definition from the assigned option and stores it in the given network builder. More...
 

Protected Member Functions

void load ()
 Parses the VISUM-network file storing the parsed structures within myNetBuilder. More...
 
 NIImporter_VISUM (NBNetBuilder &nb, const std::string &file, NBCapacity2Lanes capacity2Lanes, bool useVisumPrio)
 constructor More...
 
 ~NIImporter_VISUM ()
 destructor More...
 

Private Types

typedef std::map< std::string,
NIVisumTL * > 
NIVisumTL_Map
 Definition of a map for loaded traffic lights (id->tls) More...
 
typedef std::vector< TypeParserParserVector
 Definition of the list of known parsers. More...
 
typedef void(NIImporter_VISUM::* ParsingFunction )()
 Definition of a function for parsing a single line from a certain db. More...
 
typedef std::map< std::string,
std::string > 
VSysTypeNames
 Definition of a storage for vsystypes. More...
 

Private Member Functions

void addParser (const std::string &name, ParsingFunction function)
 Adds a parser into the sorted list of parsers to use. More...
 
NBNodebuildDistrictNode (const std::string &id, NBNode *dest, bool isSource)
 Builds a node for the given district and returns it. More...
 
bool checkNodes (NBNode *from, NBNode *to)
 Returns whether both nodes are a valid combination of from/to-nodes. More...
 
NBEdgegetEdge (NBNode *FromNode, NBNode *ToNode)
 Returns the edge that connects both nodes. More...
 
NBEdgegetNamedEdge (const std::string &fieldName) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
 Tries to get the edge which name is stored in the given field. More...
 
NBEdgegetNamedEdge (const std::string &fieldName1, const std::string &fieldName2) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
 The same, but two different names for the field are allowed. More...
 
NBEdgegetNamedEdgeContinuating (const std::string &fieldName, NBNode *node) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
 Tries to get the edge which name is stored in the given field continuating the search for a subedge that ends at the given node. More...
 
NBEdgegetNamedEdgeContinuating (const std::string &fieldName1, const std::string &fieldName2, NBNode *node) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
 The same, but two different names for the field are allowed. More...
 
NBEdgegetNamedEdgeContinuating (NBEdge *begin, NBNode *node)
 The same, but for an already given edge. More...
 
SUMOReal getNamedFloat (const std::string &fieldName) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
 Returns the value from the named column as a float. More...
 
SUMOReal getNamedFloat (const std::string &fieldName1, const std::string &fieldName2) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
 The same, but two different names for the field are allowed. More...
 
SUMOReal getNamedFloat (const std::string &fieldName, SUMOReal defaultValue)
 Returns the value from the named column as a float or the default value if an error occurs. More...
 
SUMOReal getNamedFloat (const std::string &fieldName1, const std::string &fieldName2, SUMOReal defaultValue)
 The same, but two different names for the field are allowed. More...
 
NBNodegetNamedNode (const std::string &fieldName) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
 Tries to get the node which name is stored in the given field. More...
 
NBNodegetNamedNode (const std::string &fieldName1, const std::string &fieldName2) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
 The same, but two different names for the field are allowed. More...
 
std::string getNamedString (const std::string &fieldName) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
 Returns the value from the named column as a normalised string. More...
 
std::string getNamedString (const std::string &fieldName1, const std::string &fieldName2) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
 The same, but two different names for the field are allowed. More...
 
NBEdgegetReversedContinuating (NBEdge *edge, NBNode *node)
 Returns the opposite direction of the given edge. More...
 
bool getWeightedBool (const std::string &name)
 tries to get a bool which is possibly assigned to a certain modality More...
 
SUMOReal getWeightedFloat (const std::string &name)
 tries to get a SUMOReal which is possibly assigned to a certain modality More...
 
void parse_AreaSubPartElement ()
 Parses ABBZULSASIGNALGRUPPE/SIGNALGRUPPEZUABBIEGER. More...
 
void parse_Connectors ()
 Parses ANBINDUNG. More...
 
void parse_Districts ()
 Parses BEZIRK. More...
 
void parse_EdgePolys ()
 Parses STRECKENPOLY. More...
 
void parse_Edges ()
 Parses STRECKE/STRECKEN. More...
 
void parse_Kante ()
 Parses FLAECHENELEMENT. More...
 
void parse_Lanes ()
 Parses FAHRSTREIFEN. More...
 
void parse_LanesConnections ()
 Parses FAHRSTREIFENABBIEGER. More...
 
void parse_Nodes ()
 Parses KNOTEN. More...
 
void parse_NodesToTrafficLights ()
 Parses KNOTENZULSA/SIGNALANLAGEZUKNOTEN. More...
 
void parse_PartOfArea ()
 Parses FLAECHENELEMENT. More...
 
void parse_Phases ()
 Parses LSAPHASE/PHASE. More...
 
void parse_Point ()
 Parses PUNKT. More...
 
void parse_SignalGroups ()
 Parses LSASIGNALGRUPPE/SIGNALGRUPPE. More...
 
void parse_SignalGroupsToPhases ()
 Parses LSASIGNALGRUPPEZULSAPHASE. More...
 
void parse_TrafficLights ()
 Parses LSA/SIGNALANLAGE. More...
 
void parse_Turns ()
 Parses ABBIEGEBEZIEHUNG/ABBIEGER. More...
 
void parse_TurnsToSignalGroups ()
 Parses ABBZULSASIGNALGRUPPE/SIGNALGRUPPEZUABBIEGER. More...
 
void parse_Types ()
 Parses STRECKENTYP. More...
 
void parse_VSysTypes ()
 Parses VSYS. More...
 

Private Attributes

NBCapacity2Lanes myCapacity2Lanes
 The converter to compute the lane number of edges from their capacity. More...
 
std::string myCurrentID
 The name of the currently parsed item used for error reporting. More...
 
std::map< NBDistrict
*, PositionVector
myDistrictShapes
 A temporary storage for district shapes as they are filled incrementally. More...
 
std::map< SUMOLong, std::pair
< SUMOLong, SUMOLong > > 
myEdges
 A map of edge (not road, but "edge" in this case) ids to from/to-points. More...
 
std::string myFileName
 The name of the parsed file, for error reporting. More...
 
NamedColumnsParser myLineParser
 the parser to parse the information from the data lines More...
 
LineReader myLineReader
 The line reader to use to read from the file. More...
 
NBNetBuildermyNetBuilder
 The network builder to fill with loaded values. More...
 
std::map< SUMOLong, PositionmyPoints
 A map of point ids to positions. More...
 
std::map< SUMOLong, NBDistrict * > myShapeDistrictMap
 A map from district shape definition name to the district. More...
 
ParserVector mySingleDataParsers
 List of known parsers. More...
 
std::map< SUMOLong,
std::vector< SUMOLong > > 
mySubPartsAreas
 A map from area parts to area ids. More...
 
NIVisumTL_Map myTLS
 List of visum traffic lights. More...
 
std::vector< std::string > myTouchedEdges
 Already read edges. More...
 
bool myUseVisumPrio
 Information whether VISUM priority information shall be used. More...
 
VSysTypeNames myVSysTypes
 The used vsystypes. More...
 

Detailed Description

A VISUM network importer.

This class build an internal list of those VISUM-db entries which are supported, first. This list is sorted in a way that the parsed dbs can build upon each other as their related structures within the XML-input. So, nodes are loaded first, then edges, etc.

Because these structures may have a different order within the VISUM-file than we need, at first the file is scanned and any occurence of one of the searched dbs is saved. That's where the "Found $XXX at YYY" are printed. "YYY" is the character position within the file.

In a second step, the dbs are parsed in the order we need. It is asked for each subsequently whether it was found and if so, the proper parse_XXX() method is called.

Definition at line 76 of file NIImporter_VISUM.h.

Member Typedef Documentation

typedef std::map<std::string, NIVisumTL*> NIImporter_VISUM::NIVisumTL_Map
private

Definition of a map for loaded traffic lights (id->tls)

Definition at line 490 of file NIImporter_VISUM.h.

typedef std::vector<TypeParser> NIImporter_VISUM::ParserVector
private

Definition of the list of known parsers.

Definition at line 485 of file NIImporter_VISUM.h.

typedef void(NIImporter_VISUM::* NIImporter_VISUM::ParsingFunction)()
private

Definition of a function for parsing a single line from a certain db.

This function may assume that both the LineParser is initialised with the current line.

Definition at line 358 of file NIImporter_VISUM.h.

typedef std::map<std::string, std::string> NIImporter_VISUM::VSysTypeNames
private

Definition of a storage for vsystypes.

Definition at line 480 of file NIImporter_VISUM.h.

Constructor & Destructor Documentation

NIImporter_VISUM::NIImporter_VISUM ( NBNetBuilder nb,
const std::string &  file,
NBCapacity2Lanes  capacity2Lanes,
bool  useVisumPrio 
)
protected

constructor

Builds the list of typed db parsers ("TypeParser") and stores them in mySingleDataParsers in the order the according db values must be parsed.

Parameters
[in,out]nbthe network builder (storage) to fill with parsed values
[in]fileThe name of the file to parse
[in]capacity2LanesThe converter from flow to lanes
[in]useVisumPrioInformation whether the VISUM type's priority shall be used

Definition at line 75 of file NIImporter_VISUM.cpp.

References addParser(), parse_AreaSubPartElement(), parse_Connectors(), parse_Districts(), parse_EdgePolys(), parse_Edges(), parse_Kante(), parse_Lanes(), parse_LanesConnections(), parse_Nodes(), parse_NodesToTrafficLights(), parse_PartOfArea(), parse_Phases(), parse_Point(), parse_SignalGroups(), parse_SignalGroupsToPhases(), parse_TrafficLights(), parse_Turns(), parse_TurnsToSignalGroups(), parse_Types(), and parse_VSysTypes().

NIImporter_VISUM::~NIImporter_VISUM ( )
protected

destructor

Definition at line 132 of file NIImporter_VISUM.cpp.

References myTLS.

Member Function Documentation

void NIImporter_VISUM::addParser ( const std::string &  name,
ParsingFunction  function 
)
private

Adds a parser into the sorted list of parsers to use.

Parameters
[in]namedb name to assign the parser to
[in]functionThe function to use for parsing the named db

Definition at line 140 of file NIImporter_VISUM.cpp.

References NIImporter_VISUM::TypeParser::function, mySingleDataParsers, NIImporter_VISUM::TypeParser::name, and NIImporter_VISUM::TypeParser::position.

Referenced by NIImporter_VISUM().

NBNode * NIImporter_VISUM::buildDistrictNode ( const std::string &  id,
NBNode dest,
bool  isSource 
)
private

Builds a node for the given district and returns it.

If the district does not exist, an error is generated and 0 returned. Otherwise a position for the new node is computed and the new node is built using a combination of the district name and the node name as id. If Inserting this node into the net builder fails, zero is returned.

Parameters
[in]idName of the district
[in]destName of the according network node
[in]isSourceInformation whether this node will be used as a source
Returns
The built node, zero if an error occured

Definition at line 1276 of file NIImporter_VISUM.cpp.

References NBNetBuilder::getDistrictCont(), Named::getID(), NBNetBuilder::getNodeCont(), NBDistrict::getPosition(), NBNodeCont::insert(), myNetBuilder, NBDistrictCont::retrieve(), NBNodeCont::retrieve(), and WRITE_ERROR.

Referenced by parse_Connectors().

bool NIImporter_VISUM::checkNodes ( NBNode from,
NBNode to 
)
private

Returns whether both nodes are a valid combination of from/to-nodes.

They are valid if both are !=0 and differ.

Parameters
[in]fromThe from-node
[in]fromThe to-node
Returns
Whether the nodes may be used

Definition at line 1299 of file NIImporter_VISUM.cpp.

References WRITE_ERROR.

Referenced by parse_EdgePolys(), and parse_Edges().

NBEdge * NIImporter_VISUM::getEdge ( NBNode FromNode,
NBNode ToNode 
)
private

Returns the edge that connects both nodes.

Parameters
[in]FromNodeName of the node the edge shall start at
[in]ToNodeName of the node the edge shall end at
Returns
The edge connecting both nodes, 0 if no such edge exists

!!

Definition at line 1203 of file NIImporter_VISUM.cpp.

References NBNode::getOutgoingEdges().

Referenced by parse_TurnsToSignalGroups().

NBEdge * NIImporter_VISUM::getNamedEdge ( const std::string &  fieldName) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
private

Tries to get the edge which name is stored in the given field.

If the field can not be parsed, an exception is thrown. Prints an error if the edge could not be found, returning 0. Otherwise, if the field could be parsed and the edge was found, this edge is returned.

Parameters
[in]fieldNameName of the column to extract the edge's name from
Returns
An already known edge with the found name
Exceptions
OutOfBoundsExceptionIf the current data line has less entries than the edge id's position
NumberFormatExceptionIf the edge id is not numeric
UnknownElementIf the named data field is not in the line

Definition at line 1083 of file NIImporter_VISUM.cpp.

References NBHelpers::normalIDRepresentation(), and WRITE_ERROR.

Referenced by parse_Lanes().

NBEdge * NIImporter_VISUM::getNamedEdge ( const std::string &  fieldName1,
const std::string &  fieldName2 
) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
private

The same, but two different names for the field are allowed.

Parameters
[in]fieldName1Name of the first column to extract the edge's name from
[in]fieldName2Name of the second column to extract the edge's name from
Returns
An already known edge with the found name
Exceptions
OutOfBoundsExceptionIf the current data line has less entries than the edge id's position
NumberFormatExceptionIf the edge id is not numeric
UnknownElementIf the named data field is not in the line

Definition at line 1094 of file NIImporter_VISUM.cpp.

NBEdge * NIImporter_VISUM::getNamedEdgeContinuating ( const std::string &  fieldName,
NBNode node 
) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
private

Tries to get the edge which name is stored in the given field continuating the search for a subedge that ends at the given node.

If the field can not be parsed, an exception is thrown. Prints an error if the edge could not be found, returning 0. Otherwise, if the field could be parsed and the edge was found, this edge is returned.

Parameters
[in]fieldNameName of the column to extract the edge's name from
[in]nodeThe node the consecutive edge must end at in order to be returned
Returns
The edge's continuation up to the given node, 0 if not found
Exceptions
OutOfBoundsExceptionIf the current data line has less entries than the edge id's position
NumberFormatExceptionIf the edge id is not numeric
UnknownElementIf the named data field is not in the line

Definition at line 1181 of file NIImporter_VISUM.cpp.

References NBHelpers::normalIDRepresentation(), and WRITE_ERROR.

Referenced by getReversedContinuating(), parse_Lanes(), parse_LanesConnections(), and parse_TurnsToSignalGroups().

NBEdge * NIImporter_VISUM::getNamedEdgeContinuating ( const std::string &  fieldName1,
const std::string &  fieldName2,
NBNode node 
) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
private

The same, but two different names for the field are allowed.

Parameters
[in]fieldName1Name of the first column to extract the edge's name from
[in]fieldName2Name of the second column to extract the edge's name from
[in]nodeThe node the consecutive edge must end at in order to be returned
Returns
The edge's continuation up to the given node, 0 if not found
Exceptions
OutOfBoundsExceptionIf the current data line has less entries than the edge id's position
NumberFormatExceptionIf the edge id is not numeric
UnknownElementIf the named data field is not in the line

Definition at line 1192 of file NIImporter_VISUM.cpp.

NBEdge * NIImporter_VISUM::getNamedEdgeContinuating ( NBEdge begin,
NBNode node 
)
private

The same, but for an already given edge.

Parameters
[in]beginThe edge to get the continuation of
[in]nodeThe node the consecutive edge must end at in order to be returned
Returns
The edge's continuation up to the given node, 0 if not found

Definition at line 1120 of file NIImporter_VISUM.cpp.

References NBEdge::getFromNode(), Named::getID(), NBNode::getIncomingEdges(), NBNode::getOutgoingEdges(), and NBEdge::getToNode().

SUMOReal NIImporter_VISUM::getNamedFloat ( const std::string &  fieldName) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
private

Returns the value from the named column as a float.

Parameters
[in]fieldNameName of the column to extract the float from
Returns
The parsed real
Exceptions
OutOfBoundsExceptionIf the current data line has less entries than the float's position
NumberFormatExceptionIf the float is not numeric
UnknownElementIf the named data field is not in the line

Definition at line 1216 of file NIImporter_VISUM.cpp.

References TplConvert::_2SUMOReal(), and NBHelpers::normalIDRepresentation().

Referenced by getNamedFloat(), parse_Districts(), parse_EdgePolys(), parse_Nodes(), parse_Phases(), parse_SignalGroups(), parse_TrafficLights(), and parse_Types().

SUMOReal NIImporter_VISUM::getNamedFloat ( const std::string &  fieldName1,
const std::string &  fieldName2 
) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
private

The same, but two different names for the field are allowed.

Parameters
[in]fieldName1Name of the first column to extract the float from
[in]fieldName2Name of the second column to extract the efloat from
Returns
The parsed real
Exceptions
OutOfBoundsExceptionIf the current data line has less entries than the float's position
NumberFormatExceptionIf the float is not numeric
UnknownElementIf the named data field is not in the line

Definition at line 1234 of file NIImporter_VISUM.cpp.

SUMOReal NIImporter_VISUM::getNamedFloat ( const std::string &  fieldName,
SUMOReal  defaultValue 
)
private

Returns the value from the named column as a float or the default value if an error occurs.

Parameters
[in]fieldNameName of the column to extract the float from
[in]defaultValueThe default to return in the case of an error
Returns
The parsed real or the default value if an error while parsing occured

Definition at line 1223 of file NIImporter_VISUM.cpp.

References TplConvert::_2SUMOReal(), NamedColumnsParser::get(), myLineParser, and NBHelpers::normalIDRepresentation().

SUMOReal NIImporter_VISUM::getNamedFloat ( const std::string &  fieldName1,
const std::string &  fieldName2,
SUMOReal  defaultValue 
)
private

The same, but two different names for the field are allowed.

Parameters
[in]fieldName1Name of the first column to extract the float from
[in]fieldName2Name of the second column to extract the efloat from
[in]defaultValueThe default to return in the case of an error
Returns
The parsed real or the default value if an error while parsing occured

Definition at line 1244 of file NIImporter_VISUM.cpp.

References getNamedFloat(), NamedColumnsParser::know(), and myLineParser.

NBNode * NIImporter_VISUM::getNamedNode ( const std::string &  fieldName) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
private

Tries to get the node which name is stored in the given field.

If the field can not be parsed, an exception is thrown. Prints an error if the node could not be found, returning 0. Otherwise, if the field could be parsed and the node was found, this node is returned.

Parameters
[in]fieldNameName of the column to extract the node's name from
Returns
An already known node with the found name
Exceptions
OutOfBoundsExceptionIf the current data line has less entries than the node id's position
NumberFormatExceptionIf the node id is not numeric
UnknownElementIf the named data field is not in the line

Definition at line 1062 of file NIImporter_VISUM.cpp.

References NBHelpers::normalIDRepresentation(), and WRITE_ERROR.

Referenced by parse_Connectors(), parse_EdgePolys(), parse_Edges(), parse_Lanes(), parse_LanesConnections(), parse_Turns(), and parse_TurnsToSignalGroups().

NBNode * NIImporter_VISUM::getNamedNode ( const std::string &  fieldName1,
const std::string &  fieldName2 
) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
private

The same, but two different names for the field are allowed.

Parameters
[in]fieldName1Name of the first column to extract the node's name from
[in]fieldName2Name of the second column to extract the node's name from
Returns
An already known node with the found name
Exceptions
OutOfBoundsExceptionIf the current data line has less entries than the node id's position
NumberFormatExceptionIf the node id is not numeric
UnknownElementIf the named data field is not in the line

Definition at line 1073 of file NIImporter_VISUM.cpp.

std::string NIImporter_VISUM::getNamedString ( const std::string &  fieldName) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
private

Returns the value from the named column as a normalised string.

"Normalised" means herein that the leading '0' (zeros) are prunned.

Parameters
[in]fieldNameName of the column to extract the string from
Returns
The parsed, normalised string
Exceptions
OutOfBoundsExceptionIf the current data line has less entries than the string's position
NumberFormatExceptionIf the string is not numeric
UnknownElementIf the named data field is not in the line

Definition at line 1255 of file NIImporter_VISUM.cpp.

References NBHelpers::normalIDRepresentation().

Referenced by parse_TurnsToSignalGroups().

std::string NIImporter_VISUM::getNamedString ( const std::string &  fieldName1,
const std::string &  fieldName2 
) throw (OutOfBoundsException, NumberFormatException, UnknownElement)
private

The same, but two different names for the field are allowed.

Parameters
[in]fieldName1Name of the first column to extract the string from
[in]fieldName2Name of the second column to extract the string from
Returns
The parsed, normalised string
Exceptions
OutOfBoundsExceptionIf the current data line has less entries than the string's position
NumberFormatExceptionIf the string is not numeric
UnknownElementIf the named data field is not in the line

Definition at line 1261 of file NIImporter_VISUM.cpp.

NBEdge * NIImporter_VISUM::getReversedContinuating ( NBEdge edge,
NBNode node 
)
private

Returns the opposite direction of the given edge.

Because the opposite direction edge may be split, not the the plain opposite edge, the one which name is obtained by adding/removing the leading '-', is returned, but its continuation until the named node.

Parameters
[in]edgeName of the edge to find the opposite of
[in]nodeName of the node the opposite edge's continuation must end at
Returns
The found opposite edge's continuation, 0 if not found

Definition at line 1105 of file NIImporter_VISUM.cpp.

References NBNetBuilder::getEdgeCont(), Named::getID(), getNamedEdgeContinuating(), myNetBuilder, and NBEdgeCont::retrieve().

Referenced by parse_Lanes(), and parse_LanesConnections().

bool NIImporter_VISUM::getWeightedBool ( const std::string &  name)
private

tries to get a bool which is possibly assigned to a certain modality

When the bool cannot be extracted using the given name, "IV" is appended to the begin of the name. Note that this function does not yet support public traffic.

Parameters
[in]nameName of the column to extract the bool from
Returns
The bool stored under the named column, or if not found the one from "(IV)"+name, or if not found false

Definition at line 1050 of file NIImporter_VISUM.cpp.

References TplConvert::_2bool(), NamedColumnsParser::get(), and myLineParser.

SUMOReal NIImporter_VISUM::getWeightedFloat ( const std::string &  name)
private

tries to get a SUMOReal which is possibly assigned to a certain modality

When the SUMOReal cannot be extracted using the given name, "(IV)" is appended to the begin of the name. Note that this function does not yet support public traffic.

Parameters
[in]nameName of the column to extract the real from
Returns
The real stored under the named column, or if not found the one from "(IV)"+name, or if not found -1

Definition at line 1038 of file NIImporter_VISUM.cpp.

References TplConvert::_2SUMOReal(), NamedColumnsParser::get(), and myLineParser.

Referenced by parse_Connectors().

void NIImporter_VISUM::load ( )
protected

Parses the VISUM-network file storing the parsed structures within myNetBuilder.

At first, it is checked whether the file can be opened. A ProcessError is thrown if not. Otherwise, the file is scanned for occurences of db table begins. For each found db, its position within the file, and the column names are stored in the according TypeParser. After this, the sorted list of type parsers is one through and each found is used to parse the entries at the found positions using the found column names.

Exceptions
ProcessErrorIf the file could not be opened

Definition at line 150 of file NIImporter_VISUM.cpp.

References OptionsCont::getOptions(), LineReader::getPosition(), NBNetBuilder::getTLLogicCont(), LineReader::hasMore(), myCurrentID, myDistrictShapes, myFileName, myLineParser, myLineReader, myNetBuilder, mySingleDataParsers, myTLS, NamedColumnsParser::parseLine(), PROGRESS_BEGIN_MESSAGE, PROGRESS_DONE_MESSAGE, LineReader::readLine(), NamedColumnsParser::reinit(), LineReader::reinit(), LineReader::setFile(), LineReader::setPos(), WRITE_ERROR, and WRITE_MESSAGE.

Referenced by loadNetwork().

void NIImporter_VISUM::loadNetwork ( const OptionsCont oc,
NBNetBuilder nb 
)
static

Loads network definition from the assigned option and stores it in the given network builder.

If the option "visum" is set, the file stored therein is read and the network definition stored therein is stored within the given network builder.

If the option "visum" is not set, this method simply returns.

Parameters
[in]ocThe options to use
[in]nbThe network builder to fill

Definition at line 58 of file NIImporter_VISUM.cpp.

References OptionsCont::getBool(), OptionsCont::getFloat(), OptionsCont::getString(), OptionsCont::isSet(), and load().

Referenced by NILoader::load().

void NIImporter_VISUM::parse_AreaSubPartElement ( )
private
void NIImporter_VISUM::parse_Kante ( )
private

Parses FLAECHENELEMENT.

Definition at line 416 of file NIImporter_VISUM.cpp.

References TplConvert::_2long(), NamedColumnsParser::get(), myEdges, myLineParser, and SUMOLong.

Referenced by NIImporter_VISUM().

void NIImporter_VISUM::parse_NodesToTrafficLights ( )
private

Parses KNOTENZULSA/SIGNALANLAGEZUKNOTEN.

Definition at line 791 of file NIImporter_VISUM.cpp.

References NamedColumnsParser::get(), NBNetBuilder::getNodeCont(), myLineParser, myNetBuilder, myTLS, and NBNodeCont::retrieve().

Referenced by NIImporter_VISUM().

void NIImporter_VISUM::parse_PartOfArea ( )
private

Parses FLAECHENELEMENT.

Definition at line 425 of file NIImporter_VISUM.cpp.

References TplConvert::_2long(), NamedColumnsParser::get(), myLineParser, mySubPartsAreas, and SUMOLong.

Referenced by NIImporter_VISUM().

void NIImporter_VISUM::parse_Phases ( )
private
void NIImporter_VISUM::parse_Point ( )
private
void NIImporter_VISUM::parse_SignalGroups ( )
private
void NIImporter_VISUM::parse_SignalGroupsToPhases ( )
private

Parses LSASIGNALGRUPPEZULSAPHASE.

Definition at line 929 of file NIImporter_VISUM.cpp.

References NamedColumnsParser::get(), myLineParser, myTLS, NBHelpers::normalIDRepresentation(), and NIVisumTL::SignalGroup::phases().

Referenced by NIImporter_VISUM().

void NIImporter_VISUM::parse_TrafficLights ( )
private
void NIImporter_VISUM::parse_TurnsToSignalGroups ( )
private
void NIImporter_VISUM::parse_VSysTypes ( )
private

Parses VSYS.

Definition at line 223 of file NIImporter_VISUM.cpp.

References NamedColumnsParser::get(), NamedColumnsParser::know(), myLineParser, and myVSysTypes.

Referenced by NIImporter_VISUM().

Field Documentation

NBCapacity2Lanes NIImporter_VISUM::myCapacity2Lanes
private

The converter to compute the lane number of edges from their capacity.

Definition at line 477 of file NIImporter_VISUM.h.

Referenced by parse_Edges(), and parse_Types().

std::string NIImporter_VISUM::myCurrentID
private

The name of the currently parsed item used for error reporting.

Definition at line 501 of file NIImporter_VISUM.h.

Referenced by load(), parse_AreaSubPartElement(), parse_Districts(), parse_Edges(), parse_Nodes(), parse_SignalGroups(), parse_TrafficLights(), and parse_Types().

std::map<NBDistrict*, PositionVector> NIImporter_VISUM::myDistrictShapes
private

A temporary storage for district shapes as they are filled incrementally.

Definition at line 517 of file NIImporter_VISUM.h.

Referenced by load(), and parse_AreaSubPartElement().

std::map<SUMOLong, std::pair<SUMOLong, SUMOLong> > NIImporter_VISUM::myEdges
private

A map of edge (not road, but "edge" in this case) ids to from/to-points.

Definition at line 508 of file NIImporter_VISUM.h.

Referenced by parse_AreaSubPartElement(), and parse_Kante().

std::string NIImporter_VISUM::myFileName
private

The name of the parsed file, for error reporting.

Definition at line 466 of file NIImporter_VISUM.h.

Referenced by load().

LineReader NIImporter_VISUM::myLineReader
private

The line reader to use to read from the file.

Definition at line 469 of file NIImporter_VISUM.h.

Referenced by load().

std::map<SUMOLong, Position> NIImporter_VISUM::myPoints
private

A map of point ids to positions.

Definition at line 505 of file NIImporter_VISUM.h.

Referenced by parse_AreaSubPartElement(), and parse_Point().

std::map<SUMOLong, NBDistrict*> NIImporter_VISUM::myShapeDistrictMap
private

A map from district shape definition name to the district.

Definition at line 511 of file NIImporter_VISUM.h.

Referenced by parse_AreaSubPartElement(), and parse_Districts().

ParserVector NIImporter_VISUM::mySingleDataParsers
private

List of known parsers.

Definition at line 487 of file NIImporter_VISUM.h.

Referenced by addParser(), and load().

std::map<SUMOLong, std::vector<SUMOLong> > NIImporter_VISUM::mySubPartsAreas
private

A map from area parts to area ids.

Definition at line 514 of file NIImporter_VISUM.h.

Referenced by parse_AreaSubPartElement(), and parse_PartOfArea().

std::vector<std::string > NIImporter_VISUM::myTouchedEdges
private

Already read edges.

Definition at line 495 of file NIImporter_VISUM.h.

Referenced by parse_Edges().

bool NIImporter_VISUM::myUseVisumPrio
private

Information whether VISUM priority information shall be used.

Definition at line 498 of file NIImporter_VISUM.h.

Referenced by parse_Edges().

VSysTypeNames NIImporter_VISUM::myVSysTypes
private

The used vsystypes.

Definition at line 482 of file NIImporter_VISUM.h.

Referenced by parse_Turns(), and parse_VSysTypes().


The documentation for this class was generated from the following files: