115 for (
const auto& additionalTagProperty : additionalTagProperties) {
116 myAdditionals.insert(std::make_pair(additionalTagProperty->getTag(), std::unordered_map<const GUIGlObject*, GNEAdditional*>()));
118 myAdditionalIDs.insert(std::make_pair(additionalTagProperty->getTag(), std::map<const std::string, GNEAdditional*>()));
125 for (
const auto& demandElementTagProperty : demandElementTagProperties) {
126 myDemandElements.insert(std::make_pair(demandElementTagProperty->getTag(), std::unordered_map<const GUIGlObject*, GNEDemandElement*>()));
127 if (demandElementTagProperty->hasAttribute(
SUMO_ATTR_ID)) {
128 myDemandElementIDs.insert(std::make_pair(demandElementTagProperty->getTag(), std::map<const std::string, GNEDemandElement*>()));
132 for (
const auto& stopTagProperty : stopTagProperties) {
133 myDemandElements.insert(std::make_pair(stopTagProperty->getTag(), std::unordered_map<const GUIGlObject*, GNEDemandElement*>()));
137 for (
const auto& genericDataElementTagProperty : genericDataElementTagProperties) {
138 myGenericDatas.insert(std::make_pair(genericDataElementTagProperty->getTag(), std::unordered_map<const GUIGlObject*, GNEGenericData*>()));
142 for (
const auto& meanDataTagProperty : meanDataTagProperties) {
143 myMeanDatas.insert(std::make_pair(meanDataTagProperty->getTag(), std::map<const std::string, GNEMeanData*>()));
151 edgeType.second->decRef(
"GNENetHelper::~GNENet");
152 delete edgeType.second;
155 for (
const auto& edge :
myEdges) {
156 edge.second->decRef(
"GNENetHelper::~GNENet");
161 junction.second->decRef(
"GNENetHelper::~GNENet");
162 delete junction.second;
166 for (
const auto& additional : additionalTag.second) {
168 additional.second->decRef();
169 delete additional.second;
174 for (
const auto& demandElement : demandElementTag.second) {
176 demandElement.second->decRef();
177 delete demandElement.second;
183 dataSet.second->decRef();
184 delete dataSet.second;
188 for (
const auto& meanData : meanDataTag.second) {
190 meanData.second->decRef();
191 delete meanData.second;
199 std::map<std::string, GNEEdge*> newEdgeMap;
200 std::map<std::string, GNEJunction*> newJunctionMap;
202 for (
const auto& edge :
myEdges) {
203 edge.second->setEdgeID(edge.second->getNBEdge()->getID());
204 newEdgeMap[edge.second->getNBEdge()->getID()] = edge.second;
207 newJunctionMap[junction.second->getNBNode()->getID()] = junction.second;
208 junction.second->setNetworkElementID(junction.second->getNBNode()->getID());
228 for (
const auto& lane :
myEdges.at(AC->
getID())->getChildLanes()) {
280 if (
object !=
nullptr) {
286 throw ProcessError(
"GUIGlObject does not match the declared type");
290 }
else if (hardFail) {
291 throw ProcessError(
"Attempted to retrieve non-existant GUIGlObject");
298std::vector<GNEAttributeCarrier*>
300 std::vector<GNEAttributeCarrier*> ACs;
307 const auto tagProperty =
myNet->getTagPropertiesDatabase()->getTagProperty(tag,
true);
322std::vector<GNEAttributeCarrier*>
324 std::vector<GNEAttributeCarrier*> result;
329 if (!onlySelected || junction.second->isAttributeCarrierSelected()) {
330 result.push_back(junction.second);
334 if (!onlySelected || crossing.second->isAttributeCarrierSelected()) {
335 result.push_back(crossing.second);
338 for (
const auto& edge :
myEdges) {
339 if (!onlySelected || edge.second->isAttributeCarrierSelected()) {
340 result.push_back(edge.second);
343 for (
const auto& lane :
myLanes) {
344 if (!onlySelected || lane.second->isAttributeCarrierSelected()) {
345 result.push_back(lane.second);
349 if (!onlySelected || connection.second->isAttributeCarrierSelected()) {
350 result.push_back(connection.second);
354 for (
const auto& additional : additionalSet.second) {
355 if (!onlySelected || additional.second->isAttributeCarrierSelected()) {
356 result.push_back(additional.second);
362 for (
const auto& demandElement : demandElementSet.second) {
363 if (!onlySelected || demandElement.second->isAttributeCarrierSelected()) {
364 result.push_back(demandElement.second);
370 if (!onlySelected || dataSet.second->isAttributeCarrierSelected()) {
371 result.push_back(dataSet.second);
375 if (!onlySelected || dataInterval.second->isAttributeCarrierSelected()) {
376 result.push_back(dataInterval.second);
380 for (
const auto& genericData : genericDataSet.second) {
381 if (!onlySelected || genericData.second->isAttributeCarrierSelected()) {
382 result.push_back(genericData.second);
387 for (
const auto& meanData : meanDataSet.second) {
388 if (!onlySelected || meanData.second->isAttributeCarrierSelected()) {
389 result.push_back(meanData.second);
398std::vector<GNEAttributeCarrier*>
401 const auto& editModes =
myNet->getViewNet()->getEditModes();
403 std::vector<GNEAttributeCarrier*> result;
404 result.reserve(
gSelected.getSelected().size());
406 for (
const auto& glID :
gSelected.getSelected()) {
411 if (ignoreCurrentSupermode) {
412 result.push_back(AC);
415 result.push_back(AC);
417 result.push_back(AC);
419 result.push_back(AC);
435 throw UnknownElement(
"Attempted to retrieve non-existant junction " +
id);
442const std::map<std::string, GNEJunction*>&
448std::vector<GNEJunction*>
450 std::vector<GNEJunction*> result;
453 if (junction.second->isAttributeCarrierSelected()) {
454 result.push_back(junction.second);
464 junction->
incRef(
"GNENet::registerJunction");
471 myNet->addGLObjectIntoGrid(junction);
493 for (
const auto& junction : junctionCopy) {
495 junction.second->setNetworkElementID(prefix + junction.first);
497 myJunctions[prefix + junction.first] = junction.second;
505 throw ProcessError(junction->
getTagStr() +
" with ID='" + junction->
getID() +
"' doesn't exist in AttributeCarriers.junction");
507 throw ProcessError(
"There is another " + junction->
getTagStr() +
" with new ID='" + newID +
"' in myJunctions");
512 myNet->getNetBuilder()->getNodeCont().rename(junction->
getNBNode(), newID);
520 myNet->getSavingStatus()->requireSaveNetwork();
529 if (junction.second->isAttributeCarrierSelected()) {
552const std::unordered_map<const GUIGlObject*, GNECrossing*>&
558std::vector<GNECrossing*>
560 std::vector<GNECrossing*> result;
563 if (crossing.second->isAttributeCarrierSelected()) {
564 result.push_back(crossing.second);
575 if (crossing.second->isAttributeCarrierSelected()) {
598const std::unordered_map<const GUIGlObject*, GNEWalkingArea*>&
604std::vector<GNEWalkingArea*>
606 std::vector<GNEWalkingArea*> result;
609 if (walkingArea.second->isAttributeCarrierSelected()) {
610 result.push_back(walkingArea.second);
621 if (walkingArea.second->isAttributeCarrierSelected()) {
633 }
else if (hardFail) {
635 throw UnknownElement(
"Attempted to retrieve non-existant EdgeType " +
id);
645 edgeType->
incRef(
"GNENet::registerEdgeType");
652const std::map<std::string, GNEEdgeType*>&
666 throw ProcessError(edgeType->
getTagStr() +
" with ID='" + edgeType->
getID() +
"' doesn't exist in AttributeCarriers.edgeType");
668 throw ProcessError(
"There is another " + edgeType->
getTagStr() +
" with new ID='" + newID +
"' in myEdgeTypes");
673 myNet->getNetBuilder()->getTypeCont().updateEdgeTypeID(edgeType->
getID(), newID);
679 myNet->getSavingStatus()->requireSaveNetwork();
690 return (
"edgeType_" +
toString(counter));
702 throw UnknownElement(
"Attempted to retrieve non-existant edge " +
id);
711 if ((from ==
nullptr) || (to ==
nullptr)) {
714 std::vector<GNEEdge*> edges;
717 if (edgeTo->getToJunction() == to) {
718 edges.push_back(edgeTo);
725const std::map<std::string, GNEEdge*>&
733 std::vector<GNEEdge*> result;
735 for (
const auto& edge :
myEdges) {
736 if (edge.second->isAttributeCarrierSelected()) {
737 result.push_back(edge.second);
746 edge->
incRef(
"GNENet::registerEdge");
766 myNet->addGLObjectIntoGrid(edge);
784 for (
const auto& edge : edgeCopy) {
786 edge.second->setNetworkElementID(prefix + edge.first);
788 myEdges[prefix + edge.first] = edge.second;
799 myNet->getEdgeIDCounter()++;
809 }
else if (
myEdges.count(newID) != 0) {
810 throw ProcessError(
"There is another " + edge->
getTagStr() +
" with new ID='" + newID +
"' in myEdges");
815 myNet->getNetBuilder()->getEdgeCont().rename(edge->
getNBEdge(), newID);
822 lane->updateConnectionIDs();
825 myNet->getSavingStatus()->requireSaveNetwork();
833 for (
const auto& edge :
myEdges) {
834 if (edge.second->isAttributeCarrierSelected()) {
846 if (edge !=
nullptr) {
850 if (laneIt->getID() ==
id) {
855 if (lane ==
nullptr) {
862 if (checkVolatileChange && (
myNet->getEdgesAndNumberOfLanes().count(edge_id) == 1) &&
868 }
else if (hardFail) {
878 auto it =
myLanes.find(glObject);
891const std::unordered_map<const GUIGlObject*, GNELane*>&
899 std::vector<GNELane*> result;
901 for (
const auto& lane :
myLanes) {
902 if (lane.second->isAttributeCarrierSelected()) {
903 result.push_back(lane.second);
913 for (
const auto& lane :
myLanes) {
914 if (lane.second->isAttributeCarrierSelected()) {
926 if (connection.second->getID() ==
id) {
927 return connection.second;
932 throw UnknownElement(
"Attempted to retrieve non-existant connection " +
id);
954const std::unordered_map<const GUIGlObject*, GNEConnection*>&
960std::vector<GNEConnection*>
962 std::vector<GNEConnection*> result;
965 if (connection.second->isAttributeCarrierSelected()) {
966 result.push_back(connection.second);
977 if (connection.second->isAttributeCarrierSelected()) {
1007 throw ProcessError(
"Attempted to retrieve non-existant additional (string)");
1016 for (
const auto& type : types) {
1023 throw ProcessError(
"Attempted to retrieve non-existant additional (string)");
1034 auto it = additionalTag.second.find(glObject);
1035 if (it != additionalTag.second.end()) {
1040 throw ProcessError(
"Attempted to retrieve non-existant additional (glObject)");
1066 throw ProcessError(
"Attempted to retrieve non-existant rerouter interval");
1070const std::unordered_map<SumoXMLTag, std::unordered_map<const GUIGlObject*, GNEAdditional*>, std::hash<int> >&
1076std::vector<GNEAdditional*>
1078 std::vector<GNEAdditional*> result;
1081 for (
const auto& additional : additionalsTags.second) {
1082 if (additional.second->isAttributeCarrierSelected()) {
1083 result.push_back(additional.second);
1091std::vector<GNEAdditional*>
1093 std::vector<GNEAdditional*> result;
1096 for (
const auto& additional : additionalsTags.second) {
1097 if (additional.second->getTagProperty()->isShapeElement() && additional.second->isAttributeCarrierSelected()) {
1098 result.push_back(additional.second);
1110 counter += (int)additionalsTag.second.size();
1120 for (
const auto& additional : additionalsTags.second) {
1121 myNet->removeGLObjectFromGrid(additional.second);
1126 additionals.second.clear();
1129 additionals.second.clear();
1139 throw ProcessError(additional->
getTagStr() +
" with ID='" + additional->
getID() +
"' doesn't exist in AttributeCarriers.additionals");
1157 prefix = neteditOptions.getString(
"busStop-prefix");
1159 prefix = neteditOptions.getString(
"trainStop-prefix");
1161 prefix = neteditOptions.getString(
"containerStop-prefix");
1163 prefix = neteditOptions.getString(
"chargingStation-prefix");
1165 prefix = neteditOptions.getString(
"parkingArea-prefix");
1167 prefix = neteditOptions.getString(
"e1Detector-prefix");
1169 prefix = neteditOptions.getString(
"e2Detector-prefix");
1171 prefix = neteditOptions.getString(
"e3Detector-prefix");
1173 prefix = neteditOptions.getString(
"e1InstantDetector-prefix");
1175 prefix = neteditOptions.getString(
"rerouter-prefix");
1177 prefix = neteditOptions.getString(
"calibrator-prefix");
1179 prefix = neteditOptions.getString(
"routeProbe-prefix");
1181 prefix = neteditOptions.getString(
"vss-prefix");
1183 prefix = neteditOptions.getString(
"tractionSubstation-prefix");
1185 prefix = neteditOptions.getString(
"overheadWire-prefix");
1187 prefix = neteditOptions.getString(
"polygon-prefix");
1189 prefix = neteditOptions.getString(
"poi-prefix");
1193 prefix = neteditOptions.getString(
"jps.walkableArea-prefix");
1195 prefix = neteditOptions.getString(
"jps.obstacle-prefix");
1225 return (prefix +
"_" +
toString(counter));
1233 for (
const auto& additional : additionalsTags.second) {
1234 if (additional.second->isAttributeCarrierSelected()) {
1261 if (poly.second->isAttributeCarrierSelected()) {
1273 if (walkableArea.second->isAttributeCarrierSelected()) {
1285 if (obstacle.second->isAttributeCarrierSelected()) {
1297 if (
POI.second->isAttributeCarrierSelected()) {
1302 if (POILane.second->isAttributeCarrierSelected()) {
1307 if (
POIGEO.second->isAttributeCarrierSelected()) {
1315std::vector<std::string>
1317 std::set<std::string> keys;
1319 for (
const auto& parameter :
POI.second->getParameters()->getParametersMap()) {
1320 keys.insert(parameter.first);
1324 for (
const auto& parameter : POILane.second->getParameters()->getParametersMap()) {
1325 keys.insert(parameter.first);
1329 for (
const auto& parameter :
POIGEO.second->getParameters()->getParametersMap()) {
1330 keys.insert(parameter.first);
1333 return std::vector<std::string>(keys.begin(), keys.end());
1341 if (
TAZ.second->isAttributeCarrierSelected()) {
1353 for (
const auto& additional : additionalsTags.second) {
1354 if (additional.second->isAttributeCarrierSelected() && additional.second->getTagProperty()->isWireElement()) {
1367 auto it = TAZSourceSinkTag.second.find(sourceSink);
1368 if (it != TAZSourceSinkTag.second.end()) {
1373 throw ProcessError(
"Attempted to retrieve non-existant sourceSink (glObject)");
1380const std::unordered_map<SumoXMLTag, std::unordered_map<const GNEAttributeCarrier*, GNETAZSourceSink*>, std::hash<int> >&
1390 counter += (int)sourceSinksTag.second.size();
1400 sourceSinksTags.second.clear();
1412 throw ProcessError(
"Attempted to retrieve non-existant demand element (string)");
1421 for (
const auto& type : types) {
1428 throw ProcessError(
"Attempted to retrieve non-existant demand element (string)");
1439 auto it = demandElementTag.second.find(glObject);
1440 if (it != demandElementTag.second.end()) {
1445 throw ProcessError(
"Attempted to retrieve non-existant demandElement (glObject)");
1452std::vector<GNEDemandElement*>
1454 std::vector<GNEDemandElement*> result;
1457 for (
const auto& demandElement : demandElementTag.second) {
1458 if (demandElement.second->isAttributeCarrierSelected()) {
1459 result.push_back(demandElement.second);
1467const std::unordered_map<SumoXMLTag, std::unordered_map<const GUIGlObject*, GNEDemandElement*>, std::hash<int> >&
1478 const auto tagProperty =
myNet->getTagPropertiesDatabase()->getTagProperty(tag,
true);
1482 prefix = neteditOptions.getString(
"route-prefix");
1484 prefix = neteditOptions.getString(
"routeDistribution-prefix");
1486 prefix = neteditOptions.getString(
"vType-prefix");
1488 prefix = neteditOptions.getString(
"vTypeDistribution-prefix");
1490 prefix = neteditOptions.getString(
"trip-prefix");
1491 }
else if (tagProperty->isVehicle() && !tagProperty->isFlow()) {
1492 prefix = neteditOptions.getString(
"vehicle-prefix");
1493 }
else if (tagProperty->isPerson()) {
1494 if (tagProperty->isFlow()) {
1495 prefix = neteditOptions.getString(
"personflow-prefix");
1497 prefix = neteditOptions.getString(
"person-prefix");
1499 }
else if (tagProperty->isContainer()) {
1500 if (tagProperty->isFlow()) {
1501 prefix = neteditOptions.getString(
"containerflow-prefix");
1503 prefix = neteditOptions.getString(
"container-prefix");
1505 }
else if (tagProperty->isFlow()) {
1506 prefix = neteditOptions.getString(
"flow-prefix");
1536 return (prefix +
"_" +
toString(counter));
1555 for (
const auto& demandElement : demandElementsTags.second) {
1556 myNet->removeGLObjectFromGrid(demandElement.second);
1561 demandElements.second.clear();
1564 demandElements.second.clear();
1574 throw ProcessError(demandElement->
getTagStr() +
" with ID='" + demandElement->
getID() +
"' doesn't exist in AttributeCarriers.demandElements");
1591 defaultVehicleType->
incRef(
"GNENet::DEFAULT_VEHTYPE");
1598 defaultBikeType->
incRef(
"GNENet::DEFAULT_BIKETYPE_ID");
1605 defaultTaxiType->
incRef(
"GNENet::DEFAULT_TAXITYPE_ID");
1612 defaultRailType->
incRef(
"GNENet::DEFAULT_RAILTYPE_ID");
1619 defaultPersonType->
incRef(
"GNENet::DEFAULT_PEDTYPE_ID");
1626 defaultContainerType->
incRef(
"GNENet::DEFAULT_CONTAINERTYPE_ID");
1640 for (
const auto& demandElement : demandElementsTags.second) {
1641 if (demandElement.second->isAttributeCarrierSelected()) {
1655 if (route.second->isAttributeCarrierSelected()) {
1661 if (vehicle.second->getChildDemandElements().front()->isAttributeCarrierSelected()) {
1666 if (flow.second->getChildDemandElements().front()->isAttributeCarrierSelected()) {
1679 if (vehicle.second->isAttributeCarrierSelected()) {
1684 if (trip.second->isAttributeCarrierSelected()) {
1689 if (vehicle.second->isAttributeCarrierSelected()) {
1694 if (flow.second->isAttributeCarrierSelected()) {
1699 if (flow.second->isAttributeCarrierSelected()) {
1704 if (flow.second->isAttributeCarrierSelected()) {
1717 if (person.second->isAttributeCarrierSelected()) {
1722 if (personFlow.second->isAttributeCarrierSelected()) {
1735 for (
const auto& personPlan : person.second->getChildDemandElements()) {
1736 if (personPlan->getTagProperty()->isPlanPersonTrip() && personPlan->isAttributeCarrierSelected()) {
1742 for (
const auto& personPlan : personFlow.second->getChildDemandElements()) {
1743 if (personPlan->getTagProperty()->isPlanPersonTrip() && personPlan->isAttributeCarrierSelected()) {
1757 for (
const auto& personPlan : person.second->getChildDemandElements()) {
1758 if (personPlan->getTagProperty()->isPlanWalk() && personPlan->isAttributeCarrierSelected()) {
1764 for (
const auto& personPlan : personFlow.second->getChildDemandElements()) {
1765 if (personPlan->getTagProperty()->isPlanWalk() && personPlan->isAttributeCarrierSelected()) {
1779 for (
const auto& personPlan : person.second->getChildDemandElements()) {
1780 if (personPlan->getTagProperty()->isPlanRide() && personPlan->isAttributeCarrierSelected()) {
1786 for (
const auto& personPlan : personFlow.second->getChildDemandElements()) {
1787 if (personPlan->getTagProperty()->isPlanRide() && personPlan->isAttributeCarrierSelected()) {
1801 if (container.second->isAttributeCarrierSelected()) {
1806 if (containerFlow.second->isAttributeCarrierSelected()) {
1819 for (
const auto& containerPlan : container.second->getChildDemandElements()) {
1820 if (containerPlan->getTagProperty()->isPlanTransport() && containerPlan->isAttributeCarrierSelected()) {
1826 for (
const auto& containerPlan : containerFlow.second->getChildDemandElements()) {
1827 if (containerPlan->getTagProperty()->isPlanTransport() && containerPlan->isAttributeCarrierSelected()) {
1841 for (
const auto& containerPlan : container.second->getChildDemandElements()) {
1842 if (containerPlan->getTagProperty()->isPlanTranship() && containerPlan->isAttributeCarrierSelected()) {
1848 for (
const auto& containerPlan : containerFlow.second->getChildDemandElements()) {
1849 if (containerPlan->getTagProperty()->isPlanTranship() && containerPlan->isAttributeCarrierSelected()) {
1863 if (route.second->isAttributeCarrierSelected()) {
1869 for (
const auto& stop : trip.second->getChildDemandElements()) {
1870 if (stop->getTagProperty()->isVehicleStop() && stop->isAttributeCarrierSelected()) {
1876 for (
const auto& stop : vehicle.second->getChildDemandElements().front()->getChildDemandElements()) {
1877 if (stop->getTagProperty()->isVehicleStop() && stop->isAttributeCarrierSelected()) {
1883 for (
const auto& stop : flow.second->getChildDemandElements()) {
1884 if (stop->getTagProperty()->isVehicleStop() && stop->isAttributeCarrierSelected()) {
1890 for (
const auto& stop : flow.second->getChildDemandElements().front()->getChildDemandElements()) {
1891 if (stop->getTagProperty()->isVehicleStop() && stop->isAttributeCarrierSelected()) {
1898 for (
const auto& personPlan : person.second->getChildDemandElements()) {
1899 if (personPlan->getTagProperty()->isPlanStopPerson() && personPlan->isAttributeCarrierSelected()) {
1905 for (
const auto& personPlan : personFlow.second->getChildDemandElements()) {
1906 if (personPlan->getTagProperty()->isPlanStopPerson() && personPlan->isAttributeCarrierSelected()) {
1913 for (
const auto& containerPlan : container.second->getChildDemandElements()) {
1914 if (containerPlan->getTagProperty()->isPlanStopContainer() && containerPlan->isAttributeCarrierSelected()) {
1920 for (
const auto& containerPlan : containerFlow.second->getChildDemandElements()) {
1921 if (containerPlan->getTagProperty()->isPlanStopContainer() && containerPlan->isAttributeCarrierSelected()) {
1933 if (dataSet.second->getID() ==
id) {
1934 return dataSet.second;
1938 throw ProcessError(
"Attempted to retrieve non-existant data set");
1945const std::map<const std::string, GNEDataSet*>&
1959 return (prefix +
"_" +
toString(counter));
1967 }
else if (hardFail) {
1968 throw ProcessError(
"Attempted to retrieve non-existant data interval");
1975const std::unordered_map<const GNEAttributeCarrier*, GNEDataInterval*>&
1989 myNet->getViewNet()->getIntervalBar().markForUpdate();
2002 myNet->getViewNet()->getInspectedElements().uninspectAC(dataInterval);
2004 myNet->getViewNet()->getViewParent()->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(dataInterval);
2006 myNet->getViewNet()->getIntervalBar().markForUpdate();
2014 auto it = genericDataTag.second.find(glObject);
2015 if (it != genericDataTag.second.end()) {
2020 throw ProcessError(
"Attempted to retrieve non-existant generic (glObject)");
2027std::vector<GNEGenericData*>
2029 std::vector<GNEGenericData*> result;
2032 for (
const auto& genericData : genericDataTag.second) {
2033 if (genericData.second->isAttributeCarrierSelected()) {
2034 result.push_back(genericData.second);
2042const std::unordered_map<SumoXMLTag, std::unordered_map<const GUIGlObject*, GNEGenericData*>, std::hash<int> >&
2048std::vector<GNEGenericData*>
2051 std::vector<GNEGenericData*> genericDatas;
2053 for (
const auto& genericData :
myGenericDatas.at(genericDataTag)) {
2055 if ((genericData.second->getDataIntervalParent()->getAttributeDouble(
SUMO_ATTR_BEGIN) >= begin) &&
2056 (genericData.second->getDataIntervalParent()->getAttributeDouble(
SUMO_ATTR_END) <= end)) {
2057 genericDatas.push_back(genericData.second);
2060 return genericDatas;
2069 counter += (int)genericDataTag.second.size();
2080 if (genericData.second->isAttributeCarrierSelected()) {
2093 if (genericData.second->isAttributeCarrierSelected()) {
2106 if (genericData.second->isAttributeCarrierSelected()) {
2122 myNet->getViewNet()->getIntervalBar().markForUpdate();
2135 myNet->getViewNet()->getInspectedElements().uninspectAC(genericData);
2137 myNet->getViewNet()->getViewParent()->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(genericData);
2139 myNet->getDataPathManager()->removePath(genericData);
2141 myNet->getViewNet()->getIntervalBar().markForUpdate();
2145std::set<std::string>
2148 std::set<std::string> attributesSolution;
2150 std::vector<GNEGenericData*> genericDatas;
2156 for (
const auto& genericData : interval.second->getGenericDataChildren()) {
2157 if (genericDataTag.empty() || (genericData->getTagProperty()->getTagStr() == genericDataTag)) {
2158 genericDatas.push_back(genericData);
2164 for (
const auto& genericData : genericDatas) {
2165 for (
const auto& attribute : genericData->getParametersMap()) {
2166 attributesSolution.insert(attribute.first);
2169 return attributesSolution;
2173std::set<std::string>
2175 const std::string& beginStr,
const std::string& endStr)
const {
2177 std::set<std::string> attributesSolution;
2179 std::vector<GNEDataSet*> dataSets;
2180 std::vector<GNEDataInterval*> dataIntervals;
2184 if (dataSetID.empty()) {
2188 dataSets.push_back(dataSet.second);
2190 }
else if (retrievedDataSet) {
2191 dataSets.push_back(retrievedDataSet);
2193 return attributesSolution;
2196 int numberOfIntervals = 0;
2197 for (
const auto& dataSet : dataSets) {
2198 numberOfIntervals += (int)dataSet->getDataIntervalChildren().size();
2201 dataIntervals.reserve(numberOfIntervals);
2203 for (
const auto& dataSet : dataSets) {
2204 for (
const auto& dataInterval : dataSet->getDataIntervalChildren()) {
2206 if (beginStr.empty() && endStr.empty()) {
2207 dataIntervals.push_back(dataInterval.second);
2208 }
else if (endStr.empty()) {
2211 if (dataInterval.second->getAttributeDouble(
SUMO_ATTR_BEGIN) >= begin) {
2212 dataIntervals.push_back(dataInterval.second);
2214 }
else if (beginStr.empty()) {
2217 if (dataInterval.second->getAttributeDouble(
SUMO_ATTR_END) <= end) {
2218 dataIntervals.push_back(dataInterval.second);
2224 if ((dataInterval.second->getAttributeDouble(
SUMO_ATTR_BEGIN) >= begin) &&
2225 (dataInterval.second->getAttributeDouble(
SUMO_ATTR_END) <= end)) {
2226 dataIntervals.push_back(dataInterval.second);
2232 for (
const auto& dataInterval : dataIntervals) {
2233 for (
const auto& genericData : dataInterval->getGenericDataChildren()) {
2235 if (genericDataTag.empty() || (genericData->getTagProperty()->getTagStr() == genericDataTag)) {
2236 for (
const auto& attribute : genericData->getParametersMap()) {
2237 attributesSolution.insert(attribute.first);
2242 return attributesSolution;
2248 for (
const auto& meanData :
myMeanDatas.at(type)) {
2249 if (meanData.second->getID() ==
id) {
2250 return meanData.second;
2254 throw ProcessError(
"Attempted to retrieve non-existant meanData (string)");
2261const std::unordered_map<SumoXMLTag, std::map<const std::string, GNEMeanData*>, std::hash<int> >&
2277 meanDatas.second.clear();
2287 throw ProcessError(meanData->
getTagStr() +
" with ID='" + meanData->
getID() +
"' doesn't exist in AttributeCarriers.meanDatas");
2303 prefix = neteditOptions.getString(
"meanDataEdge-prefix");
2305 prefix = neteditOptions.getString(
"meanDataLane-prefix");
2311 return (prefix +
"_" +
toString(counter));
2317 myNet->getNetBuilder()->getNodeCont().insert(junction->
getNBNode());
2325 myNet->getViewNet()->getInspectedElements().uninspectAC(junction);
2327 myNet->getViewNet()->getViewParent()->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(junction);
2329 myNet->removeGLObjectFromGrid(junction);
2332 myNet->getNetBuilder()->getNodeCont().extract(junction->
getNBNode());
2333 junction->
decRef(
"GNENet::deleteSingleJunction");
2341 const auto& createEdgeFrame =
myNet->getViewNet()->getViewParent()->getCreateEdgeFrame();
2346 if (
myNet->getViewNet()->getViewParent()->getCreateEdgeFrame()->shown()) {
2347 myNet->getViewNet()->getViewParent()->getCreateEdgeFrame()->getEdgeTypeSelector()->refreshEdgeTypeSelector();
2350 createEdgeFrame->getEdgeTypeSelector()->setCurrentEdgeType(edgeType);
2357 const auto& createEdgeFrame =
myNet->getViewNet()->getViewParent()->getCreateEdgeFrame();
2359 myNet->getViewNet()->getInspectedElements().uninspectAC(edgeType);
2361 myNet->getViewNet()->getViewParent()->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(edgeType);
2366 if (createEdgeFrame->getEdgeTypeSelector()->getEdgeTypeSelected() == edgeType) {
2367 createEdgeFrame->getEdgeTypeSelector()->clearEdgeTypeSelected();
2370 createEdgeFrame->getEdgeTypeSelector()->refreshEdgeTypeSelector();
2377 myNet->getNetBuilder()->getEdgeCont().insert(nbe);
2389 myNet->getViewNet()->getInspectedElements().uninspectAC(edge);
2391 myNet->getViewNet()->getViewParent()->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(edge);
2393 myNet->removeGLObjectFromGrid(edge);
2401 myNet->getNetBuilder()->getEdgeCont().extract(
myNet->getNetBuilder()->getDistrictCont(), edge->
getNBEdge());
2402 edge->
decRef(
"GNENet::deleteSingleEdge");
2433 if (finder ==
myLanes.end()) {
2439 myNet->getViewNet()->getInspectedElements().uninspectAC(lane);
2441 myNet->getViewNet()->getViewParent()->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(lane);
2466 if (
myNet->getViewNet()) {
2467 myNet->getViewNet()->getInspectedElements().uninspectAC(crossing);
2469 myNet->getViewNet()->getViewParent()->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(crossing);
2495 myNet->getViewNet()->getInspectedElements().uninspectAC(walkingArea);
2497 myNet->getViewNet()->getViewParent()->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(walkingArea);
2522 myNet->getViewNet()->getInspectedElements().uninspectAC(connection);
2524 myNet->getViewNet()->getViewParent()->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(connection);
2565 myNet->addGLObjectIntoGrid(additional);
2567 if (
myNet->isUpdateGeometryEnabled()) {
2571 myNet->getSavingStatus()->requireSaveAdditionals();
2592 myNet->getViewNet()->getInspectedElements().uninspectAC(additional);
2594 myNet->getViewNet()->getViewParent()->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(additional);
2596 myNet->removeGLObjectFromGrid(additional);
2598 myNet->getNetworkPathManager()->removePath(additional);
2600 myNet->getSavingStatus()->requireSaveAdditionals();
2616 myNet->getSavingStatus()->requireSaveAdditionals();
2634 myNet->getViewNet()->getInspectedElements().uninspectAC(sourceSink);
2636 myNet->getViewNet()->getViewParent()->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(sourceSink);
2638 myNet->getSavingStatus()->requireSaveAdditionals();
2655 myNet->addGLObjectIntoGrid(demandElement);
2657 if (
myNet->isUpdateGeometryEnabled()) {
2661 if (
myNet->getViewNet()->getEditModes().isCurrentSupermodeDemand()) {
2667 myNet->getSavingStatus()->requireSaveDemandElements();
2675 auto viewParent =
myNet->getViewNet()->getViewParent();
2689 myNet->removeGLObjectFromGrid(demandElement);
2691 myNet->getViewNet()->getInspectedElements().uninspectAC(demandElement);
2694 if (
myNet->getViewNet()->getLastCreatedRoute() == demandElement) {
2695 myNet->getViewNet()->setLastCreatedRoute(
nullptr);
2698 myNet->getDemandPathManager()->removePath(demandElement);
2702 viewParent->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(demandElement);
2703 viewParent->getPersonPlanFrame()->getPersonHierarchy()->removeCurrentEditedAttributeCarrier(demandElement);
2704 viewParent->getContainerPlanFrame()->getContainerHierarchy()->removeCurrentEditedAttributeCarrier(demandElement);
2706 if (viewParent->getRouteDistributionFrame()->getDistributionSelector()->getCurrentDistribution() == demandElement) {
2707 viewParent->getRouteDistributionFrame()->getDistributionSelector()->setDistribution(
nullptr);
2709 if (viewParent->getTypeDistributionFrame()->getDistributionSelector()->getCurrentDistribution() == demandElement) {
2710 viewParent->getTypeDistributionFrame()->getDistributionSelector()->setDistribution(
nullptr);
2714 viewParent->getTypeDistributionFrame()->getDistributionValuesEditor()->refreshRows();
2717 viewParent->getRouteDistributionFrame()->getDistributionValuesEditor()->refreshRows();
2721 myNet->getSavingStatus()->requireSaveDemandElements();
2734 myNet->getSavingStatus()->requireSaveDataElements();
2736 myNet->getViewNet()->getIntervalBar().markForUpdate();
2750 myNet->getViewNet()->getInspectedElements().uninspectAC(dataSet);
2752 myNet->getViewNet()->getViewParent()->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(dataSet);
2754 myNet->getSavingStatus()->requireSaveDataElements();
2756 myNet->getViewNet()->getIntervalBar().markForUpdate();
2769 myNet->getSavingStatus()->requireSaveMeanDatas();
2786 myNet->getViewNet()->getInspectedElements().uninspectAC(meanData);
2788 myNet->getViewNet()->getViewParent()->getInspectorFrame()->getHierarchicalElementTree()->removeCurrentEditedAttributeCarrier(meanData);
2790 myNet->removeGLObjectFromGrid(meanData);
2792 myNet->getSavingStatus()->requireSaveMeanDatas();
2799 if (
myNet->getViewNet()->getEditModes().isCurrentSupermodeDemand()) {
2801 switch (
myNet->getViewNet()->getEditModes().demandEditMode) {
2803 if (tagProperty->
isType()) {
2804 myNet->getViewNet()->getViewParent()->getVehicleFrame()->getTypeSelector()->refreshDemandElementSelector();
2808 if (tagProperty->
isType()) {
2809 myNet->getViewNet()->getViewParent()->getTypeFrame()->getTypeSelector()->refreshTypeSelector(
true);
2813 if (tagProperty->
isType()) {
2814 myNet->getViewNet()->getViewParent()->getTypeDistributionFrame()->getDistributionSelector()->refreshDistributionSelector();
2819 myNet->getViewNet()->getViewParent()->getRouteDistributionFrame()->getDistributionSelector()->refreshDistributionSelector();
2823 if (tagProperty->
isType()) {
2824 myNet->getViewNet()->getViewParent()->getPersonFrame()->getTypeSelector()->refreshDemandElementSelector();
2829 myNet->getViewNet()->getViewParent()->getPersonPlanFrame()->getPersonSelector()->refreshDemandElementSelector();
2833 if (tagProperty->
isType()) {
2834 myNet->getViewNet()->getViewParent()->getContainerFrame()->getTypeSelector()->refreshDemandElementSelector();
2839 myNet->getViewNet()->getViewParent()->getContainerPlanFrame()->getContainerSelector()->refreshDemandElementSelector();
2843 myNet->getViewNet()->getViewParent()->getStopFrame()->getStopParentSelector()->refreshDemandElementSelector();
2858 ACs.push_back(junction.second);
2862 for (
const auto& edge :
myEdges) {
2863 ACs.push_back(edge.second);
2867 for (
const auto& lane :
myLanes) {
2868 ACs.push_back(lane.second);
2873 ACs.push_back(connection.second);
2878 ACs.push_back(crossing.second);
2883 ACs.push_back(walkingArea.second);
2889 if (additionalTag.first == tag->
getTag()) {
2890 for (
const auto& additional : additionalTag.second) {
2891 ACs.push_back(additional.second);
2899 if (demandElementTag.first == tag->
getTag()) {
2900 for (
const auto& demandElemet : demandElementTag.second) {
2901 ACs.push_back(demandElemet.second);
2910 ACs.push_back(dataSet.second);
2915 ACs.push_back(dataInterval.second);
2919 if (genericDataTag.first == tag->
getTag()) {
2920 for (
const auto& genericData : genericDataTag.second) {
2921 ACs.push_back(genericData.second);
2926 if (meanDataTag.first == tag->
getTag()) {
2927 for (
const auto& meanData : meanDataTag.second) {
2928 ACs.push_back(meanData.second);
3013 for (
const auto vehicle : vehicles) {
3018 for (
const auto person : persons) {
3023 for (
const auto container : containers) {
3028 for (
const auto stopAndWaypoint : stopAndWaypoints) {
3033 for (
const auto personTrip : personTrips) {
3038 for (
const auto walk : walks) {
3043 for (
const auto ride : rides) {
3048 for (
const auto stopPerson : stopPersons) {
3053 for (
const auto transport : transports) {
3058 for (
const auto tranship : tranships) {
3063 for (
const auto stopContainer : stopContainers) {
3068 AC.second->resetDefaultValues(
false);
3080std::map<SumoXMLTag, GNEAttributeCarrier*>
3099 if (templateAC.second->getTagProperty()->getSelectorText() == selectorText) {
3100 return templateAC.second;
3124 neteditOptions.resetWritable();
3125 if (additionalFiles.size() > 0) {
3126 neteditOptions.set(
"additional-files", additionalFiles);
3128 neteditOptions.resetDefault(
"additional-files");
3131 neteditOptions.resetWritable();
3132 if (demandElementFiles.size() > 0) {
3133 neteditOptions.set(
"route-files", demandElementFiles);
3135 neteditOptions.resetDefault(
"route-files");
3138 neteditOptions.resetWritable();
3139 if (dataElementFiles.size() > 0) {
3140 neteditOptions.set(
"data-files", dataElementFiles);
3142 neteditOptions.resetDefault(
"data-files");
3145 neteditOptions.resetWritable();
3146 if (meanDataElementFiles.size() > 0) {
3147 neteditOptions.set(
"meandata-files", meanDataElementFiles);
3149 neteditOptions.resetDefault(
"meandata-files");
3168 for (
const auto& additionalTag :
myNet->getAttributeCarriers()->getAdditionals()) {
3169 for (
const auto& additional : additionalTag.second) {
3170 additional.second->changeDefaultFilename(file);
3174 for (
auto& templateAC :
myNet->getACTemplates()->getACTemplates()) {
3175 if (templateAC.second->getTagProperty()->isAdditionalElement() && templateAC.second->getFilename().empty()) {
3176 templateAC.second->changeDefaultFilename(file);
3186const std::vector<std::string>&
3195 for (
const auto& additionalTag :
myNet->getAttributeCarriers()->getAdditionals()) {
3196 for (
const auto& additional : additionalTag.second) {
3197 additionalsbyFilenames[additional.second->getFilename()].insert(additional.second);
3201 for (
const auto& route :
myNet->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_ROUTE)) {
3203 additionalsbyFilenames[route.second->getFilename()].insert(route.second);
3209 if (it->empty() || (additionalsbyFilenames.find(*it) == additionalsbyFilenames.end())) {
3215 return additionalsbyFilenames;
3240 for (
const auto& demandTag :
myNet->getAttributeCarriers()->getDemandElements()) {
3241 for (
const auto& demand : demandTag.second) {
3242 demand.second->changeDefaultFilename(file);
3246 for (
auto& templateAC :
myNet->getACTemplates()->getACTemplates()) {
3247 if (templateAC.second->getTagProperty()->isDemandElement() && templateAC.second->getFilename().empty()) {
3248 templateAC.second->changeDefaultFilename(file);
3258const std::vector<std::string>&
3267 for (
const auto& demandTag :
myNet->getAttributeCarriers()->getDemandElements()) {
3268 for (
const auto& demand : demandTag.second) {
3270 demandsbyFilenames[demand.second->getFilename()].insert(demand.second);
3277 if (it->empty() || (demandsbyFilenames.find(*it) == demandsbyFilenames.end())) {
3283 return demandsbyFilenames;
3308 if (file.size() > 0) {
3309 for (
const auto& dataSet :
myNet->getAttributeCarriers()->getDataSets()) {
3310 dataSet.second->changeDefaultFilename(file);
3320const std::vector<std::string>&
3329 for (
const auto& dataSet :
myNet->getAttributeCarriers()->getDataSets()) {
3330 datasbyFilenames[dataSet.second->getFilename()].insert(dataSet.second);
3335 if (it->empty() || (datasbyFilenames.find(*it) == datasbyFilenames.end())) {
3341 return datasbyFilenames;
3366 for (
const auto& meanDataTag :
myNet->getAttributeCarriers()->getMeanDatas()) {
3367 for (
const auto& meanData : meanDataTag.second) {
3368 meanData.second->changeDefaultFilename(file);
3372 for (
auto& templateAC :
myNet->getACTemplates()->getACTemplates()) {
3373 if (templateAC.second->getTagProperty()->isMeanData() && templateAC.second->getFilename().empty()) {
3374 templateAC.second->changeDefaultFilename(file);
3384const std::vector<std::string>&
3393 for (
const auto& meanDataTag :
myNet->getAttributeCarriers()->getMeanDatas()) {
3394 for (
const auto& meanData : meanDataTag.second) {
3395 meanDatasbyFilenames[meanData.second->getFilename()].insert(meanData.second);
3401 if (it->empty() || (meanDatasbyFilenames.find(*it) == meanDatasbyFilenames.end())) {
3407 return meanDatasbyFilenames;
3420 std::string savingFileNames;
3422 for (
const auto& savingFile : savingFiles) {
3423 savingFileNames.append(savingFile +
",");
3426 if (savingFileNames.size() > 0) {
3427 savingFileNames.pop_back();
3429 return savingFileNames;
3632 const auto saveDialog =
GNESaveDialog(
myNet->getViewNet()->getViewParent()->getGNEAppWindows(),
3645 return saveDialog.getResult();
3664 const auto saveDialog =
GNESaveDialog(
myNet->getViewNet()->getViewParent()->getGNEAppWindows(),
3665 TL(
"additional elements"));
3677 return saveDialog.getResult();
3696 const auto saveDialog =
GNESaveDialog(
myNet->getViewNet()->getViewParent()->getGNEAppWindows(),
3697 TL(
"demand elements"));
3709 return saveDialog.getResult();
3728 const auto saveDialog =
GNESaveDialog(
myNet->getViewNet()->getViewParent()->getGNEAppWindows(),
3729 TL(
"data elements"));
3741 return saveDialog.getResult();
3760 const auto saveDialog =
GNESaveDialog(
myNet->getViewNet()->getViewParent()->getGNEAppWindows(),
3761 TL(
"meanData elements"));
3773 return saveDialog.getResult();
3809 return TL(
"Redo replace in TLS");
3815 return TL(
"Undo replace in TLS");
Supermode
@brie enum for supermodes
@ NETWORK
Network mode (Edges, junctions, etc..).
@ DATA
Data mode (edgeData, LaneData etc..).
@ DEMAND
Demand mode (Routes, Vehicles etc..).
@ DEMAND_PERSONPLAN
Mode for editing person plan.
@ DEMAND_CONTAINER
Mode for editing container.
@ DEMAND_ROUTEDISTRIBUTION
Mode for editing route distributions.
@ DEMAND_PERSON
Mode for editing person.
@ DEMAND_TYPEDISTRIBUTION
Mode for editing type distributions.
@ DEMAND_VEHICLE
Mode for editing vehicles.
@ DEMAND_STOP
Mode for editing stops.
@ DEMAND_CONTAINERPLAN
Mode for editing container plan.
@ DEMAND_TYPE
Mode for editing types.
GUISelectedStorage gSelected
A global holder of selected objects.
std::string time2string(SUMOTime t, bool humanReadable)
convert SUMOTime to string (independently of global format setting)
const long long int VTYPEPARS_VEHICLECLASS_SET
const std::string DEFAULT_TAXITYPE_ID
const std::string DEFAULT_RAILTYPE_ID
const std::string DEFAULT_PEDTYPE_ID
const std::string DEFAULT_VTYPE_ID
const std::string DEFAULT_CONTAINERTYPE_ID
@ SVC_IGNORING
vehicles ignoring classes
@ SVC_RAIL
vehicle is a not electrified rail
@ SVC_PASSENGER
vehicle is a passenger car (a "normal" car)
@ SVC_BICYCLE
vehicle is a bicycle
@ SVC_TAXI
vehicle is a taxi
@ SVC_PEDESTRIAN
pedestrian
const std::string DEFAULT_BIKETYPE_ID
SumoXMLTag
Numbers representing SUMO-XML - element names.
@ GNE_TAG_TRIP_JUNCTIONS
a trip between junctions
@ SUMO_TAG_TRACTION_SUBSTATION
A traction substation.
@ GNE_TAG_TRIP_TAZS
a single trip definition that uses TAZs
@ GNE_TAG_VTYPEREF
reference to a vType (used in VType distributions)
@ SUMO_TAG_INTERVAL
an aggreagated-output interval
@ SUMO_TAG_CLOSING_REROUTE
reroute of type closing
@ SUMO_TAG_REROUTER
A rerouter.
@ SUMO_TAG_EDGEREL
a relation between two edges
@ 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_NOTHING
invalid tag, must be the last one
@ SUMO_TAG_CONTAINER_STOP
A container stop.
@ SUMO_TAG_PARKING_AREA_REROUTE
entry for an alternative parking zone
@ SUMO_TAG_ROOTFILE
root file
@ 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_MEANDATA_LANE
a lane based mean data detector
@ SUMO_TAG_STEP
trigger: a step description
@ SUMO_TAG_VEHICLE
description of a vehicle
@ GNE_TAG_FLOW_ROUTE
a flow definition using a route instead of a from-to edges route
@ SUMO_TAG_ROUTE_DISTRIBUTION
distribution of a route
@ GNE_TAG_VSS_SYMBOL
VSS Symbol.
@ GNE_TAG_POIGEO
Point of interest over view with GEO attributes.
@ GNE_TAG_FLOW_WITHROUTE
description of a vehicle with an embedded route
@ SUMO_TAG_FLOW
a flow definition using from and to edges or a route
@ SUMO_TAG_CONNECTION
connectioon between two lanes
@ SUMO_TAG_PARKING_AREA
A parking area.
@ SUMO_TAG_WALKINGAREA
walking area for pedestrians
@ 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_JUNCTION
begin/end of the description of a junction
@ SUMO_TAG_CROSSING
crossing between edges for pedestrians
@ SUMO_TAG_ROUTE
description of a route
@ SUMO_TAG_MEANDATA_EDGE
an edge based mean data detector
@ SUMO_TAG_POLY
begin/end of the description of a polygon
@ SUMO_TAG_OVERHEAD_WIRE_SECTION
An overhead wire section.
@ SUMO_TAG_TRAIN_STOP
A train stop (alias for bus stop).
@ SUMO_TAG_VTYPE_DISTRIBUTION
distribution of a vehicle type
@ SUMO_TAG_LANE
begin/end of the description of a single lane
@ SUMO_TAG_INSTANT_INDUCTION_LOOP
An instantenous induction loop.
@ GNE_TAG_VEHICLE_WITHROUTE
description of a vehicle with an embedded route
@ GNE_TAG_CALIBRATOR_FLOW
a flow definition within in Calibrator
@ 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
@ GNE_TAG_REROUTER_SYMBOL
Rerouter Symbol.
@ SUMO_TAG_TAZREL
a relation between two TAZs
@ SUMO_TAG_TAZSOURCE
a source within a district (connection road)
@ SUMO_TAG_CLOSING_LANE_REROUTE
lane of a reroute of type closing
@ GNE_TAG_ROUTEREF
virtual element used to reference routes with distributions
@ GNE_TAG_ROUTE_EMBEDDED
embedded route
@ 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_TRIP
a single trip definition (used by router)
@ SUMO_TAG_EDGE
begin/end of the description of an edge
@ SUMO_ATTR_BEGIN
weights: time range begin
@ SUMO_ATTR_END
weights: time range end
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
const GUIGeometry & getAdditionalGeometry() const
obtain additional geometry
GUIGlObject * getGUIGlObject() override
get GUIGlObject associated with this additional
virtual Position getPositionInView() const =0
Returns position of additional in view.
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
const std::string getID() const override
get ID (all Attribute Carriers have one)
static T parse(const std::string &string)
parses a value of type T from string (used for basic types: int, double, bool, etc....
const std::string & getTagStr() const
get tag assigned to this object in string format
const std::string & getFilename() const
get filename in which save this AC
const GNETagProperties * getTagProperty() const
get tagProperty associated with this Attribute Carrier
void unmarkForDrawingFront()
unmark for drawing front
virtual void updateGeometry()=0
update pre-computed geometry information
virtual GUIGlObject * getGUIGlObject()=0
get GUIGlObject associated with this AttributeCarrier
static GNEBusStop * buildTrainStop(GNENet *net)
default constructor
static GNEBusStop * buildBusStop(GNENet *net)
default constructor
GNEChange(Supermode supermode, bool forward, const bool selectedElement)
Constructor.
GUIGlObject * getGUIGlObject() override
get GUIGlObject associated with this GNEDemandElement
Result
list of possible results when closing the dialog
void updateCenteringBoundary(const bool updateGrid)
update centering boundary (implies change in RTREE)
void setResponsible(bool newVal)
set responsibility for deleting internal structures
NBEdge * getNBEdge() const
returns the internal NBEdge
void setEdgeID(const std::string &newID)
set edge ID
GNEJunction * getFromJunction() const
get from Junction (only used to increase readability)
Boundary getCenteringBoundary() const override
Returns the boundary to which the view shall be centered in order to show the object.
GNEJunction * getToJunction() const
get from Junction (only used to increase readability)
GUIGlObject * getGUIGlObject() override
get GUIGlObject associated with this genericData
const GNEHierarchicalContainerChildren< GNELane * > & getChildLanes() const
get child lanes
const GNEHierarchicalContainerChildren< GNEAdditional * > & getChildAdditionals() const
return child additionals
void setEdgeTemplate(const GNEEdge *edge)
set edge template
GNEEdgeTemplate * getEdgeTemplate() const
get edge template (to copy attributes from)
void setResponsible(bool newVal)
set responsibility for deleting internal structures
void updateGeometry() override
update pre-computed geometry information (including crossings)
Boundary getCenteringBoundary() const override
Returns the boundary to which the view shall be centered in order to show the object.
void removeOutgoingGNEEdge(GNEEdge *edge)
remove outgoing GNEEdge
void removeIncomingGNEEdge(GNEEdge *edge)
remove incoming GNEEdge
void addIncomingGNEEdge(GNEEdge *edge)
add incoming GNEEdge
void updateCenteringBoundary(const bool updateGrid)
update centering boundary (implies change in RTREE)
const std::vector< GNEEdge * > & getGNEOutgoingEdges() const
Returns incoming GNEEdges.
NBNode * getNBNode() const
Return net build node.
void addOutgoingGNEEdge(GNEEdge *edge)
add outgoing GNEEdge
int getIndex() const
returns the index of the lane
std::map< SumoXMLTag, GNEAttributeCarrier * > myTemplates
map with templates
GNENet * myNet
pointer to net
std::map< SumoXMLTag, GNEAttributeCarrier * > getACTemplates() const
get all AC templates
void buildTemplates()
build templates
ACTemplate()=delete
Invalidated default constructor.
GNEAttributeCarrier * getTemplateAC(const SumoXMLTag tag) const
get template AC by tag
std::vector< GNEEdge * > retrieveEdges(GNEJunction *from, GNEJunction *to) const
get all edges by from and to GNEJunction
const std::unordered_map< SumoXMLTag, std::unordered_map< const GUIGlObject *, GNEDemandElement * >, std::hash< int > > & getDemandElements() const
get demand elements
GNETAZSourceSink * retrieveTAZSourceSink(const GNEAttributeCarrier *sourceSink, bool hardFail=true) const
Returns the named sourceSink.
void insertWalkingArea(GNEWalkingArea *walkingArea)
insert walkingArea in container
GNEAttributeCarrier * retrieveAttributeCarrier(const GUIGlID id, bool hardFail=true) const
get a single attribute carrier based on a GLID
int getNumberOfSelectedAdditionals() const
get number of selected additionals (Including POIs, Polygons, TAZs and Wires)
const std::unordered_map< const GUIGlObject *, GNEConnection * > & getConnections() const
get connections
int getNumberOfSelectedJpsObstacles() const
get number of selected obstacles
int getNumberOfSelectedConnections() const
get number of selected connections
void deleteDataSet(GNEDataSet *dataSet)
delete data set of container
int myNumberOfDemandElements
number of demand elemements inserted in AttributeCarriers (excluding default vTypes)
std::unordered_map< SumoXMLTag, std::unordered_map< const GUIGlObject *, GNEGenericData * >, std::hash< int > > myGenericDatas
map with the tag and pointer to all generic datas
void addPrefixToJunctions(const std::string &prefix)
add prefix to all junctions
void insertLane(GNELane *lane)
insert lane in container
int getNumberOfSelectedEdgeRelDatas() const
get number of selected edge rel datas
int getNumberOfSelectedCrossings() const
get number of selected crossings
GNEEdgeType * registerEdgeType(GNEEdgeType *edgeType)
registers a edge in containers
std::vector< GNEAdditional * > getSelectedShapes() const
get selected shapes
GNELane * retrieveLane(const std::string &id, bool hardFail=true, bool checkVolatileChange=false) const
get lane by id
std::map< const std::string, GNEDataSet * > myDataSets
map with the ID and pointer to all datasets of net
void insertDataSet(GNEDataSet *dataSet)
Insert a data set in container.
int getNumberOfSelectedRides() const
get number of selected rides
void clearDemandElements()
clear demand elements
void clearTAZSourceSinks()
clear sourceSinks
std::unordered_map< const GUIGlObject *, GNEInternalLane * > myInternalLanes
map with internal lanes
const std::unordered_map< const GUIGlObject *, GNECrossing * > & getCrossings() const
get crossings
void insertGenericData(GNEGenericData *genericData)
insert generic data in container
GNEEdge * registerEdge(GNEEdge *edge)
registers an edge with containers
void deleteDemandElement(GNEDemandElement *demandElement, const bool updateFrames)
delete demand element of container
void insertDataInterval(const GNEAttributeCarrier *AC, GNEDataInterval *dataInterval)
insert data interval in container
const std::unordered_map< SumoXMLTag, std::unordered_map< const GUIGlObject *, GNEGenericData * >, std::hash< int > > & getGenericDatas() const
get all generic datas
int getNumberOfSelectedPersonTrips() const
get number of selected person trips
std::string generateDemandElementID(SumoXMLTag tag) const
generate demand element id
int getNumberOfMeanDatas() const
get number of meanDatas
GNECrossing * retrieveCrossing(const GUIGlObject *glObject, bool hardFail=true) const
get Crossing by AC
void addPrefixToEdges(const std::string &prefix)
add prefix to all edges
void remapJunctionAndEdgeIds()
remap junction and edge IDs
std::vector< GNEAttributeCarrier * > retrieveAttributeCarriers(SumoXMLTag tag=SUMO_TAG_NOTHING)
get the attribute carriers based on Type
AttributeCarriers()=delete
Invalidated default constructor.
void clearEdgeTypes()
clear edgeTypes
std::map< std::string, GNEJunction * > myJunctions
map with the ID and pointer to junctions of net
std::string generateEdgeID() const
generate edge ID
int getNumberOfSelectedTranships() const
get number of selected tranships
const std::unordered_map< SumoXMLTag, std::unordered_map< const GNEAttributeCarrier *, GNETAZSourceSink * >, std::hash< int > > & getTAZSourceSinks() const
get sourceSinks
int getNumberOfSelectedVehicles() const
get number of selected vehicles
int getNumberOfSelectedWalks() const
get number of selected walks
void deleteEdgeType(GNEEdgeType *edgeType)
delete edge type from container
int getNumberOfSelectedJpsWalkableAreas() const
get number of selected walkable areas
void deleteInternalLane(GNEInternalLane *internalLane)
delete internalLane from container
std::unordered_map< const GUIGlObject *, GNEConnection * > myConnections
map with connetions
void deleteConnection(GNEConnection *connection)
delete connection from container
void clearAdditionals()
clear additionals
GNEAdditional * retrieveAdditional(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named additional.
std::vector< GNEGenericData * > retrieveGenericDatas(const SumoXMLTag genericDataTag, const double begin, const double end)
retrieve generic datas within the given interval
void insertInternalLane(GNEInternalLane *internalLane)
insert internalLane in container
int getStopIndex()
get (and update) stop index
std::set< std::string > retrieveGenericDataParameters(const std::string &genericDataTag, const double begin, const double end) const
return a set of parameters for the given data Interval
std::vector< GNEWalkingArea * > getSelectedWalkingAreas() const
return all selected walkingAreas
GNENet * myNet
pointer to net
void deleteSingleJunction(GNEJunction *junction)
delete junction from container
GNEMeanData * retrieveMeanData(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named meanData.
GNEJunction * registerJunction(GNEJunction *junction)
registers a junction in containers
const std::unordered_map< SumoXMLTag, std::map< const std::string, GNEMeanData * >, std::hash< int > > & getMeanDatas() const
get meanDatas
int getNumberOfSelectedWalkingAreas() const
get number of selected walkingAreas
GNEWalkingArea * retrieveWalkingArea(const GUIGlObject *glObject, bool hardFail=true) const
get WalkingArea by GlObject
GNEJunction * retrieveJunction(const std::string &id, bool hardFail=true) const
get junction by id
const std::map< const std::string, GNEDataSet * > & getDataSets() const
get demand elements
int myNumberOfDataElements
number of data elemements inserted in AttributeCarriers
std::vector< GNEDemandElement * > getSelectedDemandElements() const
get selected demand elements
void updateJunctionID(GNEJunction *junction, const std::string &newID)
update junction ID in container
void deleteGenericData(GNEGenericData *genericData)
delete generic data of container
~AttributeCarriers()
destructor
void insertCrossing(GNECrossing *crossing)
insert crossing in container
int getNumberOfSelectedWires() const
get number of selected Wires
std::string generateMeanDataID(SumoXMLTag type) const
generate meanData id
std::unordered_map< SumoXMLTag, std::map< const std::string, GNEMeanData * >, std::hash< int > > myMeanDatas
map with the tag and pointer to meanData elements of net
void insertMeanData(GNEMeanData *meanData)
Insert a meanData element in container.
GNEDataSet * retrieveDataSet(const std::string &id, bool hardFail=true) const
Returns the named data set.
friend class GNEDataInterval
int getNumberOfSelectedTAZs() const
get number of selected TAZs
void deleteWalkingArea(GNEWalkingArea *walkingArea)
delete walkingArea from container
int getNumberOfSelectedTransport() const
get number of selected transports
void updateMeanDataID(GNEMeanData *meanData, const std::string &newID)
update meanData ID in container
std::vector< GNELane * > getSelectedLanes() const
get selected lanes
void insertConnection(GNEConnection *connection)
insert connection in container
std::vector< GNEAdditional * > getSelectedAdditionals() const
get selected additionals
int getNumberOfSelectedJunctions() const
get number of selected junctions
const std::map< std::string, GNEEdge * > & getEdges() const
map with the ID and pointer to edges of net
std::unordered_map< SumoXMLTag, std::map< const std::string, GNEAdditional * >, std::hash< int > > myAdditionalIDs
map with the tag and pointer to additional elements of net, sorted by IDs
int getNumberOfDataElements() const
get number of current data elements saved in AttributeCarriers
int getNumberOfGenericDatas() const
Return the number of generic datas.
void updateAdditionalID(GNEAdditional *additional, const std::string &newID)
update additional ID in container
int getNumberOfSelectedDemandElements() const
get number of selected demand elements
std::unordered_map< SumoXMLTag, std::unordered_map< const GNEAttributeCarrier *, GNETAZSourceSink * >, std::hash< int > > myTAZSourceSinks
map with the tag and pointer to TAZSourceSinks elements of net
int getNumberOfSelectedPersons() const
get number of selected persons
int getNumberOfSelectedPureAdditionals() const
get number of selected pure additionals (Except POIs, Polygons, TAZs and Wires)
GNEEdgeType * retrieveEdgeType(const std::string &id, bool hardFail=true) const
get edge type by id
int myNumberOfNetworkElements
number of network elemements inserted in AttributeCarriers
void deleteMeanData(GNEMeanData *meanData)
delete meanData element of container
GNEAdditional * retrieveAdditionals(const std::vector< SumoXMLTag > types, const std::string &id, bool hardFail=true) const
Returns the named additional.
int getNumberOfSelectedRoutes() const
get number of selected routes
void addDefaultVTypes()
add default VTypes
int getNumberOfSelectedPOIs() const
get number of selected POIs
void deleteSingleEdge(GNEEdge *edge)
delete edge from container
GNEDemandElement * retrieveDemandElements(const std::vector< SumoXMLTag > types, const std::string &id, bool hardFail=true) const
Returns the named demand element.
std::string generateAdditionalID(SumoXMLTag type) const
generate additional id
void deleteAdditional(GNEAdditional *additional)
delete additional element of container
int getNumberOfDemandElements() const
get number of current demand elements saved in AttributeCarriers (default vTypes are NOT included)
int getNumberOfSelectedPolygons() const
get number of selected polygons
std::vector< GNEJunction * > getSelectedJunctions() const
return selected junctions
std::unordered_map< SumoXMLTag, std::unordered_map< const GUIGlObject *, GNEAdditional * >, std::hash< int > > myAdditionals
map with the tag and pointer to additional elements of net
int getNumberOfAdditionals() const
get number of additionals
std::unordered_map< SumoXMLTag, std::map< const std::string, GNEDemandElement * >, std::hash< int > > myDemandElementIDs
map with the tag and pointer to demand elements of net, sorted by IDs
void updateDemandElementID(GNEDemandElement *demandElement, const std::string &newID)
update demand element ID in container
bool isNetworkElementAroundTriangle(GNEAttributeCarrier *AC, const Triangle &triangle) const
check if shape of given AC (network element) is around the given triangle
void insertEdge(GNEEdge *edge)
void insertDemandElement(GNEDemandElement *demandElement)
Insert a demand element in container.
void insertTAZSourceSink(GNETAZSourceSink *sourceSink)
Insert a sourceSink element in container.
void updateEdgeID(GNEEdge *edge, const std::string &newID)
update edge ID in container
std::map< std::string, GNEEdgeType * > myEdgeTypes
map with the ID and pointer to edgeTypes of net
GNEDataInterval * retrieveDataInterval(const GNEAttributeCarrier *AC, bool hardFail=true) const
Returns the data interval.
std::vector< GNECrossing * > getSelectedCrossings() const
return all selected crossings
int getNumberOfSelectedLanes() const
get number of selected lanes
GNEAdditional * retrieveRerouterInterval(const std::string &rerouterID, const SUMOTime begin, const SUMOTime end) const
Returns the rerouter interval defined by given begin and end.
int getNumberOfSelectedEdgeDatas() const
get number of selected edge datas
void updateEdgeTypeID(GNEEdgeType *edgeType, const std::string &newID)
update edgeType ID in container
GNEInternalLane * retrieveInternalLane(const GUIGlObject *glObject, bool hardFail=true) const
get InternalLane by GUIGlObject
void updateDemandElementFrames(const GNETagProperties *tagProperty)
update demand element frames (called after insert/delete demand element)
void insertAdditional(GNEAdditional *additional)
Insert a additional element in container.
void retrieveAttributeCarriersRecursively(const GNETagProperties *tag, std::vector< GNEAttributeCarrier * > &ACs)
retrieve attribute carriers recursively
void insertEdgeType(GNEEdgeType *edgeType)
insert edge type in container
GNEEdge * retrieveEdge(const std::string &id, bool hardFail=true) const
get edge by id
const std::unordered_map< const GUIGlObject *, GNELane * > & getLanes() const
get lanes
const std::unordered_map< const GNEAttributeCarrier *, GNEDataInterval * > & getDataIntervals() const
get all data intervals of network
int getNumberOfSelectedEdgeTAZRel() const
get number of selected edge TAZ Rels
std::vector< GNEGenericData * > getSelectedGenericDatas() const
get selected generic datas
void deleteLane(GNELane *lane)
delete lane from container
void clearEdges()
clear edges
void insertJunction(GNEJunction *junction)
insert junction in container
std::vector< GNEEdge * > getSelectedEdges() const
return all edges
int getNumberOfNetworkElements() const
functions related with number of elements sorted by categories
const std::map< std::string, GNEJunction * > & getJunctions() const
get junctions
int getNumberOfSelectedEdges() const
get number of selected edges
const std::map< std::string, GNEEdgeType * > & getEdgeTypes() const
map with the ID and pointer to edgeTypes of net
void clearMeanDatas()
clear meanDatas
std::unordered_map< const GUIGlObject *, GNELane * > myLanes
map with lanes
GNEDemandElement * retrieveDemandElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named demand element.
std::vector< GNEConnection * > getSelectedConnections() const
get selected connections
std::unordered_map< SumoXMLTag, std::unordered_map< const GUIGlObject *, GNEDemandElement * >, std::hash< int > > myDemandElements
map with the tag and pointer to demand elements elements of net
void clearJunctions()
clear junctions
const std::unordered_map< const GUIGlObject *, GNEWalkingArea * > & getWalkingAreas() const
get walkingAreas
std::unordered_map< const GNEAttributeCarrier *, GNEDataInterval * > myDataIntervals
map with all data intervals of network
void deleteCrossing(GNECrossing *crossing)
delete crossing from container
std::unordered_map< const GUIGlObject *, GNEWalkingArea * > myWalkingAreas
set with walkingAreas
int myStopIndex
stop index
GNEDemandElement * getDefaultType() const
get default type
const std::unordered_map< SumoXMLTag, std::unordered_map< const GUIGlObject *, GNEAdditional * >, std::hash< int > > & getAdditionals() const
get additionals
std::map< std::string, GNEEdge * > myEdges
map with the ID and pointer to edges of net
std::vector< std::string > getPOIParamKeys() const
return list of available POI parameters
GNEGenericData * retrieveGenericData(const GUIGlObject *glObject, bool hardFail=true) const
Returns the generic data.
std::vector< GNEAttributeCarrier * > getSelectedAttributeCarriers(const bool ignoreCurrentSupermode)
get all selected attribute carriers (or only relative to current supermode
int getNumberOfSelectedStops() const
get number of selected stops
std::string generateEdgeTypeID() const
generate edgeType id
void deleteDataInterval(GNEDataInterval *dataInterval)
delete data interval of container
GNEConnection * retrieveConnection(const std::string &id, bool hardFail=true) const
get Connection by id
std::unordered_map< const GUIGlObject *, GNECrossing * > myCrossings
set with crossings
int myNumberOfMeanDataElements
number of mean data elemements inserted in AttributeCarriers
void deleteTAZSourceSink(GNETAZSourceSink *sourceSink)
delete sourceSink element of container
int getNumberOfSelectedContainers() const
get number of selected containers
std::string generateDataSetID() const
generate data set id
int getNumberOfTAZSourceSinks() const
get number of TAZSourceSinks
std::string undoName() const
undo name
NBEdge * myBy
replaced by NBEdge
NBTrafficLightLogicCont & myTllcont
container for traffic light logic
GNEChange_ReplaceEdgeInTLS(NBTrafficLightLogicCont &tllcont, NBEdge *replaced, NBEdge *by)
constructor
~GNEChange_ReplaceEdgeInTLS()
destructor
std::string redoName() const
get Redo name
NBEdge * myReplaced
replaced NBEdge
bool trueChange()
wether original and new value differ
std::vector< std::string > myDemandElementsSavingFiles
vector with demand elements saving files
bool existMeanDataFilename(const std::string &file) const
check if the given meanData file was already registered
ACsbyFilename getMeanDatasByFilename()
get meanDatas sorted by filenames (and also clear unused filenames)
std::string parsingSavingFiles(const std::vector< std::string > &savingFiles) const
parsing saving files
const std::vector< std::string > & getAdditionalFilenames() const
get vector with additional elements saving files (starting with default)
std::vector< std::string > myDataElementsSavingFiles
vector with data elements saving files
void addDataFilename(const GNEAttributeCarrier *dataElement)
data elements
std::vector< std::string > myAdditionalElementsSavingFiles
vector with additional elements saving files
void updateMeanDataEmptyFilenames(const std::string &file)
update meanData elements with empty filenames with the given file
void addMeanDataFilename(const GNEAttributeCarrier *meanDataElement)
meanData elements
ACsbyFilename getDatasByFilename()
get datas sorted by filenames (and also clear unused filenames)
void updateAdditionalEmptyFilenames(const std::string &file)
update additional elements with empty filenames with the given file
const std::vector< std::string > & getDemandFilenames() const
get vector with demand elements saving files (starting with default)
bool existAdditionalFilename(const std::string &file) const
check if the given additional file was already registered
void updateDataEmptyFilenames(const std::string &file)
update data elements with empty filenames with the given file
std::vector< std::string > myMeanDataElementsSavingFiles
vector with mean data elements saving files
bool existDataFilename(const std::string &file) const
check if the given data file was already registered
void updateNeteditConfig()
update netedit config
ACsbyFilename getAdditionalsByFilename()
get additionals sorted by filenames (and also clear unused filenames)
ACsbyFilename getDemandsByFilename()
get demands sorted by filenames (and also clear unused filenames)
void updateDemandEmptyFilenames(const std::string &file)
update demand elements with empty filenames with the given file
const std::vector< std::string > & getMeanDataFilenames() const
get vector with meanData elements saving files (starting with default)
const std::vector< std::string > & getDataFilenames() const
get vector with data elements saving files (starting with default)
std::map< std::string, std::unordered_set< const GNEAttributeCarrier * > > ACsbyFilename
typedef used for group ACs by filename
GNENet * myNet
pointer to net
void addDemandFilename(const GNEAttributeCarrier *demandElement)
demand elements
SavingFilesHandler()=delete
Invalidated default constructor.
bool existDemandFilename(const std::string &file) const
check if the given demand file was already registered
void addAdditionalFilename(const GNEAttributeCarrier *additionalElement)
additional elements
void requireSaveTLS()
inform that TLS has to be saved
GNEDialog::Result askSaveMeanDataElements(GNEDialog::Result &commonResult) const
warns about unsaved changes in meanData elements and gives the user the option to abort
void dataElementsSaved()
mark demand elements as saved
bool isEdgeTypeSaved() const
check if edgeType are saved
bool myNetworkSaved
flag for network saved
GNEDialog::Result askSaveDemandElements(GNEDialog::Result &commonResult) const
warns about unsaved changes in demand elements and gives the user the option to abort
void requireSaveNetwork()
inform that network has to be saved
void requireSaveEdgeType()
inform that edgeType has to be saved
bool isTLSSaved() const
check if TLS are saved
void demandElementsSaved()
mark demand elements as saved
bool myAdditionalSaved
flag for additional elements saved
bool myTLSSaved
flag for TLS saved
bool myNeteditConfigSaved
flag for netedit config saved
bool myDataElementSaved
flag for data elements saved
void SumoConfigSaved()
mark SumoConfig as saved
bool myEdgeTypeSaved
flag for edgeType saved
void additionalsSaved()
mark additionals as saved
void requireSaveNeteditConfig()
inform that netedit config has to be saved
void requireSaveSumoConfig()
inform that SumoConfig has to be saved
bool mySumoConfigSaved
flag for SumoConfigSumoConfig saved
void TLSSaved()
mark TLS as saved
bool myMeanDataElementSaved
flag for meanData elements saved
bool isSumoConfigSaved() const
check if SumoConfig is saved
void neteditConfigSaved()
mark netedit config as saved
void requireSaveMeanDatas()
inform that mean data elements has to be saved
void meanDatasSaved()
mark mean data elements as saved
bool isDemandElementsSaved() const
check if demand elements are saved
GNEDialog::Result askSaveAdditionalElements(GNEDialog::Result &commonResult) const
warns about unsaved changes in additionals and gives the user the option to abort
void requireSaveAdditionals()
inform that additionals has to be saved
bool myDemandElementSaved
flag for demand elements saved
bool isDataElementsSaved() const
check if data elements are saved
bool isNetworkSaved() const
check if network is saved
bool isMeanDatasSaved() const
check if mean data elements are saved
void requireSaveDataElements()
inform that data elements has to be saved
bool isNeteditConfigSaved() const
check if netedit config is saved
GNENet * myNet
pointer to net
void networkSaved()
mark network as saved
GNEDialog::Result askSaveNetwork(GNEDialog::Result &commonResult) const
warns about unsaved changes in network and gives the user the option to abort
bool isAdditionalsSaved() const
check if additionals are saved
SavingStatus()=delete
invalidate default constructor
void requireSaveDemandElements()
inform that demand elements has to be saved
void edgeTypeSaved()
mark edgeType as saved
GNEDialog::Result askSaveDataElements(GNEDialog::Result &commonResult) const
warns about unsaved changes in data elements and gives the user the option to abort
A NBNetBuilder extended by visualisation and editing capabilities.
GUIGlObject * getGUIGlObject() override
get GUIGlObject associated with this AttributeCarrier
void setNetworkElementID(const std::string &newID)
set network element id
virtual void computePathElement()=0
implement in children+
void decRef(const std::string &debugMsg="")
Decrease reference.
void incRef(const std::string &debugMsg="")
Increase reference.
bool isContainer() const
return true if tag correspond to a container element
bool isNetworkElement() const
network elements
bool isDataElement() const
return true if tag correspond to a data element
bool isType() const
demand elements
bool isRoute() const
return true if tag correspond to a route element
const std::vector< const GNETagProperties * > & getHierarchicalChildren() const
get children of this tag property
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
bool isDemandElement() const
return true if tag correspond to a demand element
bool isAdditionalElement() const
return true if tag correspond to an additional element (note: this include TAZ, shapes and wires)
bool hasAttribute(SumoXMLAttr attr) const
check if current TagProperties owns the attribute "attr"
bool isPerson() const
return true if tag correspond to a person element
const PositionVector & getShape() const
The shape of the additional element.
const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
virtual void setMicrosimID(const std::string &newID)
Changes the microsimID of the object.
static GUIGlObjectStorage gIDStorage
A single static instance of this class.
The representation of a single edge during network building.
NBNode * getToNode() const
Returns the destination node of the edge.
const std::string & getID() const
NBNode * getFromNode() const
Returns the origin node of the edge.
void addIncomingEdge(NBEdge *edge)
adds an incoming edge
Position getCenter() const
Returns a position that is guaranteed to lie within the node shape.
int buildCrossings()
build pedestrian crossings
void addOutgoingEdge(NBEdge *edge)
adds an outgoing edge
const Position & getPosition() const
const PositionVector & getShape() const
retrieve the junction shape
A container for traffic light definitions and built programs.
const std::string & getID() const
Returns the id.
static const std::vector< SumoXMLTag > types
type namespace
static const std::vector< SumoXMLTag > busStops
busStops namespace
static const std::vector< SumoXMLTag > vehicles
vehicles namespace
static const std::vector< SumoXMLTag > laneAreaDetectors
lane area detectors namespace
static const std::vector< SumoXMLTag > POIs
POIs namespace.
static const std::vector< SumoXMLTag > routes
route namespace
static const std::vector< SumoXMLTag > persons
persons namespace
static const std::vector< SumoXMLTag > calibrators
calibrators namespace
static const std::vector< SumoXMLTag > polygons
polygon namespace
static const std::vector< SumoXMLTag > containers
containers namespace
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String).
static OptionsCont & getOptions()
Retrieves the options.
C++ TraCI client API implementation.
double z() const
Returns the z-position.
long long int parametersSet
Information for the router which parameter were set.
static std::string getEdgeIDFromLane(const std::string laneID)
return edge id when given the lane ID
A simple triangle defined in 3D.
bool isPositionWithin(const Position &pos) const
check if the given position is within this triangle
bool intersectWithShape(const PositionVector &shape) const
check if the given shape is within or intersect with this triangle