70 myAllowUndoRedo(allowUndoRedo),
71 myOverwrite(overwrite) {
88 const std::string& laneID,
const double startPos,
const double endPos,
const std::string& name,
89 const std::vector<std::string>& lines,
const int personCapacity,
const double parkingLength,
102 if (lane ==
nullptr) {
113 parkingLength, color, friendlyPosition, parameters);
122 busStop->
incRef(
"buildBusStop");
132 const std::string& laneID,
const double startPos,
const double endPos,
const std::string& name,
133 const std::vector<std::string>& lines,
const int personCapacity,
const double parkingLength,
146 if (lane ==
nullptr) {
157 parkingLength, color, friendlyPosition, parameters);
166 trainStop->
incRef(
"buildTrainStop");
176 const std::string& pos,
const double length,
const bool friendlyPos,
const Parameterised::Map& parameters) {
183 if (busStop ==
nullptr) {
187 bool validPos =
true;
188 double posDouble = 0;
190 if (GNEAttributeCarrier::canParse<double>(pos)) {
191 posDouble = GNEAttributeCarrier::parse<double>(pos);
193 }
else if (pos ==
"random" || pos ==
"doors" || pos ==
"carriage") {
195 }
else if (pos.empty()) {
202 if (lane ==
nullptr) {
204 }
else if (busStop ==
nullptr) {
206 }
else if (!validPos) {
211 return writeError(
TL(
"Could not build access in netedit; busStop parent already owns an access in the edge '") + lane->
getParentEdge()->
getID() +
"'");
213 return writeError(
TLF(
"Could not build access in netedit; The lane '%' doesn't support pedestrians", lane->
getID()));
226 access->
incRef(
"buildAccess");
235 const double startPos,
const double endPos,
const std::string& name,
const std::vector<std::string>& lines,
const int containerCapacity,
248 if (lane ==
nullptr) {
259 color, friendlyPosition, parameters);
268 containerStop->
incRef(
"buildContainerStop");
278 const std::string& laneID,
const double startPos,
const double endPos,
const std::string& name,
const double chargingPower,
279 const double efficiency,
const bool chargeInTransit,
const SUMOTime chargeDelay,
const std::string& chargeType,
292 if (lane ==
nullptr) {
303 chargeDelay, chargeType, waitingTime, friendlyPosition, parameters);
312 chargingStation->
incRef(
"buildChargingStation");
322 const double startPos,
const double endPos,
const std::string& departPos,
const std::string& name,
323 const std::vector<std::string>& badges,
const bool friendlyPosition,
const int roadSideCapacity,
const bool onRoad,
324 const double width,
const double length,
const double angle,
const bool lefthand,
const Parameterised::Map& parameters) {
336 const double departPosDouble = GNEAttributeCarrier::canParse<double>(departPos) ? GNEAttributeCarrier::parse<double>(departPos) : 0;
338 if (lane ==
nullptr) {
349 return writeError(
TLF(
"Could not build parking area with ID '%' in netedit; Invalid departPos over lane.",
id));
353 name, badges, friendlyPosition, roadSideCapacity, onRoad,
363 parkingArea->
incRef(
"buildParkingArea");
373 const std::string& name,
const std::string& width,
const std::string& length,
const std::string& angle,
const double slope,
376 if (!width.empty() && !GNEAttributeCarrier::canParse<double>(width)) {
377 return writeError(
TL(
"Could not build parking space in netedit; attribute width cannot be parse to float."));
378 }
else if (!length.empty() && !GNEAttributeCarrier::canParse<double>(length)) {
379 return writeError(
TL(
"Could not build parking space in netedit; attribute length cannot be parse to float."));
380 }
else if (!angle.empty() && !GNEAttributeCarrier::canParse<double>(angle)) {
381 return writeError(
TL(
"Could not build parking space in netedit; attribute angle cannot be parse to float."));
388 const double widthDouble = width.empty() ? 0 : GNEAttributeCarrier::parse<double>(width);
389 const double lengthDouble = length.empty() ? 0 : GNEAttributeCarrier::parse<double>(length);
391 if (parkingArea ==
nullptr) {
399 GNEAdditional* parkingSpace =
new GNEParkingSpace(
myNet, parkingArea,
Position(x, y, z), width, length, angle, slope, name, parameters);
408 parkingSpace->
incRef(
"buildParkingSpace");
420 const double position,
const SUMOTime period,
const std::string& file,
const std::vector<std::string>& vehicleTypes,
421 const std::vector<std::string>& nextEdges,
const std::string& detectPersons,
const std::string& name,
434 if (lane ==
nullptr) {
447 nextEdges, detectPersons, name, friendlyPos, parameters);
456 detectorE1->
incRef(
"buildDetectorE1");
466 const double pos,
const double length,
const SUMOTime period,
const std::string& trafficLight,
const std::string& filename,
467 const std::vector<std::string>& vehicleTypes,
const std::vector<std::string>& nextEdges,
const std::string& detectPersons,
468 const std::string& name,
const SUMOTime timeThreshold,
const double speedThreshold,
const double jamThreshold,
481 if (lane ==
nullptr) {
494 return writeError(
TLF(
"Could not build lane area detector with ID '%' in netedit; invalid traffic light ID.",
id));
508 vehicleTypes, nextEdges, detectPersons, name, timeThreshold,
509 speedThreshold, jamThreshold, friendlyPosCheck, show, parameters);
518 detectorE2->
incRef(
"buildDetectorE2");
529 const double pos,
const double endPos,
const SUMOTime period,
const std::string& trafficLight,
const std::string& filename,
530 const std::vector<std::string>& vehicleTypes,
const std::vector<std::string>& nextEdges,
const std::string& detectPersons,
531 const std::string& name,
const SUMOTime timeThreshold,
const double speedThreshold,
const double jamThreshold,
549 return writeError(
TLF(
"Could not build lane area detector with ID '%' in netedit; Lanes aren't consecutives.",
id));
551 pos, lanes.front()->getParentEdge()->getNBEdge()->getFinalLength(),
552 endPos, lanes.back()->getParentEdge()->getNBEdge()->getFinalLength(), friendlyPos)) {
558 return writeError(
TLF(
"Could not build lane area detector with ID '%' in netedit; invalid traffic light ID.",
id));
572 vehicleTypes, nextEdges, detectPersons, name, timeThreshold,
573 speedThreshold, jamThreshold, friendlyPos, show, parameters);
581 for (
const auto& lane : lanes) {
582 lane->addChildElement(detectorE2);
584 detectorE2->
incRef(
"buildDetectorE2Multilane");
595 const std::string& filename,
const std::vector<std::string>& vehicleTypes,
const std::vector<std::string>& nextEdges,
596 const std::string& detectPersons,
const std::string& name,
const SUMOTime timeThreshold,
const double speedThreshold,
597 const bool openEntry,
const bool expectedArrival,
const Parameterised::Map& parameters) {
618 name, timeThreshold, speedThreshold, openEntry, expectedArrival, parameters);
626 E3->incRef(
"buildDetectorE3");
641 if (lane ==
nullptr) {
643 }
else if (
E3 ==
nullptr) {
660 E3->addChildElement(entry);
661 entry->
incRef(
"buildDetectorEntry");
676 if (lane ==
nullptr) {
678 }
else if (
E3 ==
nullptr) {
695 E3->addChildElement(exit);
696 exit->
incRef(
"buildDetectorExit");
705 const std::string& filename,
const std::vector<std::string>& vehicleTypes,
const std::vector<std::string>& nextEdges,
706 const std::string& detectPersons,
const std::string& name,
const bool friendlyPos,
const Parameterised::Map& parameters) {
718 if (lane ==
nullptr) {
727 detectPersons, name, friendlyPos, parameters);
736 detectorE1Instant->
incRef(
"buildDetectorE1Instant");
746 const std::string& name,
const std::string& outfile,
const SUMOTime period,
const std::string& routeprobeID,
const double jamThreshold,
const std::vector<std::string>& vTypes,
757 }
else if ((routeprobeID.size() > 0) && (routeProbe ==
nullptr)) {
759 }
else if (lane ==
nullptr) {
774 new GNECalibrator(
id,
myNet, lane, pos, period, name, outfile, jamThreshold, vTypes, parameters) :
775 new GNECalibrator(
id,
myNet, lane, pos, period, name, outfile, routeProbe, jamThreshold, vTypes, parameters);
791 calibrator->
incRef(
"buildCalibrator");
801 const std::string& name,
const std::string& outfile,
const SUMOTime period,
const std::string& routeprobeID,
const double jamThreshold,
const std::vector<std::string>& vTypes,
812 }
else if ((routeprobeID.size() > 0) && (routeProbe ==
nullptr)) {
814 }
else if (edge ==
nullptr) {
828 new GNECalibrator(
id,
myNet, edge, pos, period, name, outfile, jamThreshold, vTypes, parameters) :
829 new GNECalibrator(
id,
myNet, edge, pos, period, name, outfile, routeProbe, jamThreshold, vTypes, parameters);
845 calibrator->
incRef(
"buildCalibrator");
862 if (vType ==
nullptr) {
864 }
else if (route ==
nullptr) {
866 }
else if (calibrator ==
nullptr) {
880 flow->
incRef(
"buildCalibratorFlow");
889 const std::vector<std::string>& edgeIDs,
const double prob,
const std::string& name,
890 const bool off,
const bool optional,
const SUMOTime timeThreshold,
915 if (edges.size() > 0) {
916 PositionVector laneShape = edges.front()->getLanes().front()->getLaneShape();
922 rerouter =
new GNERerouter(
id,
myNet,
Position(0, 0), name, prob, off, optional, timeThreshold, vTypes, parameters);
925 rerouter =
new GNERerouter(
id,
myNet, pos, name, prob, off, optional, timeThreshold, vTypes, parameters);
928 std::vector<GNEAdditional*> rerouterSymbols;
929 for (
const auto& edge : edges) {
937 for (
const auto& rerouterSymbol : rerouterSymbols) {
943 rerouter->
incRef(
"buildRerouter");
945 for (
const auto& rerouterSymbol : rerouterSymbols) {
949 for (
int i = 0; i < (int)edges.size(); i++) {
950 edges.at(i)->addChildElement(rerouterSymbols.at(i));
964 if (rerouter ==
nullptr) {
970 }
else if (end < begin) {
971 return writeError(
TLF(
"Could not build interval with ID '%' in netedit; begin is greater than end.", rerouter->
getID()));
984 rerouterInterval->
incRef(
"buildRerouterInterval");
1001 if (lane ==
nullptr) {
1003 }
else if (rerouterInterval ==
nullptr) {
1015 closingLaneReroute->
incRef(
"buildClosingLaneReroute");
1029 if (edge ==
nullptr) {
1031 }
else if (rerouterInterval ==
nullptr) {
1043 closingLaneReroute->
incRef(
"buildClosingLaneReroute");
1056 if (edge ==
nullptr) {
1058 }
else if (rerouterInterval ==
nullptr) {
1070 destProbReroute->
incRef(
"builDestProbReroute");
1084 if (parkingArea ==
nullptr) {
1086 }
else if (rerouterInterval ==
nullptr) {
1098 parkingAreaReroute->
incRef(
"builParkingAreaReroute");
1112 if (route ==
nullptr) {
1114 }
else if (rerouterInterval ==
nullptr) {
1126 routeProbReroute->
incRef(
"buildRouteProbReroute");
1135 const std::string& name,
const std::string& file,
const SUMOTime begin,
const std::vector<std::string>& vTypes,
1148 if (edge ==
nullptr) {
1171 routeProbe->
incRef(
"buildRouteProbe");
1181 const std::vector<std::string>& laneIDs,
const std::string& name,
const std::vector<std::string>& vTypes,
const Parameterised::Map& parameters) {
1193 if (lanes.empty()) {
1203 std::vector<GNEAdditional*> VSSSymbols;
1204 for (
const auto& lane : lanes) {
1211 for (
const auto& VSSSymbol : VSSSymbols) {
1217 variableSpeedSign->
incRef(
"buildVariableSpeedSign");
1219 for (
const auto& VSSSymbol : VSSSymbols) {
1223 for (
int i = 0; i < (int)lanes.size(); i++) {
1224 lanes.at(i)->addChildElement(VSSSymbols.at(i));
1239 if (VSS ==
nullptr) {
1253 variableSpeedSignStep->
incRef(
"buildVariableSpeedSignStep");
1274 if (edge ==
nullptr) {
1280 }
else if (endTime < beginTime) {
1281 return writeError(
TLF(
"Could not build Vaporizer with ID '%' in netedit; begin is greater than end.", edge->
getID()));
1297 vaporizer->
incRef(
"buildVaporizer");
1307 const Position& center,
const bool fill,
const RGBColor& color,
const std::vector<std::string>& edgeIDs,
1311 if (edges.size() != edgeIDs.size()) {
1316 if (TAZShape.size() == 0) {
1319 for (
const auto& edge : edges) {
1320 TAZBoundary.
add(edge->getCenteringBoundary());
1327 if (sourceSinkEdge) {
1333 TAZShape = TAZBoundary.
getShape(
true);
1340 }
else if (TAZShape.size() == 0) {
1341 return writeError(
TLF(
"Could not build TAZ with ID '%' in netedit; Invalid Shape.",
id));
1355 for (
const auto& edge : edges) {
1366 TAZ->incRef(
"buildTAZ");
1367 for (
const auto& edge : edges) {
1370 TAZSource->
incRef(
"buildTAZ");
1371 TAZ->addChildElement(TAZSource);
1374 TAZSink->
incRef(
"buildTAZ");
1375 TAZ->addChildElement(TAZSink);
1381 TAZ->updateGeometry();
1397 if (
TAZ ==
nullptr) {
1399 }
else if (edge ==
nullptr) {
1405 TAZSink = TAZElement;
1409 if (TAZSink ==
nullptr) {
1419 TAZ->addChildElement(TAZSink);
1420 TAZSink->
incRef(
"buildTAZSource");
1428 TAZSource = TAZElement;
1432 if (TAZSource ==
nullptr) {
1442 TAZ->addChildElement(TAZSource);
1443 TAZSource->
incRef(
"buildTAZSource");
1467 if (
TAZ ==
nullptr) {
1469 }
else if (edge ==
nullptr) {
1477 TAZSource = TAZElement;
1481 if (TAZSource ==
nullptr) {
1491 TAZ->addChildElement(TAZSource);
1492 TAZSource->
incRef(
"buildTAZSink");
1499 TAZSink = TAZElement;
1503 if (TAZSink ==
nullptr) {
1513 TAZ->addChildElement(TAZSink);
1514 TAZSink->
incRef(
"buildTAZSink");
1533 const double voltage,
const double currentLimit,
const Parameterised::Map& parameters) {
1555 tractionSubstation->
incRef(
"buildTractionSubstation");
1564 const std::vector<std::string>& laneIDs,
const double startPos,
const double endPos,
const bool friendlyPos,
1565 const std::vector<std::string>& forbiddenInnerLanes,
const Parameterised::Map& parameters) {
1579 if (lanes.empty()) {
1584 return writeError(
TLF(
"Could not build overhead wire with ID '%' in netedit; Lanes aren't consecutives.",
id));
1586 startPos, lanes.front()->getParentEdge()->getNBEdge()->getFinalLength(),
1587 endPos, lanes.back()->getParentEdge()->getNBEdge()->getFinalLength(), friendlyPos)) {
1589 }
else if (tractionSubstation ==
nullptr) {
1601 for (
const auto& lane : lanes) {
1602 lane->addChildElement(overheadWire);
1604 overheadWire->
incRef(
"buildOverheadWire");
1615 const std::string& ,
const std::string& ,
const std::string& ,
1624 const RGBColor& color,
double layer,
double angle,
const std::string& imgFile,
bool relativePath,
const PositionVector& shape,
bool geo,
bool fill,
1627 if (type ==
"jupedsim.walkable_area") {
1629 }
else if (type ==
"jupedsim.obstacle") {
1641 GNEPoly* poly =
new GNEPoly(
myNet,
id, type, shape, geo, fill, lineWidth, color, layer, angle, imgFile, relativePath, name, parameters);
1650 poly->
incRef(
"addPolygon");
1659 const RGBColor& color,
const double x,
const double y,
const std::string& icon,
double layer,
double angle,
1660 const std::string& imgFile,
bool relativePath,
double width,
double height,
const std::string& name,
1677 GNEPOI*
POI =
new GNEPOI(
myNet,
id, type, color, x, y,
false, icon, layer, angle, imgFile, relativePath, width, height, name, parameters);
1686 POI->incRef(
"addPOI");
1695 const RGBColor& color,
const std::string& laneID,
double posOverLane,
const bool friendlyPos,
double posLat,
1696 const std::string& icon,
double layer,
double angle,
const std::string& imgFile,
bool relativePath,
double width,
1715 if (lane ==
nullptr) {
1721 GNEAdditional* POILane =
new GNEPOI(
myNet,
id, type, color, lane, posOverLane, friendlyPos, posLat, icon, layer,
1722 angle, imgFile, relativePath, width, height, name, parameters);
1732 POILane->
incRef(
"buildPOILane");
1742 const RGBColor& color,
const double lon,
const double lat,
const std::string& icon,
double layer,
1743 double angle,
const std::string& imgFile,
bool relativePath,
double width,
double height,
1755 return writeError(
TLF(
"Could not build POI with ID '%' in netedit",
id) + std::string(
"; ") +
TL(
"Network requires a geo projection."));
1762 GNEPOI*
POIGEO =
new GNEPOI(
myNet,
id, type, color, lon, lat,
true, icon, layer, angle, imgFile, relativePath, width, height, name, parameters);
1771 POIGEO->incRef(
"buildPOIGeo");
1799 walkableArea->
incRef(
"addWalkableArea");
1827 obstacle->
incRef(
"addObstacle");
1838 for (
const auto& lane : edge->
getLanes()) {
1851 std::vector<std::pair<SUMOTime, SUMOTime>> sortedIntervals;
1854 if (!rerouterChild->getTagProperty().isSymbol()) {
1862 sortedIntervals.push_back(std::make_pair(newBegin, newEnd));
1864 std::sort(sortedIntervals.begin(), sortedIntervals.end());
1866 for (
int i = 0; i < (int)sortedIntervals.size() - 1; i++) {
1867 if (sortedIntervals.at(i).second > sortedIntervals.at(i + 1).first) {
1885 if ((pos < 0) || (pos > laneLength)) {
1889 if ((pos + length) > laneLength) {
1908 if (pos >= laneLength) {
1909 pos = (laneLength - POSITION_EPS);
1912 if ((length < 0) || ((pos + length) > laneLength)) {
1913 length = POSITION_EPS;
1920 if (friendlyPos ==
true) {
1928 if ((pos < 0) || (pos > laneLength)) {
1932 if ((pos + length) > laneLength) {
1958 if ((to - from) < POSITION_EPS) {
1961 if ((from < 0) || (from > laneLength)) {
1964 if ((to < 0) || (to > laneLength)) {
1985 }
else if (from > laneLength) {
1994 }
else if (to > laneLength) {
1998 if ((to - from) < POSITION_EPS) {
1999 if (to >= POSITION_EPS) {
2000 from = to - POSITION_EPS;
2060std::vector<GNEEdge*>
2062 std::vector<GNEEdge*> edges;
2063 for (
const auto& edgeID : edgeIDs) {
2066 if (edge ==
nullptr) {
2071 edges.push_back(edge);
2078std::vector<GNELane*>
2080 std::vector<GNELane*> lanes;
2081 for (
const auto& laneID : laneIDs) {
2084 if (lane ==
nullptr) {
2089 lanes.push_back(lane);
2098 for (
const auto& tagChecked : tags) {
2121 myAllowUndoRedo(false),
2122 myOverwrite(false) {
2140 centerAfterCreation(false) {
long long int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
const std::string DEFAULT_VTYPE_ID
SumoXMLTag
Numbers representing SUMO-XML - element names.
@ SUMO_TAG_TRACTION_SUBSTATION
A traction substation.
@ SUMO_TAG_INTERVAL
an aggreagated-output interval
@ SUMO_TAG_CLOSING_REROUTE
reroute of type closing
@ SUMO_TAG_REROUTER
A rerouter.
@ GNE_TAG_MULTI_LANE_AREA_DETECTOR
an e2 detector over multiple lanes (placed here due create Additional Frame)
@ SUMO_TAG_ROUTEPROBE
a routeprobe detector
@ SUMO_TAG_TAZ
a traffic assignment zone
@ SUMO_TAG_CHARGING_STATION
A Charging Station.
@ SUMO_TAG_VTYPE
description of a vehicle/person/container type
@ SUMO_TAG_ACCESS
An access point for a train stop.
@ SUMO_TAG_CONTAINER_STOP
A container stop.
@ SUMO_TAG_PARKING_AREA_REROUTE
entry for an alternative parking zone
@ SUMO_TAG_TAZSINK
a sink within a district (connection road)
@ SUMO_TAG_BUS_STOP
A bus stop.
@ SUMO_TAG_POI
begin/end of the description of a Point of interest
@ SUMO_TAG_STEP
trigger: a step description
@ GNE_TAG_POIGEO
Point of interest over view with GEO attributes.
@ SUMO_TAG_FLOW
a flow definition using from and to edges or a route
@ SUMO_TAG_PARKING_AREA
A parking area.
@ SUMO_TAG_ROUTE_PROB_REROUTE
probability of route of a reroute
@ GNE_TAG_CALIBRATOR_LANE
A calibrator placed over lane.
@ SUMO_TAG_DET_ENTRY
an e3 entry point
@ SUMO_TAG_PARKING_SPACE
A parking space for a single vehicle within a parking area.
@ SUMO_TAG_ROUTE
begin/end of the description of a route
@ SUMO_TAG_POLY
begin/end of the description of a polygon
@ SUMO_TAG_OVERHEAD_WIRE_SECTION
An overhead wire section.
@ SUMO_TAG_SINK
Sink(s) specification.
@ SUMO_TAG_TRAIN_STOP
A train stop (alias for bus stop)
@ SUMO_TAG_SOURCE
a source
@ SUMO_TAG_LANE
begin/end of the description of a single lane
@ SUMO_TAG_INSTANT_INDUCTION_LOOP
An instantenous induction loop.
@ SUMO_TAG_DEST_PROB_REROUTE
probability of destination of a reroute
@ GNE_TAG_POILANE
Point of interest over Lane.
@ GNE_TAG_JPS_OBSTACLE
polygon used for draw juPedSim obstacles
@ SUMO_TAG_DET_EXIT
an e3 exit point
@ SUMO_TAG_VAPORIZER
vaporizer of vehicles
@ SUMO_TAG_LANE_AREA_DETECTOR
alternative tag for e2 detector
@ SUMO_TAG_TAZSOURCE
a source within a district (connection road)
@ SUMO_TAG_CLOSING_LANE_REROUTE
lane of a reroute of type closing
@ SUMO_TAG_INDUCTION_LOOP
alternative tag for e1 detector
@ GNE_TAG_JPS_WALKABLEAREA
polygon used for draw juPedSim walkable areas
@ SUMO_TAG_CALIBRATOR
A calibrator placed over edge.
@ SUMO_TAG_ENTRY_EXIT_DETECTOR
alternative tag for e3 detector
@ SUMO_TAG_VSS
A variable speed sign.
@ SUMO_TAG_EDGE
begin/end of the description of an edge
@ GNE_ATTR_CENTER_AFTER_CREATION
flag to center camera after element creation
@ SUMO_ATTR_JAM_DIST_THRESHOLD
@ SUMO_ATTR_PARKING_LENGTH
@ SUMO_ATTR_VOLTAGE
voltage of the traction substation [V]
@ GNE_ATTR_SELECTED
element is selected
@ SUMO_ATTR_BEGIN
weights: time range begin
@ SUMO_ATTR_HALTING_TIME_THRESHOLD
@ SUMO_ATTR_CONTAINER_CAPACITY
@ SUMO_ATTR_HALTING_SPEED_THRESHOLD
@ SUMO_ATTR_END
weights: time range end
@ SUMO_ATTR_ROADSIDE_CAPACITY
@ SUMO_ATTR_CURRENTLIMIT
current limit of the traction substation [A]
@ SUMO_ATTR_CHARGINGPOWER
@ SUMO_ATTR_PERSON_CAPACITY
@ SUMO_ATTR_CHARGEDELAY
Delay in the charge of charging stations (different of waiting time)
@ SUMO_ATTR_TIME
trigger: the time of the step
const double INVALID_DOUBLE
invalid double
const double SUMO_const_laneWidth
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
A class that stores a 2D geometrical boundary.
void add(double x, double y, double z=0)
Makes the boundary include the given coordinate.
PositionVector getShape(const bool closeShape) const
get position vector (shape) based on this boundary
bool writeError(const std::string &error)
write error and enable error creating element
bool checkValidDetectorID(const SumoXMLTag tag, const std::string &value)
check if the given detector ID is valid
bool writeErrorInvalidParent(const SumoXMLTag tag, const std::string &id, const SumoXMLTag parentTag, const std::string &parentID)
write error "invalid parent element" giving ids of current and parent element
bool checkListOfVehicleTypes(const SumoXMLTag tag, const std::string &id, const std::vector< std::string > &vTypeIDs)
check list of IDs
bool writeErrorDuplicated(const SumoXMLTag tag, const std::string &id, const SumoXMLTag checkedTag)
write error "duplicated additional"
bool checkValidAdditionalID(const SumoXMLTag tag, const std::string &value)
check if the given additional ID is valid
bool checkFileName(const SumoXMLTag tag, const std::string &id, const SumoXMLAttr attribute, const std::string &value)
check if the given filename is valid
bool writeErrorInvalidPosition(const SumoXMLTag tag, const std::string &id)
write error "invalid position"
bool checkNegative(const SumoXMLTag tag, const std::string &id, const SumoXMLAttr attribute, const int value, const bool canBeZero)
check if the given int value is NOT negative
SUMOTime getTimeAttribute(const SumoXMLAttr attr) const
get time attribute
bool hasStringAttribute(const SumoXMLAttr attr) const
has function
SumoBaseObject * getParentSumoBaseObject() const
get pointer to mySumoBaseObjectParent SumoBaseObject (if is null, then is the root)
bool hasTimeAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given time attribute
SumoXMLTag getTag() const
get XML myTag
const std::string & getStringAttribute(const SumoXMLAttr attr) const
get string attribute
const std::vector< SumoBaseObject * > & getSumoBaseObjectChildren() const
get SumoBaseObject children
bool buildJpsWalkableArea(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const PositionVector &shape, bool geo, const std::string &name, const Parameterised::Map ¶meters)
Builds a JuPedSim walkable area using the given values.
bool buildLaneCalibrator(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &laneID, const double pos, const std::string &name, const std::string &outfile, const SUMOTime period, const std::string &routeprobe, const double jamThreshold, const std::vector< std::string > &vTypes, const Parameterised::Map ¶meters)
builds a microscopic calibrator over a lane
bool buildClosingReroute(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &closedEdgeID, SVCPermissions permissions)
builds a closing edge reroute
~GNEAdditionalHandler()
Destructor.
bool buildTrainStop(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &laneID, const double startPos, const double endPos, const std::string &name, const std::vector< std::string > &lines, const int personCapacity, const double parkingLength, const RGBColor &color, const bool friendlyPosition, const Parameterised::Map ¶meters)
Builds a train stop.
GNEAdditional * getRerouterIntervalParent(const CommonXMLStructure::SumoBaseObject *sumoBaseObject) const
get rerouter interval parent
std::vector< GNELane * > parseLanes(const SumoXMLTag tag, const std::string &id, const std::vector< std::string > &laneIDs)
parse lanes
static void fixLaneDoublePosition(double &from, double &to, const double laneLengt)
fix the given positions over lane
bool checkDuplicatedAdditional(const SumoXMLTag tag, const std::vector< SumoXMLTag > tags, const std::string &id)
check if given ID correspond to a duplicated additional
static bool checkFriendlyPosSmallLanes(double pos, const double length, const double laneLength, const bool friendlyPos)
check if enable friendly pos in small lanes
static bool accessCanBeCreated(GNEAdditional *busStopParent, GNEEdge *edge)
check if a GNEAccess can be created in a certain Edge
bool buildTAZSource(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &edgeID, const double departWeight)
Builds a TAZSource (Traffic Assignment Zone)
bool buildPolygon(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &type, const RGBColor &color, const double layer, const double angle, const std::string &imgFile, const bool relativePath, const PositionVector &shape, const bool geo, const bool fill, const double lineWidth, const std::string &name, const Parameterised::Map ¶meters)
Builds a polygon using the given values.
bool buildPOILane(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &type, const RGBColor &color, const std::string &laneID, const double posOverLane, const bool friendlyPos, const double posLat, const std::string &icon, const double layer, const double angle, const std::string &imgFile, const bool relativePath, const double width, const double height, const std::string &name, const Parameterised::Map ¶meters)
Builds a POI over lane using the given values.
bool buildOverheadWireClamp(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &overheadWireIDStartClamp, const std::string &laneIDStartClamp, const std::string &overheadWireIDEndClamp, const std::string &laneIDEndClamp, const Parameterised::Map ¶meters)
build overhead wire clamp
bool buildOverheadWire(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &substationId, const std::vector< std::string > &laneIDs, const double startPos, const double endPos, const bool friendlyPos, const std::vector< std::string > &forbiddenInnerLanes, const Parameterised::Map ¶meters)
build overhead wire
GNEAdditional * getAdditionalParent(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, SumoXMLTag tag) const
get additional parent
bool buildMultiLaneDetectorE2(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::vector< std::string > &laneIDs, const double pos, const double endPos, const SUMOTime period, const std::string &trafficLight, const std::string &filename, const std::vector< std::string > &vehicleTypes, const std::vector< std::string > &nextEdges, const std::string &detectPersons, const std::string &name, const SUMOTime timeThreshold, const double speedThreshold, const double jamThreshold, const bool friendlyPos, const bool show, const Parameterised::Map ¶meters)
Builds a multi-lane Area Detector (E2)
bool buildE1Detector(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &laneID, const double position, const SUMOTime period, const std::string &file, const std::vector< std::string > &vehicleTypes, const std::vector< std::string > &nextEdges, const std::string &detectPersons, const std::string &name, const bool friendlyPos, const Parameterised::Map ¶meters)
Builds a induction loop detector (E1)
bool buildAccess(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &laneID, const std::string &pos, const double length, const bool friendlyPos, const Parameterised::Map ¶meters)
Builds an Access.
bool buildDetectorEntry(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &laneID, const double pos, const bool friendlyPos, const Parameterised::Map ¶meters)
Builds a entry detector (E3)
bool buildEdgeCalibrator(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &edgeID, const double pos, const std::string &name, const std::string &outfile, const SUMOTime period, const std::string &routeprobe, const double jamThreshold, const std::vector< std::string > &vTypes, const Parameterised::Map ¶meters)
builds a microscopic calibrator over an edge
bool buildRerouter(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const Position &pos, const std::vector< std::string > &edgeIDs, const double prob, const std::string &name, const bool off, const bool optional, const SUMOTime timeThreshold, const std::vector< std::string > &vTypes, const Parameterised::Map ¶meters)
builds a rerouter
bool buildDestProbReroute(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &newEdgeDestinationID, const double probability)
builds a dest prob reroute
bool buildClosingLaneReroute(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &closedLane, SVCPermissions permissions)
builds a closing lane reroute
bool buildCalibratorFlow(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const SUMOVehicleParameter &vehicleParameter)
builds a calibrator flow
bool buildVariableSpeedSign(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const Position &pos, const std::vector< std::string > &laneIDs, const std::string &name, const std::vector< std::string > &vTypes, const Parameterised::Map ¶meters)
Builds a VariableSpeedSign (lane speed additional)
bool buildVariableSpeedSignStep(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const SUMOTime time, const std::string &speed)
Builds a VariableSpeedSign Step.
bool buildParkingAreaReroute(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &newParkignAreaID, const double probability, const bool visible)
builds a parking area reroute
static void fixMultiLanePosition(double fromPos, const double fromLaneLength, double toPos, const double tolaneLength)
fix the given positions over two lanes
bool buildDetectorExit(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &laneID, const double pos, const bool friendlyPos, const Parameterised::Map ¶meters)
Builds a exit detector (E3)
bool buildParkingSpace(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const double x, const double y, const double z, const std::string &name, const std::string &width, const std::string &length, const std::string &angle, const double slope, const Parameterised::Map ¶meters)
Builds a Parking Space.
const bool myAllowUndoRedo
allow undo/redo
static bool checkLaneDoublePosition(double from, const double to, const double laneLength, const bool friendlyPos)
check if the given positions over a lane is valid
std::vector< GNEEdge * > parseEdges(const SumoXMLTag tag, const std::string &id, const std::vector< std::string > &edgeIDs)
parse edges
bool postParserTasks()
run post parser tasks
bool buildTractionSubstation(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const Position &pos, const double voltage, const double currentLimit, const Parameterised::Map ¶meters)
build traction substation
static bool checkLanePosition(double pos, const double length, const double laneLength, const bool friendlyPos)
check if the given position over a lane is valid
bool buildRerouterInterval(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const SUMOTime begin, const SUMOTime end)
builds a rerouter interval
bool buildDetectorE1Instant(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &laneID, const double pos, const std::string &filename, const std::vector< std::string > &vehicleTypes, const std::vector< std::string > &nextEdges, const std::string &detectPersons, const std::string &name, const bool friendlyPos, const Parameterised::Map ¶meters)
Builds a Instant Induction Loop Detector (E1Instant)
bool buildTAZSink(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &edgeID, const double arrivalWeight)
Builds a TAZSink (Traffic Assignment Zone)
GNEAdditionalHandler()
invalidate default constructo
bool buildContainerStop(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &laneID, const double startPos, const double endPos, const std::string &name, const std::vector< std::string > &lines, const int containerCapacity, const double parkingLength, const RGBColor &color, const bool friendlyPosition, const Parameterised::Map ¶meters)
Builds a container stop.
bool buildPOI(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &type, const RGBColor &color, const double x, const double y, const std::string &icon, const double layer, const double angle, const std::string &imgFile, bool relativePath, const double width, const double height, const std::string &name, const Parameterised::Map ¶meters)
Builds a POI using the given values.
bool buildSingleLaneDetectorE2(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &laneID, const double pos, const double length, const SUMOTime period, const std::string &trafficLight, const std::string &filename, const std::vector< std::string > &vehicleTypes, const std::vector< std::string > &nextEdges, const std::string &detectPersons, const std::string &name, const SUMOTime timeThreshold, const double speedThreshold, const double jamThreshold, const bool friendlyPos, const bool show, const Parameterised::Map ¶meters)
Builds a single-lane Area Detector (E2)
static bool checkOverlappingRerouterIntervals(GNEAdditional *rerouter, const SUMOTime newBegin, const SUMOTime newEnd)
check if an overlapping is produced in rerouter if a interval with certain begin and end is inserted
static void fixLanePosition(double &pos, double &length, const double laneLength)
fix given position over lane
GNENet * myNet
pointer to GNENet
bool buildChargingStation(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &laneID, const double startPos, const double endPos, const std::string &name, const double chargingPower, const double efficiency, const bool chargeInTransit, const SUMOTime chargeDelay, const std::string &chargeType, const SUMOTime waitingTime, const bool friendlyPosition, const std::string &parkingAreaID, const Parameterised::Map ¶meters)
Builds a charging Station.
bool buildJpsObstacle(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const PositionVector &shape, bool geo, const std::string &name, const Parameterised::Map ¶meters)
Builds a JuPedSim obstacle using the given values.
bool buildParkingArea(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &laneID, const double startPos, const double endPos, const std::string &departPos, const std::string &name, const std::vector< std::string > &badges, const bool friendlyPosition, const int roadSideCapacity, const bool onRoad, const double width, const double length, const double angle, const bool lefthand, const Parameterised::Map ¶meters)
Builds a Parking Area.
bool buildTAZ(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const PositionVector &shape, const Position ¢er, const bool fill, const RGBColor &color, const std::vector< std::string > &edgeIDs, const std::string &name, const Parameterised::Map ¶meters)
Builds a TAZ (Traffic Assignment Zone)
bool buildBusStop(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &laneID, const double startPos, const double endPos, const std::string &name, const std::vector< std::string > &lines, const int personCapacity, const double parkingLength, const RGBColor &color, const bool friendlyPosition, const Parameterised::Map ¶meters)
Builds a bus stop.
bool buildVaporizer(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &edgeID, const SUMOTime from, const SUMOTime endTime, const std::string &name, const Parameterised::Map ¶meters)
Builds a vaporizer (lane speed additional)
bool buildRouteProbe(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &edgeID, const SUMOTime period, const std::string &name, const std::string &file, const SUMOTime begin, const std::vector< std::string > &vTypes, const Parameterised::Map ¶meters)
builds a Route probe
bool buildPOIGeo(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::string &type, const RGBColor &color, const double lon, const double lat, const std::string &icon, const double layer, const double angle, const std::string &imgFile, bool relativePath, const double width, const double height, const std::string &name, const Parameterised::Map ¶meters)
Builds a POI in GEO coordinaten using the given values.
bool buildDetectorE3(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const Position &pos, const SUMOTime period, const std::string &filename, const std::vector< std::string > &vehicleTypes, const std::vector< std::string > &nextEdges, const std::string &detectPersons, const std::string &name, const SUMOTime timeThreshold, const double speedThreshold, const bool openEntry, const bool expectedArrival, const Parameterised::Map ¶meters)
Builds a multi entry exit detector (E3)
bool buildRouteProbReroute(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &newRouteID, const double probability)
builds a route prob reroute
const bool myOverwrite
check if overwrite
static bool checkMultiLanePosition(double fromPos, const double fromLaneLength, const double toPos, const double tolaneLength, const bool friendlyPos)
check if the given positions over two lanes are valid
An Element which don't belong to GNENet but has influence in the simulation.
virtual void updateGeometry()=0
update pre-computed geometry information
virtual void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)=0
method for setting the attribute and letting the object perform additional changes
static bool areLaneConsecutives(const std::vector< GNELane * > &lanes)
check if the given lanes are consecutive
virtual Position getPositionInView() const =0
Returns position of additional in view.
const std::string getID() const
get ID (all Attribute Carriers have one)
static GNEBusStop * buildTrainStop(GNENet *net)
default constructor
static GNEBusStop * buildBusStop(GNENet *net)
default constructor
A lane area vehicles can halt at (netedit-version)
A road/street connecting two junctions (netedit-version)
NBEdge * getNBEdge() const
returns the internal NBEdge
const std::vector< GNELane * > & getLanes() const
returns a reference to the lane vector
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
void addChildElement(T *element)
add child element
const std::vector< GNEAdditional * > & getChildAdditionals() const
return child additionals
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
bool allowPedestrians() const
check if current lane allow pedestrians
GNEEdge * getParentEdge() const
get parent edge
GNELane * retrieveLane(const std::string &id, bool hardFail=true, bool checkVolatileChange=false) const
get lane by id
GNEAdditional * retrieveAdditional(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named additional.
GNEAdditional * retrieveRerouterInterval(const std::string &rerouterID, const SUMOTime begin, const SUMOTime end) const
Returns the rerouter interval defined by given begin and end.
void insertAdditional(GNEAdditional *additional)
Insert a additional element in container.
GNEEdge * retrieveEdge(const std::string &id, bool hardFail=true) const
get edge by id
GNEDemandElement * retrieveDemandElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named demand element.
A NBNetBuilder extended by visualisation and editing capabilities.
void deleteAdditional(GNEAdditional *additional, GNEUndoList *undoList)
remove additional
void disableUpdateGeometry()
disable update geometry of elements after inserting or removing an element in net
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
GNEViewNet * getViewNet() const
get view net
void enableUpdateGeometry()
A lane area vehicles can park at (netedit-version)
vehicle space used by GNEParkingAreas
void incRef(const std::string &debugMsg="")
Increase reference.
Representation of a RouteProbe in netedit.
void end()
End undo command sub-group. If the sub-group is still empty, it will be deleted; otherwise,...
void begin(GUIIcon icon, const std::string &description)
Begin undo command sub-group with current supermode. This begins a new group of commands that are tre...
void add(GNEChange *command, bool doit=false, bool merge=true)
Add new command, executing it if desired. The new command will be merged with the previous command if...
Representation of a vaporizer in netedit.
GNEUndoList * getUndoList() const
get the undoList object
virtual void centerTo(GUIGlID id, bool applyZoom, double zoomDist=20)
centers to the chosen artifact
static const GeoConvHelper & getFinal()
the coordinate transformation for writing the location element and for tracking the original coordina...
double getFinalLength() const
get length that will be assigned to the lanes in the final network
static const std::vector< SumoXMLTag > POIs
POIs namespace.
static const std::vector< SumoXMLTag > polygons
polygon namespace
static OptionsCont & getOptions()
Retrieves the options.
C++ TraCI client API implementation.
std::map< std::string, std::string > Map
parameters map
A point in 2D or 3D with translation and scaling methods.
static const Position INVALID
used to indicate that a position is valid
double length2D() const
Returns the length.
void move2side(double amount, double maxExtension=100)
move position vector to side using certain amount
Position getCentroid() const
Returns the centroid (closes the polygon if unclosed)
Position positionAtOffset2D(double pos, double lateralOffset=0) const
Returns the position at the given length.
Structure representing possible vehicle parameter.
std::string vtypeid
The vehicle's type id.
std::string routeid
The vehicle's route id.
static bool isValidNetID(const std::string &value)
whether the given string is a valid id for a network element
struct for Netedit parameters
const bool centerAfterCreation
center view after creation
~NeteditParameters()
destructor
NeteditParameters()
default constructor