Eclipse SUMO - Simulation of Urban MObility
NIImporter_OpenStreetMap::RelationHandler Class Reference

A class which extracts relevant relation information from a parsed OSM-file. More...

#include <NIImporter_OpenStreetMap.h>

Inheritance diagram for NIImporter_OpenStreetMap::RelationHandler:
Collaboration diagram for NIImporter_OpenStreetMap::RelationHandler:

Data Structures

struct  NIIPTPlatform
 

Public Member Functions

void characters (const XMLCh *const chars, const XERCES3_SIZE_t length)
 The inherited method called when characters occurred. More...
 
void endElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname)
 The inherited method called when a tag is being closed. More...
 
const std::string & getFileName () const
 returns the current file name More...
 
void registerParent (const int tag, GenericSAXHandler *handler)
 Assigning a parent handler which is enabled when the specified tag is closed. More...
 
 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. More...
 
void setFileName (const std::string &name)
 Sets the current file name. More...
 
void startElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const XERCES_CPP_NAMESPACE::Attributes &attrs)
 The inherited method called when a new tag opens. More...
 
 ~RelationHandler () override
 Destructor. More...
 

inherited from GenericSAXHandler

enum  RestrictionType { RESTRICTION_ONLY, RESTRICTION_NO, RESTRICTION_UNKNOWN }
 whether the only allowed or the only forbidden connection is defined More...
 
const std::map< long long int, NIOSMNode * > & myOSMNodes
 The previously parsed nodes. More...
 
const std::map< long long int, Edge * > & myOSMEdges
 The previously parsed edges. More...
 
const std::map< long long int, Edge * > & myPlatformShapes
 The previously parsed platform shapes. More...
 
NBPTStopContmyNBPTStopCont
 The previously filled pt stop container. More...
 
NBPTLineContmyNBPTLineCont
 PT Line container to be filled. More...
 
long long int myCurrentRelation
 The currently parsed relation. More...
 
std::vector< int > myParentElements
 The element stack. More...
 
bool myIsRestriction
 whether the currently parsed relation is a restriction More...
 
long long int myFromWay
 the origination way for the current restriction More...
 
long long int myToWay
 the destination way for the current restriction More...
 
long long int myViaNode
 the via node/way for the current restriction More...
 
long long int myViaWay
 
const OptionsContmyOptionsCont
 the options cont More...
 
RestrictionType myRestrictionType
 
std::vector< long long int > myStops
 bus stop references More...
 
std::vector< NIIPTPlatformmyPlatforms
 bus stop platforms More...
 
std::vector< long long int > myWays
 ways in pt line references More...
 
bool myIsStopArea
 indicates whether current relation is a pt stop area More...
 
bool myIsRoute
 indicates whether current relation is a route More...
 
std::string myPTRouteType
 indicates whether current relation is a pt route More...
 
std::string myName
 name of the relation More...
 
std::string myRef
 ref of the pt line More...
 
int myInterval
 service interval of the pt line in minutes More...
 
std::string myNightService
 night service information of the pt line More...
 
void myStartElement (int element, const SUMOSAXAttributes &attrs) override
 Called on the opening of a tag;. More...
 
void myEndElement (int element) override
 Called when a closing tag occurs. More...
 
void resetValues ()
 reset members to their defaults for parsing a new relation More...
 
bool checkEdgeRef (long long int ref) const
 check whether a referenced way has a corresponding edge More...
 
bool applyRestriction () const
 try to apply the parsed restriction and return whether successful More...
 
NBEdgefindEdgeRef (long long int wayRef, const std::vector< NBEdge * > &candidates) const
 try to find the way segment among candidates More...
 
 RelationHandler (const RelationHandler &s)
 invalidated copy constructor More...
 
RelationHandleroperator= (const RelationHandler &s)
 invalidated assignment operator More...
 

SAX ErrorHandler callbacks

void warning (const XERCES_CPP_NAMESPACE::SAXParseException &exception)
 Handler for XML-warnings. More...
 
void error (const XERCES_CPP_NAMESPACE::SAXParseException &exception)
 Handler for XML-errors. More...
 
void fatalError (const XERCES_CPP_NAMESPACE::SAXParseException &exception)
 Handler for XML-errors. More...
 
std::string buildErrorMessage (const XERCES_CPP_NAMESPACE::SAXParseException &exception)
 Builds an error message. More...
 
virtual void myCharacters (int element, const std::string &chars)
 Callback method for characters to implement by derived classes. More...
 
void setSchemaSeen (const bool schemaSeen=true)
 
XMLCh * convert (const std::string &name) const
 converts from c++-string into unicode More...
 
int convertTag (const std::string &tag) const
 Converts a tag from its string into its numerical representation. More...
 

attributes parsing

typedef std::map< int, XMLCh * > AttrMap
 
AttrMap myPredefinedTags
 
std::map< int, std::string > myPredefinedTagsMML
 the map from ids to their string representation More...
 

elements parsing

typedef std::map< std::string, int > TagMap
 
TagMap myTagMap
 
std::vector< std::string > myCharactersVector
 A list of character strings obtained so far to build the complete characters string at the end. More...
 
GenericSAXHandlermyParentHandler
 The handler to give control back to. More...
 
int myParentIndicator
 The tag indicating that control should be given back. More...
 
std::string myFileName
 The name of the currently parsed file. More...
 
std::string myExpectedRoot
 The root element to expect, empty string disables the check. More...
 
bool mySchemaSeen
 whether the reader has already seen a schema More...
 

Detailed Description

A class which extracts relevant relation information from a parsed OSM-file.

  • turn restrictions

Definition at line 471 of file NIImporter_OpenStreetMap.h.

Member Typedef Documentation

◆ AttrMap

typedef std::map<int, XMLCh*> GenericSAXHandler::AttrMap
privateinherited

Definition at line 286 of file GenericSAXHandler.h.

◆ TagMap

typedef std::map<std::string, int> GenericSAXHandler::TagMap
privateinherited

Definition at line 300 of file GenericSAXHandler.h.

Member Enumeration Documentation

◆ RestrictionType

whether the only allowed or the only forbidden connection is defined

Enumerator
RESTRICTION_ONLY 

The only valid connection is declared.

RESTRICTION_NO 

The only invalid connection is declared.

RESTRICTION_UNKNOWN 

The relation tag was missing.

Definition at line 554 of file NIImporter_OpenStreetMap.h.

Constructor & Destructor Documentation

◆ RelationHandler() [1/2]

NIImporter_OpenStreetMap::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.

Parameters
[in]osmNodesThe previously parsed OSM-nodes
[in]osmEdgesThe previously parse OSM-edges

Definition at line 1062 of file NIImporter_OpenStreetMap.cpp.

References resetValues().

◆ ~RelationHandler()

NIImporter_OpenStreetMap::RelationHandler::~RelationHandler ( )
overridedefault

Destructor.

◆ RelationHandler() [2/2]

NIImporter_OpenStreetMap::RelationHandler::RelationHandler ( const RelationHandler s)
private

invalidated copy constructor

Member Function Documentation

◆ applyRestriction()

bool NIImporter_OpenStreetMap::RelationHandler::applyRestriction ( ) const
private

◆ buildErrorMessage()

std::string GenericSAXHandler::buildErrorMessage ( const XERCES_CPP_NAMESPACE::SAXParseException &  exception)
protectedinherited

Builds an error message.

The error message includes the file name and the line/column information as supported by the given SAXParseException

Parameters
[in]exceptionThe name of the currently processed file
Returns
A string describing the given exception

Definition at line 187 of file GenericSAXHandler.cpp.

References GenericSAXHandler::getFileName(), and transcode().

Referenced by GenericSAXHandler::error(), GenericSAXHandler::fatalError(), and GenericSAXHandler::warning().

◆ characters()

void GenericSAXHandler::characters ( const XMLCh *const  chars,
const XERCES3_SIZE_t  length 
)
inherited

The inherited method called when characters occurred.

The retrieved characters are converted into a string and appended into a private buffer. They are reported as soon as the element ends.

Todo:

recheck/describe what happens with characters when a new element is opened

describe characters processing in the class' head

Definition at line 170 of file GenericSAXHandler.cpp.

References GenericSAXHandler::myCharactersVector, and StringUtils::transcode().

◆ checkEdgeRef()

bool NIImporter_OpenStreetMap::RelationHandler::checkEdgeRef ( long long int  ref) const
private

check whether a referenced way has a corresponding edge

Definition at line 1228 of file NIImporter_OpenStreetMap.cpp.

References toString(), and WRITE_WARNING.

◆ convert()

XMLCh * GenericSAXHandler::convert ( const std::string &  name) const
privateinherited

converts from c++-string into unicode

Todo:
recheck encoding
Parameters
[in]nameThe string to convert
Returns
The string converted into a XMLCh-string

Definition at line 81 of file GenericSAXHandler.cpp.

Referenced by GenericSAXHandler::GenericSAXHandler().

◆ convertTag()

int GenericSAXHandler::convertTag ( const std::string &  tag) const
privateinherited

Converts a tag from its string into its numerical representation.

Returns the enum-representation stored for the given tag. If the tag is not known, SUMO_TAG_NOTHING is returned.

Parameters
[in]tagThe string to convert
Returns
The int-value that represents the string, SUMO_TAG_NOTHING if the named attribute is not known

Definition at line 177 of file GenericSAXHandler.cpp.

References GenericSAXHandler::myTagMap, and SUMO_TAG_NOTHING.

Referenced by GenericSAXHandler::endElement(), and GenericSAXHandler::startElement().

◆ endElement()

void GenericSAXHandler::endElement ( const XMLCh *const  uri,
const XMLCh *const  localname,
const XMLCh *const  qname 
)
inherited

The inherited method called when a tag is being closed.

This method calls the user-implemented methods myCharacters with the previously collected and converted characters.

Then, myEndElement is called, supplying it the qname converted to its enum- and string-representations.

Todo:

recheck/describe encoding of the string-representation

do not generate and report the string-representation

Definition at line 121 of file GenericSAXHandler.cpp.

References GenericSAXHandler::convertTag(), GenericSAXHandler::myCharacters(), GenericSAXHandler::myCharactersVector, GenericSAXHandler::myEndElement(), GenericSAXHandler::myParentHandler, GenericSAXHandler::myParentIndicator, XMLSubSys::setHandler(), SUMO_TAG_INCLUDE, SUMO_TAG_NOTHING, and StringUtils::transcode().

◆ error()

void GenericSAXHandler::error ( const XERCES_CPP_NAMESPACE::SAXParseException &  exception)
inherited

Handler for XML-errors.

The message is built using buildErrorMessage and thrown within a ProcessError.

Parameters
[in]exceptionThe occurred exception to process
Exceptions
ProcessErrorOn any call

Definition at line 206 of file GenericSAXHandler.cpp.

References GenericSAXHandler::buildErrorMessage().

Referenced by MSRouteHandler::addFlowPerson(), MSRouteHandler::closeContainer(), MSRouteHandler::closePerson(), MSRouteHandler::closePersonFlow(), NIImporter_OpenDrive::geomFromSpiral(), and MSRouteHandler::myStartElement().

◆ fatalError()

void GenericSAXHandler::fatalError ( const XERCES_CPP_NAMESPACE::SAXParseException &  exception)
inherited

Handler for XML-errors.

The message is built using buildErrorMessage and thrown within a ProcessError.

Exceptions
ProcessErrorOn any call
Parameters
[in]exceptionThe occurred exception to process

Definition at line 212 of file GenericSAXHandler.cpp.

References GenericSAXHandler::buildErrorMessage().

◆ findEdgeRef()

NBEdge * NIImporter_OpenStreetMap::RelationHandler::findEdgeRef ( long long int  wayRef,
const std::vector< NBEdge * > &  candidates 
) const
private

try to find the way segment among candidates

Definition at line 1430 of file NIImporter_OpenStreetMap.cpp.

References toString(), and WRITE_WARNING.

◆ getFileName()

◆ myCharacters()

void GenericSAXHandler::myCharacters ( int  element,
const std::string &  chars 
)
protectedvirtualinherited

Callback method for characters to implement by derived classes.

Called by "endElement" (see there).

Parameters
[in]elementThe opened element, given as a int
[in]charsThe complete embedded character string @exceptions ProcessError These method may throw a ProcessError if something fails

Reimplemented in NIImporter_OpenDrive, and NIImporter_ITSUMO::Handler.

Definition at line 222 of file GenericSAXHandler.cpp.

Referenced by GenericSAXHandler::endElement().

◆ myEndElement()

◆ myStartElement()

void NIImporter_OpenStreetMap::RelationHandler::myStartElement ( int  element,
const SUMOSAXAttributes attrs 
)
overrideprotectedvirtual

◆ operator=()

RelationHandler& NIImporter_OpenStreetMap::RelationHandler::operator= ( const RelationHandler s)
private

invalidated assignment operator

◆ registerParent()

void GenericSAXHandler::registerParent ( const int  tag,
GenericSAXHandler handler 
)
inherited

◆ resetValues()

void NIImporter_OpenStreetMap::RelationHandler::resetValues ( )
private

reset members to their defaults for parsing a new relation

Definition at line 1082 of file NIImporter_OpenStreetMap.cpp.

References NIImporter_OpenStreetMap::INVALID_ID.

Referenced by RelationHandler().

◆ setFileName()

void GenericSAXHandler::setFileName ( const std::string &  name)
inherited

Sets the current file name.

Parameters
[in]nameThe name of the currently processed file
Todo:
Hmmm - this is as unsafe as having a direct access to the variable; recheck

Definition at line 69 of file GenericSAXHandler.cpp.

References GenericSAXHandler::myFileName.

Referenced by NIImporter_SUMO::_loadNetwork(), GUISettingsHandler::GUISettingsHandler(), PCNetProjectionLoader::load(), NIImporter_OpenStreetMap::load(), NIImporter_Vissim::load(), loadNet(), ROLoader::loadNet(), NIImporter_ITSUMO::loadNetwork(), NIImporter_MATSim::loadNetwork(), NILoader::loadXMLType(), main(), and XMLSubSys::runParser().

◆ setSchemaSeen()

void GenericSAXHandler::setSchemaSeen ( const bool  schemaSeen = true)
inlineprotectedinherited

◆ startElement()

void GenericSAXHandler::startElement ( const XMLCh *const  uri,
const XMLCh *const  localname,
const XMLCh *const  qname,
const XERCES_CPP_NAMESPACE::Attributes &  attrs 
)
inherited

The inherited method called when a new tag opens.

The method parses the supplied XMLCh*-qname using the internal name/enum-map to obtain the enum representation of the attribute name.

Then, "myStartElement" is called supplying the enumeration value, the string-representation of the name and the attributes.

Todo:

recheck/describe encoding of the string-representation

do not generate and report the string-representation

Definition at line 94 of file GenericSAXHandler.cpp.

References GenericSAXHandler::convertTag(), FileHelpers::getConfigurationRelative(), GenericSAXHandler::getFileName(), SUMOSAXAttributesImpl_Xerces::getString(), FileHelpers::isAbsolute(), GenericSAXHandler::myCharactersVector, GenericSAXHandler::myExpectedRoot, GenericSAXHandler::myPredefinedTags, GenericSAXHandler::myPredefinedTagsMML, GenericSAXHandler::mySchemaSeen, GenericSAXHandler::myStartElement(), XMLSubSys::runParser(), SUMO_ATTR_HREF, SUMO_TAG_INCLUDE, and StringUtils::transcode().

◆ warning()

void GenericSAXHandler::warning ( const XERCES_CPP_NAMESPACE::SAXParseException &  exception)
inherited

Handler for XML-warnings.

The message is built using buildErrorMessage and reported to the warning-instance of the MsgHandler.

Parameters
[in]exceptionThe occurred exception to process

Definition at line 200 of file GenericSAXHandler.cpp.

References GenericSAXHandler::buildErrorMessage(), and WRITE_WARNING.

Field Documentation

◆ myCharactersVector

std::vector<std::string> GenericSAXHandler::myCharactersVector
privateinherited

A list of character strings obtained so far to build the complete characters string at the end.

Definition at line 307 of file GenericSAXHandler.h.

Referenced by GenericSAXHandler::characters(), GenericSAXHandler::endElement(), and GenericSAXHandler::startElement().

◆ myCurrentRelation

long long int NIImporter_OpenStreetMap::RelationHandler::myCurrentRelation
private

The currently parsed relation.

Definition at line 529 of file NIImporter_OpenStreetMap.h.

◆ myExpectedRoot

std::string GenericSAXHandler::myExpectedRoot
privateinherited

The root element to expect, empty string disables the check.

Definition at line 319 of file GenericSAXHandler.h.

Referenced by GenericSAXHandler::startElement().

◆ myFileName

std::string GenericSAXHandler::myFileName
privateinherited

The name of the currently parsed file.

Definition at line 316 of file GenericSAXHandler.h.

Referenced by GenericSAXHandler::getFileName(), and GenericSAXHandler::setFileName().

◆ myFromWay

long long int NIImporter_OpenStreetMap::RelationHandler::myFromWay
private

the origination way for the current restriction

Definition at line 538 of file NIImporter_OpenStreetMap.h.

◆ myInterval

int NIImporter_OpenStreetMap::RelationHandler::myInterval
private

service interval of the pt line in minutes

Definition at line 614 of file NIImporter_OpenStreetMap.h.

◆ myIsRestriction

bool NIImporter_OpenStreetMap::RelationHandler::myIsRestriction
private

whether the currently parsed relation is a restriction

Definition at line 535 of file NIImporter_OpenStreetMap.h.

◆ myIsRoute

bool NIImporter_OpenStreetMap::RelationHandler::myIsRoute
private

indicates whether current relation is a route

Definition at line 602 of file NIImporter_OpenStreetMap.h.

◆ myIsStopArea

bool NIImporter_OpenStreetMap::RelationHandler::myIsStopArea
private

indicates whether current relation is a pt stop area

Definition at line 599 of file NIImporter_OpenStreetMap.h.

◆ myName

std::string NIImporter_OpenStreetMap::RelationHandler::myName
private

name of the relation

Definition at line 608 of file NIImporter_OpenStreetMap.h.

◆ myNBPTLineCont

NBPTLineCont* NIImporter_OpenStreetMap::RelationHandler::myNBPTLineCont
private

PT Line container to be filled.

Definition at line 526 of file NIImporter_OpenStreetMap.h.

◆ myNBPTStopCont

NBPTStopCont* NIImporter_OpenStreetMap::RelationHandler::myNBPTStopCont
private

The previously filled pt stop container.

Definition at line 523 of file NIImporter_OpenStreetMap.h.

◆ myNightService

std::string NIImporter_OpenStreetMap::RelationHandler::myNightService
private

night service information of the pt line

Definition at line 617 of file NIImporter_OpenStreetMap.h.

◆ myOptionsCont

const OptionsCont& NIImporter_OpenStreetMap::RelationHandler::myOptionsCont
private

the options cont

Definition at line 549 of file NIImporter_OpenStreetMap.h.

◆ myOSMEdges

const std::map<long long int, Edge*>& NIImporter_OpenStreetMap::RelationHandler::myOSMEdges
private

The previously parsed edges.

Definition at line 517 of file NIImporter_OpenStreetMap.h.

◆ myOSMNodes

const std::map<long long int, NIOSMNode*>& NIImporter_OpenStreetMap::RelationHandler::myOSMNodes
private

The previously parsed nodes.

Definition at line 514 of file NIImporter_OpenStreetMap.h.

◆ myParentElements

std::vector<int> NIImporter_OpenStreetMap::RelationHandler::myParentElements
private

The element stack.

Definition at line 532 of file NIImporter_OpenStreetMap.h.

◆ myParentHandler

GenericSAXHandler* GenericSAXHandler::myParentHandler
privateinherited

The handler to give control back to.

Definition at line 310 of file GenericSAXHandler.h.

Referenced by GenericSAXHandler::endElement(), and GenericSAXHandler::registerParent().

◆ myParentIndicator

int GenericSAXHandler::myParentIndicator
privateinherited

The tag indicating that control should be given back.

Definition at line 313 of file GenericSAXHandler.h.

Referenced by GenericSAXHandler::endElement(), and GenericSAXHandler::registerParent().

◆ myPlatforms

std::vector<NIIPTPlatform> NIImporter_OpenStreetMap::RelationHandler::myPlatforms
private

bus stop platforms

Definition at line 593 of file NIImporter_OpenStreetMap.h.

◆ myPlatformShapes

const std::map<long long int, Edge*>& NIImporter_OpenStreetMap::RelationHandler::myPlatformShapes
private

The previously parsed platform shapes.

Definition at line 520 of file NIImporter_OpenStreetMap.h.

◆ myPredefinedTags

AttrMap GenericSAXHandler::myPredefinedTags
privateinherited

◆ myPredefinedTagsMML

std::map<int, std::string> GenericSAXHandler::myPredefinedTagsMML
privateinherited

the map from ids to their string representation

Definition at line 292 of file GenericSAXHandler.h.

Referenced by GenericSAXHandler::GenericSAXHandler(), SUMOSAXReader::parseNext(), and GenericSAXHandler::startElement().

◆ myPTRouteType

std::string NIImporter_OpenStreetMap::RelationHandler::myPTRouteType
private

indicates whether current relation is a pt route

Definition at line 605 of file NIImporter_OpenStreetMap.h.

◆ myRef

std::string NIImporter_OpenStreetMap::RelationHandler::myRef
private

ref of the pt line

Definition at line 611 of file NIImporter_OpenStreetMap.h.

◆ myRestrictionType

RestrictionType NIImporter_OpenStreetMap::RelationHandler::myRestrictionType
private

Definition at line 562 of file NIImporter_OpenStreetMap.h.

◆ mySchemaSeen

bool GenericSAXHandler::mySchemaSeen
privateinherited

whether the reader has already seen a schema

Definition at line 322 of file GenericSAXHandler.h.

Referenced by GenericSAXHandler::setSchemaSeen(), and GenericSAXHandler::startElement().

◆ myStops

std::vector<long long int> NIImporter_OpenStreetMap::RelationHandler::myStops
private

bus stop references

Definition at line 584 of file NIImporter_OpenStreetMap.h.

◆ myTagMap

TagMap GenericSAXHandler::myTagMap
privateinherited

◆ myToWay

long long int NIImporter_OpenStreetMap::RelationHandler::myToWay
private

the destination way for the current restriction

Definition at line 541 of file NIImporter_OpenStreetMap.h.

◆ myViaNode

long long int NIImporter_OpenStreetMap::RelationHandler::myViaNode
private

the via node/way for the current restriction

Definition at line 544 of file NIImporter_OpenStreetMap.h.

◆ myViaWay

long long int NIImporter_OpenStreetMap::RelationHandler::myViaWay
private

Definition at line 545 of file NIImporter_OpenStreetMap.h.

◆ myWays

std::vector<long long int> NIImporter_OpenStreetMap::RelationHandler::myWays
private

ways in pt line references

Definition at line 596 of file NIImporter_OpenStreetMap.h.


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