Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
NBNodeCont Class Reference

Container for nodes during the netbuilding process. More...

#include <NBNodeCont.h>

Collaboration diagram for NBNodeCont:
[legend]

Public Types

typedef std::pair< NBNode *, double > NodeAndDist
typedef std::vector< NodeSetNodeClusters
 Definition of a node cluster container.

Public Member Functions

void addPrefix (const std::string &prefix)
 add prefix to all nodes
void analyzeCluster (NodeSet cluster, std::string &id, Position &pos, bool &hasTLS, TrafficLightType &type, SumoXMLNodeType &nodeType)
void applyConditionalDefaults ()
 apply default values after loading
void clear ()
 deletes all nodes
void computeLanes2Lanes ()
 divides the incoming lanes on outgoing lanes
void computeLogics (const NBEdgeCont &ec)
 build the list of outgoing edges and lanes
void computeLogics2 (const NBEdgeCont &ec, OptionsCont &oc)
 compute right-of-way logic for all lane-to-lane connections
void computeNodeShapes (double mismatchThreshold=-1)
 Compute the junction shape for this node.
void discardRailSignals ()
 discards rail signals
void discardTrafficLights (NBTrafficLightLogicCont &tlc, bool geometryLike)
std::vector< std::string > getAllNames () const
 get all node names
std::string getFreeID ()
 generates a new node ID
const std::vector< std::set< std::string > > & getJoinedClusters () const
 gets all joined clusters (see doc for myClusters2Join)
int guessFringe ()
 guess and mark fringe nodes
void markAsNotTLS (const NBNode *node)
 mark a node as explicitly not controlled by a TLS
void markAsSplit (const NBNode *node)
 mark a node as being created form a split
 NBNodeCont ()
 Constructor.
void printBuiltNodesStatistics () const
 Prints statistics about built nodes.
void registerJoinedCluster (const NodeSet &cluster)
 gets all joined clusters (see doc for myClusters2Join)
void registerJoinedCluster (const std::set< std::string > &cluster)
int remapIDs (bool numericaIDs, bool reservedIDs, bool keptIDs, const std::string &prefix, NBTrafficLightLogicCont &tlc)
 remap node IDs according to options –numerical-ids and –reserved-ids
void rename (NBNode *node, const std::string &newID)
 Renames the node. Throws exception if newID already exists.
bool resetNodeShapes ()
 reset all node shapes
int size () const
 Returns the number of nodes stored in this container.
void unregisterJoinedCluster (const std::set< std::string > &cluster)
 remove cluster from list (on netedit-undo)
bool wasRemoved (std::string id) const
 Returns whether the node with the id was deleted explicitly.
 ~NBNodeCont ()
 Destructor.
Insertion/removal/retrieval of nodes
bool insert (const std::string &id, const Position &position, NBDistrict *district=0)
 Inserts a node into the map.
bool insert (NBNode *node)
 Inserts a node into the map.
bool erase (NBNode *node)
 Removes the given node, deleting it.
bool extract (NBNode *node, bool remember=false)
 Removes the given node but does not delete it.
NBNoderetrieve (const std::string &id) const
 Returns the node with the given name.
std::vector< NBNode * > retrieveByPos (const Position &position, const double offset=0.) const
 Returns the node with the given coordinates.
std::map< std::string, NBNode * >::const_iterator begin () const
 Returns the pointer to the begin of the stored nodes.
std::map< std::string, NBNode * >::const_iterator end () const
 Returns the pointer to the end of the stored nodes.
Adapting the input
int removeSelfLoops (NBDistrictCont &dc, NBEdgeCont &ec, NBTrafficLightLogicCont &tc)
 Removes self-loop edges (edges where the source and the destination node are the same).
void joinSimilarEdges (NBDistrictCont &dc, NBEdgeCont &ec, NBTrafficLightLogicCont &tlc, bool removeDuplicates)
 Joins edges connecting the same nodes.
void avoidOverlap ()
 fix overlap
int removeIsolatedRoads (NBDistrictCont &dc, NBEdgeCont &ec)
 Removes sequences of edges that are not connected with a junction. Simple roads without junctions sometimes remain when converting from OpenStreetMap, but they make no sense. Remaining empty nodes are also deleted.
int removeComponents (NBDistrictCont &dc, NBEdgeCont &ec, const int numKeep, bool hasPTStops)
 Checks the network for weak connectivity and removes all but the largest components. The connectivity check is done regardless of edge direction and vclass.
int removeRailComponents (NBDistrictCont &dc, NBEdgeCont &ec, NBPTStopCont &sc)
int removeUnwishedNodes (NBDistrictCont &dc, NBEdgeCont &ec, NBTrafficLightLogicCont &tlc, NBPTStopCont &sc, NBPTLineCont &lc, NBParkingCont &pc, bool removeGeometryNodes)
 Removes "unwished" nodes.
Methods for guessing/computing traffic lights
void guessTLs (OptionsCont &oc, NBTrafficLightLogicCont &tlc)
 Guesses which junctions or junction clusters shall be controlled by tls.
void recheckGuessedTLS (NBTrafficLightLogicCont &tlc)
 recheck myGuessedTLS after node logics are computed
bool recheckTLSThreshold (NBNode *node)
 check whether a specific guessed tls should keep its type
void computeKeepClear ()
 compute keepClear status for all connections
void joinTLS (NBTrafficLightLogicCont &tlc, double maxdist)
 Builds clusters of tls-controlled junctions and joins the control if possible.
void setAsTLControlled (NBNode *node, NBTrafficLightLogicCont &tlc, TrafficLightType type, std::string id="")
 Sets the given node as being controlled by a tls.

Private Types

typedef std::map< std::string, NBNode * > NodeCont
 Definition of the map of names to nodes.

Private Member Functions

 NBNodeCont (const NBNodeCont &s)=delete
 invalidated copy constructor
NBNodeContoperator= (const NBNodeCont &s)=delete
 invalidated assignment operator
void paretoCheck (NBNode *node, NodeSet &frontier, int xSign, int ySign)
 update pareto frontier with the given node
Helper methods for guessing/computing traffic lights
bool shouldBeTLSControlled (const NodeSet &c, double laneSpeedThreshold, bool recheck=false) const
 Returns whethe the given node cluster should be controlled by a tls.
bool onlyCrossings (const NodeSet &c) const
 check wheter the set of nodes only contains pedestrian crossings
bool customTLID (const NodeSet &c) const
 check wheter the set of nodes contains traffic lights with custom id

Private Attributes

std::vector< std::pair< std::set< std::string >, NBNode * > > myClusters2Join
 loaded sets of node ids to join (cleared after use)
NodeCont myExtractedNodes
 The extracted nodes which are kept for reference.
std::set< NBNode *, ComparatorIdLessmyGuessedTLS
 nodes that received a traffic light due to guessing (–tls.guess)
std::set< std::string > myJoined
 ids found in loaded join clusters used for error checking
std::vector< std::set< std::string > > myJoinedClusters
 sets of node ids which were joined
std::set< std::string > myJoinExclusions
 set of node ids which should not be joined
NodeCont myNodes
 The map of names to nodes.
std::vector< std::vector< std::string > > myRailComponents
 network components that must be removed if not connected to the road network via stop access
NamedRTree myRTree
 node positions for faster lookup
std::set< const NBNode * > mySplit
 nodes that were created when splitting an edge
std::set< const NBNode * > myUnsetTLS
 nodes that are excluded from tls-guessing

Methods for joining nodes

void addJoinExclusion (const std::vector< std::string > &ids)
std::string createClusterId (const NodeSet &cluster, const std::string &prefix="cluster_")
 generate id from cluster node ids
std::string createClusterId (const std::set< std::string > &cluster, const std::string &prefix="cluster_")
 generate id from cluster node ids
void addCluster2Join (const std::set< std::string > &cluster, NBNode *node)
 add ids of nodes which shall be joined into a single node
int joinLoadedClusters (NBDistrictCont &dc, NBEdgeCont &ec, NBTrafficLightLogicCont &tlc)
 Joins loaded junction clusters (see NIXMLNodesHandler).
int joinJunctions (double maxDist, NBDistrictCont &dc, NBEdgeCont &ec, NBTrafficLightLogicCont &tlc, NBPTStopCont &sc)
 Joins junctions that are very close together.
int joinSameJunctions (NBDistrictCont &dc, NBEdgeCont &ec, NBTrafficLightLogicCont &tlc, double maxDist)
 Joins junctions with similar coordinates regardless of topology.
bool maybeSlipLaneStart (const NBNode *n, EdgeVector &outgoing, double &inAngle) const
 check whether the given node maybe the start of a slip lane
bool maybeSlipLaneEnd (const NBNode *n, EdgeVector &incoming, double &outAngle) const
 check whether the given node maybe the end of a slip lane
bool reduceToCircle (NodeSet &cluster, int circleSize, NodeSet startNodes, double maxDist, std::vector< NBNode * > cands=std::vector< NBNode * >()) const
 try to find a joinable subset (recursively)
NBEdgeshortestEdge (const NodeSet &cluster, const NodeSet &startNodes, const std::vector< NBNode * > &exclude) const
 find closest neighbor for building circle
static NodeSet getClusterNeighbors (const NBNode *n, double longThreshold, NodeSet &cluster)
 return all cluster neighbors for the given node
static bool isSlipLaneContinuation (const NBNode *cont)
 whether the given node may continue a slip lane

Helper methods for for joining nodes

void generateNodeClusters (double maxDist, NodeClusters &into) const
 Builds node clusters.
void pruneClusterFringe (NodeSet &cluster, double maxDist, bool remove2TLS=false) const
 remove geometry-like fringe nodes from cluster
void pruneSlipLaneNodes (NodeSet &cluster, double maxDist) const
 remove nodes that form a slip lane from cluster
bool feasibleCluster (const NodeSet &cluster, const std::map< const NBNode *, std::vector< NBNode * > > &ptStopEnds, double maxDist, std::string &reason, NBNode *&tryRemove) const
 determine wether the cluster is not too complex for joining
void joinNodeClusters (NodeClusters clusters, NBDistrictCont &dc, NBEdgeCont &ec, NBTrafficLightLogicCont &tlc, bool resetConnections=false)
 joins the given node clusters
void joinNodeCluster (NodeSet clusters, NBDistrictCont &dc, NBEdgeCont &ec, NBTrafficLightLogicCont &tlc, NBNode *predefined=nullptr, bool resetConnections=false)
static int pruneLongEdges (NodeSet &cluster, double maxDist, const bool dryRun=false)
 avoid removal of long edges when joining junction clusters
static double getDiameter (const NodeSet &cluster)
 compute the maximum distance between any two cluster nodes
static bool geometryLikeForClass (const NBNode *n, SVCPermissions permissions)
 check whether the node is geometryLike when only considering edges that support the given permissions

Detailed Description

Container for nodes during the netbuilding process.

Definition at line 57 of file NBNodeCont.h.

Member Typedef Documentation

◆ NodeAndDist

typedef std::pair<NBNode*, double> NBNodeCont::NodeAndDist

Definition at line 62 of file NBNodeCont.h.

◆ NodeClusters

typedef std::vector<NodeSet> NBNodeCont::NodeClusters

Definition of a node cluster container.

Definition at line 61 of file NBNodeCont.h.

◆ NodeCont

typedef std::map<std::string, NBNode*> NBNodeCont::NodeCont
private

Definition of the map of names to nodes.

Definition at line 443 of file NBNodeCont.h.

Constructor & Destructor Documentation

◆ NBNodeCont() [1/2]

NBNodeCont::NBNodeCont ( )
inline

Constructor.

Definition at line 65 of file NBNodeCont.h.

Referenced by NBNodeCont(), and operator=().

Here is the caller graph for this function:

◆ ~NBNodeCont()

NBNodeCont::~NBNodeCont ( )

Destructor.

Definition at line 81 of file NBNodeCont.cpp.

References clear().

◆ NBNodeCont() [2/2]

NBNodeCont::NBNodeCont ( const NBNodeCont & s)
privatedelete

invalidated copy constructor

References NBNodeCont().

Member Function Documentation

◆ addCluster2Join()

void NBNodeCont::addCluster2Join ( const std::set< std::string > & cluster,
NBNode * node )

add ids of nodes which shall be joined into a single node

Parameters
[in]clusterThe cluster to add

Definition at line 729 of file NBNodeCont.cpp.

References Named::getID(), myClusters2Join, myJoined, myJoinExclusions, retrieve(), TL, WRITE_ERRORF, and WRITE_WARNINGF.

◆ addJoinExclusion()

void NBNodeCont::addJoinExclusion ( const std::vector< std::string > & ids)

Definition at line 696 of file NBNodeCont.cpp.

References myJoined, myJoinExclusions, TL, and WRITE_WARNINGF.

◆ addPrefix()

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

add prefix to all nodes

Definition at line 2724 of file NBNodeCont.cpp.

References myNodes.

Referenced by GNELoadThread::run().

Here is the caller graph for this function:

◆ analyzeCluster()

void NBNodeCont::analyzeCluster ( NodeSet cluster,
std::string & id,
Position & pos,
bool & hasTLS,
TrafficLightType & type,
SumoXMLNodeType & nodeType )

Definition at line 2051 of file NBNodeCont.cpp.

References Position::add(), begin(), createClusterId(), OptionsCont::getOptions(), Position::mul(), NOJUNCTION, PRIORITY, TL, toString(), TRAFFIC_LIGHT, SUMOXMLDefinitions::TrafficLightTypes, UNKNOWN, and WRITE_WARNINGF.

Referenced by joinNodeCluster(), and joinTLS().

Here is the caller graph for this function:

◆ applyConditionalDefaults()

void NBNodeCont::applyConditionalDefaults ( )

apply default values after loading

Definition at line 2942 of file NBNodeCont.cpp.

References ALLWAYSTOP, DEFAULT, myNodes, n, and NEMA.

◆ avoidOverlap()

void NBNodeCont::avoidOverlap ( )

fix overlap

Definition at line 543 of file NBNodeCont.cpp.

References myNodes.

◆ begin()

◆ clear()

void NBNodeCont::clear ( )

deletes all nodes

Definition at line 2581 of file NBNodeCont.cpp.

References myExtractedNodes, and myNodes.

Referenced by ~NBNodeCont().

Here is the caller graph for this function:

◆ computeKeepClear()

void NBNodeCont::computeKeepClear ( )

compute keepClear status for all connections

Definition at line 2468 of file NBNodeCont.cpp.

References myNodes.

◆ computeLanes2Lanes()

void NBNodeCont::computeLanes2Lanes ( )

divides the incoming lanes on outgoing lanes

Definition at line 2544 of file NBNodeCont.cpp.

References myNodes.

◆ computeLogics()

void NBNodeCont::computeLogics ( const NBEdgeCont & ec)

build the list of outgoing edges and lanes

Definition at line 2553 of file NBNodeCont.cpp.

References myNodes.

◆ computeLogics2()

void NBNodeCont::computeLogics2 ( const NBEdgeCont & ec,
OptionsCont & oc )

compute right-of-way logic for all lane-to-lane connections

Definition at line 2561 of file NBNodeCont.cpp.

References OptionsCont::getBool(), NBEdgeCont::getRoundabouts(), and myNodes.

◆ computeNodeShapes()

void NBNodeCont::computeNodeShapes ( double mismatchThreshold = -1)

Compute the junction shape for this node.

Parameters
[in]mismatchThresholdThe threshold for warning about shapes which are away from myPosition

Definition at line 2608 of file NBNodeCont.cpp.

References myNodes.

◆ createClusterId() [1/2]

std::string NBNodeCont::createClusterId ( const NodeSet & cluster,
const std::string & prefix = "cluster_" )
inline

generate id from cluster node ids

Parameters
[in]clusterThe cluster ids
[in]prefixThe cluster prefix
Returns
the generated id

Definition at line 136 of file NBNodeCont.h.

References createClusterId().

Referenced by analyzeCluster(), createClusterId(), guessTLs(), and NIImporter_OpenDrive::loadNetwork().

Here is the caller graph for this function:

◆ createClusterId() [2/2]

std::string NBNodeCont::createClusterId ( const std::set< std::string > & cluster,
const std::string & prefix = "cluster_" )

generate id from cluster node ids

Parameters
[in]clusterThe cluster ids
[in]prefixThe cluster prefix
Returns
the generated id

Definition at line 710 of file NBNodeCont.cpp.

References OptionsCont::getInt(), OptionsCont::getOptions(), joinToString(), and toString().

◆ customTLID()

bool NBNodeCont::customTLID ( const NodeSet & c) const
private

check wheter the set of nodes contains traffic lights with custom id

Definition at line 2150 of file NBNodeCont.cpp.

References begin(), Named::getID(), NBTrafficLightDefinition::getNodes(), and StringUtils::startsWith().

Referenced by joinTLS().

Here is the caller graph for this function:

◆ discardRailSignals()

void NBNodeCont::discardRailSignals ( )

discards rail signals

Definition at line 2781 of file NBNodeCont.cpp.

References NBNode::getPosition(), NBNode::getType(), myNodes, PRIORITY, RAIL_SIGNAL, and NBNode::reinit().

◆ discardTrafficLights()

void NBNodeCont::discardTrafficLights ( NBTrafficLightLogicCont & tlc,
bool geometryLike )

Definition at line 2747 of file NBNodeCont.cpp.

References NBTrafficLightLogicCont::extract(), NBNode::geometryLike(), NBNode::getControllingTLS(), NBNode::getCrossings(), Named::getID(), NBNode::getOutgoingEdges(), NBNode::getPosition(), NBNodeTypeComputer::isRailwayNode(), NBNode::isTLControlled(), myNodes, RAIL_SIGNAL, NBNode::reinit(), NBNode::removeTrafficLight(), and UNKNOWN.

Referenced by main().

Here is the caller graph for this function:

◆ end()

◆ erase()

bool NBNodeCont::erase ( NBNode * node)

Removes the given node, deleting it.

Parameters
[in]nodeThe node to delete and remove
Returns
Whether the node could be removed (existed)

Definition at line 148 of file NBNodeCont.cpp.

References extract().

Referenced by joinNodeCluster(), NIVissimEdge::remapOneOfNodes(), removeComponents(), removeIsolatedRoads(), and removeRailComponents().

Here is the caller graph for this function:

◆ extract()

bool NBNodeCont::extract ( NBNode * node,
bool remember = false )

Removes the given node but does not delete it.

Parameters
[in]nodeThe node to delete and remove
[in]rememberWhether to keep the node for future reference
Returns
Whether the node could be removed (existed)

Definition at line 159 of file NBNodeCont.cpp.

References Named::getID(), NBNode::getPosition(), myExtractedNodes, myNodes, myRTree, NBNode::removeTrafficLights(), Position::x(), and Position::y().

Referenced by erase(), NIImporter_OpenDrive::loadNetwork(), and removeUnwishedNodes().

Here is the caller graph for this function:

◆ feasibleCluster()

bool NBNodeCont::feasibleCluster ( const NodeSet & cluster,
const std::map< const NBNode *, std::vector< NBNode * > > & ptStopEnds,
double maxDist,
std::string & reason,
NBNode *& tryRemove ) const
private

determine wether the cluster is not too complex for joining

Definition at line 1454 of file NBNodeCont.cpp.

References DEBUGCOND, NBEdge::getAngleAtNode(), OptionsCont::getFloat(), NBEdge::getFromNode(), NBEdge::getID(), NBEdge::getLaneShape(), NBEdge::getLoadedLength(), NBEdge::getNumLanesThatAllow(), OptionsCont::getOptions(), NBEdge::getPermissions(), NBEdge::getPriority(), NBEdge::getToNode(), joinNamedToString(), n, SVC_PASSENGER, and toString().

Referenced by joinJunctions().

Here is the caller graph for this function:

◆ generateNodeClusters()

void NBNodeCont::generateNodeClusters ( double maxDist,
NodeClusters & into ) const
private

Builds node clusters.

A node cluster is made up from nodes which are near by (distance<maxDist) and connected.

Parameters
[in]maxDistThe maximum distance between two nodes for clustering
[in,filled]into The container to store the clusters in

Definition at line 552 of file NBNodeCont.cpp.

References DEBUGCOND, NBNode::geometryLike(), geometryLikeForClass(), Named::getID(), NBNode::getIncomingEdges(), NBNode::getPosition(), NBNode::getType(), NBNode::isTrafficLight(), joinNamedToString(), myNodes, n, RAIL_CROSSING, SUMO_const_laneWidth, SVC_DELIVERY, SVC_PASSENGER, SVC_PEDESTRIAN, SVC_RAIL_CLASSES, SVC_TRAM, and SVC_VULNERABLE.

Referenced by guessTLs(), joinJunctions(), and joinTLS().

Here is the caller graph for this function:

◆ geometryLikeForClass()

bool NBNodeCont::geometryLikeForClass ( const NBNode * n,
SVCPermissions permissions )
staticprivate

check whether the node is geometryLike when only considering edges that support the given permissions

Definition at line 674 of file NBNodeCont.cpp.

References n.

Referenced by generateNodeClusters().

Here is the caller graph for this function:

◆ getAllNames()

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

get all node names

Definition at line 2714 of file NBNodeCont.cpp.

References myNodes.

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

Here is the caller graph for this function:

◆ getClusterNeighbors()

NodeSet NBNodeCont::getClusterNeighbors ( const NBNode * n,
double longThreshold,
NodeSet & cluster )
static

return all cluster neighbors for the given node

Definition at line 1154 of file NBNodeCont.cpp.

References n.

Referenced by pruneLongEdges().

Here is the caller graph for this function:

◆ getDiameter()

double NBNodeCont::getDiameter ( const NodeSet & cluster)
staticprivate

compute the maximum distance between any two cluster nodes

Definition at line 1068 of file NBNodeCont.cpp.

References MAX2().

Referenced by pruneClusterFringe().

Here is the caller graph for this function:

◆ getFreeID()

std::string NBNodeCont::getFreeID ( )

generates a new node ID

Definition at line 2594 of file NBNodeCont.cpp.

References retrieve(), and toString().

◆ getJoinedClusters()

const std::vector< std::set< std::string > > & NBNodeCont::getJoinedClusters ( ) const
inline

gets all joined clusters (see doc for myClusters2Join)

Definition at line 350 of file NBNodeCont.h.

References myJoinedClusters.

Referenced by NWWriter_XML::writeJoinedJunctions().

Here is the caller graph for this function:

◆ guessFringe()

int NBNodeCont::guessFringe ( )

guess and mark fringe nodes

Definition at line 2876 of file NBNodeCont.cpp.

References OptionsCont::getFloat(), OptionsCont::getOptions(), myNodes, n, OUTER, and paretoCheck().

◆ guessTLs()

◆ insert() [1/2]

bool NBNodeCont::insert ( const std::string & id,
const Position & position,
NBDistrict * district = 0 )

Inserts a node into the map.

Parameters
[in]idThe node's id
[in]positionThe node's position
[in]Adistrict assigned to the node
Returns
Whether the node could be added (no other with the same id or position is stored)

Definition at line 88 of file NBNodeCont.cpp.

References myNodes, myRTree, Position::x(), and Position::y().

Referenced by NIVissimEdge::buildNBEdge(), NIVissimNodeCluster::buildNBNode(), NBRampsComputer::buildOffRamp(), NBRampsComputer::buildOnRamp(), NIVissimDistrictConnection::dict_BuildDistrictNodes(), NIVissimEdge::getFromNode(), NIImporter_OpenDrive::getOrBuildNode(), NIVissimEdge::getToNode(), NIImporter_OpenStreetMap::insertNodeChecking(), joinNodeCluster(), NIImporter_OpenDrive::loadNetwork(), NIXMLNodesHandler::processNodeType(), NBEdgeCont::processSplits(), NIVissimEdge::remapOneOfNodes(), NIVissimEdge::resolveSameNode(), and NBEdgeCont::splitGeometry().

Here is the caller graph for this function:

◆ insert() [2/2]

bool NBNodeCont::insert ( NBNode * node)

Inserts a node into the map.

Parameters
[in]nodeThe node to insert
Returns
Whether the node could be added (no other with the same id or position is stored)

Definition at line 103 of file NBNodeCont.cpp.

References Named::getID(), NBNode::getPosition(), myNodes, myRTree, Position::x(), and Position::y().

◆ isSlipLaneContinuation()

bool NBNodeCont::isSlipLaneContinuation ( const NBNode * cont)
static

whether the given node may continue a slip lane

Definition at line 1373 of file NBNodeCont.cpp.

References NBNode::getPassengerEdges().

Referenced by pruneSlipLaneNodes().

Here is the caller graph for this function:

◆ joinJunctions()

◆ joinLoadedClusters()

int NBNodeCont::joinLoadedClusters ( NBDistrictCont & dc,
NBEdgeCont & ec,
NBTrafficLightLogicCont & tlc )

Joins loaded junction clusters (see NIXMLNodesHandler).

Definition at line 757 of file NBNodeCont.cpp.

References joinNodeCluster(), myClusters2Join, myJoinExclusions, retrieve(), TL, and WRITE_ERRORF.

◆ joinNodeCluster()

◆ joinNodeClusters()

void NBNodeCont::joinNodeClusters ( NodeClusters clusters,
NBDistrictCont & dc,
NBEdgeCont & ec,
NBTrafficLightLogicCont & tlc,
bool resetConnections = false )
private

joins the given node clusters

Definition at line 1776 of file NBNodeCont.cpp.

References joinNodeCluster().

Referenced by joinJunctions(), and joinSameJunctions().

Here is the caller graph for this function:

◆ joinSameJunctions()

int NBNodeCont::joinSameJunctions ( NBDistrictCont & dc,
NBEdgeCont & ec,
NBTrafficLightLogicCont & tlc,
double maxDist )

Joins junctions with similar coordinates regardless of topology.

Definition at line 943 of file NBNodeCont.cpp.

References joinNodeClusters(), myJoinExclusions, myNodes, n, and retrieveByPos().

◆ joinSimilarEdges()

void NBNodeCont::joinSimilarEdges ( NBDistrictCont & dc,
NBEdgeCont & ec,
NBTrafficLightLogicCont & tlc,
bool removeDuplicates )

Joins edges connecting the same nodes.

Parameters
[in,opt.changed] dc The districts container to update
[in,opt.changed] ec The edge container to remove the edges from
[in,opt.changed] tc The traffic lights container to update
Postcondition
No two edges with same geometry connecting same nodes exist

Definition at line 190 of file NBNodeCont.cpp.

References NBEdgeCont::extract(), NBEdge::getLoadedLength(), NBEdge::getPermissions(), NBEdge::getSpeed(), NBEdge::isNearEnough2BeJoined2(), NBEdgeCont::joinSameNodeConnectingEdges(), and myNodes.

◆ joinTLS()

void NBNodeCont::joinTLS ( NBTrafficLightLogicCont & tlc,
double maxdist )

Builds clusters of tls-controlled junctions and joins the control if possible.

Parameters
[changed]tlc The traffic lights control for adding/removing new/prior tls
[in]maxdistThe maximum distance between nodes for clustering
Todo
Recheck exception handling

Definition at line 2476 of file NBNodeCont.cpp.

References analyzeCluster(), customTLID(), NBTrafficLightLogicCont::exist(), generateNodeClusters(), OptionsCont::getOptions(), OptionsCont::getStringVector(), NBTrafficLightLogicCont::insert(), onlyCrossings(), NBTrafficLightLogicCont::removeFully(), TL, UNKNOWN, WRITE_WARNING, and WRITE_WARNINGF.

◆ markAsNotTLS()

void NBNodeCont::markAsNotTLS ( const NBNode * node)
inline

mark a node as explicitly not controlled by a TLS

Definition at line 368 of file NBNodeCont.h.

References myUnsetTLS.

Referenced by NIXMLNodesHandler::processNodeType().

Here is the caller graph for this function:

◆ markAsSplit()

void NBNodeCont::markAsSplit ( const NBNode * node)
inline

mark a node as being created form a split

Definition at line 363 of file NBNodeCont.h.

References mySplit.

Referenced by NBEdgeCont::processSplits().

Here is the caller graph for this function:

◆ maybeSlipLaneEnd()

bool NBNodeCont::maybeSlipLaneEnd ( const NBNode * n,
EdgeVector & incoming,
double & outAngle ) const

check whether the given node maybe the end of a slip lane

Definition at line 1417 of file NBNodeCont.cpp.

References n, and NBHelpers::relAngle().

Referenced by pruneSlipLaneNodes().

Here is the caller graph for this function:

◆ maybeSlipLaneStart()

bool NBNodeCont::maybeSlipLaneStart ( const NBNode * n,
EdgeVector & outgoing,
double & inAngle ) const

check whether the given node maybe the start of a slip lane

Definition at line 1379 of file NBNodeCont.cpp.

References n, and NBHelpers::relAngle().

Referenced by pruneSlipLaneNodes().

Here is the caller graph for this function:

◆ onlyCrossings()

bool NBNodeCont::onlyCrossings ( const NodeSet & c) const
private

check wheter the set of nodes only contains pedestrian crossings

Definition at line 2120 of file NBNodeCont.cpp.

References NBEdge::getIncomingEdges(), and SVC_PEDESTRIAN.

Referenced by joinTLS().

Here is the caller graph for this function:

◆ operator=()

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

invalidated assignment operator

References NBNodeCont().

◆ paretoCheck()

void NBNodeCont::paretoCheck ( NBNode * node,
NodeSet & frontier,
int xSign,
int ySign )
private

update pareto frontier with the given node

Definition at line 2921 of file NBNodeCont.cpp.

References fn, NBNode::getPosition(), Position::x(), and Position::y().

Referenced by guessFringe().

Here is the caller graph for this function:

◆ printBuiltNodesStatistics()

void NBNodeCont::printBuiltNodesStatistics ( ) const

Prints statistics about built nodes.

Goes through stored nodes, computes the numbers of unregulated, priority and right-before-left junctions and prints them.

Definition at line 2616 of file NBNodeCont.cpp.

References ALLWAY_STOP, DEAD_END, DISTRICT, GeoConvHelper::getConvBoundary(), GeoConvHelper::getOffsetBase(), GeoConvHelper::getOrigBoundary(), GeoConvHelper::getProcessing(), LEFT_BEFORE_RIGHT, myNodes, NOJUNCTION, PRIORITY, PRIORITY_STOP, RAIL_CROSSING, RAIL_SIGNAL, RIGHT_BEFORE_LEFT, TL, toString(), TRAFFIC_LIGHT, TRAFFIC_LIGHT_NOJUNCTION, TRAFFIC_LIGHT_RIGHT_ON_RED, UNKNOWN, WRITE_MESSAGE, and ZIPPER.

Referenced by main().

Here is the caller graph for this function:

◆ pruneClusterFringe()

void NBNodeCont::pruneClusterFringe ( NodeSet & cluster,
double maxDist,
bool remove2TLS = false ) const
private

remove geometry-like fringe nodes from cluster

Definition at line 971 of file NBNodeCont.cpp.

References gDebugFlag1, getDiameter(), NBNode::getPosition(), isForVulnerableModes(), isRailway(), joinNamedToString(), MIN2(), n, SUMO_const_laneWidth, and SVC_PASSENGER.

Referenced by joinJunctions(), pruneSlipLaneNodes(), and reduceToCircle().

Here is the caller graph for this function:

◆ pruneLongEdges()

int NBNodeCont::pruneLongEdges ( NodeSet & cluster,
double maxDist,
const bool dryRun = false )
staticprivate

avoid removal of long edges when joining junction clusters

Definition at line 1079 of file NBNodeCont.cpp.

References NBEdge::filterByPermissions(), gDebugFlag1, NBNode::geometryLike(), getClusterNeighbors(), NBNode::getIncomingEdges(), NBEdge::getLoadedLength(), NBNode::getOutgoingEdges(), NBEdge::getStraightContinuation(), NBEdge::getToNode(), MAX2(), n, SUMO_const_laneWidth, SVC_PASSENGER, and toString().

Referenced by joinJunctions().

Here is the caller graph for this function:

◆ pruneSlipLaneNodes()

void NBNodeCont::pruneSlipLaneNodes ( NodeSet & cluster,
double maxDist ) const
private

remove nodes that form a slip lane from cluster

Definition at line 1170 of file NBNodeCont.cpp.

References gDebugFlag1, NBEdge::getFromNode(), Named::getID(), NBNode::getIncomingEdges(), NBEdge::getLength(), NBNode::getOutgoingEdges(), NBEdge::getToNode(), isSlipLaneContinuation(), joinNamedToString(), MAX_SLIPLANE_LENGTH, maybeSlipLaneEnd(), maybeSlipLaneStart(), n, pruneClusterFringe(), NBHelpers::relAngle(), SVC_PASSENGER, and toString().

Referenced by joinJunctions().

Here is the caller graph for this function:

◆ recheckGuessedTLS()

void NBNodeCont::recheckGuessedTLS ( NBTrafficLightLogicCont & tlc)

◆ recheckTLSThreshold()

bool NBNodeCont::recheckTLSThreshold ( NBNode * node)

check whether a specific guessed tls should keep its type

Definition at line 2452 of file NBNodeCont.cpp.

References NBNode::getControllingTLS(), OptionsCont::getFloat(), OptionsCont::getOptions(), NBNode::isTLControlled(), and shouldBeTLSControlled().

Referenced by recheckGuessedTLS().

Here is the caller graph for this function:

◆ reduceToCircle()

bool NBNodeCont::reduceToCircle ( NodeSet & cluster,
int circleSize,
NodeSet startNodes,
double maxDist,
std::vector< NBNode * > cands = std::vector<NBNode*>() ) const

try to find a joinable subset (recursively)

Definition at line 1694 of file NBNodeCont.cpp.

References NBEdge::getFromNode(), NBEdge::getToNode(), joinNamedToString(), pruneClusterFringe(), reduceToCircle(), shortestEdge(), and toString().

Referenced by joinJunctions(), and reduceToCircle().

Here is the caller graph for this function:

◆ registerJoinedCluster() [1/2]

void NBNodeCont::registerJoinedCluster ( const NodeSet & cluster)

gets all joined clusters (see doc for myClusters2Join)

Definition at line 2028 of file NBNodeCont.cpp.

References myJoinedClusters, and n.

Referenced by joinNodeCluster().

Here is the caller graph for this function:

◆ registerJoinedCluster() [2/2]

void NBNodeCont::registerJoinedCluster ( const std::set< std::string > & cluster)

Definition at line 2037 of file NBNodeCont.cpp.

References myJoinedClusters.

◆ remapIDs()

int NBNodeCont::remapIDs ( bool numericaIDs,
bool reservedIDs,
bool keptIDs,
const std::string & prefix,
NBTrafficLightLogicCont & tlc )

◆ removeComponents()

int NBNodeCont::removeComponents ( NBDistrictCont & dc,
NBEdgeCont & ec,
const int numKeep,
bool hasPTStops )

Checks the network for weak connectivity and removes all but the largest components. The connectivity check is done regardless of edge direction and vclass.

Parameters
[in,opt.changed] dc The district container needed if edges shall be removed
[in,opt.changed] ec The container with the edge to be tested
[in]numKeepThe number of components to keep
Returns
The number of removed edges

Definition at line 332 of file NBNodeCont.cpp.

References NBEdgeCont::begin(), NBEdgeCont::end(), NBEdgeCont::erase(), erase(), NBEdgeCont::getByID(), NBEdge::getFromNode(), NBNode::getIncomingEdges(), NBNode::getOutgoingEdges(), NBEdge::getToNode(), isRailway(), isWaterway(), myRailComponents, NBEdgeCont::removeRoundaboutEdges(), TL, toString(), and WRITE_MESSAGEF.

◆ removeIsolatedRoads()

int NBNodeCont::removeIsolatedRoads ( NBDistrictCont & dc,
NBEdgeCont & ec )

Removes sequences of edges that are not connected with a junction. Simple roads without junctions sometimes remain when converting from OpenStreetMap, but they make no sense. Remaining empty nodes are also deleted.

Parameters
[in,opt.changed] dc The district container needed if edges shall be removed
[in,opt.changed] ec The container with the edge to be tested
Returns
The number of removed edges

Definition at line 241 of file NBNodeCont.cpp.

References NBEdgeCont::erase(), erase(), NBEdgeCont::getAllNames(), NBEdge::getFromNode(), NBNode::getIncomingEdges(), NBNode::getOutgoingEdges(), NBEdge::getToNode(), NBEdgeCont::retrieve(), TL, and WRITE_WARNINGF.

◆ removeRailComponents()

◆ removeSelfLoops()

int NBNodeCont::removeSelfLoops ( NBDistrictCont & dc,
NBEdgeCont & ec,
NBTrafficLightLogicCont & tc )

Removes self-loop edges (edges where the source and the destination node are the same).

Parameters
[in,opt.changed] dc The districts container to update
[in,opt.changed] ec The edge container to remove the edges from
[in,opt.changed] tc The traffic lights container to update
Postcondition
Each edge is a uni-directional connection between two different nodes
Returns
The number of removed edges

Definition at line 177 of file NBNodeCont.cpp.

References myNodes, toString(), and WRITE_WARNING.

◆ removeUnwishedNodes()

int NBNodeCont::removeUnwishedNodes ( NBDistrictCont & dc,
NBEdgeCont & ec,
NBTrafficLightLogicCont & tlc,
NBPTStopCont & sc,
NBPTLineCont & lc,
NBParkingCont & pc,
bool removeGeometryNodes )

Removes "unwished" nodes.

Removes nodes if a) no incoming/outgoing edges exist or b) if the node is a "geometry" node. In the second case, edges that participate at the node will be joined. Whether the node is a geometry node or not, is determined by a call to NBNode::checkIsRemovable. The node is removed from the list of tls-controlled nodes.

Parameters
[in,opt.changed] dc The district container needed if a node shall be removed
[in,opt.changed] ec The edge container needed for joining edges
[in,opt.changed] tlc The traffic lights container to remove nodes from
[in,opt.changed] sc The pt stops container to update stop edges
[in,opt.changed] pc The pt stops container to update stop edges
[in]removeGeometryNodesWhether geometry nodes shall also be removed
Returns
The number of removed nodes

Definition at line 461 of file NBNodeCont.cpp.

References NBParkingCont::addEdges2Keep(), NBPTStopCont::addEdges2Keep(), NBEdgeCont::begin(), begin(), NBNode::checkIsRemovable(), NBEdgeCont::end(), OptionsCont::exists(), NBEdgeCont::extract(), extract(), OptionsCont::getBool(), NBNode::getControllingTLS(), NBNode::getEdges(), NBNode::getEdgesToJoin(), Named::getID(), NBEdge::getID(), OptionsCont::getOptions(), OptionsCont::getString(), OptionsCont::getStringVector(), NBEdge::getToNode(), OptionsCont::isSet(), NBNode::isTLControlled(), NBHelpers::loadEdgesFromFile(), myNodes, mySplit, n, NBPTLineCont::replaceEdge(), NBPTStopCont::replaceEdge(), NBNode::replaceIncoming(), and NBTrafficLightDefinition::replaceRemoved().

◆ rename()

void NBNodeCont::rename ( NBNode * node,
const std::string & newID )

Renames the node. Throws exception if newID already exists.

Definition at line 2736 of file NBNodeCont.cpp.

References Named::getID(), myNodes, Named::setID(), and TLF.

Referenced by remapIDs().

Here is the caller graph for this function:

◆ resetNodeShapes()

bool NBNodeCont::resetNodeShapes ( )

reset all node shapes

Definition at line 2963 of file NBNodeCont.cpp.

References myNodes.

◆ retrieve()

NBNode * NBNodeCont::retrieve ( const std::string & id) const

Returns the node with the given name.

Parameters
[in]idThe id of the node to retrieve
Returns
The node with the given id, or 0 if no such node exists

Definition at line 117 of file NBNodeCont.cpp.

References myNodes.

Referenced by addCluster2Join(), NIVissimDisturbance::addToNode(), NGEdge::buildNBEdge(), NBEdgeCont::checkConsistency(), NIVissimNodeCluster::dict_addDisturbances(), NIVissimDistrictConnection::dict_BuildDistricts(), getFreeID(), NIImporter_OpenDrive::getOrBuildNode(), guessTLs(), NIImporter_OpenStreetMap::insertNodeChecking(), joinLoadedClusters(), joinNodeCluster(), NIImporter_OpenDrive::loadNetwork(), NIImporter_OpenStreetMap::reconstructLayerElevation(), NIVissimEdge::resolveSameNode(), NIImporter_OpenDrive::setNodeSecure(), NBEdgeCont::splitGeometry(), and NWWriter_DlrNavteq::writeNodesUnsplitted().

Here is the caller graph for this function:

◆ retrieveByPos()

std::vector< NBNode * > NBNodeCont::retrieveByPos ( const Position & position,
const double offset = 0. ) const

Returns the node with the given coordinates.

Parameters
[in]positionThe position at which the node to retrieve lies
[in]offsetAn offset which can be applied in the case positions are blurred
Returns
The node at the given position, or 0 if no such node exists

Definition at line 127 of file NBNodeCont.cpp.

References NBNode::getPosition(), myRTree, Position::x(), and Position::y().

Referenced by joinSameJunctions().

Here is the caller graph for this function:

◆ setAsTLControlled()

void NBNodeCont::setAsTLControlled ( NBNode * node,
NBTrafficLightLogicCont & tlc,
TrafficLightType type,
std::string id = "" )

Sets the given node as being controlled by a tls.

Parameters
[in]nodeThe node that shall be controlled by a tls
[in]tlcThe traffic lights control into which the new traffic light definition shall be stored
[in]typeThe type of the new tls
[in]idThe id of the tls to add
Todo
Recheck exception handling

Definition at line 2527 of file NBNodeCont.cpp.

References Named::getID(), NBTrafficLightLogicCont::insert(), TL, and WRITE_WARNINGF.

Referenced by guessTLs().

Here is the caller graph for this function:

◆ shortestEdge()

NBEdge * NBNodeCont::shortestEdge ( const NodeSet & cluster,
const NodeSet & startNodes,
const std::vector< NBNode * > & exclude ) const

find closest neighbor for building circle

Definition at line 1755 of file NBNodeCont.cpp.

References NBNode::getPosition(), and n.

Referenced by reduceToCircle().

Here is the caller graph for this function:

◆ shouldBeTLSControlled()

bool NBNodeCont::shouldBeTLSControlled ( const NodeSet & c,
double laneSpeedThreshold,
bool recheck = false ) const
private

Returns whethe the given node cluster should be controlled by a tls.

Parameters
[in]cThe node cluster
[in]laneSpeedThresholdthreshold for determining whether a node or cluster should be tls controlled
Returns
Whether this node cluster shall be controlled by a tls

Definition at line 2092 of file NBNodeCont.cpp.

Referenced by guessTLs(), and recheckTLSThreshold().

Here is the caller graph for this function:

◆ size()

int NBNodeCont::size ( ) const
inline

Returns the number of nodes stored in this container.

Definition at line 307 of file NBNodeCont.h.

References myNodes.

Referenced by main(), NWWriter_OpenDrive::writeNetwork(), and NWWriter_DlrNavteq::writeNodesUnsplitted().

Here is the caller graph for this function:

◆ unregisterJoinedCluster()

void NBNodeCont::unregisterJoinedCluster ( const std::set< std::string > & cluster)

remove cluster from list (on netedit-undo)

Definition at line 2042 of file NBNodeCont.cpp.

References myJoinedClusters.

◆ wasRemoved()

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

Returns whether the node with the id was deleted explicitly.

Definition at line 287 of file NBNodeCont.h.

References myExtractedNodes.

Field Documentation

◆ myClusters2Join

std::vector<std::pair<std::set<std::string>, NBNode*> > NBNodeCont::myClusters2Join
private

loaded sets of node ids to join (cleared after use)

Definition at line 455 of file NBNodeCont.h.

Referenced by addCluster2Join(), and joinLoadedClusters().

◆ myExtractedNodes

NodeCont NBNodeCont::myExtractedNodes
private

The extracted nodes which are kept for reference.

Definition at line 449 of file NBNodeCont.h.

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

◆ myGuessedTLS

std::set<NBNode*, ComparatorIdLess> NBNodeCont::myGuessedTLS
private

nodes that received a traffic light due to guessing (–tls.guess)

Definition at line 467 of file NBNodeCont.h.

Referenced by guessTLs(), and recheckGuessedTLS().

◆ myJoined

std::set<std::string> NBNodeCont::myJoined
private

ids found in loaded join clusters used for error checking

Definition at line 461 of file NBNodeCont.h.

Referenced by addCluster2Join(), and addJoinExclusion().

◆ myJoinedClusters

std::vector<std::set<std::string> > NBNodeCont::myJoinedClusters
private

sets of node ids which were joined

Definition at line 458 of file NBNodeCont.h.

Referenced by getJoinedClusters(), registerJoinedCluster(), registerJoinedCluster(), and unregisterJoinedCluster().

◆ myJoinExclusions

std::set<std::string> NBNodeCont::myJoinExclusions
private

set of node ids which should not be joined

Definition at line 452 of file NBNodeCont.h.

Referenced by addCluster2Join(), addJoinExclusion(), joinJunctions(), joinLoadedClusters(), and joinSameJunctions().

◆ myNodes

◆ myRailComponents

std::vector<std::vector<std::string> > NBNodeCont::myRailComponents
private

network components that must be removed if not connected to the road network via stop access

Definition at line 476 of file NBNodeCont.h.

Referenced by removeComponents(), and removeRailComponents().

◆ myRTree

NamedRTree NBNodeCont::myRTree
private

node positions for faster lookup

Definition at line 473 of file NBNodeCont.h.

Referenced by extract(), insert(), insert(), and retrieveByPos().

◆ mySplit

std::set<const NBNode*> NBNodeCont::mySplit
private

nodes that were created when splitting an edge

Definition at line 464 of file NBNodeCont.h.

Referenced by markAsSplit(), and removeUnwishedNodes().

◆ myUnsetTLS

std::set<const NBNode*> NBNodeCont::myUnsetTLS
private

nodes that are excluded from tls-guessing

Definition at line 470 of file NBNodeCont.h.

Referenced by guessTLs(), and markAsNotTLS().


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