SUMO - Simulation of Urban MObility

NBEdge Class Reference

The representation of a single edge during network building. More...

#include <NBEdge.h>

Inheritance diagram for NBEdge:
Named

Data Structures

struct  Connection
 A structure which describes a connection between edges or lanes. More...
class  connections_finder
class  connections_fromlane_finder
class  connections_relative_edgelane_sorter
class  connections_toedge_finder
class  connections_toedgelane_finder
struct  Lane
 An (internal) definition of a single lane of an edge. More...
class  MainDirections
class  tls_disable_finder
struct  TLSDisabledConnection
class  ToEdgeConnectionsAdder

Public Types

enum  EdgeBuildingStep {
  INIT_REJECT_CONNECTIONS, INIT, EDGE2EDGES, LANES2EDGES,
  LANES2LANES_RECHECK, LANES2LANES_DONE, LANES2LANES_USER
}
 

Current state of the edge within the building process.

More...
enum  Lane2LaneInfoType { L2L_COMPUTED, L2L_USER, L2L_VALIDATED }
 

Modes of setting connections between lanes.

More...

Public Member Functions

void addCrossingPointsAsIncomingWithGivenOutgoing (NBEdge *o, PositionVector &into)
void allowVehicleClass (int lane, SUMOVehicleClass vclass)
 set allowed class for the given lane or for all lanes if -1 is given
void append (NBEdge *continuation)
void appendTurnaround (bool noTLSControlled) throw ()
 Add a connection to the previously computed turnaround, if wished.
void buildInnerEdges (const NBNode &n, unsigned int noInternalNoSplits, unsigned int &lno, unsigned int &splitNo)
void clearControllingTLInformation ()
 clears tlID for all connections
bool computeEdge2Edges (bool noLeftMovers)
 computes the edge (step1: computation of approached edges)
bool computeLanes2Edges ()
 computes the edge, step2: computation of which lanes approach the edges)
void computeTurningDirections ()
 computes which edge shall be the turn-around one, if any
void copyConnectionsFrom (NBEdge *src)
void decLaneNo (unsigned int by, int dir=0)
void declareConnectionsAsLoaded ()
void disableConnection4TLS (int fromLane, NBEdge *toEdge, int toLane)
void disallowVehicleClass (int lane, SUMOVehicleClass vclass)
 set disallowed class for the given lane or for all lanes if -1 is given
void dismissVehicleClassInformation ()
bool expandableBy (NBEdge *possContinuation) const
SUMOVehicleClasses getAllowedVehicleClasses (unsigned int lane) const
 get allowed classed for the given lane
SUMOVehicleClasses getAllowedVehicleClasses () const
 get the union of allowed classes over all lanes
SUMOReal getAngle (const NBNode &atNode) const
PositionVector getCCWBoundaryLine (const NBNode &n, SUMOReal offset) const
EdgeVector getConnectedEdges () const throw ()
const EdgeVector * getConnectedSorted ()
std::vector< int > getConnectionLanes (NBEdge *currentOutgoing) const
 returns the list of lanes that may be used to reach the given edge
std::vector< Connection > & getConnections ()
const std::vector< Connection > & getConnections () const
PositionVector getCWBoundaryLine (const NBNode &n, SUMOReal offset) const
SUMOVehicleClasses getDisallowedVehicleClasses (unsigned int lane) const
 get disallowed classed for the given lane
SUMOVehicleClasses getDisallowedVehicleClasses () const
 get the union of disallowed classes over all lanes
const std::string & getID () const
 Returns the id.
int getJunctionPriority (const NBNode *const node) const
 Returns the junction priority (normalised for the node currently build)
std::string getLaneID (unsigned int lane) const
SUMOReal getLaneSpeed (unsigned int lane) const
const Lane & getLaneStruct (unsigned int lane) const
Lane & getLaneStruct (unsigned int lane)
int getMaxConnectedLane (NBEdge *of) const
SUMOReal getMaxLaneOffset ()
Position getMaxLaneOffsetPositionAt (NBNode *node, SUMOReal width) const
int getMinConnectedLane (NBEdge *of) const
Position getMinLaneOffsetPositionAt (NBNode *node, SUMOReal width) const
SUMOReal getNormedAngle () const
SUMOReal getNormedAngle (const NBNode &atNode) const
NBEdge * getTurnDestination () const
const std::string & getTypeID () const throw ()
bool hasLaneSpecificAllow () const
 whether lanes differ in allowed vehicle classes
bool hasLaneSpecificDisallow () const
 whether lanes differ in disallowed vehicle classes
bool hasLaneSpecificOffset () const
 whether lanes differ in offset
bool hasLaneSpecificSpeed () const
 whether lanes differ in speed
bool hasLaneSpecificWidth () const
 whether lanes differ in width
bool hasRestrictions () const
 whether at least one lane has restrictions
bool hasSignalisedConnectionTo (const NBEdge *const e) const throw ()
void incLaneNo (unsigned int by)
void invalidateConnections (bool reallowSetting=false)
bool isConnectedTo (NBEdge *e)
 Returns the information whethe a connection to the given edge has been added (or computed)
bool isNearEnough2BeJoined2 (NBEdge *e, SUMOReal threshold) const
bool isTurningDirectionAt (const NBNode *n, const NBEdge *const edge) const throw ()
 Returns whether the given edge is the opposite direction to this edge.
bool lanesWereAssigned () const
void markAsInLane2LaneState ()
bool mayBeTLSControlled (int fromLane, NBEdge *toEdge, int toLane) const throw ()
void moveOutgoingConnectionsFrom (NBEdge *e, unsigned int laneOff)
 NBEdge (const std::string &id, NBNode *from, NBNode *to, std::string type, SUMOReal speed, unsigned int nolanes, int priority, SUMOReal width, SUMOReal offset, PositionVector geom, const std::string &streetName="", LaneSpreadFunction spread=LANESPREAD_RIGHT, bool tryIgnoreNodePositions=false) throw (ProcessError)
 Constructor.
 NBEdge (const std::string &id, NBNode *from, NBNode *to, std::string type, SUMOReal speed, unsigned int nolanes, int priority, SUMOReal width, SUMOReal offset, const std::string &streetName="", LaneSpreadFunction spread=LANESPREAD_RIGHT) throw (ProcessError)
 Constructor.
 NBEdge (const std::string &id, NBNode *from, NBNode *to, NBEdge *tpl)
 Constructor.
bool needsLaneSpecificOutput () const
 whether at least one lane has values differing from the edges values
void preferVehicleClass (int lane, SUMOVehicleClass vclass)
bool recheckLanes ()
void reinit (NBNode *from, NBNode *to, const std::string &type, SUMOReal speed, unsigned int nolanes, int priority, PositionVector geom, SUMOReal width, SUMOReal offset, LaneSpreadFunction spread=LANESPREAD_RIGHT, bool tryIgnoreNodePositions=false) throw (ProcessError)
 Resets initial values.
void remapConnections (const EdgeVector &incoming)
 Remaps the connection in a way tha allows the removal of it This edges (which is a "dummy" edge, in fact) connections are spread over the incoming non-dummy edges.
void removeFromConnections (NBEdge *toEdge, int fromLane=-1, int toLane=-1)
 Removes the specified connection(s)
void replaceInConnections (NBEdge *which, NBEdge *by, unsigned int laneOff)
bool setControllingTLInformation (const NBConnection &c, const std::string &tlID)
 Returns if the link could be set as to be controlled.
void setID (const std::string &newID)
 resets the id
void setJunctionPriority (const NBNode *const node, int prio)
 Sets the junction priority of the edge.
void setLaneSpeed (unsigned int lane, SUMOReal speed)
void setLeftHanded () throw ()
 Marks this edge to be left-handed.
void setLoadedLength (SUMOReal val)
void setOffset (int lane, SUMOReal offset)
 set lane specific end-offset (negative lane implies set for all lanes)
void setSpeed (int lane, SUMOReal offset)
 set lane specific speed (negative lane implies set for all lanes)
void setTurningDestination (NBEdge *e)
void setVehicleClasses (const SUMOVehicleClasses &allowed, const SUMOVehicleClasses &disallowed, int lane=-1)
 set allowed/disallowed classes for the given lane or for all lanes if -1 is given
void setWidth (int lane, SUMOReal width)
 set lane specific width (negative lane implies set for all lanes)
void sortOutgoingConnectionsByAngle ()
 sorts the outgoing connections by their angle relative to their junction
void sortOutgoingConnectionsByIndex ()
 sorts the outgoing connections by their from-lane-index and their to-lane-index
NBNode * tryGetNodeAtPosition (SUMOReal pos, SUMOReal tolerance=5.0) const
 Returns the node at the given edges length (using an epsilon) When no node is existing at the given position, 0 is returned The epsilon is a static member of NBEdge, should be setable via program options.
SUMOReal width () const
 ~NBEdge () throw ()
 Destructor.
Applying offset
void reshiftPosition (SUMOReal xoff, SUMOReal yoff) throw ()
 Applies an offset to the edge.
Atomar getter methods
unsigned int getNumLanes () const throw ()
 Returns the number of lanes.
int getPriority () const throw ()
 Returns the priority of the edge.
NBNode * getFromNode () const throw ()
 Returns the origin node of the edge.
NBNode * getToNode () const throw ()
 Returns the destination node of the edge.
SUMOReal getAngle () const throw ()
 Returns the angle of the edge.
SUMOReal getLength () const throw ()
 Returns the computed length of the edge.
SUMOReal getLoadedLength () const throw ()
 Returns the length was set explicitly or the computed length if it wasn't set.
bool hasLoadedLength () const throw ()
 Returns whether a length was set explicitly.
SUMOReal getSpeed () const throw ()
 Returns the speed allowed on this edge.
EdgeBuildingStep getStep () const throw ()
 The building step of this edge.
SUMOReal getWidth () const throw ()
 Returns the width of lanes of this edge.
const std::string & getStreetName () const throw ()
 Returns the street name of this edge.
void setStreetName (const std::string &name)
 sets the street name of this edge
SUMOReal getOffset () const throw ()
 Returns the offset to the destination node.
const std::string & getTypeName () const throw ()
 Returns the type name.
const std::vector< NBEdge::Lane > & getLanes () const
 Returns the lane definitions.
Edge geometry access and computation
const PositionVector & getGeometry () const throw ()
 Returns the geometry of the edge.
const PositionVector getInnerGeometry () const
 Returns the geometry of the edge without the endpoints.
bool hasDefaultGeometry () const
 Returns whether the geometry consists only of the node positions.
bool hasDefaultGeometryEndpoints () const
 Returns whether the geometry is terminated by the node positions This default may be violated by initializing with tryIgnoreNodePositions=true' or with setGeometry() non-default endpoints are useful to control the generated node shape.
void setGeometry (const PositionVector &g, bool inner=false) throw ()
 (Re)sets the edge's geometry
void addGeometryPoint (int index, const Position &p) throw ()
 Adds a further geometry point.
void computeEdgeShape () throw ()
 Computes the shape of the edge (regarding the nodes' shapes.
const PositionVector & getLaneShape (unsigned int i) const throw ()
 Returns the shape of the nth lane.
void setLaneSpreadFunction (LaneSpreadFunction spread) throw ()
 (Re)sets how the lanes lateral offset shall be computed
LaneSpreadFunction getLaneSpreadFunction () const throw ()
 Returns how this edge's lanes' lateral offset is computed.
bool splitGeometry (NBEdgeCont &ec, NBNodeCont &nc)
 Splits this edge at geometry points.
Setting and getting connections
bool addEdge2EdgeConnection (NBEdge *dest) throw ()
 Adds a connection to another edge.
bool addLane2LaneConnection (unsigned int fromLane, NBEdge *dest, unsigned int toLane, Lane2LaneInfoType type, bool mayUseSameDestination=false, bool mayDefinitelyPass=false) throw ()
 Adds a connection between the specified this edge's lane and an approached one.
bool addLane2LaneConnections (unsigned int fromLane, NBEdge *dest, unsigned int toLane, unsigned int no, Lane2LaneInfoType type, bool invalidatePrevious=false, bool mayDefinitelyPass=false) throw ()
 Builds no connections starting at the given lanes.
void setConnection (unsigned int lane, NBEdge *destEdge, unsigned int destLane, Lane2LaneInfoType type, bool mayUseSameDestination=false, bool mayDefinitelyPass=false) throw ()
 Adds a connection to a certain lane of a certain edge.
std::vector< Connection > getConnectionsFromLane (unsigned int lane) const throw ()
 Returns connections from a given lane.
bool hasConnectionTo (NBEdge *destEdge, unsigned int destLane) const throw ()
 Retrieves info about a connection to a certain lane of a certain edge.
Setting/getting special types
void setAsMacroscopicConnector () throw ()
 Marks this edge as a macroscopic connector.
bool isMacroscopicConnector () const throw ()
 Returns whether this edge was marked as a macroscopic connector.
void setIsInnerEdge () throw ()
 Marks this edge being within an intersection.
bool isInnerEdge () const throw ()
 Returns whether this edge was marked as being within an intersection.

Static Public Member Functions

static bool connections_sorter (const Connection &c1, const Connection &c2)
static std::pair< SUMOReal,
SUMOReal > 
laneOffset (const Position &from, const Position &to, SUMOReal lanewidth, unsigned int lane, size_t noLanes, LaneSpreadFunction lsf, bool leftHand)
 Computes the offset from the edge shape on the current segment.

Static Public Attributes

static const SUMOReal UNSPECIFIED_LOADED_LENGTH = -1
 no length override given
static const SUMOReal UNSPECIFIED_OFFSET = 0
 unspecified lane offset
static const SUMOReal UNSPECIFIED_WIDTH = -1
 unspecified lane width

Protected Member Functions

bool acceptBeingTurning (NBEdge *e)

Protected Attributes

std::string myID
 The name of the object.

Private Member Functions

PositionVector computeLaneShape (unsigned int lane) throw (InvalidArgument)
 Computes the shape for the given lane.
void computeLaneShapes () throw ()
unsigned int computePrioritySum (std::vector< unsigned int > *priorities)
void divideOnEdges (const EdgeVector *outgoing)
void init (unsigned int noLanes, bool tryIgnoreNodePositions) throw (ProcessError)
 Initialization routines common to all constructors.
std::pair< SUMOReal, SUMOReal > laneOffset (const Position &from, const Position &to, SUMOReal lanewidth, unsigned int lane) throw (InvalidArgument)
 Computes the offset from the edge shape on the current segment.
void moveConnectionToLeft (unsigned int lane)
void moveConnectionToRight (unsigned int lane)
 NBEdge (const NBEdge &s)
 invalidated copy constructor
NBEdge & operator= (const NBEdge &s)
 invalidated assignment operator
std::vector< unsigned int > * preparePriorities (const EdgeVector *outgoing)

Private Attributes

bool myAmInnerEdge
 Information whether this is a junction-inner edge.
bool myAmLeftHand
 Whether this edge is a left-hand edge.
bool myAmMacroscopicConnector
 Information whether this edge is a (macroscopic) connector.
SUMOReal myAngle
 The angle of the edge.
std::vector< Connection > myConnections
 List of connections to following edges.
NBNode * myFrom
 The source and the destination node.
int myFromJunctionPriority
 The priority normalised for the node the edge is outgoing of.
PositionVector myGeom
 The geometry for the edge.
std::vector< Lane > myLanes
 Lane information.
LaneSpreadFunction myLaneSpreadFunction
 The information about how to spread the lanes.
SUMOReal myLength
 The length of the edge.
SUMOReal myLoadedLength
 An optional length to use (-1 if not valid)
std::string myName
 An optional name.
SUMOReal myOffset
 This edges's offset to the intersection begin (will be applied to all lanes)
int myPriority
 The priority of the edge.
SUMOReal mySpeed
 The maximal speed.
EdgeBuildingStep myStep
 The building step.
std::string myStreetName
 The street name (or whatever arbitrary string you wish to attach)
std::vector
< TLSDisabledConnection > 
myTLSDisabledConnections
NBNode * myTo
int myToJunctionPriority
 The priority normalised for the node the edge is incoming in.
NBEdge * myTurnDestination
 The turn destination edge.
std::string myType
 The type of the edge.
SUMOReal myWidth
 This width of this edge's lanes.
Temporary variables for turning edge computation
SUMOReal myAmTurningWithAngle
 Was assigned as a turn with this angle.
NBEdge * myAmTurningOf
 Was assigned as a turning edge of this one.

Friends

class GNEEdge
class GNELane
class NBEdgeCont
class NBEdgeSuccessorBuilder

Detailed Description

The representation of a single edge during network building.

Definition at line 66 of file NBEdge.h.


Member Enumeration Documentation

Current state of the edge within the building process.

As the network is build in a cascaded way, considering loaded information, a counter holding the current step is needed. This is done by using this enumeration.

Enumerator:
INIT_REJECT_CONNECTIONS 

The edge has been loaded and connections shall not be added.

INIT 

The edge has been loaded, nothing is computed yet.

EDGE2EDGES 

The relationships between edges are computed/loaded.

LANES2EDGES 

Lanes to edges - relationships are computed/loaded.

LANES2LANES_RECHECK 

Lanes to lanes - relationships are computed; should be recheked.

LANES2LANES_DONE 

Lanes to lanes - relationships are computed; no recheck is necessary/wished.

LANES2LANES_USER 

Lanes to lanes - relationships are loaded; no recheck is necessary/wished.

Definition at line 84 of file NBEdge.h.

Modes of setting connections between lanes.

Enumerator:
L2L_COMPUTED 

The connection was computed.

L2L_USER 

The connection was given by the user.

L2L_VALIDATED 

The connection was computed and validated.

Definition at line 105 of file NBEdge.h.


Constructor & Destructor Documentation

NBEdge::NBEdge ( const std::string &  id,
NBNode *  from,
NBNode *  to,
std::string  type,
SUMOReal  speed,
unsigned int  nolanes,
int  priority,
SUMOReal  width,
SUMOReal  offset,
const std::string &  streetName = "",
LaneSpreadFunction  spread = LANESPREAD_RIGHT 
) throw (ProcessError)

Constructor.

Use this if no edge geometry is given.

Parameters:
[in]idThe id of the edge
[in]fromThe node the edge starts at
[in]toThe node the edge ends at
[in]typeThe type of the edge (my be =="")
[in]speedThe maximum velocity allowed on this edge
[in]nolanesThe number of lanes this edge has
[in]priorityThis edge's priority
[in]widthThis edge's lane width
[in]offsetAdditional offset to the destination node
[in]streetNameThe street name (need not be unique)
[in]spreadHow the lateral offset of the lanes shall be computed
See also:
init
LaneSpreadFunction

Definition at line 157 of file NBEdge.cpp.

References init().

Referenced by splitGeometry().

NBEdge::NBEdge ( const std::string &  id,
NBNode *  from,
NBNode *  to,
std::string  type,
SUMOReal  speed,
unsigned int  nolanes,
int  priority,
SUMOReal  width,
SUMOReal  offset,
PositionVector  geom,
const std::string &  streetName = "",
LaneSpreadFunction  spread = LANESPREAD_RIGHT,
bool  tryIgnoreNodePositions = false 
) throw (ProcessError)

Constructor.

Use this if the edge's geometry is given.

Parameters:
[in]idThe id of the edge
[in]fromThe node the edge starts at
[in]toThe node the edge ends at
[in]typeThe type of the edge (may be =="")
[in]speedThe maximum velocity allowed on this edge
[in]nolanesThe number of lanes this edge has
[in]priorityThis edge's priority
[in]widthThis edge's lane width
[in]offsetAdditional offset to the destination node
[in]geomThe edge's geomatry
[in]streetNameThe street name (need not be unique)
[in]spreadHow the lateral offset of the lanes shall be computed
[in]tryIgnoreNodePositionsDoes not add node geometries if geom.size()>=2
See also:
init
LaneSpreadFunction

Definition at line 177 of file NBEdge.cpp.

References init().

NBEdge::NBEdge ( const std::string &  id,
NBNode *  from,
NBNode *  to,
NBEdge *  tpl 
)

Constructor.

Use this to copy attribuets from another edge

Parameters:
[in]idThe id of the edge
[in]fromThe node the edge starts at
[in]toThe node the edge ends at
[in]tplThe template edge to copy attributes from

Definition at line 198 of file NBEdge.cpp.

References getAllowedVehicleClasses(), getDisallowedVehicleClasses(), getLaneSpeed(), getNumLanes(), init(), setLaneSpeed(), and setVehicleClasses().

NBEdge::~NBEdge ( ) throw ()

Destructor.

Definition at line 303 of file NBEdge.cpp.

NBEdge::NBEdge ( const NBEdge &  s) [private]

invalidated copy constructor


Member Function Documentation

bool NBEdge::acceptBeingTurning ( NBEdge *  e) [protected]
void NBEdge::addCrossingPointsAsIncomingWithGivenOutgoing ( NBEdge *  o,
PositionVector &  into 
)
bool NBEdge::addEdge2EdgeConnection ( NBEdge *  dest) throw ()

Adds a connection to another edge.

If the given edge does not start at the node this edge ends on, false is returned.

All other cases return true. Though, a connection may not been added if this edge is in step "INIT_REJECT_CONNECTIONS". Also, this method assures that a connection to an edge is set only once, no multiple connections to next edge are stored.

After a first connection to an edge was set, the process step is set to "EDGE2EDGES".

Note:
Passing 0 implicitly removes all existing connections
Parameters:
[in]destThe connection's destination edge
Returns:
Whether the connection was valid

Definition at line 491 of file NBEdge.cpp.

Referenced by NBEdgeCont::joinSameNodeConnectingEdges(), NIXMLConnectionsHandler::myStartElement(), and remapConnections().

void NBEdge::addGeometryPoint ( int  index,
const Position &  p 
) throw ()

Adds a further geometry point.

Some importer do not know an edge's geometry when it is initialised. This method allows to insert further geometry points after the edge has been built.

Parameters:
[in]indexThe position at which the point shall be added
[in]pThe point to add

Definition at line 439 of file NBEdge.cpp.

Referenced by NIImporter_VISUM::parse_EdgePolys().

bool NBEdge::addLane2LaneConnection ( unsigned int  fromLane,
NBEdge *  dest,
unsigned int  toLane,
Lane2LaneInfoType  type,
bool  mayUseSameDestination = false,
bool  mayDefinitelyPass = false 
) throw ()

Adds a connection between the specified this edge's lane and an approached one.

If the given edge does not start at the node this edge ends on, false is returned.

All other cases return true. Though, a connection may not been added if this edge is in step "INIT_REJECT_CONNECTIONS". Before the lane-to-lane connection is set, a connection between edges is established using "addEdge2EdgeConnection". Then, "setConnection" is called for inserting the lane-to-lane connection.

Parameters:
[in]fromLaneThe connection's starting lane (of this edge)
[in]destThe connection's destination edge
[in]toLaneThe connection's destination lane
[in]typeThe connections's type
[in]mayUseSameDestinationWhether this connection may be set though connecting an already connected lane
[in]mayDefinitelyPassWhether this connection is definitely undistrubed (special case for on-ramps)
Returns:
Whether the connection was added / exists
See also:
addEdge2EdgeConnection
setConnection
Todo:
Check difference between "setConnection" and "addLane2LaneConnection"

Definition at line 515 of file NBEdge.cpp.

Referenced by NIImporter_SUMO::_loadNetwork(), NIVissimConnection::buildEdgeConnections(), moveOutgoingConnectionsFrom(), NIXMLEdgesHandler::myEndElement(), NIImporter_VISUM::parse_LanesConnections(), NIXMLConnectionsHandler::parseLaneBound(), and NBEdgeCont::splitAt().

bool NBEdge::addLane2LaneConnections ( unsigned int  fromLane,
NBEdge *  dest,
unsigned int  toLane,
unsigned int  no,
Lane2LaneInfoType  type,
bool  invalidatePrevious = false,
bool  mayDefinitelyPass = false 
) throw ()

Builds no connections starting at the given lanes.

If "invalidatePrevious" is true, a call to "invalidateConnections(true)" is done. This method loops through the given connections to set, calling "addLane2LaneConnection" for each.

Parameters:
[in]fromLaneThe first of the connections' starting lanes (of this edge)
[in]destThe connections' destination edge
[in]toLaneThe first of the connections' destination lanes
[in]noThe number of connections to set
[in]typeThe connections' type
[in]invalidatePreviousWhether previously set connection shall be deleted
[in]mayDefinitelyPassWhether these connections are definitely undistrubed (special case for on-ramps)
Returns:
Whether the connections were added / existed
See also:
addLane2LaneConnection
invalidateConnections

Definition at line 537 of file NBEdge.cpp.

Referenced by NBNodeCont::buildOffRamp(), NBNodeCont::buildOnRamp(), and NBNode::computeLanes2Lanes().

void NBEdge::allowVehicleClass ( int  lane,
SUMOVehicleClass  vclass 
)

set allowed class for the given lane or for all lanes if -1 is given

Definition at line 1878 of file NBEdge.cpp.

References getLaneID(), myLanes, SUMO_ATTR_DISALLOW, toString(), and WRITE_WARNING.

Referenced by NIXMLEdgesHandler::addLane(), NINavTeqHelper::addVehicleClasses(), and setVehicleClasses().

void NBEdge::append ( NBEdge *  continuation)
void NBEdge::appendTurnaround ( bool  noTLSControlled) throw ()

Add a connection to the previously computed turnaround, if wished.

If a turning direction exists (myTurnDestination!=0) and either the edge is not controlled by a tls or noTLSControlled is false, a connection to the edge stored in myTurnDestination is added (from the leftmost lane of this edge to the leftmost lane of myTurnDestination).

Parameters:
[in]noTLSControlledWhether the turnaround shall not be connected if this edge is controlled by a tls

Definition at line 1329 of file NBEdge.cpp.

void NBEdge::clearControllingTLInformation ( )

clears tlID for all connections

Definition at line 1628 of file NBEdge.cpp.

References myConnections.

bool NBEdge::computeEdge2Edges ( bool  noLeftMovers)

computes the edge (step1: computation of approached edges)

Definition at line 1032 of file NBEdge.cpp.

References EDGE2EDGES, NBNode::getOutgoingEdges(), NBNode::isLeftMover(), myConnections, myStep, and myTo.

void NBEdge::computeEdgeShape ( ) throw ()

Computes the shape of the edge (regarding the nodes' shapes.

Because an edge's shape should start/end at the boundaries of the nodes the edge starts/ends at, we have to recompute the edge's shape after we know the ones of the nodes. This is done within this method.

Todo:
Describe what is done here

Definition at line 353 of file NBEdge.cpp.

References Line::atan2DegreeAngle(), PositionVector::eraseAt(), Line::extrapolateBy(), GeomHelper::getMinAngleDiff(), Line::getPositionAtDistance(), NBNode::getShape(), PositionVector::getSubpart(), PositionVector::intersects(), Line::intersectsAtLengths(), PositionVector::intersectsAtLengths(), PositionVector::length(), myFrom, Named::myID, myLanes, myLength, myTo, Line::p1(), Line::p2(), POSITION_EPS, PositionVector::push_back(), PositionVector::push_front_noDoublePos(), PositionVector::reverse(), PositionVector::size(), SUMOReal, and WRITE_MESSAGE.

bool NBEdge::computeLanes2Edges ( )

computes the edge, step2: computation of which lanes approach the edges)

Definition at line 1053 of file NBEdge.cpp.

References divideOnEdges(), EDGE2EDGES, getConnectedSorted(), LANES2EDGES, myConnections, and myStep.

PositionVector NBEdge::computeLaneShape ( unsigned int  lane) throw (InvalidArgument) [private]
void NBEdge::computeLaneShapes ( ) throw () [private]

Definition at line 849 of file NBEdge.cpp.

References computeLaneShape(), Named::getID(), myFrom, myGeom, myLanes, myTo, and WRITE_WARNING.

Referenced by decLaneNo(), and incLaneNo().

unsigned int NBEdge::computePrioritySum ( std::vector< unsigned int > *  priorities) [private]

computes the sum of the given list's entries (sic!)

Definition at line 1319 of file NBEdge.cpp.

Referenced by divideOnEdges().

void NBEdge::computeTurningDirections ( )

computes which edge shall be the turn-around one, if any

Definition at line 769 of file NBEdge.cpp.

References getAngle(), NBNode::getOutgoingEdges(), isConnectedTo(), myConnections, myTo, myTurnDestination, NBHelpers::relAngle(), setTurningDestination(), and SUMOReal.

Referenced by acceptBeingTurning().

static bool NBEdge::connections_sorter ( const Connection &  c1,
const Connection &  c2 
) [inline, static]
void NBEdge::copyConnectionsFrom ( NBEdge *  src)

Definition at line 1864 of file NBEdge.cpp.

References myConnections, and myStep.

Referenced by NBEdgeCont::splitAt().

void NBEdge::decLaneNo ( unsigned int  by,
int  dir = 0 
)
void NBEdge::declareConnectionsAsLoaded ( ) [inline]

Definition at line 915 of file NBEdge.h.

References LANES2LANES_USER, and myStep.

Referenced by NIImporter_SUMO::_loadNetwork().

void NBEdge::disableConnection4TLS ( int  fromLane,
NBEdge *  toEdge,
int  toLane 
)
void NBEdge::disallowVehicleClass ( int  lane,
SUMOVehicleClass  vclass 
)

set disallowed class for the given lane or for all lanes if -1 is given

Definition at line 1899 of file NBEdge.cpp.

References getLaneID(), myLanes, SUMO_ATTR_ALLOW, toString(), and WRITE_WARNING.

Referenced by NIXMLEdgesHandler::addLane(), and setVehicleClasses().

void NBEdge::dismissVehicleClassInformation ( )

Definition at line 2060 of file NBEdge.cpp.

References myLanes.

void NBEdge::divideOnEdges ( const EdgeVector *  outgoing) [private]
bool NBEdge::expandableBy ( NBEdge *  possContinuation) const

!! if (myAllowedOnLanes!=possContinuation->myAllowedOnLanes || myNotAllowedOnLanes!=possContinuation->myNotAllowedOnLanes) { return false; }

Definition at line 1682 of file NBEdge.cpp.

References EDGE2EDGES, getConnectedEdges(), getConnectionLanes(), getPriority(), INIT, INIT_REJECT_CONNECTIONS, LANES2EDGES, LANES2LANES_DONE, LANES2LANES_RECHECK, LANES2LANES_USER, myConnections, myLanes, mySpeed, and myStep.

SUMOVehicleClasses NBEdge::getAllowedVehicleClasses ( ) const

get the union of allowed classes over all lanes

Definition at line 1994 of file NBEdge.cpp.

References myLanes.

Referenced by NIXMLEdgesHandler::addEdge(), and NBEdge().

SUMOVehicleClasses NBEdge::getAllowedVehicleClasses ( unsigned int  lane) const

get allowed classed for the given lane

Definition at line 2016 of file NBEdge.cpp.

References myLanes.

SUMOReal NBEdge::getAngle ( const NBNode &  atNode) const
PositionVector NBEdge::getCCWBoundaryLine ( const NBNode &  n,
SUMOReal  offset 
) const

Definition at line 1661 of file NBEdge.cpp.

References PositionVector::move2side(), myAmLeftHand, myFrom, and myLanes.

EdgeVector NBEdge::getConnectedEdges ( ) const throw ()

returns the list of outgoing edges unsorted

Definition at line 1442 of file NBEdge.cpp.

References myConnections.

Referenced by NIVissimDisturbance::addToNode(), expandableBy(), NBContHelper::same_connection_edge_sorter::getMinMaxRelAngles(), and remapConnections().

const EdgeVector * NBEdge::getConnectedSorted ( )

returns the list of outgoing edges without the turnaround sorted in clockwise direction

Definition at line 1171 of file NBEdge.cpp.

References NBNode::getOutgoingEdges(), myConnections, myTo, and myTurnDestination.

Referenced by computeLanes2Edges().

std::vector< int > NBEdge::getConnectionLanes ( NBEdge *  currentOutgoing) const

returns the list of lanes that may be used to reach the given edge

Definition at line 1157 of file NBEdge.cpp.

References myConnections, and myTurnDestination.

Referenced by NBNode::ApproachingDivider::execute(), and expandableBy().

std::vector<Connection>& NBEdge::getConnections ( ) [inline]

Definition at line 784 of file NBEdge.h.

References myConnections.

std::vector< NBEdge::Connection > NBEdge::getConnectionsFromLane ( unsigned int  lane) const throw ()

Returns connections from a given lane.

Parameters:
[in]laneThe lane which connections shall be returned
Returns:
The connections from the given lane
See also:
NBEdge::Connection

Definition at line 609 of file NBEdge.cpp.

Referenced by NIVissimTL::NIVissimTLSignal::addTo(), NBOwnTLDef::collectLinks(), NBLoadedTLDef::collectLinks(), moveOutgoingConnectionsFrom(), NBOwnTLDef::myCompute(), and NBRequest::writeLaneResponse().

PositionVector NBEdge::getCWBoundaryLine ( const NBNode &  n,
SUMOReal  offset 
) const

Definition at line 1646 of file NBEdge.cpp.

References PositionVector::move2side(), myAmLeftHand, myFrom, and myLanes.

SUMOVehicleClasses NBEdge::getDisallowedVehicleClasses ( ) const

get the union of disallowed classes over all lanes

Definition at line 2005 of file NBEdge.cpp.

References myLanes.

Referenced by NIXMLEdgesHandler::addEdge(), and NBEdge().

SUMOVehicleClasses NBEdge::getDisallowedVehicleClasses ( unsigned int  lane) const

get disallowed classed for the given lane

Definition at line 2023 of file NBEdge.cpp.

References myLanes.

const std::string& Named::getID ( ) const [inline, inherited]

Returns the id.

Returns:
The stored id

Reimplemented in MS_E2_ZS_CollectorOverLanes.

Definition at line 59 of file Named.h.

References Named::myID.

Referenced by RORouteDef_Alternatives::addAlternative(), MSNet::addBusStop(), NLHandler::addConnection(), NBLoadedSUMOTLDef::addConnection(), NIImporter_OpenDrive::addE2EConnectionsSecure(), NIImporter_SUMO::addPhase(), NBDistrict::addSink(), NBDistrict::addSource(), MSRouteHandler::addStop(), NIXMLTrafficLightsHandler::addTlConnection(), NIVissimDisturbance::addToNode(), MSVehicle::addTraciStop(), NIVisumTL::build(), RORouteDef_Complete::buildCurrentRoute(), NIImporter_VISUM::buildDistrictNode(), NIVissimConnection::buildEdgeConnections(), buildInnerEdges(), NIVissimEdge::buildNBEdge(), NBNodeCont::buildOffRamp(), NBNodeCont::buildOnRamp(), ODDistrictHandler::closeDistrict(), NBTrafficLightDefinition::collectEdges(), NBOwnTLDef::collectLinks(), NBNode::computeInternalLaneShape(), computeLaneShapes(), NBNode::computeLogic(), NBNode::computeNodeShape(), NBTrafficLightLogicCont::computeSingleLogic(), connections_sorter(), MSLane::detectCollisions(), NIVissimDistrictConnection::dict_BuildDistricts(), MSVTypeProbe::execute(), Command_SaveTLSSwitches::execute(), NBTrafficLightLogicCont::extract(), NBEdgeCont::extract(), MSNet::getBusStopID(), NIImporter_VISUM::getNamedEdgeContinuating(), NLTriggerBuilder::getPosition(), NBNode::getPossiblySplittedIncoming(), NBNode::getPossiblySplittedOutgoing(), NIImporter_VISUM::getReversedContinuating(), MSUnboundActuatedTrafficLightLogic::init(), MSAgentbasedTrafficLightLogic::init(), MSActuatedTrafficLightLogic::init(), NIXMLTrafficLightsHandler::initTrafficLightLogic(), NIImporter_SUMO::initTrafficLightLogic(), NBNodeCont::joinJunctions(), NBEdgeCont::joinSameNodeConnectingEdges(), NIImporter_OpenDrive::loadNetwork(), MSLane::moveCritical(), MSVehicle::MSVehicle(), NBLoadedTLDef::myCompute(), NIXMLEdgesHandler::myEndElement(), NIXMLConnectionsHandler::myStartElement(), MSLaneSpeedTrigger::myStartElement(), NBConnection::NBConnection(), NBRequest::NBRequest(), NBOwnTLDef::edge_by_incoming_priority_sorter::operator()(), NBNode::nodes_by_id_sorter::operator()(), NBNetBuilder::by_id_sorter::operator()(), NBContHelper::same_connection_edge_sorter::operator()(), Named::ComparatorIdLess::operator()(), NIImporter_VISUM::parse_EdgePolys(), NIImporter_VISUM::parse_Lanes(), NIImporter_VISUM::parse_LanesConnections(), NIImporter_VISUM::parse_Turns(), NIImporter_VISUM::parse_TurnsToSignalGroups(), NIXMLConnectionsHandler::parseDeprecatedLaneDefinition(), NIXMLConnectionsHandler::parseLaneBound(), NBLoadedTLDef::SignalGroup::patchTYellow(), TraCIServerAPI_Vehicle::processGet(), TraCIServerAPI_TLS::processGet(), TraCIServerAPI_Lane::processGet(), TraCIServerAPI_InductionLoop::processGet(), NWWriter_SUMO::prohibitionConnection(), NBNodeCont::remapEdge(), NBLoadedSUMOTLDef::removeConnection(), NBNode::removeDummyEdges(), NBEdgeCont::removeUnwishedEdges(), NBNodeCont::removeUnwishedNodes(), NBConnection::replaceFrom(), NBConnection::replaceTo(), NIXMLTrafficLightsHandler::retrieveLaneIndex(), NBNodeCont::setAsTLControlled(), setControllingTLInformation(), MSLane::setCritical(), NBOwnTLDef::setTLControllingInformation(), NBLoadedTLDef::setTLControllingInformation(), NBLoadedSUMOTLDef::setTLControllingInformation(), NBEdgeCont::splitAt(), RORDLoader_SUMOBase::startRoute(), NIXMLConnectionsHandler::validateLaneInfo(), MSInstantInductLoop::write(), NWWriter_SUMO::writeConnection(), NWWriter_SUMO::writeDistrict(), NWWriter_SUMO::writeEdge(), MSMeanData::writeEdge(), NWWriter_XML::writeEdgesAndConnections(), NWWriter_SUMO::writeInternalConnections(), NWWriter_SUMO::writeJunction(), NWWriter_OpenDrive::writeNetwork(), NWWriter_XML::writeNodes(), and MSRouteProbe::writeXMLOutput().

const PositionVector NBEdge::getInnerGeometry ( ) const

Returns the geometry of the edge without the endpoints.

Definition at line 318 of file NBEdge.cpp.

References getGeometry(), PositionVector::pop_back(), and PositionVector::pop_front().

int NBEdge::getJunctionPriority ( const NBNode *const  node) const

Returns the junction priority (normalised for the node currently build)

If the given node is neither the edge's start nor the edge's ending node, the behaviour is undefined.

Parameters:
[in]nodeThe node for which the edge's priority shall be returned
Returns:
The edge's priority at the given node
Todo:
Maybe the edge priority whould be stored in the node

Definition at line 749 of file NBEdge.cpp.

References myFrom, myFromJunctionPriority, and myToJunctionPriority.

Referenced by NBEdge::MainDirections::MainDirections(), NBNode::needsCont(), NBOwnTLDef::edge_by_incoming_priority_sorter::operator()(), and NBRequest::setBlocking().

std::string NBEdge::getLaneID ( unsigned int  lane) const
const std::vector<NBEdge::Lane>& NBEdge::getLanes ( ) const [inline]

Returns the lane definitions.

Returns:
The stored lane definitions

Definition at line 438 of file NBEdge.h.

References myLanes.

Referenced by NWWriter_SUMO::writeEdge(), NWWriter_XML::writeEdgesAndConnections(), and NWWriter_OpenDrive::writeNetwork().

const PositionVector & NBEdge::getLaneShape ( unsigned int  i) const throw ()

Returns the shape of the nth lane.

Returns:
The shape of the lane given by its index (counter from right)

Definition at line 427 of file NBEdge.cpp.

Referenced by buildInnerEdges(), and NBNode::computeInternalLaneShape().

SUMOReal NBEdge::getLaneSpeed ( unsigned int  lane) const

Definition at line 843 of file NBEdge.cpp.

References myLanes.

Referenced by NBEdge().

LaneSpreadFunction NBEdge::getLaneSpreadFunction ( ) const throw () [inline]

Returns how this edge's lanes' lateral offset is computed.

Returns:
The type of lateral offset that is applied on this edge
See also:
LaneSpreadFunction

Definition at line 525 of file NBEdge.h.

References myLaneSpreadFunction.

Referenced by NIXMLEdgesHandler::addEdge(), NBNodeCont::buildOffRamp(), NBNodeCont::buildOnRamp(), NWWriter_SUMO::writeEdge(), and NWWriter_XML::writeEdgesAndConnections().

Lane& NBEdge::getLaneStruct ( unsigned int  lane) [inline]

Definition at line 904 of file NBEdge.h.

References myLanes.

Referenced by NBNode::computeInternalLaneShape().

const Lane& NBEdge::getLaneStruct ( unsigned int  lane) const [inline]

Definition at line 909 of file NBEdge.h.

References myLanes.

SUMOReal NBEdge::getLength ( ) const throw () [inline]

Returns the computed length of the edge.

Returns:
The edge's computed length

Definition at line 359 of file NBEdge.h.

References myLength.

Referenced by NBJoinedEdgesMap::init(), NIXMLEdgesHandler::myEndElement(), NIImporter_VISUM::parse_Lanes(), NBEdgeCont::retrievePossiblySplitted(), and NWWriter_OpenDrive::writeNetwork().

SUMOReal NBEdge::getLoadedLength ( ) const throw () [inline]

Returns the length was set explicitly or the computed length if it wasn't set.

Todo:
consolidate use of myLength and myLoaded length
Returns:
The edge's specified length

Definition at line 368 of file NBEdge.h.

References myLength, and myLoadedLength.

Referenced by NBNodeCont::joinDoubleNodeConnections(), NWWriter_SUMO::writeEdge(), and NWWriter_XML::writeEdgesAndConnections().

int NBEdge::getMaxConnectedLane ( NBEdge *  of) const

Definition at line 2042 of file NBEdge.cpp.

References myConnections.

SUMOReal NBEdge::getMaxLaneOffset ( )

Definition at line 1508 of file NBEdge.cpp.

References myLanes, SUMO_const_laneWidthAndOffset, and SUMOReal.

Position NBEdge::getMaxLaneOffsetPositionAt ( NBNode *  node,
SUMOReal  width 
) const
int NBEdge::getMinConnectedLane ( NBEdge *  of) const

Definition at line 2030 of file NBEdge.cpp.

References myConnections.

Position NBEdge::getMinLaneOffsetPositionAt ( NBNode *  node,
SUMOReal  width 
) const
SUMOReal NBEdge::getNormedAngle ( ) const

Definition at line 1808 of file NBEdge.cpp.

References myAngle, and SUMOReal.

Referenced by NBContHelper::edge_by_junction_angle_sorter::getConvAngle().

SUMOReal NBEdge::getNormedAngle ( const NBNode &  atNode) const

Definition at line 1797 of file NBEdge.cpp.

References getAngle(), and SUMOReal.

SUMOReal NBEdge::getOffset ( ) const throw () [inline]

Returns the offset to the destination node.

Returns:
The offset to the destination node

Definition at line 422 of file NBEdge.h.

References myOffset.

Referenced by NIXMLEdgesHandler::addEdge(), hasLaneSpecificOffset(), and NWWriter_XML::writeEdgesAndConnections().

int NBEdge::getPriority ( ) const throw () [inline]

Returns the priority of the edge.

Returns:
This edge's priority

Definition at line 323 of file NBEdge.h.

References myPriority.

Referenced by NIXMLEdgesHandler::addEdge(), expandableBy(), NBContHelper::edge_by_priority_sorter::operator()(), samePriority(), NWWriter_SUMO::writeEdge(), and NWWriter_XML::writeEdgesAndConnections().

EdgeBuildingStep NBEdge::getStep ( ) const throw () [inline]

The building step of this edge.

Returns:
The current building step for this edge
Todo:
Recheck usage!
See also:
EdgeBuildingStep

Definition at line 394 of file NBEdge.h.

References myStep.

const std::string& NBEdge::getStreetName ( ) const throw () [inline]

Returns the street name of this edge.

Definition at line 409 of file NBEdge.h.

References myStreetName.

Referenced by NWWriter_SUMO::writeEdge(), NWWriter_XML::writeEdgesAndConnections(), and NWWriter_OpenDrive::writeNetwork().

const std::string& NBEdge::getTypeID ( ) const throw () [inline]

Definition at line 706 of file NBEdge.h.

References myType.

Referenced by NIXMLEdgesHandler::addEdge(), and NWWriter_XML::writeEdgesAndConnections().

const std::string& NBEdge::getTypeName ( ) const throw () [inline]

Returns the type name.

Returns:
The name of this edge's type

Definition at line 430 of file NBEdge.h.

References myType.

Referenced by NWWriter_SUMO::writeEdge().

SUMOReal NBEdge::getWidth ( ) const throw () [inline]

Returns the width of lanes of this edge.

Returns:
The width of lanes of this edge

Definition at line 402 of file NBEdge.h.

References myWidth.

Referenced by NIXMLEdgesHandler::addEdge(), hasLaneSpecificWidth(), and NWWriter_XML::writeEdgesAndConnections().

bool NBEdge::hasConnectionTo ( NBEdge *  destEdge,
unsigned int  destLane 
) const throw ()

Retrieves info about a connection to a certain lane of a certain edge.

Parameters:
[in]destEdgeThe connection's destination edge
[in]destLaneThe connection's destination lane
Returns:
whether a connection to the specified lane exists

Definition at line 621 of file NBEdge.cpp.

Referenced by NIXMLConnectionsHandler::myStartElement().

bool NBEdge::hasDefaultGeometry ( ) const

Returns whether the geometry consists only of the node positions.

Definition at line 327 of file NBEdge.cpp.

References hasDefaultGeometryEndpoints(), myGeom, and PositionVector::size().

Referenced by NIXMLEdgesHandler::addEdge(), NWWriter_SUMO::writeEdge(), and NWWriter_XML::writeEdgesAndConnections().

bool NBEdge::hasDefaultGeometryEndpoints ( ) const

Returns whether the geometry is terminated by the node positions This default may be violated by initializing with tryIgnoreNodePositions=true' or with setGeometry() non-default endpoints are useful to control the generated node shape.

Definition at line 333 of file NBEdge.cpp.

References PositionVector::getBegin(), PositionVector::getEnd(), NBNode::getPosition(), myFrom, myGeom, and myTo.

Referenced by hasDefaultGeometry().

bool NBEdge::hasLaneSpecificAllow ( ) const

whether lanes differ in allowed vehicle classes

Definition at line 964 of file NBEdge.cpp.

References myLanes.

bool NBEdge::hasLaneSpecificDisallow ( ) const

whether lanes differ in disallowed vehicle classes

Definition at line 978 of file NBEdge.cpp.

References myLanes.

bool NBEdge::hasLaneSpecificOffset ( ) const

whether lanes differ in offset

Definition at line 1014 of file NBEdge.cpp.

References getOffset(), and myLanes.

Referenced by needsLaneSpecificOutput(), and NWWriter_XML::writeEdgesAndConnections().

bool NBEdge::hasLaneSpecificSpeed ( ) const

whether lanes differ in speed

Definition at line 1003 of file NBEdge.cpp.

References getSpeed(), and myLanes.

Referenced by needsLaneSpecificOutput(), and NWWriter_XML::writeEdgesAndConnections().

bool NBEdge::hasLaneSpecificWidth ( ) const

whether lanes differ in width

Definition at line 992 of file NBEdge.cpp.

References getWidth(), and myLanes.

Referenced by needsLaneSpecificOutput(), and NWWriter_XML::writeEdgesAndConnections().

bool NBEdge::hasLoadedLength ( ) const throw () [inline]

Returns whether a length was set explicitly.

Returns:
Wether the edge's length was specified

Definition at line 376 of file NBEdge.h.

References myLoadedLength.

Referenced by NWWriter_XML::writeEdgesAndConnections().

bool NBEdge::hasRestrictions ( ) const

whether at least one lane has restrictions

Definition at line 953 of file NBEdge.cpp.

References myLanes.

Referenced by needsLaneSpecificOutput().

bool NBEdge::hasSignalisedConnectionTo ( const NBEdge *const  e) const throw ()

Definition at line 1765 of file NBEdge.cpp.

void NBEdge::init ( unsigned int  noLanes,
bool  tryIgnoreNodePositions 
) throw (ProcessError) [private]

Initialization routines common to all constructors.

Checks whether the number of lanes>0, whether the junction's from- and to-nodes are given (!=0) and whether they are distict. Throws a ProcessError if any of these checks fails.

Adds the nodes positions to geometry if it shall not be ignored or if the geometry is empty.

Computes the angle and length, and adds this edge to its node as outgoing/incoming. Builds lane informations.

Parameters:
[in]noLanesThe number of lanes this edge has
[in]tryIgnoreNodePositionsDoes not add node geometries if geom.size()>=2

Definition at line 252 of file NBEdge.cpp.

References NBHelpers::angle(), NBEdge::Lane::offset, POSITION_EPS, NBEdge::Lane::speed, NBEdge::Lane::width, and WRITE_ERROR.

Referenced by NBEdge().

void NBEdge::invalidateConnections ( bool  reallowSetting = false)
bool NBEdge::isConnectedTo ( NBEdge *  e)

Returns the information whethe a connection to the given edge has been added (or computed)

Definition at line 1429 of file NBEdge.cpp.

References myConnections, and myTurnDestination.

Referenced by computeTurningDirections(), NIXMLConnectionsHandler::myStartElement(), and NBNode::removeDummyEdges().

bool NBEdge::isInnerEdge ( ) const throw () [inline]

Returns whether this edge was marked as being within an intersection.

Returns:
Whether this edge was marked as being within an intersection

Definition at line 673 of file NBEdge.h.

References myAmInnerEdge.

bool NBEdge::isMacroscopicConnector ( ) const throw () [inline]

Returns whether this edge was marked as a macroscopic connector.

Returns:
Whether this edge was marked as a macroscopic connector

Definition at line 658 of file NBEdge.h.

References myAmMacroscopicConnector.

Referenced by NBNodeCont::mayNeedOffRamp(), NBNodeCont::mayNeedOnRamp(), and NWWriter_SUMO::writeEdge().

bool NBEdge::isNearEnough2BeJoined2 ( NBEdge *  e,
SUMOReal  threshold 
) const

Definition at line 1789 of file NBEdge.cpp.

References PositionVector::distances(), getGeometry(), and myGeom.

Referenced by NBNodeCont::joinDoubleNodeConnections().

bool NBEdge::isTurningDirectionAt ( const NBNode *  n,
const NBEdge *const  edge 
) const throw ()

Returns whether the given edge is the opposite direction to this edge.

Parameters:
[in]nThe node at which this may be turnaround direction
[in]edgeThe edge which may be the turnaround direction
Returns:
Whether the given edge is this edge's turnaround direction

Definition at line 1356 of file NBEdge.cpp.

References SUMOReal.

Referenced by NBOwnTLDef::myCompute(), NBContHelper::opposite_finder::operator()(), NBRequest::setBlocking(), and NBNode::swapWhenReversed().

std::pair< SUMOReal, SUMOReal > NBEdge::laneOffset ( const Position &  from,
const Position &  to,
SUMOReal  lanewidth,
unsigned int  lane,
size_t  noLanes,
LaneSpreadFunction  lsf,
bool  leftHand 
) [static]

Computes the offset from the edge shape on the current segment.

Definition at line 930 of file NBEdge.cpp.

References GeomHelper::getNormal90D_CW(), LANESPREAD_RIGHT, and SUMOReal.

Referenced by NIImporter_SUMO::reconstructEdgeShape().

std::pair< SUMOReal, SUMOReal > NBEdge::laneOffset ( const Position &  from,
const Position &  to,
SUMOReal  lanewidth,
unsigned int  lane 
) throw (InvalidArgument) [private]

Computes the offset from the edge shape on the current segment.

Definition at line 922 of file NBEdge.cpp.

bool NBEdge::lanesWereAssigned ( ) const

Definition at line 1502 of file NBEdge.cpp.

References LANES2LANES_DONE, LANES2LANES_USER, and myStep.

Referenced by NIVissimTL::NIVissimTLSignal::addTo().

void NBEdge::markAsInLane2LaneState ( )

Definition at line 1871 of file NBEdge.cpp.

References NBNode::getOutgoingEdges(), LANES2LANES_DONE, myStep, and myTo.

bool NBEdge::mayBeTLSControlled ( int  fromLane,
NBEdge *  toEdge,
int  toLane 
) const throw ()
void NBEdge::moveConnectionToLeft ( unsigned int  lane) [private]

moves a connection one place to the left; Attention! no checking for field validity

Definition at line 1110 of file NBEdge.cpp.

References getTurnDestination(), L2L_VALIDATED, myAmLeftHand, myConnections, setConnection(), NBEdge::Connection::toEdge, and NBEdge::Connection::toLane.

Referenced by recheckLanes().

void NBEdge::moveConnectionToRight ( unsigned int  lane) [private]

moves a connection one place to the right; Attention! no checking for field validity

Definition at line 1133 of file NBEdge.cpp.

References getTurnDestination(), L2L_VALIDATED, myAmLeftHand, myConnections, setConnection(), NBEdge::Connection::toEdge, and NBEdge::Connection::toLane.

Referenced by recheckLanes().

void NBEdge::moveOutgoingConnectionsFrom ( NBEdge *  e,
unsigned int  laneOff 
)
bool NBEdge::needsLaneSpecificOutput ( ) const

whether at least one lane has values differing from the edges values

Definition at line 1025 of file NBEdge.cpp.

References hasLaneSpecificOffset(), hasLaneSpecificSpeed(), hasLaneSpecificWidth(), and hasRestrictions().

Referenced by NWWriter_XML::writeEdgesAndConnections().

NBEdge& NBEdge::operator= ( const NBEdge &  s) [private]

invalidated assignment operator

void NBEdge::preferVehicleClass ( int  lane,
SUMOVehicleClass  vclass 
)

Definition at line 1920 of file NBEdge.cpp.

References myLanes.

Referenced by NIXMLEdgesHandler::addLane().

std::vector< unsigned int > * NBEdge::preparePriorities ( const EdgeVector *  outgoing) [private]

recomputes the priorities and manipulates them for a distribution of lanes on edges which is more like in real-life

Definition at line 1277 of file NBEdge.cpp.

References NBEdge::MainDirections::DIR_FORWARD, NBEdge::MainDirections::DIR_RIGHTMOST, NBEdge::MainDirections::empty(), NBEdge::MainDirections::includes(), myLanes, and myTo.

Referenced by divideOnEdges().

bool NBEdge::recheckLanes ( )

recheck whether all lanes within the edge are all right and optimises the connections once again

Definition at line 1077 of file NBEdge.cpp.

References LANES2LANES_DONE, LANES2LANES_USER, moveConnectionToLeft(), moveConnectionToRight(), myConnections, myLanes, and myStep.

void NBEdge::reinit ( NBNode *  from,
NBNode *  to,
const std::string &  type,
SUMOReal  speed,
unsigned int  nolanes,
int  priority,
PositionVector  geom,
SUMOReal  width,
SUMOReal  offset,
LaneSpreadFunction  spread = LANESPREAD_RIGHT,
bool  tryIgnoreNodePositions = false 
) throw (ProcessError)

Resets initial values.

Parameters:
[in]fromThe node the edge starts at
[in]toThe node the edge ends at
[in]typeThe type of the edge (may be =="")
[in]speedThe maximum velocity allowed on this edge
[in]nolanesThe number of lanes this edge has
[in]priorityThis edge's priority
[in]geomThe edge's geomatry
[in]widthThis edge's lane width
[in]offsetAdditional offset to the destination node
[in]spreadHow the lateral offset of the lanes shall be computed
[in]tryIgnoreNodePositionsDoes not add node geometries if geom.size()>=2

Definition at line 221 of file NBEdge.cpp.

References StringUtils::convertUmlaute().

Referenced by NIXMLEdgesHandler::addEdge().

void NBEdge::remapConnections ( const EdgeVector &  incoming)

Remaps the connection in a way tha allows the removal of it This edges (which is a "dummy" edge, in fact) connections are spread over the incoming non-dummy edges.

Definition at line 1454 of file NBEdge.cpp.

References addEdge2EdgeConnection(), EDGE2EDGES, getConnectedEdges(), myStep, and removeFromConnections().

Referenced by NBNode::removeDummyEdges().

void NBEdge::removeFromConnections ( NBEdge *  toEdge,
int  fromLane = -1,
int  toLane = -1 
)

Removes the specified connection(s)

Parameters:
[in]toEdgeThe destination edge
[in]fromLaneThe lane from which connections shall be removed (-1) means remove all
[in]toLaneThe lane to which connections shall be removed (-1) means remove all

Definition at line 1470 of file NBEdge.cpp.

References NBEdge::Connection::fromLane, myConnections, myTurnDestination, NBEdge::Connection::toEdge, and NBEdge::Connection::toLane.

Referenced by decLaneNo(), NIXMLConnectionsHandler::myStartElement(), and remapConnections().

void NBEdge::replaceInConnections ( NBEdge *  which,
NBEdge *  by,
unsigned int  laneOff 
)

Definition at line 1398 of file NBEdge.cpp.

References myConnections, myTurnDestination, and UNUSED_PARAMETER.

Referenced by NBNode::replaceOutgoing().

void NBEdge::reshiftPosition ( SUMOReal  xoff,
SUMOReal  yoff 
) throw ()

Applies an offset to the edge.

Parameters:
[in]xoffThe x-offset to apply
[in]yoffThe y-offset to apply

Definition at line 308 of file NBEdge.cpp.

void NBEdge::setAsMacroscopicConnector ( ) throw () [inline]

Marks this edge as a macroscopic connector.

Definition at line 650 of file NBEdge.h.

References myAmMacroscopicConnector.

Referenced by NIImporter_VISUM::parse_Connectors().

void NBEdge::setConnection ( unsigned int  lane,
NBEdge *  destEdge,
unsigned int  destLane,
Lane2LaneInfoType  type,
bool  mayUseSameDestination = false,
bool  mayDefinitelyPass = false 
) throw ()

Adds a connection to a certain lane of a certain edge.

Parameters:
[in]laneThe connection's starting lane (of this edge)
[in]destEdgeThe connection's destination edge
[in]destLaneThe connection's destination lane
[in]typeThe connections's type
[in]mayUseSameDestinationWhether this connection may be set though connecting an already connected lane
[in]mayDefinitelyPassWhether this connection is definitely undistrubed (special case for on-ramps)
Todo:
Check difference between "setConnection" and "addLane2LaneConnection"

Definition at line 554 of file NBEdge.cpp.

References WRITE_ERROR.

Referenced by NBNode::computeLanes2Lanes(), moveConnectionToLeft(), and moveConnectionToRight().

void NBEdge::setGeometry ( const PositionVector &  g,
bool  inner = false 
) throw ()

(Re)sets the edge's geometry

Replaces the edge's prior geometry by the given. Then, computes the geometries of all lanes using computeLaneShapes. Definitely not the best way to have it accessable from outside...

Parameters:
[in]gThe edge's new geometry
[in]innerwhether g should be interpreted as inner points
Todo:
Recheck usage, disallow access
See also:
computeLaneShapes

Definition at line 340 of file NBEdge.cpp.

Referenced by NBNodeCont::buildOffRamp(), NBNodeCont::buildOnRamp(), NIXMLEdgesHandler::myEndElement(), and NBNodeCont::remapEdge().

void Named::setID ( const std::string &  newID) [inline, inherited]

resets the id

Definition at line 65 of file Named.h.

References Named::myID.

void NBEdge::setIsInnerEdge ( ) throw () [inline]

Marks this edge being within an intersection.

Definition at line 665 of file NBEdge.h.

References myAmInnerEdge.

void NBEdge::setJunctionPriority ( const NBNode *const  node,
int  prio 
)

Sets the junction priority of the edge.

Parameters:
[in]nodeThe node for which the edge's priority is given
[in]prioThe edge's new priority at this node
Todo:
Maybe the edge priority whould be stored in the node

Definition at line 759 of file NBEdge.cpp.

References myFrom, myFromJunctionPriority, and myToJunctionPriority.

Referenced by NBNode::extractAndMarkFirst(), and NBNode::setPriorityJunctionPriorities().

void NBEdge::setLaneSpeed ( unsigned int  lane,
SUMOReal  speed 
)

Definition at line 837 of file NBEdge.cpp.

References myLanes.

Referenced by NIVissimEdge::buildNBEdge(), NBEdge(), and NBEdgeCont::splitAt().

void NBEdge::setLaneSpreadFunction ( LaneSpreadFunction  spread) throw ()

(Re)sets how the lanes lateral offset shall be computed

Parameters:
[in]spreadThe type of lateral offset to apply
See also:
LaneSpreadFunction

Definition at line 433 of file NBEdge.cpp.

Referenced by NIImporter_VISUM::parse_Edges().

void NBEdge::setLeftHanded ( ) throw () [inline]

Marks this edge to be left-handed.

Definition at line 304 of file NBEdge.h.

References myAmLeftHand.

void NBEdge::setLoadedLength ( SUMOReal  val)
void NBEdge::setOffset ( int  lane,
SUMOReal  offset 
)

set lane specific end-offset (negative lane implies set for all lanes)

Definition at line 1951 of file NBEdge.cpp.

References myLanes, and myOffset.

Referenced by NIImporter_SUMO::_loadNetwork(), NIXMLEdgesHandler::addLane(), and setSpeed().

void NBEdge::setSpeed ( int  lane,
SUMOReal  offset 
)

set lane specific speed (negative lane implies set for all lanes)

Definition at line 1967 of file NBEdge.cpp.

References myLanes, mySpeed, and setOffset().

Referenced by NIImporter_SUMO::_loadNetwork(), and NIXMLEdgesHandler::addLane().

void NBEdge::setStreetName ( const std::string &  name) [inline]

sets the street name of this edge

Definition at line 415 of file NBEdge.h.

References myStreetName.

void NBEdge::setTurningDestination ( NBEdge *  e)
void NBEdge::setVehicleClasses ( const SUMOVehicleClasses &  allowed,
const SUMOVehicleClasses &  disallowed,
int  lane = -1 
)

set allowed/disallowed classes for the given lane or for all lanes if -1 is given

Definition at line 1983 of file NBEdge.cpp.

References allowVehicleClass(), and disallowVehicleClass().

Referenced by NIImporter_SUMO::_loadNetwork(), NIXMLEdgesHandler::addEdge(), NIImporter_OpenStreetMap::insertEdge(), and NBEdge().

void NBEdge::setWidth ( int  lane,
SUMOReal  width 
)

set lane specific width (negative lane implies set for all lanes)

Definition at line 1935 of file NBEdge.cpp.

References myLanes, myWidth, and width().

Referenced by NIImporter_SUMO::_loadNetwork(), and NIXMLEdgesHandler::addLane().

void NBEdge::sortOutgoingConnectionsByAngle ( )

sorts the outgoing connections by their angle relative to their junction

Definition at line 1344 of file NBEdge.cpp.

References myConnections, and myTo.

void NBEdge::sortOutgoingConnectionsByIndex ( )

sorts the outgoing connections by their from-lane-index and their to-lane-index

Definition at line 1350 of file NBEdge.cpp.

References connections_sorter(), and myConnections.

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

bool NBEdge::splitGeometry ( NBEdgeCont &  ec,
NBNodeCont &  nc 
)

Splits this edge at geometry points.

Parameters:
[in]ecThe edge cont to add new edges to
[in]ncThe node cont to add new nodes to
Returns:
Whether the geometry was changed

Definition at line 445 of file NBEdge.cpp.

References NBNode::addIncomingEdge(), PositionVector::clear(), NBNode::getPosition(), INIT, NBEdgeCont::insert(), NBNodeCont::insert(), myFrom, myGeom, Named::myID, myLanes, myLaneSpreadFunction, myPriority, mySpeed, myStep, myStreetName, myTo, myType, myWidth, NBEdge(), PositionVector::push_back(), NBNode::removeEdge(), NBNodeCont::retrieve(), PositionVector::size(), toString(), and UNSPECIFIED_OFFSET.

NBNode * NBEdge::tryGetNodeAtPosition ( SUMOReal  pos,
SUMOReal  tolerance = 5.0 
) const

Returns the node at the given edges length (using an epsilon) When no node is existing at the given position, 0 is returned The epsilon is a static member of NBEdge, should be setable via program options.

Definition at line 1384 of file NBEdge.cpp.

References myFrom, myLength, and myTo.

SUMOReal NBEdge::width ( ) const

Friends And Related Function Documentation

friend class GNEEdge [friend]

Definition at line 73 of file NBEdge.h.

friend class GNELane [friend]

used for visualization (NETEDIT)

Definition at line 72 of file NBEdge.h.

friend class NBEdgeCont [friend]

Definition at line 69 of file NBEdge.h.

friend class NBEdgeSuccessorBuilder [friend]

used for the computation of connections to following edges

Definition at line 68 of file NBEdge.h.


Field Documentation

Information whether this is a junction-inner edge.

Definition at line 1133 of file NBEdge.h.

Referenced by isInnerEdge(), and setIsInnerEdge().

Whether this edge is a left-hand edge.

Definition at line 1120 of file NBEdge.h.

Referenced by divideOnEdges(), getCCWBoundaryLine(), getCWBoundaryLine(), moveConnectionToLeft(), moveConnectionToRight(), and setLeftHanded().

Information whether this edge is a (macroscopic) connector.

Definition at line 1136 of file NBEdge.h.

Referenced by isMacroscopicConnector(), and setAsMacroscopicConnector().

Was assigned as a turning edge of this one.

Definition at line 1129 of file NBEdge.h.

Referenced by acceptBeingTurning().

SUMOReal NBEdge::myAmTurningWithAngle [private]

Was assigned as a turn with this angle.

Definition at line 1127 of file NBEdge.h.

Referenced by acceptBeingTurning().

SUMOReal NBEdge::myAngle [private]

The angle of the edge.

Definition at line 1074 of file NBEdge.h.

Referenced by getAngle(), and getNormedAngle().

The priority normalised for the node the edge is outgoing of.

Definition at line 1091 of file NBEdge.h.

Referenced by getJunctionPriority(), and setJunctionPriority().

The information about how to spread the lanes.

Definition at line 1100 of file NBEdge.h.

Referenced by getLaneSpreadFunction(), and splitGeometry().

SUMOReal NBEdge::myLength [private]

The length of the edge.

Definition at line 1071 of file NBEdge.h.

Referenced by append(), computeEdgeShape(), getLength(), getLoadedLength(), and tryGetNodeAtPosition().

SUMOReal NBEdge::myLoadedLength [private]

An optional length to use (-1 if not valid)

Definition at line 1117 of file NBEdge.h.

Referenced by getLoadedLength(), hasLoadedLength(), and setLoadedLength().

std::string NBEdge::myName [private]

An optional name.

Definition at line 1103 of file NBEdge.h.

SUMOReal NBEdge::myOffset [private]

This edges's offset to the intersection begin (will be applied to all lanes)

Definition at line 1106 of file NBEdge.h.

Referenced by getOffset(), incLaneNo(), and setOffset().

int NBEdge::myPriority [private]

The priority of the edge.

Definition at line 1077 of file NBEdge.h.

Referenced by getPriority(), and splitGeometry().

SUMOReal NBEdge::mySpeed [private]

The maximal speed.

Definition at line 1080 of file NBEdge.h.

Referenced by expandableBy(), getSpeed(), incLaneNo(), setSpeed(), and splitGeometry().

std::string NBEdge::myStreetName [private]

The street name (or whatever arbitrary string you wish to attach)

Definition at line 1148 of file NBEdge.h.

Referenced by getStreetName(), setStreetName(), and splitGeometry().

Definition at line 1144 of file NBEdge.h.

Referenced by disableConnection4TLS(), and setControllingTLInformation().

The priority normalised for the node the edge is incoming in.

Definition at line 1094 of file NBEdge.h.

Referenced by getJunctionPriority(), and setJunctionPriority().

std::string NBEdge::myType [private]

The type of the edge.

Definition at line 1065 of file NBEdge.h.

Referenced by getTypeID(), getTypeName(), and splitGeometry().

SUMOReal NBEdge::myWidth [private]

This width of this edge's lanes.

Definition at line 1109 of file NBEdge.h.

Referenced by getWidth(), incLaneNo(), setWidth(), and splitGeometry().

const SUMOReal NBEdge::UNSPECIFIED_LOADED_LENGTH = -1 [static]

no length override given

Definition at line 190 of file NBEdge.h.


The documentation for this class was generated from the following files:
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines