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

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

#include <NIImporter_OpenStreetMap.h>

Collaboration diagram for NIImporter_OpenStreetMap:
Collaboration graph

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 Types

enum  WayType {
  WAY_NONE = 0, WAY_FORWARD = 1, WAY_BACKWARD = 2, WAY_BOTH = WAY_FORWARD | WAY_BACKWARD,
  WAY_UNKNOWN = 4
}
 

Protected Member Functions

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

Static Protected Attributes

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

Private Member Functions

std::map< NBNode *, SUMORealgetNeighboringNodes (NBNode *node, SUMOReal maxDist)
 collect neighboring nodes with their road distance More...
 
int insertEdge (Edge *e, int index, NBNode *from, NBNode *to, const std::vector< long long int > &passed, NBNetBuilder &nb)
 Builds an NBEdge. More...
 
NBNodeinsertNodeChecking (long long int id, NBNodeCont &nc, NBTrafficLightLogicCont &tlsc)
 Builds an NBNode. More...
 
void reconstructLayerElevation (SUMOReal layerElevation, NBNetBuilder &nb)
 reconstruct elevation from layer info More...
 

Private Attributes

std::map< long long int, 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< long long int,
NIOSMNode * > 
myOSMNodes
 the map from OSM node ids to actual nodes More...
 
std::set< NIOSMNode
*, CompareNodes
myUniqueNodes
 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.

Member Enumeration Documentation

Enumerator
WAY_NONE 
WAY_FORWARD 
WAY_BACKWARD 
WAY_BOTH 
WAY_UNKNOWN 

Definition at line 110 of file NIImporter_OpenStreetMap.h.

Constructor & Destructor Documentation

NIImporter_OpenStreetMap::NIImporter_OpenStreetMap ( )
protected

Definition at line 117 of file NIImporter_OpenStreetMap.cpp.

NIImporter_OpenStreetMap::~NIImporter_OpenStreetMap ( )
protected

Definition at line 120 of file NIImporter_OpenStreetMap.cpp.

References myEdges, and myUniqueNodes.

Member Function Documentation

std::map< NBNode *, SUMOReal > NIImporter_OpenStreetMap::getNeighboringNodes ( NBNode node,
SUMOReal  maxDist 
)
private
int NIImporter_OpenStreetMap::insertEdge ( Edge e,
int  index,
NBNode from,
NBNode to,
const std::vector< long long int > &  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 299 of file NIImporter_OpenStreetMap.cpp.

References NBEdge::addBikeLane(), NBEdge::addSidewalk(), compoundTypeSeparator, NBTypeCont::copyRestrictionsAndAttrs(), NIImporter_OpenStreetMap::NIOSMNode::ele, StringUtils::escapeXML(), NBTypeCont::getBikeLaneWidth(), NBNetBuilder::getEdgeCont(), NBTypeCont::getIsOneWay(), NBNetBuilder::getNodeCont(), NBTypeCont::getNumLanes(), NBTypeCont::getPermissions(), NBNode::getPosition(), NBTypeCont::getPriority(), NBTypeCont::getShallBeDiscarded(), 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::myBuswayType, NIImporter_OpenStreetMap::Edge::myCyclewayType, 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_noDoublePos(), PositionVector::reverse(), NBEdge::setPermissions(), StringTokenizer::size(), NIImporter_OpenStreetMap::Edge::streetName, SUMO_const_laneWidth, SUMOReal, SVC_BICYCLE, SVC_BUS, toString(), NBNetBuilder::transformCoordinates(), NBEdge::UNSPECIFIED_OFFSET, NBEdge::UNSPECIFIED_WIDTH, WAY_BACKWARD, WAY_FORWARD, WAY_UNKNOWN, WRITE_ERROR, WRITE_MESSAGE, and WRITE_WARNING.

Referenced by load().

NBNode * NIImporter_OpenStreetMap::insertNodeChecking ( long long int  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 263 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, NODETYPE_RAIL_CROSSING, NIImporter_OpenStreetMap::NIOSMNode::railwayCrossing, NBNode::reinit(), 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 111 of file NIImporter_OpenStreetMap.cpp.

References load().

Referenced by NILoader::load().

Friends And Related Function Documentation

friend class NodesHandler
friend

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

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

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

the map from OSM way ids to edge objects

Definition at line 195 of file NIImporter_OpenStreetMap.h.

Referenced by load(), reconstructLayerElevation(), 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 201 of file NIImporter_OpenStreetMap.h.

Referenced by insertEdge().

std::map<long long int, 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 183 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 191 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 198 of file NIImporter_OpenStreetMap.h.

Referenced by insertEdge().


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