70 #ifdef CHECK_MEMORY_LEAKS 72 #endif // CHECK_MEMORY_LEAKS 80 const std::string& streetName,
const std::string& edgeType,
int priority)
81 :
MSEdge(id, numericalID, function, streetName, edgeType, priority),
95 assert(laneNo < (
int)
myLanes->size());
96 return *((*myLanes)[laneNo]);
102 std::vector<GUIGlID> ret;
108 ret.push_back(edge->
getGlID());
119 const MSEdge* edge = i->second;
133 for (std::vector<MSLane*>::const_iterator i =
myLanes->begin(); i !=
myLanes->end(); ++i) {
134 ret.
add((*i)->getShape().getBoxBoundary());
140 const std::vector<MSLane*>& lanes = (*it)->getLanes();
141 for (std::vector<MSLane*>::const_iterator it_lane = lanes.begin(); it_lane != lanes.end(); ++it_lane) {
142 ret.
add((*it_lane)->getShape().front());
146 const std::vector<MSLane*>& lanes = (*it)->getLanes();
147 for (std::vector<MSLane*>::const_iterator it_lane = lanes.begin(); it_lane != lanes.end(); ++it_lane) {
148 ret.
add((*it_lane)->getShape().back());
160 netsWrappers.reserve(size);
161 for (DictType::iterator i =
myDict.begin(); i !=
myDict.end(); ++i) {
163 netsWrappers.push_back(static_cast<GUIEdge*>((*i).second));
181 new FXMenuCommand(ret, (
"pos: " +
toString(pos)).c_str(), 0, 0, 0);
236 for (std::vector<MSLane*>::const_iterator i =
myLanes->begin(); i !=
myLanes->end(); ++i) {
256 if (drawEdgeName || drawInternalEdgeName || drawCwaEdgeName || drawStreetName) {
259 if (lane1 != 0 && lane2 != 0) {
265 if (angle > 90 && angle < 270) {
270 }
else if (drawInternalEdgeName) {
272 }
else if (drawCwaEdgeName) {
275 if (drawStreetName) {
283 for (std::set<MSTransportable*>::const_iterator i =
myPersons.begin(); i !=
myPersons.end(); ++i) {
294 assert(container != 0);
305 if (vehicleControl != 0) {
311 for (std::vector<MSLane*>::const_iterator msl =
myLanes->begin(); msl !=
myLanes->end(); ++msl, ++laneIndex) {
316 segment != 0; segment = segment->getNextSegment()) {
317 const SUMOReal length = segment->getLength();
318 if (laneIndex < segment->numQueues()) {
320 queue = segment->getQueue(laneIndex);
321 const int queueSize = (int)queue.size();
322 SUMOReal vehiclePosition = segmentOffset + length;
325 for (
int i = 0; i < queueSize; ++i) {
328 while (vehiclePosition < segmentOffset) {
332 vehiclePosition += length;
338 vehiclePosition -= vehLength;
341 segmentOffset += length;
355 vehNo += segment->getCarNumber();
363 std::string result =
" ";
364 std::vector<const MEVehicle*> vehs;
366 std::vector<const MEVehicle*> segmentVehs = segment->getVehicles();
367 vehs.insert(vehs.end(), segmentVehs.begin(), segmentVehs.end());
369 for (std::vector<const MEVehicle*>::const_iterator it = vehs.begin(); it != vehs.end(); it++) {
370 result += (*it)->getID() +
" ";
380 flow += (
SUMOReal) segment->getCarNumber() * segment->getMeanSpeed();
382 return 3600 * flow / (*myLanes)[0]->getLength();
390 occ += segment->getBruttoOccupancy();
398 return (*
myLanes)[0]->getSpeedLimit();
419 switch (activeScheme) {
436 switch (activeScheme) {
439 segment != 0; segment = segment->getNextSegment()) {
446 segment != 0; segment = segment->getNextSegment()) {
452 segment != 0; segment = segment->getNextSegment()) {
458 segment != 0; segment = segment->getNextSegment()) {
464 segment != 0; segment = segment->getNextSegment()) {
470 segment != 0; segment = segment->getNextSegment()) {
482 switch (activeScheme) {
508 switch (activeScheme) {
539 const std::vector<MSLane*>& lanes =
getLanes();
540 const bool isClosed = lane->
isClosed();
541 for (std::vector<MSLane*>::const_iterator i = lanes.begin(); i != lanes.end(); ++i) {
554 edges.push_back(
this);
565 const std::vector<MSLane*>& lanes =
getLanes();
566 for (std::vector<MSLane*>::const_iterator i = lanes.begin(); i != lanes.end(); ++i) {
568 for (MSLane::VehCont::const_iterator v = vehicles.begin(); v != vehicles.end(); ++v) {
569 if ((*v)->getLane() == (*i)) {
573 (*i)->releaseVehicles();
void drawName(const Position &pos, const SUMOReal scale, const GUIVisualizationTextSettings &settings, const SUMOReal angle=0) const
draw name of item
SUMOReal getFlow() const
return flow based on meanSpead
std::set< MSTransportable * > myContainers
Containers on the edge.
std::vector< MEVehicle * > Queue
GUIVisualizationTextSettings streetName
Reroutes vehicles passing an edge One rerouter can be active on multiple edges. To reduce drawing loa...
SUMOReal getRelativeOccupancy() const
Returns the relative occupany of the segment (percentage of road used))
static RGBColor fromHSV(SUMOReal h, SUMOReal s, SUMOReal v)
Converts the given hsv-triplet to rgb.
int getCarNumber() const
Returns the total number of cars on the segment.
void buildNameCopyPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds entries which allow to copy the name / typed name into the clipboard.
SUMOReal getRelativeJamThreshold() const
Returns the relative occupany of the segment (percentage of road used)) at which the segment is consi...
void add(const Position &pos)
Adds the given position to this one.
static int dictSize()
Returns the number of edges.
virtual GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
void releaseVehicles()
unlock access to vehicle removal/additions for thread synchronization
SUMOReal length() const
Returns the length.
void closeTraffic(bool rebuildAllowed=true)
close this lane for traffic
RandomDistributor< MSEdge * > edgeProbs
The distributions of new destinations to use.
The vehicle arrived at a junction.
SUMOReal getScaleValue(int activeScheme) const
gets the scaling value according to the current scheme index
bool add(SUMOReal prob, T val, bool checkDuplicates=true)
Adds a value with an assigned probability to the distribution.
void secureVehicles()
lock access to vehicle removal/additions for thread synchronization
std::vector< RGBColor > mySegmentColors
The color of the segments (cached)
Stores the information about how to visualize structures.
SUMOReal minSize
The minimum size to draw this object.
const EdgeBasicFunction myFunction
the purpose of the edge
GUIColorer edgeColorer
The mesoscopic edge colorer.
int getIndex() const
Returns the running index of the segment in the edge (0 is the most upstream).
SUMOReal getMeanSpeed() const
wrapper to satisfy the FunctionBinding signature
Position positionAtOffset(SUMOReal pos, SUMOReal lateralOffset=0) const
Returns the position at the given length.
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
GUIMEVehicleControl * getGUIMEVehicleControl()
Returns the vehicle control.
Boundary getBoundary() const
Returns the street's geometry.
The edge is a macroscopic connector (source/sink)
The class responsible for building and deletion of vehicles (gui-version)
const std::vector< MSLane * > & getLanes() const
Returns this edge's lanes.
static MSNet * getInstance()
Returns the pointer to the unique instance of MSNet (singleton).
bool isSelected(GUIGlObjectType type, GUIGlID id)
Returns the information whether the object with the given type and id is selected.
SUMOReal interpolateLanePosToGeometryPos(SUMOReal lanePos) const
GUIVisualizationTextSettings cwaEdgeName
static void drawText(const std::string &text, const Position &pos, const SUMOReal layer, const SUMOReal size, const RGBColor &col=RGBColor::BLACK, const SUMOReal angle=0)
draw Text with given parameters
const std::string & getID() const
Returns the id.
void buildShowParamsPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the parameter window.
EdgeBasicFunction
Defines possible edge types.
void drawMesoVehicles(const GUIVisualizationSettings &s) const
std::string getVehicleIDs() const
static SUMOReal getTotalLength(bool includeInternal, bool eachLane)
void buildPositionCopyEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to copy the cursor position if geo projection is used, also builds an entry for copying the geo-position.
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
A class that stores a 2D geometrical boundary.
SUMOReal rotationAtOffset(SUMOReal pos) const
Returns the rotation at the given length.
SUMOReal scale
information about a lane's width (temporary, used for a single view)
SUMOReal nearest_offset_to_point2D(const Position &p, bool perpendicular=true) const
return the nearest offest to point 2D
SUMOReal getSpeedLimit() const
Returns the speed limit of the edge The speed limit of the first lane is retured; should probably be...
Representation of a lane in the micro simulation (gui-version)
bool setFunctionalColor(int activeScheme) const
sets the color according to the current scheme index and some edge function
SUMOReal beginEndAngle() const
returns the angle in radians of the line connecting the first and the last position ...
MSLane & getLane(int laneNo)
returns the enumerated lane (!!! why not private with a friend?)
GUIVisualizationTextSettings edgeName
A road/street connecting two junctions (gui-version)
A road/street connecting two junctions.
void setColor(const GUIVisualizationSettings &s) const
sets the color according to the currente settings
void rebuildAllowedLanes()
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
The edge is a district edge.
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
static GUINet * getGUIInstance()
Returns the pointer to the unique instance of GUINet (singleton).
void closeTraffic(const GUILane *lane)
close this edge for traffic
GUIVisualizationTextSettings internalEdgeName
A point in 2D or 3D with translation and scaling methods.
SUMOReal getEventTimeSeconds() const
Like getEventTime but returns seconds (for visualization)
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
SUMOTime begin
The begin time these definitions are valid.
MSEdgeVector mySuccessors
The succeeding edges.
SUMOReal rotationDegreeAtOffset(SUMOReal pos) const
Returns the rotation at the given length.
virtual GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own parameter window.
SUMOReal getRoutingSpeed() const
Returns the averaged speed used by the routing device.
SUMOTime getCurrentTimeStep() const
Returns the current simulation step.
static MSEdge mySpecialDest_keepDestination
special destination values
const PositionVector & getShape() const
bool notifyEnter(SUMOVehicle &veh, MSMoveReminder::Notification reason)
Tries to reroute the vehicle.
const std::vector< MSLane * > * myLanes
Container for the edge's lane; should be sorted: (right-hand-traffic) the more left the lane...
const T getColor(const SUMOReal value) const
EdgeBasicFunction getPurpose() const
Returns the edge type (EdgeBasicFunction)
std::string toString(const T &t, std::streamsize accuracy=OUTPUT_ACCURACY)
void addRerouter()
add a rerouter
std::vector< MSVehicle * > VehCont
Container for vehicles.
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
const std::string & getStreetName() const
Returns the street name of the edge.
static SUMOReal naviDegree(const SUMOReal angle)
void unlock()
release mutex lock
GUIEdge(const std::string &id, int numericalID, const EdgeBasicFunction function, const std::string &streetName, const std::string &edgeType, int priority)
Constructor.
The edge is a pedestrian walking area (a special type of internal edge)
static std::vector< GUIGlID > getIDs(bool includeInternal)
MESegment * getSegmentAtPosition(const Position &pos)
returns the segment closest to the given position
SUMOReal getLength() const
Returns the length of the segment in meters.
Boundary & grow(SUMOReal by)
extends the boundary by the given amount
SUMOTime end
The end time these definitions are valid.
bool setMultiColor(const GUIColorer &c) const
sets multiple colors according to the current scheme index and edge function
const MSVehicleType & getVehicleType() const
Returns the vehicle's type definition.
void add(SUMOReal x, SUMOReal y, SUMOReal z=0)
Makes the boundary include the given coordinate.
A MSVehicle extended by some values for usage within the gui.
MSInsertionControl & getInsertionControl()
Returns the insertion control.
GUIVisualizationSizeSettings containerSize
MFXMutex myLock
The mutex used to avoid concurrent updates of myPersons/ myContainers.
The edge is a normal street.
A mutex encapsulator which locks/unlocks the given mutex on construction/destruction, respectively.
SUMOReal getBruttoOccupancy() const
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
A single mesoscopic segment (cell)
The edge is a pedestrian crossing (a special type of internal edge)
SUMOReal getMeanSpeed() const
get the mean speed
SUMOReal getLength() const
return the length of the edge
std::vector< RerouteInterval > myIntervals
List of rerouting definition intervals.
MESegment * getSegmentForEdge(const MSEdge &e, SUMOReal pos=0)
Get the segment for a given edge at a given position.
std::string myStreetName
the real-world name of this edge (need not be unique)
void drawOnPos(const GUIVisualizationSettings &s, const Position &pos, const SUMOReal angle) const
Draws the object on the specified position with the specified angle.
void mul(SUMOReal val)
Multiplies both positions with the given value.
void buildSelectionPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to (de)select the object.
SUMOReal getColorValue(int activeScheme) const
gets the color value according to the current scheme index
static MELoop * gMesoNet
mesoscopic simulation infrastructure
GUIVisualizationSizeSettings personSize
GUIGlID getGlID() const
Returns the numerical id of the object.
static DictType myDict
Static dictionary to associate string-ids with objects.
Position getPositionInformation() const
Returns the cursor's x/y position within the network.
GUIVisualizationSizeSettings vehicleSize
SUMOReal getExaggeration(const GUIVisualizationSettings &s, SUMOReal factor=20) const
return the drawing size including exaggeration and constantSize values
static void fill(std::vector< GUIEdge *> &netsWrappers)
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
std::vector< MSEdge * > MSEdgeVector
SUMOReal getRelativeSpeed() const
return meanSpead divided by allowedSpeed
The edge is an internal edge.
SUMOReal getAllowedSpeed() const
void mkItem(const char *name, bool dynamic, ValueSource< unsigned > *src)
Adds a row which obtains its value from an unsigned-ValueSource.
MSEdgeVector myPredecessors
The preceeding edges.
GUISelectedStorage gSelected
A global holder of selected objects.
void closeBuilding()
Closes the building of the table.
const MSEdge & getEdge() const
Returns the edge this segment belongs to.
Representation of a lane in the micro simulation.
A window containing a gl-object's parameter.
int getPendingEmits(const MSLane *lane)
return the number of pending emits for the given lane
const Position geometryPositionAtOffset(SUMOReal offset, SUMOReal lateralOffset=0) const
SUMOReal getFlow() const
returns flow based on headway
SUMOReal getLengthWithGap() const
Get vehicle's length including the minimum gap [m].
void buildPopupHeader(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, bool addSeparator=true)
Builds the header.
std::set< MSTransportable * > myPersons
Persons on the edge for drawing and pushbutton.