SUMO - Simulation of Urban MObility

NIVissimEdge Class Reference

A temporary storage for edges imported from Vissim. More...

#include <NIVissimEdge.h>

Inheritance diagram for NIVissimEdge:
NIVissimAbstractEdge

Data Structures

class  connection_cluster_position_sorter
class  connection_position_sorter

Public Member Functions

void addDisturbance (int disturbance)
void addIncomingConnection (int id)
 Adds a connection where this edge is the destination.
void addOutgoingConnection (int id)
 Adds a connection where this edge is the source.
void addToConnectionCluster (NIVissimConnectionCluster *c)
bool addToTreatAsSame (NIVissimEdge *e)
void buildGeom ()
void checkDistrictConnectionExistanceAt (SUMOReal pos)
SUMOReal crossesAtPoint (const Position &p1, const Position &p2) const
bool crossesEdge (NIVissimAbstractEdge *c) const
Position crossesEdgeAtPoint (NIVissimAbstractEdge *c) const
Position getBegin2D () const
NIVissimEdge * getBestIncoming () const
NIVissimEdge * getBestOutgoing () const
NIVissimConnection * getConnectionTo (NIVissimEdge *e)
const IntVector & getDisturbances () const
Position getEnd2D () const
 Returns the end position of the edge.
const PositionVector & getGeometry () const
Position getGeomPosition (SUMOReal pos) const
int getID () const
SUMOReal getLength () const
 Returns the length of the node.
NBNode * getNodeAt (const Position &p, NBNode *other=0)
 Returns the node at the given position As this may be ambigous, a second node not to return may be supplied.
const std::vector
< NIVissimEdge * > & 
getToTreatAsSame () const
bool hasNodeCluster () const
void mergedInto (NIVissimConnectionCluster *old, NIVissimConnectionCluster *act)
 NIVissimEdge (int id, const std::string &name, const std::string &type, int noLanes, SUMOReal zuschlag1, SUMOReal zuschlag2, SUMOReal length, const PositionVector &geom, const NIVissimClosedLanesVector &clv)
 Constructor.
bool overlapsWith (const AbstractPoly &p, SUMOReal offset=0.0) const
void removeFromConnectionCluster (NIVissimConnectionCluster *c)
void setNodeCluster (int nodeid)
void setSpeed (size_t lane, int speedDist)
void splitAssigning ()
bool wasWithinAJunction () const
 Returns whether this edge was found to be within a junction.
 ~NIVissimEdge ()
 Destructor.

Static Public Member Functions

static void buildConnectionClusters ()
 Clusters connections of each edge.
static void clearDict ()
static void dict_buildNBEdges (NBDistrictCont &dc, NBNodeCont &nc, NBEdgeCont &ec, SUMOReal offset)
 Builds NBEdges from the VissimEdges within the dictionary.
static void dict_checkEdges2Join ()
static void dict_propagateSpeeds ()
static bool dictionary (int id, NIVissimEdge *o)
 Adds the edge to the dictionary.
static bool dictionary (int id, NIVissimAbstractEdge *e)
static bool dictionary (int id, const std::string &name, const std::string &type, int noLanes, SUMOReal zuschlag1, SUMOReal zuschlag2, SUMOReal length, const PositionVector &geom, const NIVissimClosedLanesVector &clv)
 Adds the described item to the dictionary Builds the edge first.
static NIVissimEdge * dictionary (int id)
 Returns the named edge from the dictionary.
static IntVector getWithin (const AbstractPoly &p, SUMOReal offset=0.0)
static void reportUnsetSpeeds ()
 Writes edges with unset speeds to the warnings message log instance.
static void splitAndAssignToNodes ()

Protected Attributes

IntVector myDisturbances
PositionVector myGeom
int myID
int myNode

Private Types

typedef std::vector
< NIVissimConnectionCluster * > 
ConnectionClusters
 The definition for a container for connection clusters.
typedef std::map< int,
NIVissimEdge * > 
DictType
 Definition of the dictionary type.

Private Member Functions

void buildNBEdge (NBDistrictCont &dc, NBNodeCont &nc, NBEdgeCont &ec, SUMOReal sameNodesOffset)
 Builds the NBEdge from this VissimEdge.
void checkUnconnectedLaneSpeeds ()
std::pair
< NIVissimConnectionCluster
*, NBNode * > 
getFromNode (NBNodeCont &nc, ConnectionClusters &clusters)
 Returns the origin node.
std::vector< NIVissimConnection * > getOutgoingConnected (int lane) const
SUMOReal getRealSpeed (int distNo)
std::pair
< NIVissimConnectionCluster
*, NBNode * > 
getToNode (NBNodeCont &nc, ConnectionClusters &clusters)
 Returns the destination node.
void propagateOwn ()
void propagateSpeed (SUMOReal speed, IntVector forLanes)
std::pair< NBNode *, NBNode * > remapOneOfNodes (NBNodeCont &nc, NIVissimDistrictConnection *d, NBNode *fromNode, NBNode *toNode)
std::pair< NBNode *, NBNode * > resolveSameNode (NBNodeCont &nc, SUMOReal offset, NBNode *prevFrom, NBNode *prevTo)
 Tries to resolve the problem that the same node has been returned as origin and destination node.
void setDistrictSpeed ()

Static Private Member Functions

static NBNode * getNodeSecure (int nodeid, const Position &pos, const std::string &possibleName)

Private Attributes

bool myAmWithinJunction
 Information whether this edge was not build due to being within a junction.
NIVissimClosedLanesVector myClosedLanes
 List of lanes closed on this edge.
ConnectionClusters myConnectionClusters
 List of connection clusters along this edge.
DoubleVector myDistrictConnections
IntVector myIncomingConnections
 List of connections incoming to this edge.
std::vector< SUMOReal > myLaneSpeeds
std::string myName
 The name of the edge.
unsigned int myNoLanes
 The number of lanes the edge has.
IntVector myOutgoingConnections
 List of connections outgoing from this edge.
IntVector myPatchedSpeeds
std::vector< NIVissimEdge * > myToTreatAsSame
std::string myType
 The tape of the edge.
SUMOReal myZuschlag1
 Additional load values for this edge.
SUMOReal myZuschlag2

Static Private Attributes

static DictType myDict
 The dictionary.
static std::vector< std::string > myLanesWithMissingSpeeds
static int myMaxID = 0
 The current maximum id; needed for further id assignment.

Friends

class NIVissimNodeDef_Edges
class NIVissimNodeDef_Poly

Detailed Description

A temporary storage for edges imported from Vissim.

Definition at line 62 of file NIVissimEdge.h.


Member Typedef Documentation

The definition for a container for connection clusters.

Definition at line 171 of file NIVissimEdge.h.

typedef std::map<int, NIVissimEdge*> NIVissimEdge::DictType [private]

Definition of the dictionary type.

Reimplemented from NIVissimAbstractEdge.

Definition at line 297 of file NIVissimEdge.h.


Constructor & Destructor Documentation

NIVissimEdge::NIVissimEdge ( int  id,
const std::string &  name,
const std::string &  type,
int  noLanes,
SUMOReal  zuschlag1,
SUMOReal  zuschlag2,
SUMOReal  length,
const PositionVector &  geom,
const NIVissimClosedLanesVector &  clv 
)

Constructor.

Definition at line 120 of file NIVissimEdge.cpp.

References NIVissimAbstractEdge::myID, myLaneSpeeds, and myMaxID.

Referenced by dictionary().

NIVissimEdge::~NIVissimEdge ( )

Destructor.

Definition at line 139 of file NIVissimEdge.cpp.

References myClosedLanes.


Member Function Documentation

void NIVissimAbstractEdge::addDisturbance ( int  disturbance) [inherited]

Definition at line 196 of file NIVissimAbstractEdge.cpp.

References NIVissimAbstractEdge::myDisturbances.

void NIVissimEdge::addIncomingConnection ( int  id)

Adds a connection where this edge is the destination.

Definition at line 786 of file NIVissimEdge.cpp.

References myIncomingConnections.

void NIVissimEdge::addOutgoingConnection ( int  id)

Adds a connection where this edge is the source.

Definition at line 792 of file NIVissimEdge.cpp.

References myOutgoingConnections.

void NIVissimEdge::addToConnectionCluster ( NIVissimConnectionCluster *  c)

Definition at line 824 of file NIVissimEdge.cpp.

References myConnectionClusters.

Referenced by NIVissimConnectionCluster::recheckEdges().

bool NIVissimEdge::addToTreatAsSame ( NIVissimEdge *  e)

Definition at line 930 of file NIVissimEdge.cpp.

References addToTreatAsSame(), and myToTreatAsSame.

Referenced by addToTreatAsSame(), and dict_checkEdges2Join().

void NIVissimEdge::buildConnectionClusters ( ) [static]

Clusters connections of each edge.

For every edge stored in this container, its connections are collected and joined into "clusters" if they have the same "direction" (incoming/outgoing) and are not further than 10m away from each other.

Todo:
Probably the distance (MAX_CLUSTER_DISTANCE=10m) should be made variable

Definition at line 187 of file NIVissimEdge.cpp.

References dictionary(), myConnectionClusters, myDict, myIncomingConnections, myOutgoingConnections, and SUMOReal.

Referenced by NIImporter_Vissim::postLoadBuild().

void NIVissimEdge::buildGeom ( ) [virtual]

Implements NIVissimAbstractEdge.

Definition at line 782 of file NIVissimEdge.cpp.

void NIVissimEdge::buildNBEdge ( NBDistrictCont &  dc,
NBNodeCont &  nc,
NBEdgeCont &  ec,
SUMOReal  sameNodesOffset 
) [private]

Builds the NBEdge from this VissimEdge.

Parameters:
[in]dcThe district container used if this edge must be split
[in]ncThe node container used for (optionally) building this edge's nodes
[in]ecThe edge control to add this edge to
[in]sameNodesOffsetOffset used to discriminate nodes
Exceptions:
ProcessErrorIf one of the built nodes or edges could not be added to the according container

Definition at line 429 of file NIVissimEdge.cpp.

References OptionsCont::getFloat(), getFromNode(), Named::getID(), OptionsCont::getOptions(), NBNode::getPosition(), getToNode(), NBEdgeCont::insert(), NBNodeCont::insert(), LANESPREAD_CENTER, myAmWithinJunction, myConnectionClusters, myDistrictConnections, NIVissimAbstractEdge::myGeom, NIVissimAbstractEdge::myID, myLaneSpeeds, myLanesWithMissingSpeeds, myName, myNoLanes, myType, NODETYPE_NOJUNCTION, resolveSameNode(), NBEdgeCont::retrieve(), NBEdge::setSpeed(), NBEdgeCont::splitAt(), SUMOReal, toString(), and WRITE_WARNING.

Referenced by dict_buildNBEdges().

void NIVissimEdge::checkDistrictConnectionExistanceAt ( SUMOReal  pos)

Definition at line 852 of file NIVissimEdge.cpp.

References myDistrictConnections.

Referenced by NIVissimDistrictConnection::checkEdgeEnd().

void NIVissimEdge::checkUnconnectedLaneSpeeds ( ) [private]
void NIVissimAbstractEdge::clearDict ( ) [static, inherited]
SUMOReal NIVissimAbstractEdge::crossesAtPoint ( const Position &  p1,
const Position &  p2 
) const [inherited]
bool NIVissimAbstractEdge::crossesEdge ( NIVissimAbstractEdge *  c) const [inherited]
Position NIVissimAbstractEdge::crossesEdgeAtPoint ( NIVissimAbstractEdge *  c) const [inherited]
void NIVissimEdge::dict_buildNBEdges ( NBDistrictCont &  dc,
NBNodeCont &  nc,
NBEdgeCont &  ec,
SUMOReal  offset 
) [static]

Builds NBEdges from the VissimEdges within the dictionary.

Definition at line 250 of file NIVissimEdge.cpp.

References buildNBEdge(), and myDict.

Referenced by NIImporter_Vissim::postLoadBuild().

void NIVissimEdge::dict_propagateSpeeds ( ) [static]
bool NIVissimEdge::dictionary ( int  id,
NIVissimEdge *  o 
) [static]

Adds the edge to the dictionary.

Definition at line 165 of file NIVissimEdge.cpp.

References myDict.

NIVissimEdge * NIVissimEdge::dictionary ( int  id) [static]

Returns the named edge from the dictionary.

Reimplemented from NIVissimAbstractEdge.

Definition at line 177 of file NIVissimEdge.cpp.

References myDict.

bool NIVissimAbstractEdge::dictionary ( int  id,
NIVissimAbstractEdge *  e 
) [static, inherited]
Position NIVissimEdge::getBegin2D ( ) const

Returns the begin position of the edge

Definition at line 834 of file NIVissimEdge.cpp.

References NIVissimAbstractEdge::myGeom.

NIVissimEdge * NIVissimEdge::getBestIncoming ( ) const
NIVissimEdge * NIVissimEdge::getBestOutgoing ( ) const
const IntVector & NIVissimAbstractEdge::getDisturbances ( ) const [inherited]
Position NIVissimEdge::getEnd2D ( ) const

Returns the end position of the edge.

Definition at line 840 of file NIVissimEdge.cpp.

References NIVissimAbstractEdge::myGeom.

SUMOReal NIVissimEdge::getLength ( ) const

Returns the length of the node.

Definition at line 846 of file NIVissimEdge.cpp.

References PositionVector::length(), and NIVissimAbstractEdge::myGeom.

Referenced by setDistrictSpeed().

NBNode* NIVissimEdge::getNodeAt ( const Position &  p,
NBNode *  other = 0 
)

Returns the node at the given position As this may be ambigous, a second node not to return may be supplied.

static NBNode* NIVissimEdge::getNodeSecure ( int  nodeid,
const Position &  pos,
const std::string &  possibleName 
) [static, private]
std::vector< NIVissimConnection * > NIVissimEdge::getOutgoingConnected ( int  lane) const [private]
SUMOReal NIVissimEdge::getRealSpeed ( int  distNo) [private]

Definition at line 531 of file NIVissimEdge.cpp.

References dictionary(), SUMOReal, and WRITE_WARNING.

Referenced by propagateSpeed().

std::pair< NIVissimConnectionCluster *, NBNode * > NIVissimEdge::getToNode ( NBNodeCont &  nc,
ConnectionClusters &  clusters 
) [private]
const std::vector< NIVissimEdge * > & NIVissimEdge::getToTreatAsSame ( ) const

Definition at line 976 of file NIVissimEdge.cpp.

References myToTreatAsSame.

Referenced by NIVissimConnectionCluster::extendByToTreatAsSame().

IntVector NIVissimAbstractEdge::getWithin ( const AbstractPoly &  p,
SUMOReal  offset = 0.0 
) [static, inherited]
bool NIVissimAbstractEdge::hasNodeCluster ( ) const [inherited]

Definition at line 170 of file NIVissimAbstractEdge.cpp.

References NIVissimAbstractEdge::myNode.

void NIVissimEdge::mergedInto ( NIVissimConnectionCluster *  old,
NIVissimConnectionCluster *  act 
)

Definition at line 799 of file NIVissimEdge.cpp.

References myConnectionClusters.

bool NIVissimAbstractEdge::overlapsWith ( const AbstractPoly &  p,
SUMOReal  offset = 0.0 
) const [inherited]
void NIVissimEdge::propagateOwn ( ) [private]
void NIVissimEdge::removeFromConnectionCluster ( NIVissimConnectionCluster *  c)

Definition at line 815 of file NIVissimEdge.cpp.

References myConnectionClusters.

Referenced by NIVissimConnectionCluster::recheckEdges().

void NIVissimEdge::reportUnsetSpeeds ( ) [static]

Writes edges with unset speeds to the warnings message log instance.

Vissim has no direct speed definition of edges; still, we try to propagate speed changes along the streets. If a lane is not covered by such, its id is put into the static container "myLanesWithMissingSpeeds". If the option "vissim.report-unset-speeds" is set, all lane ids stored within this container are written.

Definition at line 982 of file NIVissimEdge.cpp.

References myLanesWithMissingSpeeds, and WRITE_WARNING.

Referenced by NIImporter_Vissim::postLoadBuild().

void NIVissimEdge::setNodeCluster ( int  nodeid) [virtual]

Implements NIVissimAbstractEdge.

Definition at line 776 of file NIVissimEdge.cpp.

References NIVissimAbstractEdge::myNode.

void NIVissimEdge::setSpeed ( size_t  lane,
int  speedDist 
)

Definition at line 865 of file NIVissimEdge.cpp.

References myPatchedSpeeds.

void NIVissimAbstractEdge::splitAndAssignToNodes ( ) [static, inherited]
void NIVissimAbstractEdge::splitAssigning ( ) [inherited]
bool NIVissimEdge::wasWithinAJunction ( ) const [inline]

Returns whether this edge was found to be within a junction.

Returns:
Whether this node is assumed to be within a junction

Definition at line 114 of file NIVissimEdge.h.

References myAmWithinJunction.

Referenced by NIVissimConnection::buildEdgeConnections().


Friends And Related Function Documentation

friend class NIVissimNodeDef_Edges [friend]

Definition at line 121 of file NIVissimEdge.h.

friend class NIVissimNodeDef_Poly [friend]

Definition at line 122 of file NIVissimEdge.h.


Field Documentation

Information whether this edge was not build due to being within a junction.

Definition at line 293 of file NIVissimEdge.h.

Referenced by buildNBEdge(), and wasWithinAJunction().

List of lanes closed on this edge.

Definition at line 273 of file NIVissimEdge.h.

Referenced by ~NIVissimEdge().

List of connections incoming to this edge.

Definition at line 279 of file NIVissimEdge.h.

Referenced by addIncomingConnection(), buildConnectionClusters(), getBestIncoming(), and getConnectionTo().

std::vector< std::string > NIVissimEdge::myLanesWithMissingSpeeds [static, private]

Definition at line 305 of file NIVissimEdge.h.

Referenced by buildNBEdge(), and reportUnsetSpeeds().

int NIVissimEdge::myMaxID = 0 [static, private]

The current maximum id; needed for further id assignment.

Definition at line 303 of file NIVissimEdge.h.

Referenced by NIVissimEdge().

std::string NIVissimEdge::myName [private]

The name of the edge.

Definition at line 261 of file NIVissimEdge.h.

Referenced by buildNBEdge().

unsigned int NIVissimEdge::myNoLanes [private]

The number of lanes the edge has.

Definition at line 267 of file NIVissimEdge.h.

Referenced by buildNBEdge(), propagateSpeed(), and setDistrictSpeed().

List of connections outgoing from this edge.

Definition at line 282 of file NIVissimEdge.h.

Referenced by addOutgoingConnection(), buildConnectionClusters(), getBestOutgoing(), getConnectionTo(), and getOutgoingConnected().

Definition at line 286 of file NIVissimEdge.h.

Referenced by propagateSpeed(), and setSpeed().

Definition at line 290 of file NIVissimEdge.h.

Referenced by addToTreatAsSame(), and getToTreatAsSame().

std::string NIVissimEdge::myType [private]

The tape of the edge.

Definition at line 264 of file NIVissimEdge.h.

Referenced by buildNBEdge().

SUMOReal NIVissimEdge::myZuschlag1 [private]

Additional load values for this edge.

Definition at line 270 of file NIVissimEdge.h.

SUMOReal NIVissimEdge::myZuschlag2 [private]

Definition at line 270 of file NIVissimEdge.h.


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