Eclipse SUMO - Simulation of Urban MObility
NWWriter_OpenDrive Class Reference

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

#include <NWWriter_OpenDrive.h>

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 int getID (const std::string &origID, StringBijection< int > &map, int &lastID)
 
static std::string getLaneType (SVCPermissions permissions)
 
static PositionVector getLeftLaneBorder (const NBEdge *edge, int laneIndex=-1, double widthOffset=0)
 get the left border of the given lane (the leftmost one by default) More...
 
static PositionVector getRightLaneBorder (const NBEdge *edge, int laneIndex=-1)
 
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)
 write normal edge to device More...
 
static void writeRoadObjects (OutputDevice &device, const NBEdge *e, const ShapeContainer &shc)
 write road objects referenced as edge parameters More...
 
static void writeSignals (OutputDevice &device, const NBEdge *e, double length, SignalLanes &signalLanes)
 write signal record for traffic light More...
 

Detailed Description

Exporter writing networks using the openDRIVE format.

Definition at line 48 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 59 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 331 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 865 of file NWWriter_OpenDrive.cpp.

References PositionVector::distance2D(), NBEdge::getLaneID(), NBEdge::getLaneShape(), NBEdge::getNumLanes(), PositionVector::sideOffset(), toString(), and WRITE_WARNING.

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 526 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:

◆ getLaneType()

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

Definition at line 536 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:

◆ getLeftLaneBorder()

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

get the left border of the given lane (the leftmost one by default)

it would be tempting to use

Definition at line 572 of file NWWriter_OpenDrive.cpp.

References OptionsCont::getBool(), NBEdge::getLaneShape(), NBEdge::getLaneWidth(), NBEdge::getNumLanes(), OptionsCont::getOptions(), and PositionVector::move2side().

Referenced by getRightLaneBorder(), writeInternalEdge(), writeNormalEdge(), and writeRoadObjects().

Here is the caller graph for this function:

◆ getRightLaneBorder()

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

Definition at line 605 of file NWWriter_OpenDrive.cpp.

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

Referenced by writeInternalEdge().

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 843 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 515 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 493 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 611 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 54 of file NWWriter_OpenDrive.cpp.

References addPedestrianConnection(), NBEdgeCont::begin(), NBNodeCont::begin(), OutputDevice::close(), OutputDevice::closeTag(), OutputDevice::createDeviceByOption(), DEG2RAD, NBEdgeCont::end(), NBNodeCont::end(), NBNode::geometryLike(), OptionsCont::getBool(), NBEdge::getConnections(), NBTrafficLightDefinition::getControlledLinks(), NBNode::getControllingTLS(), GeoConvHelper::getConvBoundary(), OutputDevice::getDevice(), NBNetBuilder::getEdgeCont(), GeoConvHelper::getFinal(), OptionsCont::getFloat(), NBEdge::getFromNode(), NBEdge::getID(), Named::getID(), getID(), NBEdge::getIncomingEdges(), NBNetBuilder::getNodeCont(), GeoConvHelper::getOffsetBase(), GeoConvHelper::getProjString(), NBNetBuilder::getShapeCont(), OutputDevice_String::getString(), OptionsCont::getString(), NBEdge::getToNode(), INVALID_ID, OptionsCont::isSet(), NBNode::isTLControlled(), OutputDevice::lf(), NBNode::numNormalConnections(), OutputDevice::openTag(), 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 
)
staticprotected

◆ writeRoadObjects()

◆ writeSignals()

void NWWriter_OpenDrive::writeSignals ( OutputDevice device,
const NBEdge e,
double  length,
SignalLanes signalLanes 
)
staticprotected

write signal record for traffic light

Definition at line 946 of file NWWriter_OpenDrive.cpp.

References OutputDevice::closeTag(), NBTrafficLightDefinition::getControlledLinks(), NBNode::getControllingTLS(), NBNode::getDirection(), Named::getID(), NBEdge::getLaneWidth(), NBEdge::getNumLanes(), NBEdge::getToNode(), NBNode::isTLControlled(), LEFT, OutputDevice::openTag(), PARTLEFT, PARTRIGHT, RIGHT, STRAIGHT, toString(), and OutputDevice::writeAttr().

Referenced by writeNormalEdge().

Here is the caller graph for this function:

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