Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
NBNode.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2026 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
21// The representation of a single node
22/****************************************************************************/
23#pragma once
24#include <config.h>
25
26#include <vector>
27#include <deque>
28#include <utility>
29#include <string>
30#include <set>
31#include <memory>
33#include <utils/common/Named.h>
37#include <utils/geom/Position.h>
40#include "NBEdge.h"
41#include "NBConnection.h"
42#include "NBConnectionDefs.h"
43#include "NBContHelper.h"
44
45
46// ===========================================================================
47// class declarations
48// ===========================================================================
49class NBRequest;
50class NBDistrict;
51class OptionsCont;
53class NBTypeCont;
55class NBDistrictCont;
56class OutputDevice;
57
58
59// ===========================================================================
60// class definitions
61// ===========================================================================
66class NBNode : public Named, public Parameterised {
67 friend class NBNodeCont;
68 friend class GNEJunction; // < used for visualization (netedit)
69 friend class NBNodesEdgesSorter; // < sorts the edges
70 friend class NBNodeTypeComputer; // < computes type
71 friend class NBEdgePriorityComputer; // < computes priorities of edges per intersection
72
73public:
86 public:
91 ApproachingDivider(const EdgeVector& approaching, NBEdge* currentOutgoing);
92
95
97 int numAvailableLanes() const {
98 return (int)myAvailableLanes.size();
99 }
100
102 void execute(const int src, const int dest);
103
105 std::deque<int>* spread(int numLanes, int dest) const;
106
107 private:
110
113
115 std::vector<int> myAvailableLanes;
116
118 std::vector<LinkDirection> myDirections;
119
122
127
128 private:
131
132 };
133
137 class Crossing final : public Parameterised {
138 public:
140 Crossing(const NBNode* _node, const EdgeVector& _edges, double _width, bool _priority, int _customTLIndex, int _customTLIndex2, const PositionVector& _customShape);
142 const NBNode* node;
152 double width;
154 std::string id;
156 std::string prevWalkingArea;
158 std::string nextWalkingArea;
170 std::string tlID;
172 bool valid;
173 };
174
175
179 struct WalkingArea {
181 WalkingArea(const std::string& _id, double _width) :
182 id(_id),
183 width(_width) {
184 }
186 std::string id;
188 double width;
194 std::vector<std::string> nextCrossings;
196 std::vector<std::string> prevCrossings;
198 std::vector<std::string> nextSidewalks;
200 std::vector<std::string> prevSidewalks;
202 bool hasCustomShape = false;
204 int minNextCrossingEdges = std::numeric_limits<int>::max();
206 int minPrevCrossingEdges = std::numeric_limits<int>::max();
208 std::set<const NBEdge*, ComparatorIdLess> refEdges;
209 };
210
212 std::set<const NBEdge*, ComparatorIdLess> edges;
214 double width;
215 };
216
218 static const int FORWARD;
219 static const int BACKWARD;
220
222 static const double UNSPECIFIED_RADIUS;
223
225 static const int AVOID_WIDE_RIGHT_TURN;
226 static const int AVOID_WIDE_LEFT_TURN;
227 static const int FOUR_CONTROL_POINTS;
229 static const int SCURVE_IGNORE;
230 static const int INDIRECT_LEFT;
231
232public:
238 NBNode(const std::string& id, const Position& position, SumoXMLNodeType type);
239
245 NBNode(const std::string& id, const Position& position, NBDistrict* district = 0);
246
248 ~NBNode();
249
256 void reinit(const Position& position, SumoXMLNodeType type,
257 bool updateEdgeGeometries = false);
258
262 inline const Position& getPosition() const {
263 return myPosition;
264 }
265
267 Position getCenter() const;
268
270 inline const EdgeVector& getIncomingEdges() const {
271 return myIncomingEdges;
272 }
273
275 inline const EdgeVector& getOutgoingEdges() const {
276 return myOutgoingEdges;
277 }
278
280 inline const EdgeVector& getEdges() const {
281 return myAllEdges;
282 }
283
287 inline SumoXMLNodeType getType() const {
288 return myType;
289 }
290
292 inline double getRadius() const {
293 return myRadius;
294 }
295
297 inline bool getKeepClear() const {
298 return myKeepClear;
299 }
300
302 inline RightOfWay getRightOfWay() const {
303 return myRightOfWay;
304 }
305
307 inline FringeType getFringeType() const {
308 return myFringeType;
309 }
310
313 return myRoundaboutType;
314 }
315
317 inline const std::string& getName() const {
318 return myName;
319 }
321
324
328
331
333 void removeTrafficLights(bool setAsPriority = false);
334
338 bool isTLControlled() const {
339 return myTrafficLights.size() != 0;
340 }
341
342
344 bool hadSignal() const;
345
347 const std::set<NBTrafficLightDefinition*>& getControllingTLS() const {
348 return myTrafficLights;
349 }
350
352 void invalidateTLS(NBTrafficLightLogicCont& tlCont, bool addedConnections, bool removedConnections);
353
355 void shiftTLConnectionLaneIndex(NBEdge* edge, int offset, int threshold = -1);
357
358
361
373
374
377
381 void reshiftPosition(double xoff, double yoff);
382
384 void roundGeometry();
385
387 void mirrorX();
389
391 void addIncomingEdge(NBEdge* edge);
392
394 void addOutgoingEdge(NBEdge* edge);
395
397 void computeLanes2Lanes();
398
400 void computeLogic(const NBEdgeCont& ec);
401
403 void computeLogic2(bool checkLaneFoes);
404
406 void computeKeepClear();
407
409 bool writeLogic(OutputDevice& into) const;
410
412 const std::string getFoes(int linkIndex) const;
413
415 const std::string getResponse(int linkIndex) const;
416
418 bool hasConflict() const;
419
421 bool hasConflict(const NBEdge* e) const;
422
424 Position getEmptyDir() const;
425
430 bool hasIncoming(const NBEdge* const e) const;
431
436 bool hasOutgoing(const NBEdge* const e) const;
437
440
442 void invalidateIncomingConnections(bool reallowSetting = false);
443
445 void invalidateOutgoingConnections(bool reallowSetting = false);
446
448 void removeDoubleEdges();
449
451 NBEdge* getConnectionTo(NBNode* n) const;
452
454 void addSortedLinkFoes(const NBConnection& mayDrive, const NBConnection& mustStop);
455
457 NBEdge* getPossiblySplittedIncoming(const std::string& edgeid);
458
460 NBEdge* getPossiblySplittedOutgoing(const std::string& edgeid);
461
463 void removeEdge(NBEdge* edge, bool removeFromConnections = true);
464
474 bool isLeftMover(const NBEdge* const from, const NBEdge* const to) const;
475
484 bool mustBrake(const NBEdge* const from, const NBEdge* const to, int fromLane, int toLane, bool includePedCrossings) const;
485
492 bool mustBrakeForCrossing(const NBEdge* const from, const NBEdge* const to, const Crossing& crossing) const;
493
495 bool brakeForCrossingOnExit(const NBEdge* to, LinkDirection dir, bool indirect) const;
496
498 static bool rightTurnConflict(const NBEdge* from, const NBEdge* to, int fromLane,
499 const NBEdge* prohibitorFrom, const NBEdge* prohibitorTo, int prohibitorFromLane);
500
502 bool mergeConflictYields(const NBEdge* from, int fromLane, int fromLaneFoe, NBEdge* to, int toLane) const;
503
505 bool mergeConflict(const NBEdge* from, const NBEdge::Connection& con,
506 const NBEdge* prohibitorFrom, const NBEdge::Connection& prohibitorCon, bool foes) const;
507
509 bool bidiConflict(const NBEdge* from, const NBEdge::Connection& con,
510 const NBEdge* prohibitorFrom, const NBEdge::Connection& prohibitorCon, bool foes) const;
511
512 bool zipperConflict(const NBEdge* incoming, const NBEdge* outgoing, int fromLane, int toLane) const;
513
515 bool turnFoes(const NBEdge* from, const NBEdge* to, int fromLane,
516 const NBEdge* from2, const NBEdge* to2, int fromLane2,
517 bool lefthand = false) const;
518
527 bool forbids(const NBEdge* const possProhibitorFrom, const NBEdge* const possProhibitorTo,
528 const NBEdge* const possProhibitedFrom, const NBEdge* const possProhibitedTo,
529 bool regardNonSignalisedLowerPriority) const;
530
538 bool foes(const NBEdge* const from1, const NBEdge* const to1,
539 const NBEdge* const from2, const NBEdge* const to2) const;
540
547 LinkDirection getDirection(const NBEdge* const incoming, const NBEdge* const outgoing, bool leftHand = false) const;
548
550 LinkState getLinkState(const NBEdge* incoming, const NBEdge* outgoing,
551 int fromLane, int toLane, bool mayDefinitelyPass, const std::string& tlID) const;
552
556 void computeNodeShape(double mismatchThreshold);
557
560
562 const PositionVector& getShape() const;
563
565 void setCustomShape(const PositionVector& shape);
566
568 void resetShape() {
569 myPoly.clear();
570 }
571
573 void setRadius(double radius) {
574 myRadius = radius;
575 }
576
578 void setKeepClear(bool keepClear) {
579 myKeepClear = keepClear;
580 }
581
583 void setRightOfWay(RightOfWay rightOfWay) {
584 myRightOfWay = rightOfWay;
585 }
586
588 void setFringeType(FringeType fringeType) {
589 myFringeType = fringeType;
590 }
591
593 void setRoundaboutType(RoundaboutType roundaboutType) {
594 myRoundaboutType = roundaboutType;
595 }
596
598 void setName(const std::string& name) {
599 myName = name;
600 }
601
603 bool hasCustomShape() const {
604 return myHaveCustomPoly;
605 }
606
608 bool checkIsRemovable() const;
609
611 bool checkIsRemovableReporting(std::string& reason) const;
612
614 std::vector<std::pair<NBEdge*, NBEdge*> > getEdgesToJoin() const;
615
617 bool isNearDistrict() const;
618
620 bool isDistrict() const;
621
623 bool needsCont(const NBEdge* fromE, const NBEdge* otherFromE,
624 const NBEdge::Connection& c, const NBEdge::Connection& otherC, bool checkOnlyTLS = false) const;
625
627 bool tlsStrandedConflict(const NBEdge* from, const NBEdge::Connection& c,
628 const NBEdge* foeFrom, const NBEdge::Connection& foe) const;
629
630
638 PositionVector computeInternalLaneShape(const NBEdge* fromE, const NBEdge::Connection& con, int numPoints, NBNode* recordError = 0, int shapeFlag = 0) const;
639
650 PositionVector computeSmoothShape(const PositionVector& begShape, const PositionVector& endShape, int numPoints,
651 bool isTurnaround, double extrapolateBeg, double extrapolateEnd,
652 NBNode* recordError = 0, int shapeFlag = 0) const;
654 static PositionVector bezierControlPoints(const PositionVector& begShape, const PositionVector& endShape,
655 bool isTurnaround, double extrapolateBeg, double extrapolateEnd,
656 bool& ok, NBNode* recordError = 0, double straightThresh = DEG2RAD(5),
657 int shapeFlag = 0);
658
660 PositionVector indirectLeftShape(const PositionVector& begShape, const PositionVector& endShape, int numPoints) const;
661
663 double getDisplacementError() const {
664 return myDisplacementError;
665 }
666
668 void replaceIncoming(NBEdge* which, NBEdge* by, int laneOff);
669
671 void replaceIncoming(const EdgeVector& which, NBEdge* by);
672
674 void replaceOutgoing(NBEdge* which, NBEdge* by, int laneOff);
675
677 void replaceOutgoing(const EdgeVector& which, NBEdge* by);
678
680 int guessCrossings();
681
682 /* @brief check whether a crossing should be build for the candiate edges and build 0 to n crossings
683 * @param[in] candidates The candidate vector of edges to be crossed
684 * @param[in] checkOnly Whether only checking (of user supplied) crossings shall be performed
685 * @return The number of crossings built
686 * */
687 int checkCrossing(EdgeVector candidates, bool checkOnly = false);
688
691
693 double buildInnerEdges();
694
698 int buildCrossings();
699
703 void buildWalkingAreas(int cornerDetail, double joinMinDist);
704
707
710
712 EdgeVector edgesBetween(const NBEdge* e1, const NBEdge* e2) const;
713
715 bool crossingBetween(const NBEdge* e1, const NBEdge* e2) const;
716
718 bool alreadyConnectedPaths(const NBEdge* e1, const NBEdge* e2, double dist) const;
719
721 bool crossesFringe(const NBEdge* e1, const NBEdge* e2) const;
722
727
729 bool geometryLike() const;
730 static bool geometryLike(const EdgeVector& incoming, const EdgeVector& outgoing);
731
733 void setRoundabout();
734
736 bool isRoundabout() const;
737
739 NBNode::Crossing* addCrossing(EdgeVector edges, double width, bool priority, int tlIndex = -1, int tlIndex2 = -1,
740 const PositionVector& customShape = PositionVector::EMPTY, bool fromSumoNet = false, const Parameterised* params = nullptr);
741
743 void addWalkingAreaShape(EdgeVector edges, const PositionVector& shape, double width);
744
746 void removeCrossing(const EdgeVector& edges);
747
749 void discardAllCrossings(bool rejectAll);
750
752 void discardWalkingareas();
753
758
760 std::vector<Crossing*> getCrossings() const;
761 inline const std::vector<std::unique_ptr<Crossing> >& getCrossingsIncludingInvalid() const {
762 return myCrossings;
763 }
764
766 inline const std::vector<WalkingArea>& getWalkingAreas() const {
767 return myWalkingAreas;
768 }
769
770 const std::vector<WalkingAreaCustomShape>& getWalkingAreaCustomShapes() const {
772 }
773
775 Crossing* getCrossing(const std::string& id) const;
776
778 Crossing* getCrossing(const EdgeVector& edges, bool hardFail = true) const;
779
781 WalkingArea& getWalkingArea(const std::string& id);
782
783 /* @brief set tl indices of this nodes crossing starting at the given index
784 * @return Whether a custom index was used
785 */
786 bool setCrossingTLIndices(const std::string& tlID, int startIndex, bool ignoreCustom = false);
787
789 int numNormalConnections() const;
790
792 void avoidOverlap();
793
795 bool extraConflict(int index, int foeIndex) const;
796
798 void sortEdges(bool useNodeShape);
799
801 int getConnectionIndex(const NBEdge* from, const NBEdge::Connection& con) const;
802
808 public:
810 explicit nodes_by_id_sorter() { }
811
813 int operator()(NBNode* n1, NBNode* n2) const {
814 return n1->getID() < n2->getID();
815 }
816 };
817
822 public:
825
827 int operator()(NBEdge* e1, NBEdge* e2) const {
829 return e1->getFromNode() == myNode;
830 }
831
832 private:
835
836 };
837
839 static bool isTrafficLight(SumoXMLNodeType type);
840
841 inline bool isTrafficLight() const {
842 return isTrafficLight(myType);
843 }
844
846 bool isSimpleContinuation(bool checkLaneNumbers = true, bool checkWidth = false) const;
847
849 void markBentPriority(bool isBent) {
850 myIsBentPriority = isBent;
851 }
852
854 bool isBentPriority() const {
855 return myIsBentPriority;
856 }
857
859 bool typeWasGuessed() const {
860 return myTypeWasGuessed;
861 }
862
864 bool isConstantWidthTransition() const;
865
867 std::vector<std::pair<Position, std::string> > getEndPoints() const;
868
870 void recheckVClassConnections(NBEdge* currentOutgoing);
871
873 static void initRailSignalClasses(const NBNodeCont& nc);
874
875private:
878
880 void getEdgesThatApproach(NBEdge* currentOutgoing, EdgeVector& approaching);
881
883 void replaceInConnectionProhibitions(NBEdge* which, NBEdge* by, int whichLaneOff, int byLaneOff);
884
886 void remapRemoved(NBTrafficLightLogicCont& tc, NBEdge* removed, const EdgeVector& incoming, const EdgeVector& outgoing);
887
889 bool forbidsPedestriansAfter(std::vector<std::pair<NBEdge*, bool> > normalizedLanes, int startIndex);
890
893
895 static bool isLongEnough(NBEdge* out, double minLength);
896
899
901 void displaceShapeAtWidthChange(const NBEdge* from, const NBEdge::Connection& con, PositionVector& fromShape, PositionVector& toShape) const;
902
904 static bool includes(const std::set<const NBEdge*, ComparatorIdLess>& super,
905 const std::set<const NBEdge*, ComparatorIdLess>& sub);
906
907 NBEdge* getNextCompatibleOutgoing(const NBEdge* incoming, SVCPermissions vehPerm, EdgeVector::const_iterator start, bool clockwise) const;
908
910 void getReduction(const NBEdge* in, const NBEdge* out, int& inOffset, int& inEnd, int& outOffset, int& outEnd, int& reduction) const;
911
913 SVCPermissions findToLaneForPermissions(NBEdge* currentOutgoing, int fromLane, NBEdge* incoming, SVCPermissions unsatisfied);
914
916 int addedLanesRight(NBEdge* out, int addedLanes) const;
917
919 bool isStraighter(const NBEdge* const incoming, const double angle, const SVCPermissions vehPerm, const int modeLanes, const NBEdge* const candidate) const;
920
922 EdgeVector getPassengerEdges(bool incoming) const;
923
925 static bool isExplicitRailNoBidi(const NBEdge* incoming, const NBEdge* outgoing);
926
928 PositionVector cutAtShapes(const PositionVector& cut, const PositionVector& border1, const PositionVector& border2, const PositionVector& def);
929
931 void patchOffset_pathAcrossStreet(double& offset);
932
934 bool unsignalizedOperation() const;
935
937 void recheckSpecialConnections(NBEdge* incoming, NBEdge* currentOutgoing, SVCPermissions svcSpecial);
938
940 bool avoidConfict(NBEdge* incoming, NBEdge* currentOutgoing, SVCPermissions svcSpecial, LinkDirection dir, int i);
941
942private:
945
948
951
954
956 std::vector<std::unique_ptr<Crossing> > myCrossings;
957
959 std::vector<WalkingArea> myWalkingAreas;
960
962 std::vector<WalkingAreaCustomShape> myWalkingAreaCustomShapes;
963
966
969
972
975
978
981
983 std::set<NBTrafficLightDefinition*> myTrafficLights;
984
986 double myRadius;
987
990
993
996
999
1001 std::string myName;
1002
1005
1008
1011
1012 /* @brief whether this junction is a bent priority junction (main direction turns)
1013 * @note see NBEdgePriorityComputer
1014 */
1016
1019
1022
1025
1026private:
1028 NBNode(const NBNode& s);
1029
1032};
#define DEG2RAD(x)
Definition GeomHelper.h:35
std::map< NBConnection, NBConnectionVector > NBConnectionProhibits
Definition of a container for connection block dependencies Includes a list of all connections which ...
std::vector< NBEdge * > EdgeVector
container for (sorted) edges
Definition NBCont.h:42
long long int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
RoundaboutType
classifying roundabout type for nodes
FringeType
classifying boundary nodes
LinkDirection
The different directions a link between two lanes may take (or a stream between two edges)....
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic,...
SumoXMLNodeType
Numbers representing special SUMO-XML-attribute values for representing node- (junction-) types used ...
RightOfWay
algorithms for computing right of way
const double INVALID_DOUBLE
invalid double
Definition StdDefs.h:68
A container for districts.
A class representing a single district.
Definition NBDistrict.h:62
Storage for edges, including some functionality operating on multiple edges.
Definition NBEdgeCont.h:59
The representation of a single edge during network building.
Definition NBEdge.h:92
NBNode * getFromNode() const
Returns the origin node of the edge.
Definition NBEdge.h:545
Computes lane-2-lane connections.
Definition NBNode.h:85
ApproachingDivider & operator=(const ApproachingDivider &)=delete
Invalidated assignment operator.
bool myIsBikeEdge
whether the outgoing edge is exclusively used by bikes
Definition NBNode.h:124
~ApproachingDivider()
Destructor.
Definition NBNode.cpp:148
const EdgeVector & myApproaching
The list of edges that approach the current edge.
Definition NBNode.h:109
int numAvailableLanes() const
@ get number of available lanes
Definition NBNode.h:97
std::vector< LinkDirection > myDirections
directions from each incoming edge to the outgoing edge
Definition NBNode.h:118
int myNumStraight
number of straight connections to the outgoing edge
Definition NBNode.h:121
NBEdge * myCurrentOutgoing
The approached current edge.
Definition NBNode.h:112
bool myIsBusEdge
whether the outgoing edge is exclusively used by buses
Definition NBNode.h:126
std::deque< int > * spread(int numLanes, int dest) const
the method that spreads the wished number of lanes from the lane given by the bresenham-call to both ...
Definition NBNode.cpp:212
void execute(const int src, const int dest)
the bresenham-callback
Definition NBNode.cpp:152
std::vector< int > myAvailableLanes
The available lanes to which connections shall be built.
Definition NBNode.h:115
A definition of a pedestrian crossing.
Definition NBNode.h:137
const NBNode * node
The parent node of this crossing.
Definition NBNode.h:142
int tlLinkIndex
the traffic light index of this crossing (if controlled)
Definition NBNode.h:164
std::string tlID
The id of the traffic light that controls this connection.
Definition NBNode.h:170
PositionVector customShape
optional customShape for this crossing
Definition NBNode.h:162
std::string id
the (edge)-id of this crossing
Definition NBNode.h:154
std::string prevWalkingArea
the lane-id of the previous walkingArea
Definition NBNode.h:156
std::string nextWalkingArea
the lane-id of the next walkingArea
Definition NBNode.h:158
PositionVector outlineShape
The outline shape for this crossing.
Definition NBNode.h:148
PositionVector shape
The crossing's shape.
Definition NBNode.h:146
int customTLIndex
the custom traffic light index of this crossing (if controlled)
Definition NBNode.h:167
bool priority
whether the pedestrians have priority
Definition NBNode.h:160
EdgeVector edges
The edges being crossed.
Definition NBNode.h:144
double width
This crossing's width.
Definition NBNode.h:152
bool valid
whether this crossing is valid (and can be written to the net.xml). This is needed for netedit becaus...
Definition NBNode.h:172
double customWidth
This crossing's width.
Definition NBNode.h:150
Sorts outgoing before incoming edges.
Definition NBNode.h:821
NBNode * myNode
The node to compute the relative angle of.
Definition NBNode.h:834
int operator()(NBEdge *e1, NBEdge *e2) const
operator of selection
Definition NBNode.h:827
edge_by_direction_sorter(NBNode *n)
constructor
Definition NBNode.h:824
Used for sorting the cells by the begin time they describe.
Definition NBNode.h:807
nodes_by_id_sorter()
Constructor.
Definition NBNode.h:810
int operator()(NBNode *n1, NBNode *n2) const
Comparing operator.
Definition NBNode.h:813
Container for nodes during the netbuilding process.
Definition NBNodeCont.h:57
Represents a single node (junction) during network building.
Definition NBNode.h:66
void addIncomingEdge(NBEdge *edge)
adds an incoming edge
Definition NBNode.cpp:541
void invalidateOutgoingConnections(bool reallowSetting=false)
invalidate outgoing connections
Definition NBNode.cpp:2145
LinkDirection getDirection(const NBEdge *const incoming, const NBEdge *const outgoing, bool leftHand=false) const
Returns the representation of the described stream's direction.
Definition NBNode.cpp:2507
static const int FOUR_CONTROL_POINTS
Definition NBNode.h:227
static const int AVOID_INTERSECTING_LEFT_TURNS
Definition NBNode.h:228
bool hasIncoming(const NBEdge *const e) const
Returns whether the given edge ends at this node.
Definition NBNode.cpp:2003
void addWalkingAreaShape(EdgeVector edges, const PositionVector &shape, double width)
add custom shape for walkingArea
Definition NBNode.cpp:4023
void avoidOverlap()
fix overlap
Definition NBNode.cpp:4257
void removeEdge(NBEdge *edge, bool removeFromConnections=true)
Removes edge from this node and optionally removes connections as well.
Definition NBNode.cpp:2076
std::vector< WalkingAreaCustomShape > myWalkingAreaCustomShapes
Vector of custom walking areas shapes.
Definition NBNode.h:962
double getDisplacementError() const
compute the displacement error during s-curve computation
Definition NBNode.h:663
RightOfWay getRightOfWay() const
Returns hint on how to compute right of way.
Definition NBNode.h:302
Position getCenter() const
Returns a position that is guaranteed to lie within the node shape.
Definition NBNode.cpp:4219
bool mustBrake(const NBEdge *const from, const NBEdge *const to, int fromLane, int toLane, bool includePedCrossings) const
Returns the information whether the described flow must let any other flow pass.
Definition NBNode.cpp:2153
const std::set< NBTrafficLightDefinition * > & getControllingTLS() const
Returns the traffic lights that were assigned to this node (The set of tls that control this node)
Definition NBNode.h:347
void removeCrossing(const EdgeVector &edges)
remove a pedestrian crossing from this node (identified by its edges)
Definition NBNode.cpp:4104
NBEdge * getNextCompatibleOutgoing(const NBEdge *incoming, SVCPermissions vehPerm, EdgeVector::const_iterator start, bool clockwise) const
Definition NBNode.cpp:2435
bool isSimpleContinuation(bool checkLaneNumbers=true, bool checkWidth=false) const
check if node is a simple continuation
Definition NBNode.cpp:561
void patchOffset_pathAcrossStreet(double &offset)
compute offset for centering path-across-street crossings
Definition NBNode.cpp:3281
SVCPermissions findToLaneForPermissions(NBEdge *currentOutgoing, int fromLane, NBEdge *incoming, SVCPermissions unsatisfied)
helper function to add connections for unsatisfied modes
Definition NBNode.cpp:1730
NBNode::Crossing * addCrossing(EdgeVector edges, double width, bool priority, int tlIndex=-1, int tlIndex2=-1, const PositionVector &customShape=PositionVector::EMPTY, bool fromSumoNet=false, const Parameterised *params=nullptr)
add a pedestrian crossing to this node
Definition NBNode.cpp:4089
LinkState getLinkState(const NBEdge *incoming, const NBEdge *outgoing, int fromLane, int toLane, bool mayDefinitelyPass, const std::string &tlID) const
get link state
Definition NBNode.cpp:2592
int getConnectionIndex(const NBEdge *from, const NBEdge::Connection &con) const
return the index of the given connection
Definition NBNode.cpp:4204
void reinit(const Position &position, SumoXMLNodeType type, bool updateEdgeGeometries=false)
Resets initial values.
Definition NBNode.cpp:361
int numNormalConnections() const
return the number of lane-to-lane connections at this junction (excluding crossings)
Definition NBNode.cpp:4189
static const double UNSPECIFIED_RADIUS
unspecified lane width
Definition NBNode.h:222
bool needsCont(const NBEdge *fromE, const NBEdge *otherFromE, const NBEdge::Connection &c, const NBEdge::Connection &otherC, bool checkOnlyTLS=false) const
whether an internal junction should be built at from and respect other
Definition NBNode.cpp:986
Crossing * getCrossing(const std::string &id) const
return the crossing with the given id
Definition NBNode.cpp:4118
bool forbidsPedestriansAfter(std::vector< std::pair< NBEdge *, bool > > normalizedLanes, int startIndex)
return whether there is a non-sidewalk lane after the given index;
Definition NBNode.cpp:3047
void recheckVClassConnections(NBEdge *currentOutgoing)
ensure connectivity for all vClasses
Definition NBNode.cpp:1549
FringeType getFringeType() const
Returns fringe type.
Definition NBNode.h:307
bool zipperConflict(const NBEdge *incoming, const NBEdge *outgoing, int fromLane, int toLane) const
Definition NBNode.cpp:2630
void buildCrossingsAndWalkingAreas()
build crossings, and walkingareas. Also removes invalid loaded crossings if wished
Definition NBNode.cpp:3058
std::string myName
The intersection name (or whatever arbitrary string you wish to attach)
Definition NBNode.h:1001
static const int BACKWARD
Definition NBNode.h:219
bool unsignalizedOperation() const
whether the given rail connections at this node may run in unsignalized (right-of-way) mode
Definition NBNode.cpp:2646
static bool isExplicitRailNoBidi(const NBEdge *incoming, const NBEdge *outgoing)
detect explict rail turns with potential geometry problem
Definition NBNode.cpp:2580
void resetShape()
reset node shape
Definition NBNode.h:568
SumoXMLNodeType getType() const
Returns the type of this node.
Definition NBNode.h:287
bool isTrafficLight() const
Definition NBNode.h:841
void computeLogic2(bool checkLaneFoes)
compute right-of-way logic for all lane-to-lane connections
Definition NBNode.cpp:1104
void setRoundaboutType(RoundaboutType roundaboutType)
set roundabout type
Definition NBNode.h:593
void setRightOfWay(RightOfWay rightOfWay)
set method for computing right-of-way
Definition NBNode.h:583
bool myTypeWasGuessed
whether the node type was guessed rather than loaded
Definition NBNode.h:1018
void setCustomShape(const PositionVector &shape)
set the junction shape
Definition NBNode.cpp:2798
void computeNodeShape(double mismatchThreshold)
Compute the junction shape for this node.
Definition NBNode.cpp:1204
void buildWalkingAreas(int cornerDetail, double joinMinDist)
build pedestrian walking areas and set connections from/to walkingAreas
Definition NBNode.cpp:3353
void remapRemoved(NBTrafficLightLogicCont &tc, NBEdge *removed, const EdgeVector &incoming, const EdgeVector &outgoing)
remap removed
Definition NBNode.cpp:2354
int buildCrossings()
build pedestrian crossings
Definition NBNode.cpp:3165
SumoXMLNodeType myType
The type of the junction.
Definition NBNode.h:965
EdgeVector myOutgoingEdges
Vector of outgoing edges.
Definition NBNode.h:950
void getReduction(const NBEdge *in, const NBEdge *out, int &inOffset, int &inEnd, int &outOffset, int &outEnd, int &reduction) const
get the reduction in driving lanes at this junction
Definition NBNode.cpp:1720
bool myKeepClear
whether the junction area must be kept clear
Definition NBNode.h:989
void discardWalkingareas()
discard previously built walkingareas (required for repeated computation by netedit)
Definition NBNode.cpp:3135
void computeLogic(const NBEdgeCont &ec)
computes the node's type, logic and traffic light
Definition NBNode.cpp:1065
void invalidateIncomingConnections(bool reallowSetting=false)
invalidate incoming connections
Definition NBNode.cpp:2137
NBRequest * myRequest
Node requests.
Definition NBNode.h:980
const EdgeVector & getIncomingEdges() const
Returns this node's incoming edges (The edges which yield in this node)
Definition NBNode.h:270
bool tlsStrandedConflict(const NBEdge *from, const NBEdge::Connection &c, const NBEdge *foeFrom, const NBEdge::Connection &foe) const
whether the connection must yield if the foe remains on the intersection after its phase ends
Definition NBNode.cpp:1040
void mirrorX()
mirror coordinates along the x-axis
Definition NBNode.cpp:418
void invalidateTLS(NBTrafficLightLogicCont &tlCont, bool addedConnections, bool removedConnections)
causes the traffic light to be computed anew
Definition NBNode.cpp:477
bool brakeForCrossingOnExit(const NBEdge *to, LinkDirection dir, bool indirect) const
whether a connection to the given edge must brake for a crossing when leaving the intersection
Definition NBNode.cpp:2176
bool extraConflict(int index, int foeIndex) const
whether the given index must yield to the foeIndex while turing right on a red light
Definition NBNode.cpp:4284
std::vector< std::pair< Position, std::string > > getEndPoints() const
return list of unique endpoint coordinates of all edges at this node
Definition NBNode.cpp:4379
static bool rightTurnConflict(const NBEdge *from, const NBEdge *to, int fromLane, const NBEdge *prohibitorFrom, const NBEdge *prohibitorTo, int prohibitorFromLane)
return whether the given laneToLane connection is a right turn which must yield to a bicycle crossing...
Definition NBNode.cpp:2192
std::vector< std::pair< NBEdge *, NBEdge * > > getEdgesToJoin() const
get edges to join
Definition NBNode.cpp:2756
bool hadSignal() const
whether this node was marked as having a signal in the (OSM) input
Definition NBNode.cpp:466
void setKeepClear(bool keepClear)
set the keepClear flag
Definition NBNode.h:578
int checkCrossing(EdgeVector candidates, bool checkOnly=false)
Definition NBNode.cpp:2951
bool myHaveCustomPoly
whether this nodes shape was set by the user
Definition NBNode.h:977
Position getEmptyDir() const
Returns something like the most unused direction Should only be used to add source or sink nodes.
Definition NBNode.cpp:2112
static void initRailSignalClasses(const NBNodeCont &nc)
initialize signalized rail classes
Definition NBNode.cpp:2658
PositionVector indirectLeftShape(const PositionVector &begShape, const PositionVector &endShape, int numPoints) const
compute shape of indirect left turn
Definition NBNode.cpp:819
const std::vector< std::unique_ptr< Crossing > > & getCrossingsIncludingInvalid() const
Definition NBNode.h:761
void recheckSpecialConnections(NBEdge *incoming, NBEdge *currentOutgoing, SVCPermissions svcSpecial)
ensure connectivity for all special vClass
Definition NBNode.cpp:1616
PositionVector cutAtShapes(const PositionVector &cut, const PositionVector &border1, const PositionVector &border2, const PositionVector &def)
geometry helper that cuts the first shape where bordered by the other two
Definition NBNode.cpp:3884
static const int AVOID_WIDE_RIGHT_TURN
flags for controlling shape generation
Definition NBNode.h:225
const EdgeVector & getOutgoingEdges() const
Returns this node's outgoing edges (The edges which start at this node)
Definition NBNode.h:275
int myCrossingsLoadedFromSumoNet
number of crossings loaded from a sumo net
Definition NBNode.h:1007
bool forbids(const NBEdge *const possProhibitorFrom, const NBEdge *const possProhibitorTo, const NBEdge *const possProhibitedFrom, const NBEdge *const possProhibitedTo, bool regardNonSignalisedLowerPriority) const
Returns the information whether "prohibited" flow must let "prohibitor" flow pass.
Definition NBNode.cpp:2337
bool alreadyConnectedPaths(const NBEdge *e1, const NBEdge *e2, double dist) const
return true if the given pedestrian paths are connected at another junction within dist
Definition NBNode.cpp:3978
bool mustBrakeForCrossing(const NBEdge *const from, const NBEdge *const to, const Crossing &crossing) const
Returns the information whether the described flow must brake for the given crossing.
Definition NBNode.cpp:2171
bool hasConflict() const
whether there are conflicting streams of traffic at this node
Definition NBNode.cpp:1169
void removeTrafficLights(bool setAsPriority=false)
Removes all references to traffic lights that control this tls.
Definition NBNode.cpp:454
void replaceInConnectionProhibitions(NBEdge *which, NBEdge *by, int whichLaneOff, int byLaneOff)
replace incoming connections prohibitions
Definition NBNode.cpp:1930
bool mergeConflictYields(const NBEdge *from, int fromLane, int fromLaneFoe, NBEdge *to, int toLane) const
whether one of multple connections from the same edge targeting the same lane must yield
Definition NBNode.cpp:2243
void replaceOutgoing(NBEdge *which, NBEdge *by, int laneOff)
Replaces occurrences of the first edge within the list of outgoing by the second Connections are rema...
Definition NBNode.cpp:1861
EdgeVector myAllEdges
Vector of incoming and outgoing edges.
Definition NBNode.h:953
void computeKeepClear()
compute keepClear status for all connections
Definition NBNode.cpp:1111
RoundaboutType myRoundaboutType
roundabout type of this node
Definition NBNode.h:998
int numCrossingsFromSumoNet() const
get num of crossings from sumo net
Definition NBNode.h:755
void sortEdges(bool useNodeShape)
sort all edge containers for this node
Definition NBNode.cpp:4295
RightOfWay myRightOfWay
how to compute right of way for this node
Definition NBNode.h:992
bool myIsBentPriority
Definition NBNode.h:1015
std::set< NBTrafficLightDefinition * > myTrafficLights
traffic lights of node
Definition NBNode.h:983
double myRadius
the turning radius (for all corners) at this node in m.
Definition NBNode.h:986
static bool includes(const std::set< const NBEdge *, ComparatorIdLess > &super, const std::set< const NBEdge *, ComparatorIdLess > &sub)
returns whether sub is a subset of super
Definition NBNode.cpp:3944
static SVCPermissions myHaveRailSignalClasses
all vehicle classes for which rail signals exist
Definition NBNode.h:1021
bool bidiConflict(const NBEdge *from, const NBEdge::Connection &con, const NBEdge *prohibitorFrom, const NBEdge::Connection &prohibitorCon, bool foes) const
whether the foe connections is oncoming on the same lane
Definition NBNode.cpp:2263
PositionVector computeSmoothShape(const PositionVector &begShape, const PositionVector &endShape, int numPoints, bool isTurnaround, double extrapolateBeg, double extrapolateEnd, NBNode *recordError=0, int shapeFlag=0) const
Compute a smooth curve between the given geometries.
Definition NBNode.cpp:596
bool hasCustomShape() const
return whether the shape was set by the user
Definition NBNode.h:603
bool isLeftMover(const NBEdge *const from, const NBEdge *const to) const
Computes whether the given connection is a left mover across the junction.
Definition NBNode.cpp:2318
int removeSelfLoops(NBDistrictCont &dc, NBEdgeCont &ec, NBTrafficLightLogicCont &tc)
Removes edges which are both incoming and outgoing into this node.
Definition NBNode.cpp:508
bool checkCrossingDuplicated(EdgeVector edges)
return true if there already exist a crossing with the same edges as the input
Definition NBNode.cpp:3030
void setRoundabout()
update the type of this node as a roundabout
Definition NBNode.cpp:4072
bool mergeConflict(const NBEdge *from, const NBEdge::Connection &con, const NBEdge *prohibitorFrom, const NBEdge::Connection &prohibitorCon, bool foes) const
whether multiple connections from the same edge target the same lane
Definition NBNode.cpp:2254
bool myDiscardAllCrossings
whether to discard all pedestrian crossings
Definition NBNode.h:1004
std::vector< Crossing * > getCrossings() const
return this junctions pedestrian crossings
Definition NBNode.cpp:3107
void addSortedLinkFoes(const NBConnection &mayDrive, const NBConnection &mustStop)
add shorted link FOES
Definition NBNode.cpp:2033
Position myPosition
The position the node lies at.
Definition NBNode.h:944
bool isBentPriority() const
return whether a priority road turns at this node
Definition NBNode.h:854
void replaceIncoming(NBEdge *which, NBEdge *by, int laneOff)
Replaces occurrences of the first edge within the list of incoming by the second Connections are rema...
Definition NBNode.cpp:1897
bool turnFoes(const NBEdge *from, const NBEdge *to, int fromLane, const NBEdge *from2, const NBEdge *to2, int fromLane2, bool lefthand=false) const
return whether the given laneToLane connection originate from the same edge and are in conflict due t...
Definition NBNode.cpp:2272
const std::string & getName() const
Returns intersection name.
Definition NBNode.h:317
void discardAllCrossings(bool rejectAll)
discard all current (and optionally future) crossings
Definition NBNode.cpp:3125
bool hasOutgoing(const NBEdge *const e) const
Returns whether the given edge starts at this node.
Definition NBNode.cpp:2009
bool writeLogic(OutputDevice &into) const
writes the XML-representation of the logic as a bitset-logic XML representation
Definition NBNode.cpp:1140
void setRadius(double radius)
set the turning radius
Definition NBNode.h:573
EdgeVector getPassengerEdges(bool incoming) const
return edges that permit passengers (either incoming or outgoing)
Definition NBNode.cpp:2496
NBEdge * getPossiblySplittedOutgoing(const std::string &edgeid)
get possibly splitted outgoing edge
Definition NBNode.cpp:2063
NBNode(const NBNode &s)
invalidated copy constructor
void addOutgoingEdge(NBEdge *edge)
adds an outgoing edge
Definition NBNode.cpp:551
bool isConstantWidthTransition() const
detects whether a given junction splits or merges lanes while keeping constant road width
Definition NBNode.cpp:929
std::vector< std::unique_ptr< Crossing > > myCrossings
Vector of crossings.
Definition NBNode.h:956
bool isStraighter(const NBEdge *const incoming, const double angle, const SVCPermissions vehPerm, const int modeLanes, const NBEdge *const candidate) const
check whether the candidate edge is more likely to be the straight continuation
Definition NBNode.cpp:2460
void removeJoinedTrafficLights()
remove all traffic light definitions that are part of a joined tls
Definition NBNode.cpp:1050
bool crossingBetween(const NBEdge *e1, const NBEdge *e2) const
return true if the given edges are connected by a crossing
Definition NBNode.cpp:3957
bool isDistrict() const
check if node is a district
Definition NBNode.cpp:2838
NBDistrict * myDistrict
The district the node is the centre of.
Definition NBNode.h:971
void computeLanes2Lanes()
computes the connections of lanes to edges
Definition NBNode.cpp:1243
void reshiftPosition(double xoff, double yoff)
Applies an offset to the node.
Definition NBNode.cpp:390
void setName(const std::string &name)
set intersection name
Definition NBNode.h:598
double myDisplacementError
geometry error after computation of internal lane shapes
Definition NBNode.h:1010
static const int AVOID_WIDE_LEFT_TURN
Definition NBNode.h:226
const Position & getPosition() const
Definition NBNode.h:262
void removeTrafficLight(NBTrafficLightDefinition *tlDef)
Removes the given traffic light from this node.
Definition NBNode.cpp:447
const EdgeVector & getEdges() const
Returns all edges which participate in this node (Edges that start or end at this node)
Definition NBNode.h:280
void markBentPriority(bool isBent)
mark whether a priority road turns at this node
Definition NBNode.h:849
bool typeWasGuessed() const
return whether a priority road turns at this node
Definition NBNode.h:859
const std::string getResponse(int linkIndex) const
get the 'response' string (right-of-way bit set) of the right-of-way logic
Definition NBNode.cpp:1160
void buildCrossingOutlines()
build crossing outlines after walkingareas are finished
Definition NBNode.cpp:3827
const NBConnectionProhibits & getProhibitions()
get prohibitions (BLocked connections)
Definition NBNode.h:724
static bool isLongEnough(NBEdge *out, double minLength)
check if is long enough
Definition NBNode.cpp:1822
NBNode & operator=(const NBNode &s)
invalidated assignment operator
const PositionVector & getShape() const
retrieve the junction shape
Definition NBNode.cpp:2792
void setPriorityJunctionPriorities()
sets the priorites in case of a priority junction
std::vector< WalkingArea > myWalkingAreas
Vector of walking areas.
Definition NBNode.h:959
NBConnectionProhibits myBlockedConnections
The container for connection block dependencies.
Definition NBNode.h:968
void updateSurroundingGeometry()
update geometry of node and surrounding edges
Definition NBNode.cpp:1194
int addedLanesRight(NBEdge *out, int addedLanes) const
check whether this edge has extra lanes on the right side
Definition NBNode.cpp:1768
RoundaboutType getRoundaboutType() const
Returns roundabout type.
Definition NBNode.h:312
FringeType myFringeType
fringe type of this node
Definition NBNode.h:995
void roundGeometry()
ensure consistency between input and output geometries
Definition NBNode.cpp:403
const std::vector< WalkingAreaCustomShape > & getWalkingAreaCustomShapes() const
Definition NBNode.h:770
double getRadius() const
Returns the turning radius of this node.
Definition NBNode.h:292
bool setCrossingTLIndices(const std::string &tlID, int startIndex, bool ignoreCustom=false)
Definition NBNode.cpp:4170
bool checkIsRemovable() const
check if node is removable
Definition NBNode.cpp:2673
bool isRoundabout() const
return whether this node is part of a roundabout
Definition NBNode.cpp:4079
static const int FORWARD
edge directions (for pedestrian related stuff)
Definition NBNode.h:218
bool checkIsRemovableReporting(std::string &reason) const
check if node is removable and return reason if not
Definition NBNode.cpp:2679
void displaceShapeAtWidthChange(const NBEdge *from, const NBEdge::Connection &con, PositionVector &fromShape, PositionVector &toShape) const
displace lane shapes to account for change in lane width at this node
Definition NBNode.cpp:937
bool foes(const NBEdge *const from1, const NBEdge *const to1, const NBEdge *const from2, const NBEdge *const to2) const
Returns the information whether the given flows cross.
Definition NBNode.cpp:2347
const std::vector< WalkingArea > & getWalkingAreas() const
return this junctions pedestrian walking areas
Definition NBNode.h:766
void removeDoubleEdges()
remove duble edges
Definition NBNode.cpp:1965
bool avoidConfict(NBEdge *incoming, NBEdge *currentOutgoing, SVCPermissions svcSpecial, LinkDirection dir, int i)
helper function for recheckSpecialConnections
Definition NBNode.cpp:1687
double buildInnerEdges()
build internal lanes, pedestrian crossings and walking areas
Definition NBNode.cpp:3141
PositionVector myPoly
the (outer) shape of the junction
Definition NBNode.h:974
NBEdge * getConnectionTo(NBNode *n) const
get connection to certain node
Definition NBNode.cpp:2810
bool crossesFringe(const NBEdge *e1, const NBEdge *e2) const
return true if the given sidewalks are separated by a fringe road
Definition NBNode.cpp:3999
void getEdgesThatApproach(NBEdge *currentOutgoing, EdgeVector &approaching)
returns a list of edges which are connected to the given outgoing edge
Definition NBNode.cpp:1839
void setFringeType(FringeType fringeType)
set fringe type
Definition NBNode.h:588
EdgeVector getEdgesSortedByAngleAtNodeCenter() const
returns the list of all edges sorted clockwise by getAngleAtNodeToCenter
Definition NBNode.cpp:4236
EdgeVector edgesBetween(const NBEdge *e1, const NBEdge *e2) const
return all edges that lie clockwise between the given edges
Definition NBNode.cpp:4007
PositionVector computeInternalLaneShape(const NBEdge *fromE, const NBEdge::Connection &con, int numPoints, NBNode *recordError=0, int shapeFlag=0) const
Compute the shape for an internal lane.
Definition NBNode.cpp:844
~NBNode()
Destructor.
Definition NBNode.cpp:355
NBEdge * getPossiblySplittedIncoming(const std::string &edgeid)
get possibly splitted incoming edge
Definition NBNode.cpp:2050
void shiftTLConnectionLaneIndex(NBEdge *edge, int offset, int threshold=-1)
patches loaded signal plans by modifying lane indices above threshold by the given offset
Definition NBNode.cpp:500
bool geometryLike() const
whether this is structurally similar to a geometry node
Definition NBNode.cpp:4033
bool isNearDistrict() const
@chech if node is near district
Definition NBNode.cpp:2821
static const int INDIRECT_LEFT
Definition NBNode.h:230
EdgeVector myIncomingEdges
Vector of incoming edges.
Definition NBNode.h:947
WalkingArea & getWalkingArea(const std::string &id)
return the walkingArea with the given ID
Definition NBNode.cpp:4145
void addTrafficLight(NBTrafficLightDefinition *tlDef)
Adds a traffic light to the list of traffic lights that control this node.
Definition NBNode.cpp:437
static SVCPermissions myPermitUnsignalizedClasses
all rail classes for which operation without rail signals is permitted
Definition NBNode.h:1024
int guessCrossings()
guess pedestrian crossings and return how many were guessed
Definition NBNode.cpp:2844
bool isTLControlled() const
Returns whether this node is controlled by any tls.
Definition NBNode.h:338
bool getKeepClear() const
Returns the keepClear flag.
Definition NBNode.h:297
static const int SCURVE_IGNORE
Definition NBNode.h:229
const std::string getFoes(int linkIndex) const
get the 'foes' string (conflict bit set) of the right-of-way logic
Definition NBNode.cpp:1150
NBEdge * getOppositeIncoming(NBEdge *e) const
returns the opposite incoming edge of certain edge
Definition NBNode.cpp:2015
static PositionVector bezierControlPoints(const PositionVector &begShape, const PositionVector &endShape, bool isTurnaround, double extrapolateBeg, double extrapolateEnd, bool &ok, NBNode *recordError=0, double straightThresh=DEG2RAD(5), int shapeFlag=0)
get bezier control points
Definition NBNode.cpp:626
The base class for traffic light logic definitions.
A container for traffic light definitions and built programs.
A storage for available edgeTypes of edges.
Definition NBTypeCont.h:52
Base class for objects which have an id.
Definition Named.h:53
const std::string & getID() const
Returns the id.
Definition Named.h:73
A storage for options typed value containers)
Definition OptionsCont.h:89
Static storage of an output device and its base (abstract) implementation.
An upper class for objects with additional parameters.
A point in 2D or 3D with translation and scaling methods.
Definition Position.h:37
A list of positions.
static const PositionVector EMPTY
empty Vector
#define UNUSED_PARAMETER(x)
A structure which describes a connection between edges or lanes.
Definition NBEdge.h:201
std::set< const NBEdge *, ComparatorIdLess > edges
Definition NBNode.h:212
A definition of a pedestrian walking area.
Definition NBNode.h:179
int minPrevCrossingEdges
minimum number of edges crossed by incoming crossings
Definition NBNode.h:206
std::vector< std::string > nextSidewalks
the lane-id of the next sidewalk lane or ""
Definition NBNode.h:198
std::vector< std::string > prevSidewalks
the lane-id of the previous sidewalk lane or ""
Definition NBNode.h:200
std::string id
the (edge)-id of this walkingArea
Definition NBNode.h:186
WalkingArea(const std::string &_id, double _width)
constructor
Definition NBNode.h:181
bool hasCustomShape
whether this walkingArea has a custom shape
Definition NBNode.h:202
std::set< const NBEdge *, ComparatorIdLess > refEdges
reference edges that uniquely identify this walkingarea
Definition NBNode.h:208
double width
This lane's width.
Definition NBNode.h:188
std::vector< std::string > nextCrossings
the lane-id of the next crossing(s)
Definition NBNode.h:194
std::vector< std::string > prevCrossings
the lane-id of the previous crossing(s)
Definition NBNode.h:196
PositionVector shape
The polygonal shape.
Definition NBNode.h:192
double length
This lane's width.
Definition NBNode.h:190
int minNextCrossingEdges
minimum number of edges crossed by nextCrossings
Definition NBNode.h:204