Eclipse SUMO - Simulation of Urban MObility
PCLoaderOSM Class Reference

A reader of pois and polygons stored in OSM-format. More...

#include <PCLoaderOSM.h>

Inheritance diagram for PCLoaderOSM:
Collaboration diagram for PCLoaderOSM:

Data Structures

class  EdgesHandler
 A class which extracts OSM-edges from a parsed OSM-file. More...
 
class  NodesHandler
 A class which extracts OSM-nodes from a parsed OSM-file. More...
 
struct  PCOSMEdge
 An internal definition of a loaded edge. More...
 
struct  PCOSMNode
 An internal representation of an OSM-node. More...
 
struct  PCOSMRelation
 An internal definition of a loaded relation. More...
 
class  RelationsHandler
 A class which extracts relevant way-ids from relations in a parsed OSM-file. More...
 

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

Static Public Member Functions

static void loadIfSet (OptionsCont &oc, PCPolyContainer &toFill, PCTypeMap &tm)
 Loads pois/polygons assumed to be stored as OSM-XML. More...
 

Protected Types

typedef std::map< long long int, PCOSMEdge * > EdgeMap
 
typedef std::vector< PCOSMRelation * > Relations
 
typedef std::map< long long int, PCOSMRelation * > RelationsMap
 

Protected Member Functions

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...
 
virtual void myEndElement (int element)
 Callback method for a closing tag to implement by derived classes. More...
 
virtual void myStartElement (int element, const SUMOSAXAttributes &attrs)
 Callback method for an opening tag to implement by derived classes. More...
 
void setSchemaSeen (const bool schemaSeen=true)
 

Static Protected Member Functions

static int addPOI (const PCOSMNode *node, const Position &pos, const PCTypeMap::TypeDef &def, const std::string &fullType, int index, bool useName, PCPolyContainer &toFill, bool ignorePruning, bool withAttributes)
 try add the POI and return the next index on success More...
 
static int addPolygon (const PCOSMEdge *edge, const PositionVector &vec, const PCTypeMap::TypeDef &def, const std::string &fullType, int index, bool useName, PCPolyContainer &toFill, bool ignorePruning, bool withAttributes)
 try add the polygon and return the next index on success More...
 

Static Protected Attributes

static const std::set< std::string > MyKeysToInclude
 

Static Private Member Functions

static Position convertNodePosition (PCOSMNode *n)
 retrieve cartesian coordinate for given node More...
 
static std::set< std::string > initMyKeysToInclude ()
 

Detailed Description

A reader of pois and polygons stored in OSM-format.

Reads pois stored as XML definition as given by the OpenStreetMap-API.

Definition at line 50 of file PCLoaderOSM.h.

Member Typedef Documentation

◆ EdgeMap

typedef std::map<long long int, PCOSMEdge*> PCLoaderOSM::EdgeMap
protected

Definition at line 120 of file PCLoaderOSM.h.

◆ Relations

typedef std::vector<PCOSMRelation*> PCLoaderOSM::Relations
protected

Definition at line 118 of file PCLoaderOSM.h.

◆ RelationsMap

typedef std::map<long long int, PCOSMRelation*> PCLoaderOSM::RelationsMap
protected

Definition at line 119 of file PCLoaderOSM.h.

Member Function Documentation

◆ addPOI()

int PCLoaderOSM::addPOI ( const PCOSMNode node,
const Position pos,
const PCTypeMap::TypeDef def,
const std::string &  fullType,
int  index,
bool  useName,
PCPolyContainer toFill,
bool  ignorePruning,
bool  withAttributes 
)
staticprotected

◆ addPolygon()

int PCLoaderOSM::addPolygon ( const PCOSMEdge edge,
const PositionVector vec,
const PCTypeMap::TypeDef def,
const std::string &  fullType,
int  index,
bool  useName,
PCPolyContainer toFill,
bool  ignorePruning,
bool  withAttributes 
)
staticprotected

◆ 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().

◆ convertNodePosition()

Position PCLoaderOSM::convertNodePosition ( PCOSMNode n)
staticprivate

retrieve cartesian coordinate for given node

Definition at line 345 of file PCLoaderOSM.cpp.

References GeoConvHelper::getProcessing(), PCLoaderOSM::PCOSMNode::lat, PCLoaderOSM::PCOSMNode::lon, and GeoConvHelper::x2cartesian().

Referenced by loadIfSet().

◆ 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().

◆ getFileName()

◆ initMyKeysToInclude()

std::set< std::string > PCLoaderOSM::initMyKeysToInclude ( )
staticprivate

Definition at line 59 of file PCLoaderOSM.cpp.

◆ loadIfSet()

void PCLoaderOSM::loadIfSet ( OptionsCont oc,
PCPolyContainer toFill,
PCTypeMap tm 
)
static

Loads pois/polygons assumed to be stored as OSM-XML.

If the option "osm-files" is set within the given options container, an instance of PCLoaderOSM is built and used as a handler for the files given in this option.

Parameters
[in]ocThe options container to get further options from
[in]toFillThe poly/pois container to add loaded polys/pois to
[in]tmThe type map to use for setting values of loaded polys/pois
Exceptions
ProcessErrorif something fails

Definition at line 91 of file PCLoaderOSM.cpp.

References addPOI(), addPolygon(), convertNodePosition(), PCTypeMap::TypeDef::discard, Position::distanceTo2D(), PCTypeMap::get(), OptionsCont::getBool(), SysUtils::getCurrentMillis(), PCTypeMap::getDefault(), MsgHandler::getErrorInstance(), OptionsCont::getFloat(), OptionsCont::getOptions(), GeoConvHelper::getProcessing(), OptionsCont::getStringVector(), MsgHandler::getWarningInstance(), PCTypeMap::has(), PCLoaderOSM::PCOSMNode::id, PCLoaderOSM::PCOSMEdge::id, Position::INVALID, OptionsCont::isInStringVector(), FileHelpers::isReadable(), OptionsCont::isSet(), PCLoaderOSM::PCOSMNode::lat, PCLoaderOSM::PCOSMNode::lon, PCLoaderOSM::PCOSMNode::myAttributes, PCLoaderOSM::PCOSMEdge::myAttributes, PCLoaderOSM::PCOSMEdge::myCurrentNodes, PCLoaderOSM::PCOSMEdge::myIsClosed, MyKeysToInclude, PCLoaderOSM::PCOSMEdge::name, PROGRESS_BEGIN_MESSAGE, PROGRESS_TIME_MESSAGE, PositionVector::push_back_noDoublePos(), XMLSubSys::runParser(), PCLoaderOSM::PCOSMEdge::standalone, toString(), WRITE_ERROR, WRITE_MESSAGE, and WRITE_WARNING.

Referenced by main().

◆ 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 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 GenericSAXHandler::myStartElement ( int  element,
const SUMOSAXAttributes attrs 
)
protectedvirtualinherited

Callback method for an opening tag to implement by derived classes.

Called by "startElement" (see there).

Parameters
[in]elementThe element that contains the characters, given as a int
[in]attrsThe SAX-attributes, wrapped as SUMOSAXAttributes ProcessError These method may throw a ProcessError if something fails

Reimplemented in NIImporter_OpenDrive, NIImporter_OpenStreetMap::RelationHandler, NIImporter_Vissim::NIVissimXMLHandler_ConflictArea, NIImporter_OpenStreetMap::EdgesHandler, NIImporter_Vissim::NIVissimXMLHandler_Routenentscheidungsdefinition, GUINet::DiscoverAttributes, NIImporter_Vissim::NIVissimXMLHandler_Geschwindigkeitsverteilungsdefinition, NIImporter_OpenStreetMap::NodesHandler, PCLoaderOSM::EdgesHandler, NIImporter_Vissim::NIVissimXMLHandler_VWunschentscheidungsdefinition, NIImporter_Vissim::NIVissimXMLHandler_Fahrzeugklassendefinition, PCLoaderOSM::RelationsHandler, GNEGenericParameterDialog::GenericParametersOptions::GNEGenericParameterHandler, NIImporter_Vissim::NIVissimXMLHandler_Parkplatzdefinition, MSTriggeredRerouter, PCLoaderOSM::NodesHandler, SAXWeightsHandler, NIImporter_Vissim::NIVissimXMLHandler_Zuflussdefinition, NIImporter_MATSim::EdgesHandler, NLHandler, MSCalibrator, NIImporter_Vissim::NIVissimXMLHandler_Streckendefinition, MSLaneSpeedTrigger, NIImporter_SUMO, NIImporter_MATSim::NodesHandler, NIImporter_ITSUMO::Handler, PCLoaderXML, NIXMLEdgesHandler, NIXMLNodesHandler, TrajectoriesHandler, GNEAdditionalHandler, NIXMLPTHandler, PCNetProjectionLoader, RORouteHandler, SUMORouteHandler, ROJTRTurnDefLoader, ODDistrictHandler, ShapeHandler, MSRouteHandler, RONetHandler, MSStateHandler, NIXMLConnectionsHandler, ODAmitranHandler, NIXMLTrafficLightsHandler, NIXMLTypesHandler, PCTypeDefHandler, AGActivityGenHandler, GUISettingsHandler, ROMARouteHandler, and RODFDetectorHandler.

Definition at line 218 of file GenericSAXHandler.cpp.

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

◆ registerParent()

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

◆ 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

◆ MyKeysToInclude

const std::set< std::string > PCLoaderOSM::MyKeysToInclude
staticprotected

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