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 475 of file NIImporter_OpenStreetMap.h.

Member Typedef Documentation

◆ AttrMap

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

Definition at line 285 of file GenericSAXHandler.h.

◆ TagMap

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

Definition at line 299 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 558 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 1057 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 186 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
Todo:
describe characters processing in the class' head

Definition at line 169 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 1223 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 80 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 176 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
Todo:
do not generate and report the string-representation

Definition at line 120 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 205 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 211 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 1421 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 221 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 1077 of file NIImporter_OpenStreetMap.cpp.

References NIImporter_OpenStreetMap::INVALID_ID.

Referenced by RelationHandler().

◆ setFileName()

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

◆ 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
Todo:
do not generate and report the string-representation

Definition at line 93 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 199 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 306 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 533 of file NIImporter_OpenStreetMap.h.

◆ myExpectedRoot

std::string GenericSAXHandler::myExpectedRoot
privateinherited

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

Definition at line 318 of file GenericSAXHandler.h.

Referenced by GenericSAXHandler::startElement().

◆ myFileName

std::string GenericSAXHandler::myFileName
privateinherited

The name of the currently parsed file.

Definition at line 315 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 542 of file NIImporter_OpenStreetMap.h.

◆ myInterval

int NIImporter_OpenStreetMap::RelationHandler::myInterval
private

service interval of the pt line in minutes

Definition at line 618 of file NIImporter_OpenStreetMap.h.

◆ myIsRestriction

bool NIImporter_OpenStreetMap::RelationHandler::myIsRestriction
private

whether the currently parsed relation is a restriction

Definition at line 539 of file NIImporter_OpenStreetMap.h.

◆ myIsRoute

bool NIImporter_OpenStreetMap::RelationHandler::myIsRoute
private

indicates whether current relation is a route

Definition at line 606 of file NIImporter_OpenStreetMap.h.

◆ myIsStopArea

bool NIImporter_OpenStreetMap::RelationHandler::myIsStopArea
private

indicates whether current relation is a pt stop area

Definition at line 603 of file NIImporter_OpenStreetMap.h.

◆ myName

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

name of the relation

Definition at line 612 of file NIImporter_OpenStreetMap.h.

◆ myNBPTLineCont

NBPTLineCont* NIImporter_OpenStreetMap::RelationHandler::myNBPTLineCont
private

PT Line container to be filled.

Definition at line 530 of file NIImporter_OpenStreetMap.h.

◆ myNBPTStopCont

NBPTStopCont* NIImporter_OpenStreetMap::RelationHandler::myNBPTStopCont
private

The previously filled pt stop container.

Definition at line 527 of file NIImporter_OpenStreetMap.h.

◆ myNightService

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

night service information of the pt line

Definition at line 621 of file NIImporter_OpenStreetMap.h.

◆ myOptionsCont

const OptionsCont& NIImporter_OpenStreetMap::RelationHandler::myOptionsCont
private

the options cont

Definition at line 553 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 521 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 518 of file NIImporter_OpenStreetMap.h.

◆ myParentElements

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

The element stack.

Definition at line 536 of file NIImporter_OpenStreetMap.h.

◆ myParentHandler

GenericSAXHandler* GenericSAXHandler::myParentHandler
privateinherited

The handler to give control back to.

Definition at line 309 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 312 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 597 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 524 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 291 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 609 of file NIImporter_OpenStreetMap.h.

◆ myRef

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

ref of the pt line

Definition at line 615 of file NIImporter_OpenStreetMap.h.

◆ myRestrictionType

RestrictionType NIImporter_OpenStreetMap::RelationHandler::myRestrictionType
private

Definition at line 566 of file NIImporter_OpenStreetMap.h.

◆ mySchemaSeen

bool GenericSAXHandler::mySchemaSeen
privateinherited

whether the reader has already seen a schema

Definition at line 321 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 588 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 545 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 548 of file NIImporter_OpenStreetMap.h.

◆ myViaWay

long long int NIImporter_OpenStreetMap::RelationHandler::myViaWay
private

Definition at line 549 of file NIImporter_OpenStreetMap.h.

◆ myWays

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

ways in pt line references

Definition at line 600 of file NIImporter_OpenStreetMap.h.


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