SUMO - Simulation of Urban MObility
NIImporter_OpenStreetMap Class Reference

Importer for networks stored in OpenStreetMap format. More...

#include <NIImporter_OpenStreetMap.h>

Data Structures

class  CompareEdges
 Functor which compares two Edges. More...
 
class  CompareNodes
 Functor which compares two NIOSMNodes according to their coordinates. More...
 
struct  Edge
 An internal definition of a loaded edge. More...
 
class  EdgesHandler
 A class which extracts OSM-edges from a parsed OSM-file. More...
 
struct  NIOSMNode
 An internal representation of an OSM-node. More...
 
class  NodesHandler
 A class which extracts OSM-nodes from a parsed OSM-file. More...
 
class  RelationHandler
 A class which extracts relevant relation information from a parsed OSM-file. More...
 

Static Public Member Functions

static void loadNetwork (const OptionsCont &oc, NBNetBuilder &nb)
 Loads content of the optionally given OSM file. More...
 

Protected Member Functions

void load (const OptionsCont &oc, NBNetBuilder &nb)
 
 NIImporter_OpenStreetMap ()
 
 ~NIImporter_OpenStreetMap ()
 

Static Protected Attributes

static const SUMOLong INVALID_ID = std::numeric_limits<SUMOLong>::max()
 
static const SUMOReal MAXSPEED_UNGIVEN = -1
 

Private Member Functions

int insertEdge (Edge *e, int index, NBNode *from, NBNode *to, const std::vector< SUMOLong > &passed, NBNetBuilder &nb)
 Builds an NBEdge. More...
 
NBNodeinsertNodeChecking (SUMOLong id, NBNodeCont &nc, NBTrafficLightLogicCont &tlsc)
 Builds an NBNode. More...
 

Private Attributes

std::map< SUMOLong, Edge * > myEdges
 the map from OSM way ids to edge objects More...
 
std::map< std::string, std::string > myKnownCompoundTypes
 The compound types that have already been mapped to other known types. More...
 
std::map< SUMOLong, NIOSMNode * > myOSMNodes
 the map from OSM node ids to actual nodes More...
 
std::set< NIOSMNode *, CompareNodesmyUniqueNodes
 the set of unique nodes used in NodesHandler, used when freeing memory More...
 
std::set< std::string > myUnusableTypes
 The compounds types that do not contain known types. More...
 

Static Private Attributes

static const std::string compoundTypeSeparator
 The separator within newly created compound type names. More...
 

Friends

class NodesHandler
 

Detailed Description

Importer for networks stored in OpenStreetMap format.

Definition at line 63 of file NIImporter_OpenStreetMap.h.

Constructor & Destructor Documentation

NIImporter_OpenStreetMap::NIImporter_OpenStreetMap ( )
protected

Definition at line 115 of file NIImporter_OpenStreetMap.cpp.

NIImporter_OpenStreetMap::~NIImporter_OpenStreetMap ( )
protected

Definition at line 118 of file NIImporter_OpenStreetMap.cpp.

References myEdges, and myUniqueNodes.

Member Function Documentation

int NIImporter_OpenStreetMap::insertEdge ( Edge e,
int  index,
NBNode from,
NBNode to,
const std::vector< SUMOLong > &  passed,
NBNetBuilder nb 
)
private

Builds an NBEdge.

Parameters
[in]eThe definition of the edge
[in]indexThe index of the edge (in the case it is split along her nodes)
[in]fromThe origin node of the edge
[in]toThe destination node of the edge
[in]passedThe list of passed nodes (geometry information)
[in]osmNodesContainer of node definitions for getting information about nodes from
[in,out]TheNetBuilder instance
Returns
the new index if the edge is split
Exceptions
ProcessErrorIf the edge could not be added to the container

Definition at line 332 of file NIImporter_OpenStreetMap.cpp.

References NBEdge::addSidewalk(), compoundTypeSeparator, NIImporter_OpenStreetMap::NIOSMNode::ele, StringUtils::escapeXML(), NBNetBuilder::getEdgeCont(), NBTypeCont::getIsOneWay(), NBNetBuilder::getNodeCont(), NBTypeCont::getNumLanes(), NBTypeCont::getPermissions(), NBNode::getPosition(), NBTypeCont::getPriority(), NBTypeCont::getSidewalkWidth(), NBTypeCont::getSpeed(), NBNetBuilder::getTLLogicCont(), NBNetBuilder::getTypeCont(), NBTypeCont::getWidth(), StringTokenizer::hasNext(), NIImporter_OpenStreetMap::Edge::id, NBTypeCont::insert(), NBEdgeCont::insert(), insertNodeChecking(), joinToString(), NBTypeCont::knows(), LANESPREAD_CENTER, LANESPREAD_RIGHT, NIImporter_OpenStreetMap::NIOSMNode::lat, NIImporter_OpenStreetMap::NIOSMNode::lon, MAX2(), MAXSPEED_UNGIVEN, NIImporter_OpenStreetMap::Edge::myHighWayType, NIImporter_OpenStreetMap::Edge::myIsOneWay, myKnownCompoundTypes, NIImporter_OpenStreetMap::Edge::myMaxSpeed, NIImporter_OpenStreetMap::Edge::myNoLanes, NIImporter_OpenStreetMap::Edge::myNoLanesForward, myOSMNodes, myUnusableTypes, StringTokenizer::next(), PositionVector::push_back(), PositionVector::push_back_noDoublePos(), PositionVector::reverse(), NBEdge::setPermissions(), StringTokenizer::size(), NIImporter_OpenStreetMap::Edge::streetName, SUMO_const_laneWidth, SUMOReal, toString(), NBNetBuilder::transformCoordinates(), NBEdge::UNSPECIFIED_OFFSET, NBEdge::UNSPECIFIED_WIDTH, WRITE_ERROR, WRITE_MESSAGE, and WRITE_WARNING.

Referenced by load().

NBNode * NIImporter_OpenStreetMap::insertNodeChecking ( SUMOLong  id,
NBNodeCont nc,
NBTrafficLightLogicCont tlsc 
)
private

Builds an NBNode.

If a node with the given id is already known, nothing is done. Otherwise, the position and other information of the node is retrieved from the given node map, the node is built and added to the given node container. If the node is controlled by a tls, the according tls is built and added to the tls container.

Parameters
[in]idThe id of the node to build
[in]osmNodesMap of node ids to information about these
[in,out]ncThe node container to add the built node to
[in,out]tlscThe traffic lights logic container to add the built tls to
Returns
The built/found node
Exceptions
ProcessErrorIf the tls could not be added to the container

Definition at line 298 of file NIImporter_OpenStreetMap.cpp.

References NIImporter_OpenStreetMap::NIOSMNode::ele, StringBijection< T >::get(), OptionsCont::getOptions(), NBNodeCont::insert(), NBTrafficLightLogicCont::insert(), NIImporter_OpenStreetMap::NIOSMNode::lat, NIImporter_OpenStreetMap::NIOSMNode::lon, myOSMNodes, NIImporter_OpenStreetMap::NIOSMNode::node, NBNodeCont::retrieve(), NIImporter_OpenStreetMap::NIOSMNode::tlsControlled, toString(), SUMOXMLDefinitions::TrafficLightTypes, NBNetBuilder::transformCoordinates(), and WRITE_ERROR.

Referenced by insertEdge(), and load().

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

Loads content of the optionally given OSM file.

If the option "osm-files" is set, the file(s) stored therein is read and the network definition stored therein is stored within the given network builder.

If the option "osm-files" is not set, this method simply returns.

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

Definition at line 109 of file NIImporter_OpenStreetMap.cpp.

References load().

Referenced by NILoader::load().

Friends And Related Function Documentation

friend class NodesHandler
friend

Definition at line 212 of file NIImporter_OpenStreetMap.h.

Field Documentation

const std::string NIImporter_OpenStreetMap::compoundTypeSeparator
staticprivate

The separator within newly created compound type names.

Definition at line 149 of file NIImporter_OpenStreetMap.h.

Referenced by insertEdge(), and NIImporter_OpenStreetMap::EdgesHandler::myStartElement().

const SUMOReal NIImporter_OpenStreetMap::MAXSPEED_UNGIVEN = -1
staticprotected
std::map<SUMOLong, Edge*> NIImporter_OpenStreetMap::myEdges
private

the map from OSM way ids to edge objects

Definition at line 163 of file NIImporter_OpenStreetMap.h.

Referenced by load(), and ~NIImporter_OpenStreetMap().

std::map<std::string, std::string> NIImporter_OpenStreetMap::myKnownCompoundTypes
private

The compound types that have already been mapped to other known types.

Definition at line 169 of file NIImporter_OpenStreetMap.h.

Referenced by insertEdge().

std::map<SUMOLong, NIOSMNode*> NIImporter_OpenStreetMap::myOSMNodes
private

the map from OSM node ids to actual nodes

Note
: NIOSMNodes may appear multiple times due to substition

Definition at line 151 of file NIImporter_OpenStreetMap.h.

Referenced by NIImporter_OpenStreetMap::RelationHandler::applyRestriction(), insertEdge(), insertNodeChecking(), load(), NIImporter_OpenStreetMap::EdgesHandler::myStartElement(), and NIImporter_OpenStreetMap::RelationHandler::myStartElement().

std::set<NIOSMNode*, CompareNodes> NIImporter_OpenStreetMap::myUniqueNodes
private

the set of unique nodes used in NodesHandler, used when freeing memory

Definition at line 159 of file NIImporter_OpenStreetMap.h.

Referenced by load(), NIImporter_OpenStreetMap::NodesHandler::myStartElement(), and ~NIImporter_OpenStreetMap().

std::set<std::string> NIImporter_OpenStreetMap::myUnusableTypes
private

The compounds types that do not contain known types.

Definition at line 166 of file NIImporter_OpenStreetMap.h.

Referenced by insertEdge().


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