Eclipse SUMO - Simulation of Urban MObility
NBEdgeCont Class Reference

Storage for edges, including some functionality operating on multiple edges. More...

#include <NBEdgeCont.h>

Collaboration diagram for NBEdgeCont:
[legend]

Data Structures

struct  MinLaneComparatorIdLess
 
struct  PostProcessConnection
 A structure representing a connection between two lanes. More...
 
struct  Split
 A structure which describes changes of lane number or speed along the road. More...
 
class  split_sorter
 Sorts splits by their position (increasing) More...
 

Public Member Functions

void addPrefix (const std::string &prefix)
 add prefix to all edges More...
 
void addRoundabout (const EdgeSet &roundabout)
 add user specified roundabout More...
 
void applyOptions (OptionsCont &oc)
 Initialises the storage by applying given options. More...
 
bool checkConsistency (const NBNodeCont &nc)
 ensure that all edges have valid nodes More...
 
void checkGrade (double threshold) const
 check whether edges are to steep More...
 
void checkOverlap (double threshold, double zThreshold) const
 check whether edges overlap More...
 
void clear ()
 Deletes all edges. More...
 
void computeAngles ()
 compute all edge angles More...
 
int extractRoundabouts ()
 Determines which edges have been marked as roundabouts and stores them internally. More...
 
void fixSplitCustomLength ()
 adapt custom lengths of split edges to account for intersection size More...
 
void generateStreetSigns ()
 assigns street signs to edges based on toNode types More...
 
EdgeVector getAllEdges () const
 return all edges More...
 
RouterEdgeVector getAllRouterEdges () const
 return all router edges More...
 
NBEdgegetByID (const std::string &edgeID) const
 Returns the edge with id if it exists. More...
 
EdgeVector getGeneratedFrom (const std::string &id) const
 Returns the edges which have been built by splitting the edge of the given id. More...
 
NBEdgegetOppositeByID (const std::string &edgeID) const
 Returns the edge with negated id if it exists. More...
 
const std::set< EdgeSetgetRoundabouts () const
 Returns the determined roundabouts. More...
 
std::set< std::string > getUsedTypes () const
 return all edge types in used More...
 
int guessRoundabouts ()
 Determines which edges belong to roundabouts and increases their priority. More...
 
int guessSpecialLanes (SUMOVehicleClass svc, double width, double minSpeed, double maxSpeed, bool fromPermissions, const std::string &excludeOpt, NBTrafficLightLogicCont &tlc)
 add sidwalks to edges within the given limits or permissions and return the number of edges affected More...
 
bool hasGuessedRoundabouts () const
 check if there is guessed roundabouts More...
 
void ignore (std::string id)
 mark the given edge id as ignored More...
 
bool ignoreFilterMatch (NBEdge *edge)
 Returns true if this edge matches one of the removal criteria. More...
 
int joinLanes (SVCPermissions perms)
 join adjacent lanes with the given permissions More...
 
int joinTramEdges (NBDistrictCont &dc, NBPTStopCont &sc, NBPTLineCont &lc, double maxDist)
 join tram edges into adjacent lanes More...
 
void markRoundabouts ()
 mark edge priorities and prohibit turn-arounds for all roundabout edges More...
 
 NBEdgeCont (NBTypeCont &tc)
 Constructor. More...
 
void patchRoundabouts (NBEdge *orig, NBEdge *part1, NBEdge *part2, std::set< EdgeSet > &roundabouts)
 fix roundabout information after splitting an edge More...
 
int remapIDs (bool numericaIDs, bool reservedIDs, const std::string &prefix, NBPTStopCont &sc)
 remap node IDs accoring to options –numerical-ids and –reserved-ids More...
 
int removeEdgesByPermissions (NBDistrictCont &dc)
 
int removeEdgesBySpeed (NBDistrictCont &dc)
 return number of edges removed More...
 
void removeRoundabout (const NBNode *node)
 remove roundabout that contains the given node More...
 
void removeRoundaboutEdges (const EdgeSet &toRemove)
 remove edges from all stored roundabouts More...
 
void rename (NBEdge *edge, const std::string &newID)
 Renames the edge. Throws exception if newID already exists. More...
 
void updateAllChangeRestrictions (SVCPermissions ignoring)
 modify all restrictions on lane changing for edges and connections More...
 
bool wasIgnored (std::string id) const
 Returns whether the edge with the id was ignored during parsing. More...
 
bool wasRemoved (std::string id) const
 Returns whether the edge with the id was deleted explicitly. More...
 
 ~NBEdgeCont ()
 Destructor. More...
 
edge access methods
bool insert (NBEdge *edge, bool ignorePrunning=false)
 Adds an edge to the dictionary. More...
 
NBEdgeretrieve (const std::string &id, bool retrieveExtracted=false) const
 Returns the edge that has the given id. More...
 
NBEdgeretrievePossiblySplit (const std::string &id, bool downstream) const
 Tries to retrieve an edge, even if it is splitted. More...
 
NBEdgeretrievePossiblySplit (const std::string &id, const std::string &hint, bool incoming) const
 Tries to retrieve an edge, even if it is splitted. More...
 
NBEdgeretrievePossiblySplit (const std::string &id, double pos) const
 Tries to retrieve an edge, even if it is splitted. More...
 
void erase (NBDistrictCont &dc, NBEdge *edge)
 Removes the given edge from the container (deleting it) More...
 
void extract (NBDistrictCont &dc, NBEdge *edge, bool remember=false)
 Removes the given edge from the container like erase but does not delete it. More...
 
std::map< std::string, NBEdge * >::const_iterator begin () const
 Returns the pointer to the begin of the stored edges. More...
 
std::map< std::string, NBEdge * >::const_iterator end () const
 Returns the pointer to the end of the stored edges. More...
 
explicit edge manipulation methods
void processSplits (NBEdge *e, std::vector< Split > splits, NBNodeCont &nc, NBDistrictCont &dc, NBTrafficLightLogicCont &tlc)
 process splits More...
 
bool splitAt (NBDistrictCont &dc, NBEdge *edge, NBNode *node)
 Splits the edge at the position nearest to the given node. More...
 
bool splitAt (NBDistrictCont &dc, NBEdge *edge, NBNode *node, const std::string &firstEdgeName, const std::string &secondEdgeName, int noLanesFirstEdge, int noLanesSecondEdge, const double speed=-1., const double friction=1., const int changedLeft=0)
 Splits the edge at the position nearest to the given node using the given modifications. More...
 
bool splitAt (NBDistrictCont &dc, NBEdge *edge, double edgepos, NBNode *node, const std::string &firstEdgeName, const std::string &secondEdgeName, int noLanesFirstEdge, int noLanesSecondEdge, const double speed=-1., const double friction=1., const int changedLeft=0)
 Splits the edge at the position nearest to the given node using the given modifications. More...
 
container access methods
int size () const
 Returns the number of edges. More...
 
std::vector< std::string > getAllNames () const
 Returns all ids of known edges. More...
 
const std::pair< NBEdge *, NBEdge * > * getSplit (const NBEdge *const origEdge) const
 Returns the edge split if the edge has been split, nullptr otherwise. More...
 
int getNumEdgeSplits () const
 Returns the number of edge splits. More...
 
Adapting the input
void removeUnwishedEdges (NBDistrictCont &dc)
 Removes unwished edges (not in keep-edges) More...
 
void splitGeometry (NBDistrictCont &dc, NBNodeCont &nc)
 Splits edges into multiple if they have a complex geometry. More...
 
void reduceGeometries (const double minDist)
 
void checkGeometries (const double maxAngle, const double minRadius, bool fix, bool fixRailways, bool silent=false)
 
processing methods
void sortOutgoingLanesConnections ()
 Sorts all lanes of all edges within the container by their direction. More...
 
void computeEdge2Edges (bool noLeftMovers)
 Computes for each edge the approached edges. More...
 
void computeLanes2Edges ()
 Computes for each edge which lanes approach the next edges. More...
 
void recheckLanes ()
 Rechecks whether all lanes have a successor for each of the stored edges. More...
 
void appendTurnarounds (bool noTLSControlled, bool noFringe, bool onlyDeadends, bool onlyTurnlane, bool noGeometryLike)
 Appends turnarounds to all edges stored in the container. More...
 
void appendTurnarounds (const std::set< std::string > &ids, bool noTLSControlled)
 Appends turnarounds to all edges stored in the container Calls "NBEdge::appendTurnaround" for edges with the given ids. More...
 
void appendRailwayTurnarounds (const NBPTStopCont &sc)
 Appends turnarounds to all bidiRail edges with stops. More...
 
void computeEdgeShapes (double smoothElevationThreshold=-1)
 Computes the shapes of all edges stored in the container. More...
 
void computeLaneShapes ()
 Computes the shapes of all lanes of all edges stored in the container. More...
 
void clearControllingTLInformation () const
 Clears information about controlling traffic lights for all connenections of all edges. More...
 
void joinSameNodeConnectingEdges (NBDistrictCont &dc, NBTrafficLightLogicCont &tlc, EdgeVector edges)
 Joins the given edges because they connect the same nodes. More...
 
void guessOpposites ()
 Sets opposite lane information for geometrically close edges. More...
 
void recheckLaneSpread ()
 Rechecks whether the lane spread is proper. More...
 
Connections handling
void addPostProcessConnection (const std::string &from, int fromLane, const std::string &to, int toLane, bool mayDefinitelyPass, KeepClear keepClear, double contPos, double visibility, double speed, double friction, double length, const PositionVector &customShape, bool uncontrolled, bool warnOnly, SVCPermissions permissions=SVC_UNSPECIFIED, bool indirectLeft=false, const std::string &edgeType="", SVCPermissions changeLeft=SVC_UNSPECIFIED, SVCPermissions changeRight=SVC_UNSPECIFIED)
 Adds a connection which could not be set during loading. More...
 
bool hasPostProcessConnection (const std::string &from, const std::string &to="")
 add post process connections More...
 
void recheckPostProcessConnections ()
 Try to set any stored connections. More...
 

Private Types

typedef std::map< std::string, NBEdge * > EdgeCont
 The type of the dictionary where an edge may be found by its id. More...
 

Private Member Functions

 NBEdgeCont (const NBEdgeCont &s)=delete
 invalidated copy constructor More...
 
NBEdgeContoperator= (const NBEdgeCont &s)=delete
 invalidated assignment operator More...
 
void removeRoundaboutEdges (const EdgeSet &toRemove, std::set< EdgeSet > &roundabouts)
 remove roundabout edges More...
 

Static Private Member Functions

static double formFactor (const EdgeVector &loopEdges)
 compute the form factor for a loop of edges More...
 

Private Attributes

std::map< std::string, std::vector< PostProcessConnection > > myConnections
 The list of connections to recheck. More...
 
std::set< NBEdge * > myEdgeCemetery
 The edges which got extracted twice but may still be referenced somewhere TODO smart_ptr? More...
 
EdgeCont myEdges
 The instance of the dictionary (id->edge) More...
 
std::map< const NBEdge *, std::pair< NBEdge *, NBEdge * > > myEdgesSplit
 the number of splits of edges during the building More...
 
EdgeCont myExtractedEdges
 The extracted edges which are kept for reference. More...
 
std::set< EdgeSetmyGuessedRoundabouts
 Edges marked as belonging to a roundabout after guessing. More...
 
std::set< std::string > myIgnoredEdges
 The ids of ignored edges. More...
 
std::set< EdgeSetmyRoundabouts
 Edges marked as belonging to a roundabout by the user (each EdgeVector is a roundabout) More...
 
NBTypeContmyTypeCont
 The network builder; used to obtain type information. More...
 
std::set< const NBEdge * > myWasSplit
 the edges that were created as result of splitting More...
 
Settings for accepting/dismissing edges
double myEdgesMinSpeed
 The minimum speed an edge may have in order to be kept (default: -1) More...
 
bool myRemoveEdgesAfterLoading
 Whether edges shall be joined and patched first, then removed. More...
 
std::set< std::string > myEdges2Keep
 Set of ids of edges which shall explicitly be kept. More...
 
std::set< std::string > myEdges2Remove
 Set of ids of edges which shall explicitly be removed. More...
 
SVCPermissions myVehicleClasses2Keep
 Set of vehicle types which must be allowed on edges in order to keep them. More...
 
SVCPermissions myVehicleClasses2Remove
 Set of vehicle types which need not be supported (edges which allow ONLY these are removed) More...
 
std::set< std::string > myTypes2Keep
 Set of edges types which shall be kept. More...
 
std::set< std::string > myTypes2Remove
 Set of edges types which shall be removed. More...
 
PositionVector myPruningBoundary
 Boundary within which an edge must be located in order to be kept. More...
 
bool myNeedGeoTransformedPruningBoundary
 whether a geo transform has been applied to the pruning boundary More...
 

Detailed Description

Storage for edges, including some functionality operating on multiple edges.

Definition at line 59 of file NBEdgeCont.h.

Member Typedef Documentation

◆ EdgeCont

typedef std::map<std::string, NBEdge*> NBEdgeCont::EdgeCont
private

The type of the dictionary where an edge may be found by its id.

Definition at line 730 of file NBEdgeCont.h.

Constructor & Destructor Documentation

◆ NBEdgeCont() [1/2]

NBEdgeCont::NBEdgeCont ( NBTypeCont tc)

Constructor.

Parameters
[in]tcThe net builded; used to obtain types

Definition at line 64 of file NBEdgeCont.cpp.

◆ ~NBEdgeCont()

NBEdgeCont::~NBEdgeCont ( )

Destructor.

Definition at line 72 of file NBEdgeCont.cpp.

References clear().

◆ NBEdgeCont() [2/2]

NBEdgeCont::NBEdgeCont ( const NBEdgeCont s)
privatedelete

invalidated copy constructor

Member Function Documentation

◆ addPostProcessConnection()

void NBEdgeCont::addPostProcessConnection ( const std::string &  from,
int  fromLane,
const std::string &  to,
int  toLane,
bool  mayDefinitelyPass,
KeepClear  keepClear,
double  contPos,
double  visibility,
double  speed,
double  friction,
double  length,
const PositionVector customShape,
bool  uncontrolled,
bool  warnOnly,
SVCPermissions  permissions = SVC_UNSPECIFIED,
bool  indirectLeft = false,
const std::string &  edgeType = "",
SVCPermissions  changeLeft = SVC_UNSPECIFIED,
SVCPermissions  changeRight = SVC_UNSPECIFIED 
)

Adds a connection which could not be set during loading.

Parameters
[in]fromThe id of the edge the connection starts at
[in]fromLaneThe number of the lane the connection starts at
[in]toThe id of the edge the connection ends at
[in]toLaneThe number of the lane the connection ends at
[in]mayDefinitelyPassWhether the connection may be passed without braking
[in]keepClearWhether the connection must check to keep the junction clear
[in]contPosCustom position for internal junction
[in]visibilityCustom foe visiblity connection
[in]speedCustom speed
[in]frictionCustom friction
[in]customShapeCustom shape
[in]warnOnlyWhether a failure to set this connection should only result in a warning

Definition at line 1167 of file NBEdgeCont.cpp.

References myConnections.

Referenced by NIXMLConnectionsHandler::parseLaneBound().

Here is the caller graph for this function:

◆ addPrefix()

void NBEdgeCont::addPrefix ( const std::string &  prefix)

add prefix to all edges

Definition at line 1717 of file NBEdgeCont.cpp.

References myEdges.

Referenced by GNELoadThread::run().

Here is the caller graph for this function:

◆ addRoundabout()

void NBEdgeCont::addRoundabout ( const EdgeSet roundabout)

add user specified roundabout

Definition at line 1549 of file NBEdgeCont.cpp.

References myRoundabouts, toString(), and WRITE_WARNING.

Referenced by NIImporter_SUMO::_loadNetwork(), NIXMLEdgesHandler::addRoundabout(), and extractRoundabouts().

Here is the caller graph for this function:

◆ appendRailwayTurnarounds()

void NBEdgeCont::appendRailwayTurnarounds ( const NBPTStopCont sc)

Appends turnarounds to all bidiRail edges with stops.

Definition at line 977 of file NBEdgeCont.cpp.

References NBEdge::getID(), NBEdge::getNumLanes(), NBPTStopCont::getStops(), NBEdge::getTurnDestination(), NBEdge::isBidiRail(), KEEPCLEAR_UNSPECIFIED, myEdges, NBEdge::setConnection(), SUMO_const_haltingSpeed, NBEdge::UNSPECIFIED_CONTPOS, NBEdge::UNSPECIFIED_VISIBILITY_DISTANCE, and NBEdge::VALIDATED.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ appendTurnarounds() [1/2]

void NBEdgeCont::appendTurnarounds ( bool  noTLSControlled,
bool  noFringe,
bool  onlyDeadends,
bool  onlyTurnlane,
bool  noGeometryLike 
)

Appends turnarounds to all edges stored in the container.

Calls "NBEdge::appendTurnaround" for all edges within the container.

Parameters
[in]noTLSControlledWhether the turnaround shall not be connected if the edge is controlled by a tls
[in]noFringeWhether the turnaround shall not be connected if the junction is at the (outer) fringe
[in]onlyDeadendsWhether the turnaround shall only be built at deadends
[in]onlyTurnlaneWhether the turnaround shall only be built when there is an exclusive (left) turn lane
[in]noGeometryLikeWhether the turnaround shall be built at geometry-like nodes
See also
NBEdge::appendTurnaround

Definition at line 961 of file NBEdgeCont.cpp.

References myEdges.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ appendTurnarounds() [2/2]

void NBEdgeCont::appendTurnarounds ( const std::set< std::string > &  ids,
bool  noTLSControlled 
)

Appends turnarounds to all edges stored in the container Calls "NBEdge::appendTurnaround" for edges with the given ids.

Parameters
[in]idsThe list of ids for which to append a turnaround
[in]noTLSControlledWhether the turnaround shall not be connected if the edge is controlled by a tls
See also
NBEdge::appendTurnaround

Definition at line 969 of file NBEdgeCont.cpp.

References myEdges.

◆ applyOptions()

void NBEdgeCont::applyOptions ( OptionsCont oc)

Initialises the storage by applying given options.

Options, mainly steering the acceptance of edges, are parsed and the according internal variables are set.

Parameters
[in]ocThe options container to read options from
Todo:
Recheck exceptions

Definition at line 78 of file NBEdgeCont.cpp.

References OptionsCont::exists(), OptionsCont::getBool(), OptionsCont::getFloat(), OptionsCont::getString(), OptionsCont::getStringVector(), OptionsCont::getValueString(), OptionsCont::isSet(), NBHelpers::loadEdgesFromFile(), myEdges2Keep, myEdges2Remove, myEdgesMinSpeed, myNeedGeoTransformedPruningBoundary, myPruningBoundary, myRemoveEdgesAfterLoading, myTypes2Keep, myTypes2Remove, myVehicleClasses2Keep, myVehicleClasses2Remove, GeomConvHelper::parseShapeReporting(), parseVehicleClasses(), TL, and StringUtils::toDouble().

Referenced by NBNetBuilder::applyOptions().

Here is the caller graph for this function:

◆ begin()

std::map<std::string, NBEdge*>::const_iterator NBEdgeCont::begin ( ) const
inline

◆ checkConsistency()

bool NBEdgeCont::checkConsistency ( const NBNodeCont nc)

ensure that all edges have valid nodes

Definition at line 2119 of file NBEdgeCont.cpp.

References NBEdge::getFromNode(), NBEdge::getID(), Named::getID(), NBEdge::getToNode(), myEdges, NBNodeCont::retrieve(), TL, and WRITE_ERRORF.

Referenced by NILoader::load().

Here is the caller graph for this function:

◆ checkGeometries()

void NBEdgeCont::checkGeometries ( const double  maxAngle,
const double  minRadius,
bool  fix,
bool  fixRailways,
bool  silent = false 
)
Parameters
[in]maxAngleThe maximum geometry angle allowed
[in]minRadiusThe minimum turning radius allowed at the start and end
[in]fixWhether to prune geometry points to avoid sharp turns at start and end
See also
NBEdge::checkGeometry

Definition at line 821 of file NBEdgeCont.cpp.

References isForbidden(), isRailway(), isSidewalk(), and myEdges.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ checkGrade()

void NBEdgeCont::checkGrade ( double  threshold) const

check whether edges are to steep

Definition at line 1831 of file NBEdgeCont.cpp.

References NBEdge::getConnections(), NBEdge::Connection::getDescription(), NBEdge::getID(), NBEdge::getLaneShape(), PositionVector::getMaxGrade(), NBEdge::getNumLanes(), MAX2(), myEdges, NBEdge::Connection::shape, TL, NBEdge::Connection::viaShape, and WRITE_WARNINGF.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ checkOverlap()

void NBEdgeCont::checkOverlap ( double  threshold,
double  zThreshold 
) const

check whether edges overlap

Definition at line 1802 of file NBEdgeCont.cpp.

References PositionVector::append(), PositionVector::getBoxBoundary(), NBEdge::getCCWBoundaryLine(), NBEdge::getFromNode(), NBEdge::getGeometry(), NBEdge::getID(), PositionVector::getOverlapWith(), NBEdge::getToNode(), NBEdge::getTotalWidth(), Boundary::grow(), myEdges, Boundary::overlapsWith(), TL, and WRITE_WARNINGF.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ clear()

void NBEdgeCont::clear ( )

Deletes all edges.

Definition at line 163 of file NBEdgeCont.cpp.

References myEdgeCemetery, myEdges, and myExtractedEdges.

Referenced by ~NBEdgeCont().

Here is the caller graph for this function:

◆ clearControllingTLInformation()

void NBEdgeCont::clearControllingTLInformation ( ) const

Clears information about controlling traffic lights for all connenections of all edges.

Definition at line 835 of file NBEdgeCont.cpp.

References myEdges.

Referenced by NBTrafficLightLogicCont::setTLControllingInformation().

Here is the caller graph for this function:

◆ computeAngles()

void NBEdgeCont::computeAngles ( )

compute all edge angles

Definition at line 2159 of file NBEdgeCont.cpp.

References myEdges.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ computeEdge2Edges()

void NBEdgeCont::computeEdge2Edges ( bool  noLeftMovers)

Computes for each edge the approached edges.

Calls "NBEdge::computeEdge2Edges" for all edges within the container.

Parameters
[in]noLeftMoversWhether left-moving connections shall be omitted
Todo:
Recheck whether a visitor-pattern should be used herefor
See also
NBEdge::computeEdge2Edges

Definition at line 851 of file NBEdgeCont.cpp.

References myEdges.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ computeEdgeShapes()

void NBEdgeCont::computeEdgeShapes ( double  smoothElevationThreshold = -1)

Computes the shapes of all edges stored in the container.

Calls "NBEdge::computeEdgeShape" for all edges within the container.

Todo:

Recheck whether a visitor-pattern should be used herefor

Recheck usage

See also
NBEdge::computeEdgeShape

Definition at line 999 of file NBEdgeCont.cpp.

References NBEdge::getLaneID(), NBEdge::getLanes(), NBEdge::getLength(), NBEdge::getNumLanes(), myEdges, retrieve(), and NBEdge::setAverageLengthWithOpposite().

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ computeLanes2Edges()

void NBEdgeCont::computeLanes2Edges ( )

Computes for each edge which lanes approach the next edges.

Calls "NBEdge::computeLanes2Edges" for all edges within the container.

Todo:
Recheck whether a visitor-pattern should be used herefor
See also
NBEdge::computeLanes2Edges

Definition at line 859 of file NBEdgeCont.cpp.

References myEdges.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ computeLaneShapes()

void NBEdgeCont::computeLaneShapes ( )

Computes the shapes of all lanes of all edges stored in the container.

Calls "NBEdge::computeLaneShapes" for all edges within the container.

Todo:

Recheck whether a visitor-pattern should be used herefor

Recheck usage

See also
NBEdge::computeLaneShapes

Definition at line 1023 of file NBEdgeCont.cpp.

References myEdges.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ end()

std::map<std::string, NBEdge*>::const_iterator NBEdgeCont::end ( ) const
inline

◆ erase()

void NBEdgeCont::erase ( NBDistrictCont dc,
NBEdge edge 
)

Removes the given edge from the container (deleting it)

Parameters
[in]dcThe district container, in order to remove the edge from sources/sinks
[in]edgeThe edge to remove
Todo:
Recheck whether the district cont is needed - if districts are processed using an external tool

Definition at line 411 of file NBEdgeCont.cpp.

References extract().

Referenced by NIImporter_SUMO::_loadNetwork(), NIXMLEdgesHandler::addEdge(), NBNodeCont::removeComponents(), NBNodeCont::removeIsolatedRoads(), NBNodeCont::removeRailComponents(), NBNode::removeSelfLoops(), and removeUnwishedEdges().

Here is the caller graph for this function:

◆ extract()

void NBEdgeCont::extract ( NBDistrictCont dc,
NBEdge edge,
bool  remember = false 
)

Removes the given edge from the container like erase but does not delete it.

Parameters
[in]dcThe district container, in order to remove the edge from sources/sinks
[in]edgeThe edge to remove
[in]rememberWhether to keep this edge for future reference
Todo:

Recheck whether the district cont is needed - if districts are processed using an external tool

Recheck whether this is used at all and why

Definition at line 418 of file NBEdgeCont.cpp.

References NBEdge::getID(), myEdgeCemetery, myEdges, myExtractedEdges, NBEdge::myFrom, NBEdge::myTo, NBNode::removeEdge(), and NBDistrictCont::removeFromSinksAndSources().

Referenced by NIXMLEdgesHandler::deleteEdge(), erase(), NBNodeCont::joinNodeCluster(), joinSameNodeConnectingEdges(), NBNodeCont::joinSimilarEdges(), joinTramEdges(), removeEdgesByPermissions(), removeEdgesBySpeed(), NBNodeCont::removeUnwishedNodes(), and splitAt().

Here is the caller graph for this function:

◆ extractRoundabouts()

int NBEdgeCont::extractRoundabouts ( )

Determines which edges have been marked as roundabouts and stores them internally.

Returns
The number of found roundabouts

Definition at line 1482 of file NBEdgeCont.cpp.

References addRoundabout(), NBEdge::getFromNode(), NBEdge::getJunctionPriority(), NBNode::getOutgoingEdges(), NBEdge::getToNode(), and myEdges.

Referenced by NIImporter_OpenStreetMap::load().

Here is the caller graph for this function:

◆ fixSplitCustomLength()

void NBEdgeCont::fixSplitCustomLength ( )

adapt custom lengths of split edges to account for intersection size

Definition at line 2138 of file NBEdgeCont.cpp.

References NBEdge::getConnections(), NBEdge::getIncomingEdges(), NBEdge::getLoadedLength(), NBEdge::hasLoadedLength(), MAX2(), myEdges, myWasSplit, and NBEdge::setLoadedLength().

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ formFactor()

double NBEdgeCont::formFactor ( const EdgeVector loopEdges)
staticprivate

compute the form factor for a loop of edges

Definition at line 1529 of file NBEdgeCont.cpp.

References PositionVector::append(), PositionVector::area(), PositionVector::length2D(), and M_PI.

Referenced by guessRoundabouts().

Here is the caller graph for this function:

◆ generateStreetSigns()

void NBEdgeCont::generateStreetSigns ( )

assigns street signs to edges based on toNode types

Definition at line 1631 of file NBEdgeCont.cpp.

References NBEdge::addSign(), ALLWAY_STOP, NBEdge::getJunctionPriority(), NBEdge::getLength(), NBEdge::getToNode(), NBNode::getType(), NBNode::isSimpleContinuation(), LEFT_BEFORE_RIGHT, MAX2(), myEdges, PRIORITY, PRIORITY_STOP, RIGHT_BEFORE_LEFT, NBSign::SIGN_TYPE_ALLWAY_STOP, NBSign::SIGN_TYPE_LEFT_BEFORE_RIGHT, NBSign::SIGN_TYPE_PRIORITY, NBSign::SIGN_TYPE_RIGHT_BEFORE_LEFT, NBSign::SIGN_TYPE_STOP, and NBSign::SIGN_TYPE_YIELD.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ getAllEdges()

EdgeVector NBEdgeCont::getAllEdges ( ) const

return all edges

Definition at line 2103 of file NBEdgeCont.cpp.

References myEdges.

Referenced by NBRailwayTopologyAnalyzer::addBidiEdgesForStops(), NBRailwayTopologyAnalyzer::extendDirectionPriority(), getAllRouterEdges(), GNEViewNet::getEdgeLaneParamKeys(), and NBRailwayTopologyAnalyzer::makeAllBidi().

Here is the caller graph for this function:

◆ getAllNames()

std::vector< std::string > NBEdgeCont::getAllNames ( ) const

Returns all ids of known edges.

Returns
All ids of known edges
Todo:
Recheck usage, probably, filling a given vector would be better...

Definition at line 758 of file NBEdgeCont.cpp.

References myEdges.

Referenced by GNENet::initJunctionsAndEdges(), remapIDs(), NBNodeCont::removeIsolatedRoads(), NWWriter_DlrNavteq::writeNodesUnsplitted(), and NWWriter_DlrNavteq::writeProhibitedManoeuvres().

Here is the caller graph for this function:

◆ getAllRouterEdges()

RouterEdgeVector NBEdgeCont::getAllRouterEdges ( ) const

return all router edges

Definition at line 2113 of file NBEdgeCont.cpp.

References getAllEdges().

Referenced by NBPTLineCont::fixBidiStops(), and GNEPathManager::PathCalculator::PathCalculator().

Here is the caller graph for this function:

◆ getByID()

NBEdge * NBEdgeCont::getByID ( const std::string &  edgeID) const

◆ getGeneratedFrom()

EdgeVector NBEdgeCont::getGeneratedFrom ( const std::string &  id) const

Returns the edges which have been built by splitting the edge of the given id.

Parameters
[in]idThe id of the original edge
Returns
List of all edges which have been built by splitting the original edge
Todo:
Recheck usage

Definition at line 1234 of file NBEdgeCont.cpp.

References myEdges.

Referenced by retrievePossiblySplit().

Here is the caller graph for this function:

◆ getNumEdgeSplits()

int NBEdgeCont::getNumEdgeSplits ( ) const
inline

Returns the number of edge splits.

Returns
How often an edge was split

Definition at line 311 of file NBEdgeCont.h.

References myEdgesSplit.

Referenced by NBNetBuilder::compute(), and NILoader::load().

Here is the caller graph for this function:

◆ getOppositeByID()

NBEdge * NBEdgeCont::getOppositeByID ( const std::string &  edgeID) const

Returns the edge with negated id if it exists.

Definition at line 1153 of file NBEdgeCont.cpp.

References myEdges.

Referenced by recheckLaneSpread(), and NWWriter_DlrNavteq::writeNodesUnsplitted().

Here is the caller graph for this function:

◆ getRoundabouts()

const std::set< EdgeSet > NBEdgeCont::getRoundabouts ( ) const

Returns the determined roundabouts.

Returns
The list of roundabout edges

Definition at line 1541 of file NBEdgeCont.cpp.

References myGuessedRoundabouts, and myRoundabouts.

Referenced by NBNetBuilder::compute(), NBNodeCont::computeLogics2(), NBRampsComputer::computeRamps(), markRoundabouts(), GNENet::selectRoundabout(), NWWriter_XML::writeEdgesAndConnections(), NWWriter_Amitran::writeNetwork(), and NWWriter_SUMO::writeNetwork().

Here is the caller graph for this function:

◆ getSplit()

const std::pair<NBEdge*, NBEdge*>* NBEdgeCont::getSplit ( const NBEdge *const  origEdge) const
inline

Returns the edge split if the edge has been split, nullptr otherwise.

Returns
the pair of edges after the split

Definition at line 300 of file NBEdgeCont.h.

References myEdgesSplit, and split().

Referenced by NBPTLine::removeInvalidEdges().

Here is the caller graph for this function:

◆ getUsedTypes()

std::set< std::string > NBEdgeCont::getUsedTypes ( ) const

return all edge types in used

Definition at line 2167 of file NBEdgeCont.cpp.

References myEdges.

Referenced by NWWriter_SUMO::writeNetwork(), and NWWriter_XML::writeTypes().

Here is the caller graph for this function:

◆ guessOpposites()

void NBEdgeCont::guessOpposites ( )

Sets opposite lane information for geometrically close edges.

Definition at line 1129 of file NBEdgeCont.cpp.

References NBEdge::guessOpposite(), and myEdges.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ guessRoundabouts()

int NBEdgeCont::guessRoundabouts ( )

Determines which edges belong to roundabouts and increases their priority.

Returns
The number of guessed roundabouts

Definition at line 1276 of file NBEdgeCont.cpp.

References DEBUG_EDGE_ID, formFactor(), gDebugFlag1, NBEdge::getAngleAtNode(), NBNode::getConnectionTo(), NBNode::getEdges(), NBEdge::getFromNode(), NBEdge::getID(), Named::getIDSecure(), NBEdge::getLaneShape(), NBEdge::getLength(), OptionsCont::getOptions(), NBEdge::getPermissions(), NBEdge::getToNode(), NBEdge::getTurnDestination(), NBNode::getType(), LEFT_BEFORE_RIGHT, MAX2(), myEdges, myGuessedRoundabouts, myRoundabouts, NBContHelper::nextCW(), NBHelpers::relAngle(), RIGHT_BEFORE_LEFT, SVC_PEDESTRIAN, SVCAll, TL, toString(), NBNode::typeWasGuessed(), and WRITE_WARNINGF.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ guessSpecialLanes()

int NBEdgeCont::guessSpecialLanes ( SUMOVehicleClass  svc,
double  width,
double  minSpeed,
double  maxSpeed,
bool  fromPermissions,
const std::string &  excludeOpt,
NBTrafficLightLogicCont tlc 
)

add sidwalks to edges within the given limits or permissions and return the number of edges affected

Definition at line 1674 of file NBEdgeCont.cpp.

References NBEdge::addRestrictedLane(), NBEdge::getFromNode(), NBEdge::getID(), OptionsCont::getOptions(), NBEdge::getPermissions(), NBEdge::getSpeed(), OptionsCont::getStringVector(), NBEdge::getToNode(), NBEdge::hasRestrictedLane(), NBEdge::invalidateConnections(), NBNode::invalidateOutgoingConnections(), NBNode::invalidateTLS(), myEdges, and SVC_PEDESTRIAN.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ hasGuessedRoundabouts()

bool NBEdgeCont::hasGuessedRoundabouts ( ) const
inline

check if there is guessed roundabouts

Definition at line 543 of file NBEdgeCont.h.

References myGuessedRoundabouts.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ hasPostProcessConnection()

bool NBEdgeCont::hasPostProcessConnection ( const std::string &  from,
const std::string &  to = "" 
)

add post process connections

Definition at line 1176 of file NBEdgeCont.cpp.

References myConnections.

Referenced by NBRampsComputer::buildOffRamp(), NBRampsComputer::buildOnRamp(), and NBNodeCont::joinNodeCluster().

Here is the caller graph for this function:

◆ ignore()

void NBEdgeCont::ignore ( std::string  id)
inline

mark the given edge id as ignored

Definition at line 482 of file NBEdgeCont.h.

References myIgnoredEdges.

Referenced by NIImporter_SUMO::_loadNetwork().

Here is the caller graph for this function:

◆ ignoreFilterMatch()

◆ insert()

bool NBEdgeCont::insert ( NBEdge edge,
bool  ignorePrunning = false 
)

Adds an edge to the dictionary.

First, it is determined whether the edge shall not be discarded due to any reasons (being outside a boundary, or not in the optional list of edges to import, etc.). If so, the edge is deleted and "true" is returned. "true" is also returned if the edge is accepted - no edge with the same name exists within this container. If another edge with the same name exists, false is returned.

Parameters
[in]edgeThe edge to add
[in]ignorePrunningWhether this edge must not be prunned
Returns
Whether the edge was valid (no edge with the same id is already known)

Definition at line 182 of file NBEdgeCont.cpp.

References NBEdge::dismissVehicleClassInformation(), OptionsCont::exists(), OptionsCont::getBool(), NBEdge::getFromNode(), NBEdge::getID(), OptionsCont::getOptions(), NBEdge::getToNode(), ignoreFilterMatch(), myEdges, myIgnoredEdges, and NBNode::removeEdge().

Referenced by NIImporter_SUMO::_loadNetwork(), NBRailwayTopologyAnalyzer::addBidiEdge(), NIVissimEdge::buildNBEdge(), NIVissimDistrictConnection::dict_BuildDistricts(), NIImporter_OpenStreetMap::insertEdge(), joinSameNodeConnectingEdges(), NIImporter_ArcView::load(), NIImporter_OpenDrive::loadNetwork(), NIXMLEdgesHandler::myEndElement(), NIImporter_VISUM::parse_Connectors_legacy(), NIImporter_VISUM::parse_Edges(), splitAt(), and NGNet::toNB().

Here is the caller graph for this function:

◆ joinLanes()

int NBEdgeCont::joinLanes ( SVCPermissions  perms)

join adjacent lanes with the given permissions

Definition at line 1861 of file NBEdgeCont.cpp.

References myEdges.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ joinSameNodeConnectingEdges()

void NBEdgeCont::joinSameNodeConnectingEdges ( NBDistrictCont dc,
NBTrafficLightLogicCont tlc,
EdgeVector  edges 
)

Joins the given edges because they connect the same nodes.

Parameters
[in]dcThe district container needed to remove edges
[in]tlcThe tls container needed to remove edges
[in]edgesThe edges to join
Todo:
Recheck and describe usage

Definition at line 1031 of file NBEdgeCont.cpp.

References NBEdge::addEdge2EdgeConnection(), extract(), NBEdge::getFromNode(), NBEdge::getStreetName(), NBEdge::getToNode(), insert(), NBEdge::moveOutgoingConnectionsFrom(), NBEdge::myLaneSpreadFunction, NBNode::replaceIncoming(), NBNode::replaceOutgoing(), NBTrafficLightLogicCont::replaceRemoved(), NBEdge::setEndOffset(), NBEdge::setLaneWidth(), NBEdge::setPermissions(), NBEdge::UNSPECIFIED_FRICTION, NBEdge::UNSPECIFIED_OFFSET, and NBEdge::UNSPECIFIED_WIDTH.

Referenced by NBNodeCont::joinSimilarEdges().

Here is the caller graph for this function:

◆ joinTramEdges()

◆ markRoundabouts()

void NBEdgeCont::markRoundabouts ( )

mark edge priorities and prohibit turn-arounds for all roundabout edges

Definition at line 1592 of file NBEdgeCont.cpp.

References NBNode::getIncomingEdges(), getRoundabouts(), NBEdge::LANES2LANES_USER, NBHelpers::normRelAngle(), and NBNode::setRoundabout().

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ operator=()

NBEdgeCont& NBEdgeCont::operator= ( const NBEdgeCont s)
privatedelete

invalidated assignment operator

◆ patchRoundabouts()

void NBEdgeCont::patchRoundabouts ( NBEdge orig,
NBEdge part1,
NBEdge part2,
std::set< EdgeSet > &  roundabouts 
)

fix roundabout information after splitting an edge

Definition at line 740 of file NBEdgeCont.cpp.

Referenced by splitAt().

Here is the caller graph for this function:

◆ processSplits()

◆ recheckLanes()

void NBEdgeCont::recheckLanes ( )

Rechecks whether all lanes have a successor for each of the stored edges.

Calls "NBEdge::recheckLanes" for all edges within the container.

Todo:
Recheck whether a visitor-pattern should be used herefor
See also
NBEdge::recheckLanes

Definition at line 867 of file NBEdgeCont.cpp.

References NBEdge::getBidiEdge(), OptionsCont::getBool(), NBEdge::getEndOffset(), NBEdge::getFinalLength(), NBEdge::getFromNode(), NBEdge::getID(), NBEdge::getLaneID(), NBEdge::getLanes(), NBEdge::getLaneStruct(), NBEdge::getLength(), NBEdge::getLoadedLength(), NBEdge::getNumLanes(), OptionsCont::getOptions(), NBEdge::getToNode(), NBEdge::getTurnDestination(), NBEdge::isBidiRail(), myEdges, NBEdge::Lane::oppositeID, NBEdge::recheckLanes(), retrieve(), PositionVector::reverse(), NBEdge::setLoadedLength(), NBEdge::Lane::shape, TL, TLF, toString(), WRITE_ERROR, WRITE_ERRORF, and WRITE_WARNINGF.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ recheckLaneSpread()

void NBEdgeCont::recheckLaneSpread ( )

Rechecks whether the lane spread is proper.

Todo:
Recheck usage; check whether this is really needed and whether it works at all

Definition at line 1139 of file NBEdgeCont.cpp.

References CENTER, getOppositeByID(), myEdges, RIGHT, and NBEdge::setLaneSpreadFunction().

Referenced by NIImporter_DlrNavteq::loadNetwork().

Here is the caller graph for this function:

◆ recheckPostProcessConnections()

void NBEdgeCont::recheckPostProcessConnections ( )

Try to set any stored connections.

Definition at line 1194 of file NBEdgeCont.cpp.

References NBEdge::addLane2LaneConnection(), OptionsCont::exists(), OptionsCont::getBool(), NBEdge::getConnections(), NBEdge::getFromNode(), NBEdge::getID(), Named::getID(), OptionsCont::getOptions(), NBEdge::getToNode(), myConnections, myEdges, NBEdge::removeFromConnections(), retrievePossiblySplit(), NBEdge::Connection::toEdge, NBEdge::USER, WRITE_ERROR, and WRITE_WARNING.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ reduceGeometries()

void NBEdgeCont::reduceGeometries ( const double  minDist)
Parameters
[in]ncThe node container needed to build (geometry) nodes
See also
NBEdge::reduceGeometry

Definition at line 813 of file NBEdgeCont.cpp.

References myEdges.

Referenced by NBNetBuilder::compute(), and NIImporter_VISUM::load().

Here is the caller graph for this function:

◆ remapIDs()

int NBEdgeCont::remapIDs ( bool  numericaIDs,
bool  reservedIDs,
const std::string &  prefix,
NBPTStopCont sc 
)

remap node IDs accoring to options –numerical-ids and –reserved-ids

Definition at line 1729 of file NBEdgeCont.cpp.

References getAllNames(), OptionsCont::getBool(), IDSupplier::getNext(), OptionsCont::getOptions(), NBPTStopCont::getStops(), OptionsCont::isDefault(), NBHelpers::loadPrefixedIDsFomFile(), myEdges, rename(), StringUtils::startsWith(), StringUtils::toLong(), and toString().

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ removeEdgesByPermissions()

int NBEdgeCont::removeEdgesByPermissions ( NBDistrictCont dc)

Definition at line 2200 of file NBEdgeCont.cpp.

References extract(), NBEdge::getPermissions(), myEdges, myEdges2Keep, myVehicleClasses2Keep, and myVehicleClasses2Remove.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ removeEdgesBySpeed()

int NBEdgeCont::removeEdgesBySpeed ( NBDistrictCont dc)

return number of edges removed

Definition at line 2179 of file NBEdgeCont.cpp.

References extract(), NBEdge::getSpeed(), myEdges, myEdges2Keep, and myEdgesMinSpeed.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ removeRoundabout()

void NBEdgeCont::removeRoundabout ( const NBNode node)

remove roundabout that contains the given node

Definition at line 1560 of file NBEdgeCont.cpp.

References myRoundabouts.

Referenced by NIXMLNodesHandler::processNodeType(), and GNEJunction::setAttribute().

Here is the caller graph for this function:

◆ removeRoundaboutEdges() [1/2]

void NBEdgeCont::removeRoundaboutEdges ( const EdgeSet toRemove)

remove edges from all stored roundabouts

Definition at line 1572 of file NBEdgeCont.cpp.

References myGuessedRoundabouts, and myRoundabouts.

Referenced by NBNodeCont::removeComponents().

Here is the caller graph for this function:

◆ removeRoundaboutEdges() [2/2]

void NBEdgeCont::removeRoundaboutEdges ( const EdgeSet toRemove,
std::set< EdgeSet > &  roundabouts 
)
private

remove roundabout edges

Definition at line 1578 of file NBEdgeCont.cpp.

◆ removeUnwishedEdges()

void NBEdgeCont::removeUnwishedEdges ( NBDistrictCont dc)

Removes unwished edges (not in keep-edges)

Parameters
[in,opt.changed] dc The district container needed to remove edges
Todo:
Recheck usage; check whether keep-edges.postload is really useful

Definition at line 769 of file NBEdgeCont.cpp.

References erase(), NBEdge::getFromNode(), NBEdge::getID(), NBEdge::getToNode(), myEdges, myEdges2Keep, and NBNode::removeEdge().

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ rename()

void NBEdgeCont::rename ( NBEdge edge,
const std::string &  newID 
)

Renames the edge. Throws exception if newID already exists.

Definition at line 438 of file NBEdgeCont.cpp.

References SUMOXMLDefinitions::getEdgeIDFromLane(), NBEdge::getID(), NBEdge::getLaneID(), NBEdge::getLanes(), NBEdge::getLaneStruct(), NBEdge::getNumLanes(), myEdges, NBEdge::Lane::oppositeID, retrieve(), Named::setID(), and TLF.

Referenced by remapIDs().

Here is the caller graph for this function:

◆ retrieve()

NBEdge * NBEdgeCont::retrieve ( const std::string &  id,
bool  retrieveExtracted = false 
) const

Returns the edge that has the given id.

If no edge that has the given id is known, 0 is returned.

Parameters
[in]idThe id of the edge to retrieve
[in]boolWhether extracted edges shall be retrieved as well
Returns
The edge with the given id, 0 if no such edge exists

Definition at line 281 of file NBEdgeCont.cpp.

References myEdges, and myExtractedEdges.

Referenced by NIImporter_SUMO::_loadNetwork(), NIXMLPTHandler::addAccess(), NBRailwayTopologyAnalyzer::addBidiEdge(), NIXMLConnectionsHandler::addCrossing(), NIXMLEdgesHandler::addEdge(), NIXMLPTHandler::addPTLineRoute(), NIXMLPTHandler::addPTStop(), NIXMLEdgesHandler::addRoundabout(), NIXMLPTHandler::addRoute(), NIVissimDisturbance::addToNode(), NIXMLConnectionsHandler::addWalkingArea(), NIVissimEdge::buildNBEdge(), NBRampsComputer::buildOffRamp(), NBRampsComputer::buildOnRamp(), NBConnection::checkFrom(), NBConnection::checkTo(), computeEdgeShapes(), NBRampsComputer::computeRamps(), NBPTLineCont::constructRoute(), NIXMLEdgesHandler::deleteEdge(), NIVissimDistrictConnection::dict_BuildDistricts(), NIXMLShapeHandler::getLanePos(), NIImporter_VISUM::getNamedEdge(), NIImporter_VISUM::getNamedEdgeContinuating(), NWWriter_SUMO::getOppositeInternalID(), NIImporter_VISUM::getReversedContinuating(), NBPTLine::getRouteEnd(), NBPTLine::getRouteStart(), NBPTLine::getStopEdges(), NBRailwaySignalGuesser::guessByStops(), GNENet::initJunctionsAndEdges(), GNELane::isValid(), NBNodeCont::joinJunctions(), joinTramEdges(), NIImporter_ArcView::load(), NIImporter_OpenDrive::loadNetwork(), NBRailwayTopologyAnalyzer::makeAllBidi(), NWWriter_OpenDrive::mapmatchRoadObjects(), NIXMLConnectionsHandler::myStartElement(), NIImporter_VISUM::parse_Connectors_legacy(), NIImporter_VISUM::parse_Edges(), NIImporter_VISUM::parse_Lanes(), NIImporter_VISUM::parse_LanesConnections(), NIImporter_VISUM::parse_stopPoints(), NIImporter_VISUM::parse_TurnsToSignalGroups(), NIXMLConnectionsHandler::parseConnection(), processSplits(), recheckLanes(), NBPTLine::removeInvalidEdges(), NBNodeCont::removeIsolatedRoads(), NBNodeCont::removeRailComponents(), rename(), NIXMLTrafficLightsHandler::retrieveEdge(), retrievePossiblySplit(), NIImporter_OpenDrive::retrieveSignalEdges(), GNELane::setAttribute(), splitGeometry(), NBParking::write(), and NWWriter_SUMO::writeRoundabout().

◆ retrievePossiblySplit() [1/3]

NBEdge * NBEdgeCont::retrievePossiblySplit ( const std::string &  id,
bool  downstream 
) const

Tries to retrieve an edge, even if it is splitted.

The edge given with the id should exist and is followed downstream or upstream, depending on the parameter to the last edge still starting with the id.

Parameters
[in]idThe id of the edge to retrieve
[in]downstreamsearch direction
Returns
The searched edge
Todo:
Recheck usage

Definition at line 317 of file NBEdgeCont.cpp.

References retrieve().

Referenced by NIVissimTL::NIVissimTLSignal::addTo(), NIVissimDisturbance::addToNode(), NIVissimConnection::buildEdgeConnections(), NBConnection::checkFrom(), NBConnection::checkTo(), NIVissimDistrictConnection::dict_BuildDistricts(), recheckPostProcessConnections(), and NIVissimConflictArea::setPriorityRegulation().

Here is the caller graph for this function:

◆ retrievePossiblySplit() [2/3]

NBEdge * NBEdgeCont::retrievePossiblySplit ( const std::string &  id,
const std::string &  hint,
bool  incoming 
) const

Tries to retrieve an edge, even if it is splitted.

To describe which part of the edge shall be returned, the id of a second edge, participating at the node and the information whether to return the outgoing or the incoming is needed.

Parameters
[in]idThe id of the edge to retrieve
[in]hintAn additional information which helps to retrieve the correct edge
[in]incomingWhether the edge to find is an incoming edge at the node "hint" participates
Returns
The searched edge
Todo:
Recheck usage

Definition at line 336 of file NBEdgeCont.cpp.

References getGeneratedFrom(), NBNode::getIncomingEdges(), NBNode::getOutgoingEdges(), and retrieve().

◆ retrievePossiblySplit() [3/3]

NBEdge * NBEdgeCont::retrievePossiblySplit ( const std::string &  id,
double  pos 
) const

Tries to retrieve an edge, even if it is splitted.

To describe which part of the edge shall be returned, a position hint is supplied.

Parameters
[in]idThe id of the edge to retrieve
[in]posAn additional about the position of the basic edge's subpart
Returns
The searched edge
Todo:
Recheck usage

Definition at line 366 of file NBEdgeCont.cpp.

References NBEdge::getLength(), MAX2(), myEdges, and retrieve().

◆ size()

int NBEdgeCont::size ( ) const
inline

Returns the number of edges.

Returns
The number of edges stored in this container

Definition at line 287 of file NBEdgeCont.h.

References myEdges.

Referenced by NILoader::load(), and main().

Here is the caller graph for this function:

◆ sortOutgoingLanesConnections()

void NBEdgeCont::sortOutgoingLanesConnections ( )

Sorts all lanes of all edges within the container by their direction.

Calls "NBEdge::sortOutgoingLanesConnections" for all edges within the container.

Todo:
Recheck whether a visitor-pattern should be used herefor
See also
NBEdge::sortOutgoingLanesConnections

Definition at line 843 of file NBEdgeCont.cpp.

References myEdges.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ splitAt() [1/3]

bool NBEdgeCont::splitAt ( NBDistrictCont dc,
NBEdge edge,
double  edgepos,
NBNode node,
const std::string &  firstEdgeName,
const std::string &  secondEdgeName,
int  noLanesFirstEdge,
int  noLanesSecondEdge,
const double  speed = -1.,
const double  friction = 1.,
const int  changedLeft = 0 
)

Splits the edge at the position nearest to the given node using the given modifications.

Parameters
[in]dcThe district container, in order to remove/add the edge from/to sources/sinks
[in]edgeThe edge to split
[in]nodeThe node to split the edge at
[in]firstEdgeNameThe id the first part of the split edge shall have
[in]secondEdgeNameThe id the second part of the split edge shall have
[in]noLanesFirstEdgeThe number of lanes the second part of the split edge shall have
[in]noLanesSecondEdgeThe number of lanes the second part of the split edge shall have
[in]speedThe speed for the edge after the split
[in]changedLeftThe number of lanes that is added or removed on the left side of the edge (By default all added/removed lanes are assumed to be on the right when computing connections)
Returns
Whether the edge could be split
Exceptions
ProcessErrorIf connections between the edges can not be built

Definition at line 633 of file NBEdgeCont.cpp.

References NBEdge::addLane2LaneConnection(), NBEdge::COMPUTED, NBEdge::copyConnectionsFrom(), extract(), NBNode::getControllingTLS(), NBEdge::getDistance(), NBEdge::getGeometry(), NBEdge::getID(), NBEdge::getLaneStruct(), NBEdge::getLoadedLength(), NBEdge::getNumLanes(), OptionsCont::getOptions(), Parameterised::getParameter(), NBNode::getPosition(), NBEdge::hasLoadedLength(), insert(), NBEdge::isBidi(), PositionVector::length(), MAX2(), MIN2(), myEdges, myEdges2Keep, myEdges2Remove, myEdgesSplit, NBEdge::myFrom, myGuessedRoundabouts, myRemoveEdgesAfterLoading, myRoundabouts, NBEdge::myTo, myWasSplit, patchRoundabouts(), NBNode::removeDoubleEdges(), NBNode::replaceIncoming(), NBNode::replaceOutgoing(), NBEdge::setDistance(), NBEdge::setFriction(), NBEdge::setLoadedLength(), NBEdge::setOrigID(), NBEdge::setSpeed(), PositionVector::splitAt(), SUMO_PARAM_ORIGID, TL, and WRITE_ERRORF.

◆ splitAt() [2/3]

bool NBEdgeCont::splitAt ( NBDistrictCont dc,
NBEdge edge,
NBNode node 
)

Splits the edge at the position nearest to the given node.

Uses "splitAt(NBDistrictCont &, NBEdge *, NBNode *, const std::string &, const std::string &, int , int)" to perform the split; the edge names are built by appending "[0]" and "[1]", respectively. Both edges will have the same number of lanes.

Parameters
[in]dcThe district container, in order to remove/add the edge from/to sources/sinks
[in]edgeThe edge to split
[in]nodeThe node to split the edge at
Returns
Whether the edge could be split
Exceptions
ProcessErrorIf connections between the edges can not be built
See also
NBEdge::splitAt(NBDistrictCont &, NBEdge *, NBNode *, const std::string &, const std::string &, int , int)

Definition at line 604 of file NBEdgeCont.cpp.

References NBEdge::getID(), and NBEdge::myLanes.

Referenced by NIVissimDisturbance::addToNode(), NIVissimEdge::buildNBEdge(), NBRampsComputer::buildOffRamp(), NBRampsComputer::buildOnRamp(), joinTramEdges(), NIImporter_VISUM::parse_Lanes(), processSplits(), splitAt(), and splitGeometry().

Here is the caller graph for this function:

◆ splitAt() [3/3]

bool NBEdgeCont::splitAt ( NBDistrictCont dc,
NBEdge edge,
NBNode node,
const std::string &  firstEdgeName,
const std::string &  secondEdgeName,
int  noLanesFirstEdge,
int  noLanesSecondEdge,
const double  speed = -1.,
const double  friction = 1.,
const int  changedLeft = 0 
)

Splits the edge at the position nearest to the given node using the given modifications.

Determines the position of the split by finding the nearest position on the edge to the given node. If this position is too near to the edges begin/end, false is returned.

Otherwise, "splitAt(NBDistrictCont &, NBEdge *, double, NBNode *, const std::string &, const std::string &, int , int)" is used to perform the split.

Parameters
[in]nbThe net builder containing all nodes, edges etc.
[in]edgeThe edge to split
[in]nodeThe node to split the edge at
[in]firstEdgeNameThe id the first part of the split edge shall have
[in]secondEdgeNameThe id the second part of the split edge shall have
[in]noLanesFirstEdgeThe number of lanes the second part of the split edge shall have
[in]noLanesSecondEdgeThe number of lanes the second part of the split edge shall have
[in]speedThe speed for the edge after the split
[in]frictionThe friction for the edge after the split
[in]changedLeftThe number of lanes that is added or removed on the left side of the edge (By default all added/removed lanes are assumed to be on the right when computing connections)
Returns
Whether the edge could be split
Exceptions
ProcessErrorIf connections between the edges can not be built
See also
NBEdge::splitAt(NBDistrictCont &, NBEdge *, double, NBNode *, const std::string &, const std::string &, int , int)

Definition at line 611 of file NBEdgeCont.cpp.

References NBEdge::getGeometry(), NBNode::getPosition(), PositionVector::length(), NBEdge::myFrom, NBEdge::myTo, GeomHelper::nearest_offset_on_line_to_point2D(), PositionVector::nearest_offset_to_point2D(), and splitAt().

◆ splitGeometry()

void NBEdgeCont::splitGeometry ( NBDistrictCont dc,
NBNodeCont nc 
)

Splits edges into multiple if they have a complex geometry.

Calls "NBEdge::splitGeometry" for all edges within the container which have more than three positions in their geometry.

Parameters
[in]ncThe node container needed to build (geometry) nodes
See also
NBEdge::splitGeometry

Definition at line 786 of file NBEdgeCont.cpp.

References NBEdge::getGeometry(), NBEdge::getID(), NBEdge::getNumLanes(), NBNodeCont::insert(), myEdges, NBNodeCont::retrieve(), retrieve(), splitAt(), toString(), and WRITE_WARNING.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ updateAllChangeRestrictions()

void NBEdgeCont::updateAllChangeRestrictions ( SVCPermissions  ignoring)

modify all restrictions on lane changing for edges and connections

Definition at line 1709 of file NBEdgeCont.cpp.

References myEdges.

Referenced by NBNetBuilder::compute().

Here is the caller graph for this function:

◆ wasIgnored()

bool NBEdgeCont::wasIgnored ( std::string  id) const
inline

Returns whether the edge with the id was ignored during parsing.

Returns
Whether the edge with the id was ignored during parsing

Definition at line 477 of file NBEdgeCont.h.

References myIgnoredEdges.

Referenced by NIImporter_SUMO::_loadNetwork(), NIXMLPTHandler::addAccess(), NBRailwayTopologyAnalyzer::addBidiEdge(), NIXMLPTHandler::addPTLineRoute(), NIXMLPTHandler::addPTStop(), NIXMLEdgesHandler::addRoundabout(), NIXMLPTHandler::addRoute(), NIImporter_OpenDrive::loadNetwork(), and NIXMLConnectionsHandler::myStartElement().

Here is the caller graph for this function:

◆ wasRemoved()

bool NBEdgeCont::wasRemoved ( std::string  id) const
inline

Returns whether the edge with the id was deleted explicitly.

Definition at line 487 of file NBEdgeCont.h.

References myExtractedEdges.

Referenced by NIXMLConnectionsHandler::addCrossing(), and NIXMLConnectionsHandler::myStartElement().

Here is the caller graph for this function:

Field Documentation

◆ myConnections

std::map<std::string, std::vector<PostProcessConnection> > NBEdgeCont::myConnections
private

The list of connections to recheck.

Definition at line 727 of file NBEdgeCont.h.

Referenced by addPostProcessConnection(), hasPostProcessConnection(), and recheckPostProcessConnections().

◆ myEdgeCemetery

std::set<NBEdge*> NBEdgeCont::myEdgeCemetery
private

The edges which got extracted twice but may still be referenced somewhere TODO smart_ptr?

Definition at line 739 of file NBEdgeCont.h.

Referenced by clear(), and extract().

◆ myEdges

◆ myEdges2Keep

std::set<std::string> NBEdgeCont::myEdges2Keep
private

Set of ids of edges which shall explicitly be kept.

Definition at line 759 of file NBEdgeCont.h.

Referenced by applyOptions(), ignoreFilterMatch(), removeEdgesByPermissions(), removeEdgesBySpeed(), removeUnwishedEdges(), and splitAt().

◆ myEdges2Remove

std::set<std::string> NBEdgeCont::myEdges2Remove
private

Set of ids of edges which shall explicitly be removed.

Definition at line 762 of file NBEdgeCont.h.

Referenced by applyOptions(), ignoreFilterMatch(), and splitAt().

◆ myEdgesMinSpeed

double NBEdgeCont::myEdgesMinSpeed
private

The minimum speed an edge may have in order to be kept (default: -1)

Definition at line 753 of file NBEdgeCont.h.

Referenced by applyOptions(), ignoreFilterMatch(), and removeEdgesBySpeed().

◆ myEdgesSplit

std::map<const NBEdge*, std::pair<NBEdge*, NBEdge*> > NBEdgeCont::myEdgesSplit
private

the number of splits of edges during the building

Definition at line 745 of file NBEdgeCont.h.

Referenced by getNumEdgeSplits(), getSplit(), and splitAt().

◆ myExtractedEdges

EdgeCont NBEdgeCont::myExtractedEdges
private

The extracted edges which are kept for reference.

Definition at line 736 of file NBEdgeCont.h.

Referenced by clear(), extract(), retrieve(), and wasRemoved().

◆ myGuessedRoundabouts

std::set<EdgeSet> NBEdgeCont::myGuessedRoundabouts
private

Edges marked as belonging to a roundabout after guessing.

Definition at line 787 of file NBEdgeCont.h.

Referenced by getRoundabouts(), guessRoundabouts(), hasGuessedRoundabouts(), removeRoundaboutEdges(), and splitAt().

◆ myIgnoredEdges

std::set<std::string> NBEdgeCont::myIgnoredEdges
private

The ids of ignored edges.

Definition at line 742 of file NBEdgeCont.h.

Referenced by ignore(), insert(), and wasIgnored().

◆ myNeedGeoTransformedPruningBoundary

bool NBEdgeCont::myNeedGeoTransformedPruningBoundary
private

whether a geo transform has been applied to the pruning boundary

Definition at line 780 of file NBEdgeCont.h.

Referenced by applyOptions(), and ignoreFilterMatch().

◆ myPruningBoundary

PositionVector NBEdgeCont::myPruningBoundary
private

Boundary within which an edge must be located in order to be kept.

Definition at line 777 of file NBEdgeCont.h.

Referenced by applyOptions(), and ignoreFilterMatch().

◆ myRemoveEdgesAfterLoading

bool NBEdgeCont::myRemoveEdgesAfterLoading
private

Whether edges shall be joined and patched first, then removed.

Definition at line 756 of file NBEdgeCont.h.

Referenced by applyOptions(), ignoreFilterMatch(), and splitAt().

◆ myRoundabouts

std::set<EdgeSet> NBEdgeCont::myRoundabouts
private

Edges marked as belonging to a roundabout by the user (each EdgeVector is a roundabout)

Definition at line 784 of file NBEdgeCont.h.

Referenced by addRoundabout(), getRoundabouts(), guessRoundabouts(), removeRoundabout(), removeRoundaboutEdges(), and splitAt().

◆ myTypeCont

NBTypeCont& NBEdgeCont::myTypeCont
private

The network builder; used to obtain type information.

Definition at line 623 of file NBEdgeCont.h.

Referenced by ignoreFilterMatch().

◆ myTypes2Keep

std::set<std::string> NBEdgeCont::myTypes2Keep
private

Set of edges types which shall be kept.

Definition at line 771 of file NBEdgeCont.h.

Referenced by applyOptions(), and ignoreFilterMatch().

◆ myTypes2Remove

std::set<std::string> NBEdgeCont::myTypes2Remove
private

Set of edges types which shall be removed.

Definition at line 774 of file NBEdgeCont.h.

Referenced by applyOptions(), and ignoreFilterMatch().

◆ myVehicleClasses2Keep

SVCPermissions NBEdgeCont::myVehicleClasses2Keep
private

Set of vehicle types which must be allowed on edges in order to keep them.

Definition at line 765 of file NBEdgeCont.h.

Referenced by applyOptions(), ignoreFilterMatch(), and removeEdgesByPermissions().

◆ myVehicleClasses2Remove

SVCPermissions NBEdgeCont::myVehicleClasses2Remove
private

Set of vehicle types which need not be supported (edges which allow ONLY these are removed)

Definition at line 768 of file NBEdgeCont.h.

Referenced by applyOptions(), ignoreFilterMatch(), and removeEdgesByPermissions().

◆ myWasSplit

std::set<const NBEdge*> NBEdgeCont::myWasSplit
private

the edges that were created as result of splitting

Definition at line 747 of file NBEdgeCont.h.

Referenced by fixSplitCustomLength(), and splitAt().


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