Eclipse SUMO - Simulation of Urban MObility
NWWriter_OpenDrive Class Reference

Exporter writing networks using the openDRIVE format. More...

#include <NWWriter_OpenDrive.h>

Data Structures

struct  TrafficSign
 

Static Public Member Functions

static void writeNetwork (const OptionsCont &oc, NBNetBuilder &nb)
 Writes the network into a openDRIVE-file. More...
 

Protected Types

typedef std::map< std::string, std::pair< std::set< int >, std::set< LinkDirection > > > SignalLanes
 signalID -> (lanes, dirs) More...
 

Static Protected Member Functions

static void addPedestrianConnection (const NBEdge *inEdge, const NBEdge *outEdge, std::vector< NBEdge::Connection > &parallel)
 
static void checkLaneGeometries (const NBEdge *e)
 check if the lane geometries are compatible with OpenDRIVE assumptions (colinear stop line) More...
 
static std::string getDividerType (const NBEdge *e)
 retrieve divider type More...
 
static int getID (const std::string &origID, StringBijection< int > &map, int &lastID)
 
static PositionVector getInnerLaneBorder (const NBEdge *edge, int laneIndex=-1, double widthOffset=0)
 get the lane border that is closer to the reference line (center line of the edge) More...
 
static std::string getLaneType (SVCPermissions permissions)
 
static PositionVector getOuterLaneBorder (const NBEdge *edge, int laneIndex=-1)
 get the lane border that is further away from the reference line (center line of the edge) More...
 
static double getRoadSideOffset (const NBEdge *e)
 
static void mapmatchRoadObjects (const ShapeContainer &shc, const NBEdgeCont &ec)
 map pois and polygons to the closes edge More...
 
static std::vector< TrafficSignparseTrafficSign (const std::string &trafficSign, PointOfInterest *poi)
 
static TrafficSign parseTrafficSignId (const std::string &trafficSign)
 
static int s2x (int sumoIndex, int numLanes)
 convert sumo lane index to xodr lane index More...
 
static void writeElevationProfile (const PositionVector &shape, OutputDevice &device, const OutputDevice_String &elevationDevice)
 
static void writeEmptyCenterLane (OutputDevice &device, const std::string &mark, double markWidth)
 
static double writeGeomLines (const PositionVector &shape, OutputDevice &device, OutputDevice &elevationDevice, double offset=0)
 write geometry as sequence of lines (sumo style) More...
 
static double writeGeomPP3 (OutputDevice &device, OutputDevice &elevationDevice, PositionVector init, double length, double offset=0)
 write geometry as a single bezier curve (paramPoly3) More...
 
static bool writeGeomSmooth (const PositionVector &shape, double speed, OutputDevice &device, OutputDevice &elevationDevice, double straightThresh, double &length)
 
static int writeInternalEdge (OutputDevice &device, OutputDevice &junctionDevice, const NBEdge *inEdge, int nodeID, int edgeID, int inEdgeID, int outEdgeID, int connectionID, const std::vector< NBEdge::Connection > &parallel, const bool isOuterEdge, const double straightThresh, const std::string &centerMark, SignalLanes &signalLanes)
 write internal edge to device, return next connectionID More...
 
static void writeNormalEdge (OutputDevice &device, const NBEdge *e, int edgeID, int fromNodeID, int toNodeID, const bool origNames, const double straightThresh, const ShapeContainer &shc, SignalLanes &signalLanes, const std::vector< std::string > &crossings)
 write normal edge to device More...
 
static void writeRoadObjectPOI (OutputDevice &device, const NBEdge *e, const PositionVector &roadShape, const PointOfInterest *poi)
 
static void writeRoadObjectPoly (OutputDevice &device, const NBEdge *e, const PositionVector &roadShape, const SUMOPolygon *p)
 
static void writeRoadObjects (OutputDevice &device, const NBEdge *e, const ShapeContainer &shc, const std::vector< std::string > &crossings)
 write road objects referenced as edge parameters More...
 
static void writeSignals (OutputDevice &device, const NBEdge *e, double length, SignalLanes &signalLanes, const ShapeContainer &shc)
 write signal record for traffic light More...
 

Static Protected Attributes

static bool lefthand
 whether a lefthand network is being written More...
 
static bool LHLL
 
static bool LHRL
 

Detailed Description

Exporter writing networks using the openDRIVE format.

Definition at line 50 of file NWWriter_OpenDrive.h.

Member Typedef Documentation

◆ SignalLanes

typedef std::map<std::string, std::pair<std::set<int>, std::set<LinkDirection> > > NWWriter_OpenDrive::SignalLanes
protected

signalID -> (lanes, dirs)

Definition at line 61 of file NWWriter_OpenDrive.h.

Member Function Documentation

◆ addPedestrianConnection()

void NWWriter_OpenDrive::addPedestrianConnection ( const NBEdge inEdge,
const NBEdge outEdge,
std::vector< NBEdge::Connection > &  parallel 
)
staticprotected

Definition at line 413 of file NWWriter_OpenDrive.cpp.

References NBEdge::getLanes(), NBEdge::getPermissions(), and SVC_PEDESTRIAN.

Referenced by writeNetwork().

Here is the caller graph for this function:

◆ checkLaneGeometries()

void NWWriter_OpenDrive::checkLaneGeometries ( const NBEdge e)
staticprotected

check if the lane geometries are compatible with OpenDRIVE assumptions (colinear stop line)

Definition at line 949 of file NWWriter_OpenDrive.cpp.

References PositionVector::distance2D(), NBEdge::getLaneID(), NBEdge::getLaneShape(), NBEdge::getNumLanes(), lefthand, PositionVector::sideOffset(), TL, toString(), and WRITE_WARNINGF.

Referenced by writeNormalEdge().

Here is the caller graph for this function:

◆ getDividerType()

std::string NWWriter_OpenDrive::getDividerType ( const NBEdge e)
staticprotected

retrieve divider type

Definition at line 262 of file NWWriter_OpenDrive.cpp.

References Parameterised::getParametersMap().

Referenced by writeNormalEdge().

Here is the caller graph for this function:

◆ getID()

int NWWriter_OpenDrive::getID ( const std::string &  origID,
StringBijection< int > &  map,
int &  lastID 
)
staticprotected

Definition at line 625 of file NWWriter_OpenDrive.cpp.

References StringBijection< T >::get(), StringBijection< T >::hasString(), and StringBijection< T >::insert().

Referenced by writeNetwork().

Here is the caller graph for this function:

◆ getInnerLaneBorder()

PositionVector NWWriter_OpenDrive::getInnerLaneBorder ( const NBEdge edge,
int  laneIndex = -1,
double  widthOffset = 0 
)
staticprotected

get the lane border that is closer to the reference line (center line of the edge)

Definition at line 671 of file NWWriter_OpenDrive.cpp.

References NBEdge::getLaneShape(), NBEdge::getLaneWidth(), NBEdge::getNumLanes(), LHLL, LHRL, and PositionVector::move2side().

Referenced by getOuterLaneBorder(), writeInternalEdge(), writeNormalEdge(), writeRoadObjects(), and writeSignals().

Here is the caller graph for this function:

◆ getLaneType()

std::string NWWriter_OpenDrive::getLaneType ( SVCPermissions  permissions)
staticprotected

Definition at line 635 of file NWWriter_OpenDrive.cpp.

References isRailway(), SVC_BICYCLE, SVC_PASSENGER, SVC_PEDESTRIAN, SVC_RAIL, SVC_RAIL_ELECTRIC, SVC_RAIL_FAST, SVC_RAIL_URBAN, SVC_TRAM, and SVCAll.

Referenced by writeInternalEdge(), and writeNormalEdge().

Here is the caller graph for this function:

◆ getOuterLaneBorder()

PositionVector NWWriter_OpenDrive::getOuterLaneBorder ( const NBEdge edge,
int  laneIndex = -1 
)
staticprotected

get the lane border that is further away from the reference line (center line of the edge)

Definition at line 689 of file NWWriter_OpenDrive.cpp.

References getInnerLaneBorder(), and NBEdge::getLaneWidth().

Referenced by writeInternalEdge().

Here is the caller graph for this function:

◆ getRoadSideOffset()

double NWWriter_OpenDrive::getRoadSideOffset ( const NBEdge e)
staticprotected

Definition at line 1189 of file NWWriter_OpenDrive.cpp.

References NBEdge::getLaneWidth(), NBEdge::getNumLanes(), NBEdge::getPermissions(), lefthand, LHLL, LHRL, and SVC_PEDESTRIAN.

Referenced by writeRoadObjectPOI(), and writeSignals().

Here is the caller graph for this function:

◆ mapmatchRoadObjects()

◆ parseTrafficSign()

std::vector< NWWriter_OpenDrive::TrafficSign > NWWriter_OpenDrive::parseTrafficSign ( const std::string &  trafficSign,
PointOfInterest poi 
)
staticprotected

Definition at line 1006 of file NWWriter_OpenDrive.cpp.

References Parameterised::getParameter(), Parameterised::hasParameter(), and parseTrafficSignId().

Referenced by writeSignals().

Here is the caller graph for this function:

◆ parseTrafficSignId()

NWWriter_OpenDrive::TrafficSign NWWriter_OpenDrive::parseTrafficSignId ( const std::string &  trafficSign)
staticprotected

Definition at line 1046 of file NWWriter_OpenDrive.cpp.

Referenced by parseTrafficSign().

Here is the caller graph for this function:

◆ s2x()

int NWWriter_OpenDrive::s2x ( int  sumoIndex,
int  numLanes 
)
staticprotected

convert sumo lane index to xodr lane index

Definition at line 1202 of file NWWriter_OpenDrive.cpp.

References lefthand, and LHLL.

Referenced by writeInternalEdge(), and writeNormalEdge().

Here is the caller graph for this function:

◆ writeElevationProfile()

void NWWriter_OpenDrive::writeElevationProfile ( const PositionVector shape,
OutputDevice device,
const OutputDevice_String elevationDevice 
)
staticprotected

Definition at line 927 of file NWWriter_OpenDrive.cpp.

References OutputDevice_String::getString().

Referenced by writeInternalEdge(), and writeNormalEdge().

Here is the caller graph for this function:

◆ writeEmptyCenterLane()

void NWWriter_OpenDrive::writeEmptyCenterLane ( OutputDevice device,
const std::string &  mark,
double  markWidth 
)
staticprotected

Definition at line 614 of file NWWriter_OpenDrive.cpp.

Referenced by writeInternalEdge(), and writeNormalEdge().

Here is the caller graph for this function:

◆ writeGeomLines()

double NWWriter_OpenDrive::writeGeomLines ( const PositionVector shape,
OutputDevice device,
OutputDevice elevationDevice,
double  offset = 0 
)
staticprotected

write geometry as sequence of lines (sumo style)

Definition at line 592 of file NWWriter_OpenDrive.cpp.

References PositionVector::angleAt2D(), OutputDevice::closeTag(), Position::distanceTo2D(), MAX2(), OutputDevice::openTag(), OutputDevice::writeAttr(), Position::x(), Position::y(), and Position::z().

Referenced by writeGeomSmooth(), writeInternalEdge(), and writeNormalEdge().

Here is the caller graph for this function:

◆ writeGeomPP3()

double NWWriter_OpenDrive::writeGeomPP3 ( OutputDevice device,
OutputDevice elevationDevice,
PositionVector  init,
double  length,
double  offset = 0 
)
staticprotected

write geometry as a single bezier curve (paramPoly3)

Definition at line 695 of file NWWriter_OpenDrive.cpp.

References PositionVector::add(), PositionVector::angleAt2D(), OutputDevice::closeTag(), MAX2(), OutputDevice::openTag(), PositionVector::rotate2D(), OutputDevice::writeAttr(), Position::x(), Position::y(), and Position::z().

Referenced by writeGeomSmooth(), and writeInternalEdge().

Here is the caller graph for this function:

◆ writeGeomSmooth()

bool NWWriter_OpenDrive::writeGeomSmooth ( const PositionVector shape,
double  speed,
OutputDevice device,
OutputDevice elevationDevice,
double  straightThresh,
double &  length 
)
staticprotected

◆ writeInternalEdge()

int NWWriter_OpenDrive::writeInternalEdge ( OutputDevice device,
OutputDevice junctionDevice,
const NBEdge inEdge,
int  nodeID,
int  edgeID,
int  inEdgeID,
int  outEdgeID,
int  connectionID,
const std::vector< NBEdge::Connection > &  parallel,
const bool  isOuterEdge,
const double  straightThresh,
const std::string &  centerMark,
SignalLanes signalLanes 
)
staticprotected

◆ writeNetwork()

void NWWriter_OpenDrive::writeNetwork ( const OptionsCont oc,
NBNetBuilder nb 
)
static

Writes the network into a openDRIVE-file.

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

Definition at line 63 of file NWWriter_OpenDrive.cpp.

References addPedestrianConnection(), ShapeContainer::addPolygon(), PositionVector::append(), NBEdgeCont::begin(), NBNodeCont::begin(), OutputDevice::close(), OutputDevice::closeTag(), OutputDevice::createDeviceByOption(), Shape::DEFAULT_ANGLE, RGBColor::DEFAULT_COLOR, Shape::DEFAULT_IMG_FILE, Shape::DEFAULT_RELATIVEPATH, DEG2RAD, NBEdgeCont::end(), NBNodeCont::end(), NBNode::geometryLike(), NamedObjectCont< T >::get(), OptionsCont::getBool(), NBEdge::getConnections(), NBTrafficLightDefinition::getControlledLinks(), NBNode::getControllingTLS(), GeoConvHelper::getConvBoundary(), NBNode::getCrossings(), OutputDevice::getDevice(), NBNetBuilder::getEdgeCont(), GeoConvHelper::getFinal(), OptionsCont::getFloat(), NBEdge::getFromNode(), NBEdge::getID(), Named::getID(), getID(), NBEdge::getIncomingEdges(), NBNetBuilder::getNodeCont(), GeoConvHelper::getOffsetBase(), ShapeContainer::getPolygons(), GeoConvHelper::getProjString(), NBNetBuilder::getShapeCont(), OutputDevice_String::getString(), OptionsCont::getString(), NBEdge::getToNode(), INVALID_ID, OptionsCont::isSet(), NBNode::isTLControlled(), lefthand, OutputDevice::lf(), LHLL, LHRL, mapmatchRoadObjects(), PositionVector::move2side(), NBNode::numNormalConnections(), OutputDevice::openTag(), PositionVector::reverse(), Parameterised::setParameter(), NBNodeCont::size(), toString(), GeoConvHelper::usingGeoProjection(), OutputDevice::writeAttr(), writeInternalEdge(), writeNormalEdge(), OutputDevice::writePreformattedTag(), Position::x(), Boundary::xmax(), Boundary::xmin(), Position::y(), Boundary::ymax(), Boundary::ymin(), and Position::z().

Referenced by NWFrame::writeNetwork().

Here is the caller graph for this function:

◆ writeNormalEdge()

void NWWriter_OpenDrive::writeNormalEdge ( OutputDevice device,
const NBEdge e,
int  edgeID,
int  fromNodeID,
int  toNodeID,
const bool  origNames,
const double  straightThresh,
const ShapeContainer shc,
SignalLanes signalLanes,
const std::vector< std::string > &  crossings 
)
staticprotected

◆ writeRoadObjectPOI()

void NWWriter_OpenDrive::writeRoadObjectPOI ( OutputDevice device,
const NBEdge e,
const PositionVector roadShape,
const PointOfInterest poi 
)
staticprotected

◆ writeRoadObjectPoly()

◆ writeRoadObjects()

void NWWriter_OpenDrive::writeRoadObjects ( OutputDevice device,
const NBEdge e,
const ShapeContainer shc,
const std::vector< std::string > &  crossings 
)
staticprotected

write road objects referenced as edge parameters

Definition at line 970 of file NWWriter_OpenDrive.cpp.

References OutputDevice::closeTag(), NamedObjectCont< T >::get(), NBEdge::getID(), getInnerLaneBorder(), Parameterised::getParameter(), ShapeContainer::getPOIs(), ShapeContainer::getPolygons(), StringTokenizer::getVector(), gPrecision, Parameterised::hasParameter(), OutputDevice::openTag(), ROAD_OBJECTS, OutputDevice::setPrecision(), WRITE_WARNINGF, writeRoadObjectPOI(), and writeRoadObjectPoly().

Referenced by writeNormalEdge().

Here is the caller graph for this function:

◆ writeSignals()

Field Documentation

◆ lefthand

bool NWWriter_OpenDrive::lefthand
staticprotected

whether a lefthand network is being written

Definition at line 152 of file NWWriter_OpenDrive.h.

Referenced by checkLaneGeometries(), getRoadSideOffset(), s2x(), writeInternalEdge(), writeNetwork(), writeNormalEdge(), and writeRoadObjectPoly().

◆ LHLL

bool NWWriter_OpenDrive::LHLL
staticprotected

◆ LHRL

bool NWWriter_OpenDrive::LHRL
staticprotected

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