43std::pair<SumoXMLTag, GUIIcon>
49 }
else if (!planParameters.
toRoute.empty()) {
51 }
else if (!planParameters.
fromEdge.empty()) {
52 if (!planParameters.
toEdge.empty()) {
54 }
else if (!planParameters.
toTAZ.empty()) {
56 }
else if (!planParameters.
toJunction.empty()) {
58 }
else if (!planParameters.
toBusStop.empty()) {
71 }
else if (!planParameters.
fromTAZ.empty()) {
72 if (!planParameters.
toEdge.empty()) {
74 }
else if (!planParameters.
toTAZ.empty()) {
76 }
else if (!planParameters.
toJunction.empty()) {
78 }
else if (!planParameters.
toBusStop.empty()) {
92 if (!planParameters.
toEdge.empty()) {
94 }
else if (!planParameters.
toTAZ.empty()) {
96 }
else if (!planParameters.
toJunction.empty()) {
98 }
else if (!planParameters.
toBusStop.empty()) {
112 if (!planParameters.
toEdge.empty()) {
114 }
else if (!planParameters.
toTAZ.empty()) {
116 }
else if (!planParameters.
toJunction.empty()) {
118 }
else if (!planParameters.
toBusStop.empty()) {
132 if (!planParameters.
toEdge.empty()) {
134 }
else if (!planParameters.
toTAZ.empty()) {
136 }
else if (!planParameters.
toJunction.empty()) {
138 }
else if (!planParameters.
toBusStop.empty()) {
152 if (!planParameters.
toEdge.empty()) {
154 }
else if (!planParameters.
toTAZ.empty()) {
156 }
else if (!planParameters.
toJunction.empty()) {
158 }
else if (!planParameters.
toBusStop.empty()) {
172 if (!planParameters.
toEdge.empty()) {
174 }
else if (!planParameters.
toTAZ.empty()) {
176 }
else if (!planParameters.
toJunction.empty()) {
178 }
else if (!planParameters.
toBusStop.empty()) {
192 if (!planParameters.
toEdge.empty()) {
194 }
else if (!planParameters.
toTAZ.empty()) {
196 }
else if (!planParameters.
toJunction.empty()) {
198 }
else if (!planParameters.
toBusStop.empty()) {
217std::pair<SumoXMLTag, GUIIcon>
221 }
else if (!planParameters.
fromEdge.empty()) {
222 if (!planParameters.
toEdge.empty()) {
224 }
else if (!planParameters.
toTAZ.empty()) {
226 }
else if (!planParameters.
toJunction.empty()) {
228 }
else if (!planParameters.
toBusStop.empty()) {
241 }
else if (!planParameters.
fromTAZ.empty()) {
242 if (!planParameters.
toEdge.empty()) {
244 }
else if (!planParameters.
toTAZ.empty()) {
246 }
else if (!planParameters.
toJunction.empty()) {
248 }
else if (!planParameters.
toBusStop.empty()) {
262 if (!planParameters.
toEdge.empty()) {
264 }
else if (!planParameters.
toTAZ.empty()) {
266 }
else if (!planParameters.
toJunction.empty()) {
268 }
else if (!planParameters.
toBusStop.empty()) {
282 if (!planParameters.
toEdge.empty()) {
284 }
else if (!planParameters.
toTAZ.empty()) {
286 }
else if (!planParameters.
toJunction.empty()) {
288 }
else if (!planParameters.
toBusStop.empty()) {
302 if (!planParameters.
toEdge.empty()) {
304 }
else if (!planParameters.
toTAZ.empty()) {
306 }
else if (!planParameters.
toJunction.empty()) {
308 }
else if (!planParameters.
toBusStop.empty()) {
322 if (!planParameters.
toEdge.empty()) {
324 }
else if (!planParameters.
toTAZ.empty()) {
326 }
else if (!planParameters.
toJunction.empty()) {
328 }
else if (!planParameters.
toBusStop.empty()) {
342 if (!planParameters.
toEdge.empty()) {
344 }
else if (!planParameters.
toTAZ.empty()) {
346 }
else if (!planParameters.
toJunction.empty()) {
348 }
else if (!planParameters.
toBusStop.empty()) {
362 if (!planParameters.
toEdge.empty()) {
364 }
else if (!planParameters.
toTAZ.empty()) {
366 }
else if (!planParameters.
toJunction.empty()) {
368 }
else if (!planParameters.
toBusStop.empty()) {
387std::pair<SumoXMLTag, GUIIcon>
391 }
else if (!planParameters.
fromEdge.empty()) {
392 if (!planParameters.
toEdge.empty()) {
394 }
else if (!planParameters.
toTAZ.empty()) {
396 }
else if (!planParameters.
toJunction.empty()) {
398 }
else if (!planParameters.
toBusStop.empty()) {
411 }
else if (!planParameters.
fromTAZ.empty()) {
412 if (!planParameters.
toEdge.empty()) {
414 }
else if (!planParameters.
toTAZ.empty()) {
416 }
else if (!planParameters.
toJunction.empty()) {
418 }
else if (!planParameters.
toBusStop.empty()) {
432 if (!planParameters.
toEdge.empty()) {
434 }
else if (!planParameters.
toTAZ.empty()) {
436 }
else if (!planParameters.
toJunction.empty()) {
438 }
else if (!planParameters.
toBusStop.empty()) {
452 if (!planParameters.
toEdge.empty()) {
454 }
else if (!planParameters.
toTAZ.empty()) {
456 }
else if (!planParameters.
toJunction.empty()) {
458 }
else if (!planParameters.
toBusStop.empty()) {
472 if (!planParameters.
toEdge.empty()) {
474 }
else if (!planParameters.
toTAZ.empty()) {
476 }
else if (!planParameters.
toJunction.empty()) {
478 }
else if (!planParameters.
toBusStop.empty()) {
492 if (!planParameters.
toEdge.empty()) {
494 }
else if (!planParameters.
toTAZ.empty()) {
496 }
else if (!planParameters.
toJunction.empty()) {
498 }
else if (!planParameters.
toBusStop.empty()) {
512 if (!planParameters.
toEdge.empty()) {
514 }
else if (!planParameters.
toTAZ.empty()) {
516 }
else if (!planParameters.
toJunction.empty()) {
518 }
else if (!planParameters.
toBusStop.empty()) {
532 if (!planParameters.
toEdge.empty()) {
534 }
else if (!planParameters.
toTAZ.empty()) {
536 }
else if (!planParameters.
toJunction.empty()) {
538 }
else if (!planParameters.
toBusStop.empty()) {
557std::pair<SumoXMLTag, GUIIcon>
561 }
else if (!planParameters.
fromEdge.empty()) {
562 if (!planParameters.
toEdge.empty()) {
564 }
else if (!planParameters.
toTAZ.empty()) {
566 }
else if (!planParameters.
toJunction.empty()) {
568 }
else if (!planParameters.
toBusStop.empty()) {
581 }
else if (!planParameters.
fromTAZ.empty()) {
582 if (!planParameters.
toEdge.empty()) {
584 }
else if (!planParameters.
toTAZ.empty()) {
586 }
else if (!planParameters.
toJunction.empty()) {
588 }
else if (!planParameters.
toBusStop.empty()) {
602 if (!planParameters.
toEdge.empty()) {
604 }
else if (!planParameters.
toTAZ.empty()) {
606 }
else if (!planParameters.
toJunction.empty()) {
608 }
else if (!planParameters.
toBusStop.empty()) {
622 if (!planParameters.
toEdge.empty()) {
624 }
else if (!planParameters.
toTAZ.empty()) {
626 }
else if (!planParameters.
toJunction.empty()) {
628 }
else if (!planParameters.
toBusStop.empty()) {
642 if (!planParameters.
toEdge.empty()) {
644 }
else if (!planParameters.
toTAZ.empty()) {
646 }
else if (!planParameters.
toJunction.empty()) {
648 }
else if (!planParameters.
toBusStop.empty()) {
662 if (!planParameters.
toEdge.empty()) {
664 }
else if (!planParameters.
toTAZ.empty()) {
666 }
else if (!planParameters.
toJunction.empty()) {
668 }
else if (!planParameters.
toBusStop.empty()) {
682 if (!planParameters.
toEdge.empty()) {
684 }
else if (!planParameters.
toTAZ.empty()) {
686 }
else if (!planParameters.
toJunction.empty()) {
688 }
else if (!planParameters.
toBusStop.empty()) {
702 if (!planParameters.
toEdge.empty()) {
704 }
else if (!planParameters.
toTAZ.empty()) {
706 }
else if (!planParameters.
toJunction.empty()) {
708 }
else if (!planParameters.
toBusStop.empty()) {
727std::pair<SumoXMLTag, GUIIcon>
733 }
else if (!planParameters.
fromEdge.empty()) {
734 if (!planParameters.
toEdge.empty()) {
736 }
else if (!planParameters.
toTAZ.empty()) {
738 }
else if (!planParameters.
toJunction.empty()) {
740 }
else if (!planParameters.
toBusStop.empty()) {
753 }
else if (!planParameters.
fromTAZ.empty()) {
754 if (!planParameters.
toEdge.empty()) {
756 }
else if (!planParameters.
toTAZ.empty()) {
758 }
else if (!planParameters.
toJunction.empty()) {
760 }
else if (!planParameters.
toBusStop.empty()) {
774 if (!planParameters.
toEdge.empty()) {
776 }
else if (!planParameters.
toTAZ.empty()) {
778 }
else if (!planParameters.
toJunction.empty()) {
780 }
else if (!planParameters.
toBusStop.empty()) {
794 if (!planParameters.
toEdge.empty()) {
796 }
else if (!planParameters.
toTAZ.empty()) {
798 }
else if (!planParameters.
toJunction.empty()) {
800 }
else if (!planParameters.
toBusStop.empty()) {
814 if (!planParameters.
toEdge.empty()) {
816 }
else if (!planParameters.
toTAZ.empty()) {
818 }
else if (!planParameters.
toJunction.empty()) {
820 }
else if (!planParameters.
toBusStop.empty()) {
834 if (!planParameters.
toEdge.empty()) {
836 }
else if (!planParameters.
toTAZ.empty()) {
838 }
else if (!planParameters.
toJunction.empty()) {
840 }
else if (!planParameters.
toBusStop.empty()) {
854 if (!planParameters.
toEdge.empty()) {
856 }
else if (!planParameters.
toTAZ.empty()) {
858 }
else if (!planParameters.
toJunction.empty()) {
860 }
else if (!planParameters.
toBusStop.empty()) {
874 if (!planParameters.
toEdge.empty()) {
876 }
else if (!planParameters.
toTAZ.empty()) {
878 }
else if (!planParameters.
toJunction.empty()) {
880 }
else if (!planParameters.
toBusStop.empty()) {
899std::pair<SumoXMLTag, GUIIcon>
901 if (!planParameters.
toEdge.empty()) {
903 }
else if (!planParameters.
toBusStop.empty()) {
919std::pair<SumoXMLTag, GUIIcon>
921 if (!planParameters.
toEdge.empty()) {
923 }
else if (!planParameters.
toBusStop.empty()) {
940 myDepartPosition(departPosition),
941 myArrivalPosition(arrivalPosition),
942 myPlanElement(planElement) {
953 if (tagProperty.planToEdge() || tagProperty.planConsecutiveEdges() || tagProperty.planEdge()) {
976 if (tagProperty.planConsecutiveEdges()) {
978 }
else if (tagProperty.planRoute()) {
980 }
else if (tagProperty.planEdge()) {
982 }
else if (tagProperty.planBusStop()) {
984 }
else if (tagProperty.planTrainStop()) {
986 }
else if (tagProperty.planContainerStop()) {
988 }
else if (tagProperty.planChargingStation()) {
990 }
else if (tagProperty.planParkingArea()) {
996 if (tagProperty.planFromEdge()) {
998 }
else if (tagProperty.planFromTAZ()) {
1000 }
else if (tagProperty.planFromJunction()) {
1006 if (tagProperty.planToEdge()) {
1008 }
else if (tagProperty.planToJunction()) {
1010 }
else if (tagProperty.planToTAZ()) {
1012 }
else if (tagProperty.planToBusStop()) {
1014 }
else if (tagProperty.planToTrainStop()) {
1016 }
else if (tagProperty.planToContainerStop()) {
1018 }
else if (tagProperty.planToChargingStation()) {
1020 }
else if (tagProperty.planToParkingArea()) {
1043 if (tagProperty.planFromStoppingPlace()
1047 if (tagProperty.planFromBusStop()) {
1049 }
else if (tagProperty.planFromTrainStop()) {
1051 }
else if (tagProperty.planFromContainerStop()) {
1053 }
else if (tagProperty.planFromChargingStation()) {
1055 }
else if (tagProperty.planFromParkingArea()) {
1075 new FXMenuSeparator(ret);
1091 if (tagProperty.planRoute()) {
1094 }
else if (tagProperty.planConsecutiveEdges() || tagProperty.planFromEdge() || tagProperty.planEdge()) {
1097 }
else if (tagProperty.planStoppingPlace() || tagProperty.planFromStoppingPlace() || tagProperty.planToStoppingPlace()) {
1114 if (tagProperty.planRoute()) {
1117 }
else if (tagProperty.planConsecutiveEdges() || tagProperty.planToEdge() || tagProperty.planEdge()) {
1120 }
else if (tagProperty.planStoppingPlace() || tagProperty.planFromStoppingPlace() || tagProperty.planToStoppingPlace()) {
1139 if (tagProperty.planRoute()) {
1142 }
else if (tagProperty.planConsecutiveEdges()) {
1195 if (firstLane && lastLane) {
1196 pathManager->calculatePath(
myPlanElement, vClass, firstLane, lastLane);
1197 }
else if (firstLane) {
1198 pathManager->calculateConsecutivePathLanes(
myPlanElement, {firstLane});
1199 }
else if (lastLane) {
1200 pathManager->calculateConsecutivePathLanes(
myPlanElement, {lastLane});
1213 if (tagProperty.planFromTAZ() || tagProperty.planToTAZ()) {
1218 if (tagProperty.planFromEdge()) {
1221 }
else if (tagProperty.planFromJunction()) {
1224 }
else if (tagProperty.planFromStoppingPlace()) {
1227 }
else if (tagProperty.planFromTAZ()) {
1236 if (tagProperty.planToEdge()) {
1239 }
else if (tagProperty.planToJunction()) {
1242 }
else if (tagProperty.planToStoppingPlace()) {
1245 }
else if (tagProperty.planToTAZ()) {
1264 demandElement->updateGeometry();
1296 if (additional->getTagProperty().getTag() ==
SUMO_TAG_TAZ) {
1322 if (tagProperty.planRoute()) {
1325 }
else if (tagProperty.isPlanStop()) {
1327 }
else if (tagProperty.planFromEdge() || tagProperty.planConsecutiveEdges() || tagProperty.planEdge()) {
1330 }
else if (tagProperty.planFromJunction()) {
1333 }
else if (tagProperty.planStoppingPlace() || tagProperty.planFromStoppingPlace()) {
1336 }
else if (tagProperty.planFromTAZ()) {
1421 if (tagProperty.planStoppingPlace()) {
1424 }
else if (tagProperty.planFromStoppingPlace()) {
1427 }
else if (tagProperty.planFromTAZ()) {
1429 }
else if (tagProperty.planFromJunction()) {
1433 const auto previousPlan = planParent->getPreviousChildDemandElement(
myPlanElement);
1439 if (posOverLane == -1) {
1453 if (tagProperty.planStoppingPlace()) {
1456 }
else if (tagProperty.planToStoppingPlace()) {
1459 }
else if (tagProperty.planToJunction() || tagProperty.planToTAZ()) {
1462 }
else if ((tagProperty.isPlanStopPerson() || tagProperty.isPlanStopContainer()) && tagProperty.planEdge()) {
1467 const auto nextPlan = planParent->getNextChildDemandElement(
myPlanElement);
1468 if (nextPlan && (nextPlan->getTagProperty().isPlanStopPerson() ||
1469 nextPlan->getTagProperty().isPlanStopContainer()) &&
1470 nextPlan->getTagProperty().planEdge()) {
1499 const auto previousPlan = planParent->getPreviousChildDemandElement(
myPlanElement);
1500 if (previousPlan && previousPlan->getTagProperty().isPlanStop() && previousPlan->getTagProperty().planStoppingPlace()) {
1501 return previousPlan->getParentStoppingPlaces().front()->getAdditionalGeometry().getShape().back();
1504 if (tagProperty.planStoppingPlace()) {
1506 }
else if (tagProperty.planFromStoppingPlace()) {
1508 }
else if (tagProperty.planFromJunction()) {
1511 }
else if (tagProperty.planFromTAZ()) {
1517 }
else if (tagProperty.planConsecutiveEdges() || tagProperty.planRoute() || tagProperty.planFromEdge()) {
1521 if (firstLane ==
nullptr) {
1525 double lanePosition = 0;
1535 const auto& laneShape = firstLane->getLaneShape();
1537 if (lanePosition <= 0) {
1538 return laneShape.front();
1539 }
else if (lanePosition >= laneShape.length2D()) {
1540 return laneShape.back();
1542 return laneShape.positionAtOffset2D(lanePosition);
1550 if (tagProperty.planToJunction()) {
1553 }
else if (tagProperty.planStoppingPlace()) {
1556 }
else if (tagProperty.planToStoppingPlace()) {
1559 }
else if (tagProperty.planToTAZ()) {
1566 }
else if (tagProperty.planConsecutiveEdges() || tagProperty.planRoute() || tagProperty.planFromEdge()) {
1568 const auto nextPlan = planParent->getNextChildDemandElement(
myPlanElement);
1572 if (lastLane ==
nullptr) {
1576 const auto& laneShape = lastLane->getLaneShape();
1578 if (nextPlan && nextPlan->getTagProperty().isPlanStop()) {
1581 return laneShape.front();
1583 return laneShape.back();
1624 if (value.empty()) {
1626 }
else if (GNEAttributeCarrier::canParse<double>(value)) {
1627 return GNEAttributeCarrier::parse<double>(value) >= 0;
1632 return GNEAttributeCarrier::canParse<double>(value);
1634 return GNEAttributeCarrier::canParse<bool>(value);
1692 if (value.empty()) {
1700 if (value.empty()) {
1707 if (GNEAttributeCarrier::parse<bool>(value)) {
1732 while (tagProperty.getTagStr().at(index) !=
':') {
1733 result.push_back(tagProperty.getTagStr().at(index));
1738 if (tagProperty.planConsecutiveEdges()) {
1741 }
else if (tagProperty.planRoute()) {
1744 }
else if (tagProperty.planEdge()) {
1747 }
else if (tagProperty.planStoppingPlace()) {
1752 if (tagProperty.planFromStoppingPlace()) {
1756 if (tagProperty.planFromTAZ()) {
1760 if (tagProperty.planFromJunction()) {
1764 if (tagProperty.planFromEdge()) {
1770 if (tagProperty.planToStoppingPlace()) {
1774 if (tagProperty.planToTAZ()) {
1778 if (tagProperty.planToJunction()) {
1782 if (tagProperty.planToEdge()) {
1795 if (viewNet->getEditModes().isCurrentSupermodeNetwork() &&
1796 viewNet->getNetworkViewOptions().showDemandElements() &&
1797 viewNet->getDemandViewOptions().showAllPersonPlans()) {
1800 }
else if (viewNet->getEditModes().isCurrentSupermodeDemand() &&
1801 viewNet->getDemandViewOptions().showAllPersonPlans()) {
1815 if (inspectedElements.getFirstAC() && inspectedElements.getFirstAC()->getTagProperty().isPlanPerson() &&
1832 if (viewNet->getEditModes().isCurrentSupermodeNetwork() &&
1833 viewNet->getNetworkViewOptions().showDemandElements() &&
1834 viewNet->getDemandViewOptions().showAllContainerPlans()) {
1837 }
else if (viewNet->getEditModes().isCurrentSupermodeDemand() &&
1838 viewNet->getDemandViewOptions().showAllContainerPlans()) {
1852 if (inspectedElements.getFirstAC() && inspectedElements.getFirstAC()->getTagProperty().isPlanContainer() &&
1875 if (drawPlan && (planGeometry.getShape().size() > 0)) {
1886 if (tagProperty.isPlanRide()) {
1888 }
else if (tagProperty.isPlanPersonTrip()) {
1902 if (drawHalfWidth) {
1913 myPlanContour.
calculateContourExtrudedShape(s, d,
myPlanElement, planGeometry.getShape(),
myPlanElement->
getType(), pathWidth * 2, 1,
true,
true, 0,
nullptr);
1926 const double offsetFront,
const double planWidth,
const RGBColor& planColor,
const RGBColor& planSelectedColor)
const {
1945 if (tagProperty.planFromTAZ()) {
1951 }
else if (tagProperty.planToTAZ()) {
1984 const double endPosRadius =
getEndPosRadius(s, segment, drawHalfWidth);
2012 segment->
getContour()->
calculateContourExtrudedShape(s, d,
myPlanElement, shape,
myPlanElement->
getType(), drawingWidth, 1,
true,
false, 0, segment);
2014 segment->
getContour()->
calculateContourExtrudedShape(s, d,
myPlanElement, shape,
myPlanElement->
getType(), drawingWidth, 1,
false,
false, 0, segment);
2018 segment->
getContour()->
calculateContourExtrudedShape(s, d,
myPlanElement, shape,
myPlanElement->
getType(), drawingWidth, 1,
false,
false, 0, segment);
2034 const double offsetFront,
const double planWidth,
const RGBColor& planColor,
const RGBColor& planSelectedColor)
const {
2094 segment->
getContour()->
calculateContourExtrudedShape(s, d,
myPlanElement, shape,
myPlanElement->
getType(), pathWidthDouble, 1,
false,
false, 0, segment);
2121 const auto previousLastLane = previousPlan->getLastPathLane();
2125 if (previousLastLane && firstLane && (previousLastLane->getParentEdge() != firstLane->getParentEdge())) {
2134 const auto nextFirstLane = nextPlan->getFirstPathLane();
2138 if (nextFirstLane && lastLane && (nextFirstLane->getParentEdge() != lastLane->getParentEdge())) {
2154 const auto previousLastLane = previousPlan->getLastPathLane();
2158 if (previousLastLane && firstLane && (previousLastLane->getParentEdge() != firstLane->getParentEdge())) {
2159 return TLF(
"Edge '%' is not consecutive with edge '%'", previousLastLane->getParentEdge()->getID(), firstLane->getParentEdge()->getID());
2167 const auto nextFirstLane = nextPlan->getFirstPathLane();
2171 if (nextFirstLane && lastLane && (nextFirstLane->getParentEdge() != lastLane->getParentEdge())) {
2172 return TLF(
"Edge '%' is not consecutive with edge '%'", nextFirstLane->getParentEdge()->getID(), lastLane->getParentEdge()->getID());
2177 return "undefined problem";
2205 glTranslated(0, 0, 4);
2225 glTranslated(0, 0, 4);
2242 glTranslated(geometryEndPos.
x(), geometryEndPos.
y(), 4);
2253 std::vector<SumoXMLTag> tags;
2262 for (
const auto& tag : tags) {
@ MID_COPY_TYPED_NAME
Copy typed object name - popup entry.
@ MID_COPY_NAME
Copy object name - popup entry.
@ GLO_TAZ
Traffic Assignment Zones (TAZs)
GUIViewObjectsHandler gViewObjectsHandler
@ TRANSHIP_CHARGINGSTATION
@ TRANSPORT_CONTAINERSTOP
@ PERSONTRIP_CHARGINGSTATION
@ PERSONTRIP_CONTAINERSTOP
@ TRANSPORT_CHARGINGSTATION
@ GNE_TAG_RIDE_CHARGINGSTATION_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_TAZ_TAZ
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_TRAINSTOP
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_BUSSTOP
@ GNE_TAG_TRANSHIP_PARKINGAREA_BUSSTOP
@ GNE_TAG_TRANSPORT_TAZ_CONTAINERSTOP
@ GNE_TAG_TRANSHIP_PARKINGAREA_CHARGINGSTATION
@ GNE_TAG_WALK_BUSSTOP_BUSSTOP
@ GNE_TAG_TRANSPORT_JUNCTION_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_JUNCTION_EDGE
@ GNE_TAG_PERSONTRIP_EDGE_EDGE
@ GNE_TAG_PERSONTRIP_TAZ_EDGE
@ GNE_TAG_TRANSHIP_JUNCTION_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_EDGE_CONTAINERSTOP
@ GNE_TAG_WALK_PARKINGAREA_CHARGINGSTATION
@ GNE_TAG_WALK_CHARGINGSTATION_JUNCTION
@ GNE_TAG_RIDE_CHARGINGSTATION_TAZ
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_TAZ
@ GNE_TAG_RIDE_CONTAINERSTOP_BUSSTOP
@ GNE_TAG_TRANSPORT_BUSSTOP_JUNCTION
@ GNE_TAG_RIDE_BUSSTOP_BUSSTOP
@ GNE_TAG_WALK_PARKINGAREA_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_TAZ_CONTAINERSTOP
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_BUSSTOP
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_TRAINSTOP
@ GNE_TAG_PERSONTRIP_EDGE_JUNCTION
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_JUNCTION
@ GNE_TAG_TRANSHIP_TRAINSTOP_CHARGINGSTATION
@ GNE_TAG_RIDE_CONTAINERSTOP_CONTAINERSTOP
@ GNE_TAG_TRANSHIP_TRAINSTOP_EDGE
@ GNE_TAG_WALK_TAZ_BUSSTOP
@ GNE_TAG_PERSONTRIP_EDGE_PARKINGAREA
@ GNE_TAG_PERSONTRIP_TRAINSTOP_EDGE
@ GNE_TAG_PERSONTRIP_TRAINSTOP_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_PARKINGAREA_TRAINSTOP
@ GNE_TAG_STOPCONTAINER_TRAINSTOP
@ GNE_TAG_RIDE_JUNCTION_BUSSTOP
@ GNE_TAG_RIDE_PARKINGAREA_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_PARKINGAREA
@ GNE_TAG_PERSONTRIP_TRAINSTOP_PARKINGAREA
@ GNE_TAG_TRANSPORT_TAZ_PARKINGAREA
@ GNE_TAG_PERSONTRIP_TAZ_CHARGINGSTATION
@ GNE_TAG_RIDE_CONTAINERSTOP_EDGE
@ GNE_TAG_TRANSHIP_TAZ_EDGE
@ GNE_TAG_WALK_BUSSTOP_CHARGINGSTATION
@ GNE_TAG_PERSONTRIP_BUSSTOP_EDGE
@ GNE_TAG_WALK_TRAINSTOP_CHARGINGSTATION
@ SUMO_TAG_TAZ
a traffic assignment zone
@ GNE_TAG_WALK_PARKINGAREA_TRAINSTOP
@ GNE_TAG_WALK_PARKINGAREA_PARKINGAREA
@ GNE_TAG_TRANSPORT_EDGE_TRAINSTOP
@ GNE_TAG_WALK_BUSSTOP_TRAINSTOP
@ GNE_TAG_TRANSHIP_EDGE_CHARGINGSTATION
@ GNE_TAG_PERSONTRIP_TAZ_TRAINSTOP
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_TAZ
@ GNE_TAG_WALK_TAZ_CONTAINERSTOP
@ GNE_TAG_WALK_PARKINGAREA_JUNCTION
@ GNE_TAG_WALK_CONTAINERSTOP_EDGE
@ GNE_TAG_TRANSHIP_JUNCTION_BUSSTOP
@ GNE_TAG_PERSONTRIP_EDGE_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_EDGE_PARKINGAREA
@ GNE_TAG_TRANSPORT_TRAINSTOP_JUNCTION
@ GNE_TAG_TRANSHIP_PARKINGAREA_JUNCTION
@ GNE_TAG_TRANSHIP_BUSSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_TAZ_TRAINSTOP
@ GNE_TAG_WALK_EDGE_PARKINGAREA
@ GNE_TAG_TRANSPORT_EDGE_BUSSTOP
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_EDGE
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_PARKINGAREA
@ SUMO_TAG_NOTHING
invalid tag, must be the last one
@ GNE_TAG_WALK_PARKINGAREA_EDGE
@ GNE_TAG_TRANSHIP_EDGE_EDGE
@ GNE_TAG_RIDE_TRAINSTOP_JUNCTION
@ GNE_TAG_RIDE_TRAINSTOP_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_JUNCTION_PARKINGAREA
@ GNE_TAG_RIDE_CHARGINGSTATION_EDGE
@ GNE_TAG_RIDE_CHARGINGSTATION_CONTAINERSTOP
@ GNE_TAG_WALK_CONTAINERSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_PARKINGAREA_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_TRAINSTOP_TAZ
@ GNE_TAG_WALK_BUSSTOP_JUNCTION
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_TRAINSTOP
@ GNE_TAG_TRANSHIP_EDGE_CONTAINERSTOP
@ GNE_TAG_WALK_CONTAINERSTOP_JUNCTION
@ GNE_TAG_TRANSPORT_PARKINGAREA_PARKINGAREA
@ GNE_TAG_RIDE_EDGE_JUNCTION
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_TRAINSTOP
@ GNE_TAG_TRANSPORT_TRAINSTOP_TRAINSTOP
@ GNE_TAG_RIDE_PARKINGAREA_TAZ
@ GNE_TAG_WALK_CHARGINGSTATION_TRAINSTOP
@ GNE_TAG_PERSONTRIP_BUSSTOP_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_TRAINSTOP_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_PARKINGAREA_TAZ
@ GNE_TAG_STOPCONTAINER_EDGE
@ GNE_TAG_WALK_TRAINSTOP_TAZ
@ GNE_TAG_PERSONTRIP_PARKINGAREA_JUNCTION
@ GNE_TAG_TRANSPORT_JUNCTION_BUSSTOP
@ GNE_TAG_TRANSHIP_JUNCTION_PARKINGAREA
@ GNE_TAG_STOPCONTAINER_PARKINGAREA
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_TRAINSTOP
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_TRAINSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_PARKINGAREA_CONTAINERSTOP
@ GNE_TAG_STOPPERSON_BUSSTOP
@ GNE_TAG_TRANSPORT_BUSSTOP_CONTAINERSTOP
@ SUMO_TAG_STOP
stop for vehicles
@ GNE_TAG_PERSONTRIP_BUSSTOP_TRAINSTOP
@ GNE_TAG_RIDE_PARKINGAREA_BUSSTOP
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_TAZ
@ GNE_TAG_RIDE_TAZ_TRAINSTOP
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_EDGE
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_PARKINGAREA
@ GNE_TAG_PERSONTRIP_JUNCTION_BUSSTOP
@ GNE_TAG_TRANSHIP_BUSSTOP_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_BUSSTOP
@ GNE_TAG_TRANSPORT_PARKINGAREA_EDGE
@ GNE_TAG_PERSONTRIP_TRAINSTOP_TAZ
@ GNE_TAG_RIDE_PARKINGAREA_JUNCTION
@ GNE_TAG_TRANSHIP_PARKINGAREA_TRAINSTOP
@ GNE_TAG_RIDE_JUNCTION_JUNCTION
@ GNE_TAG_WALK_BUSSTOP_CONTAINERSTOP
@ GNE_TAG_RIDE_BUSSTOP_TAZ
@ GNE_TAG_PERSONTRIP_TAZ_PARKINGAREA
@ GNE_TAG_TRANSHIP_BUSSTOP_JUNCTION
@ GNE_TAG_RIDE_JUNCTION_PARKINGAREA
@ GNE_TAG_TRANSPORT_EDGE_TAZ
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_PARKINGAREA
@ GNE_TAG_WALK_JUNCTION_PARKINGAREA
@ GNE_TAG_TRANSHIP_EDGE_TAZ
@ GNE_TAG_RIDE_TRAINSTOP_TAZ
@ GNE_TAG_RIDE_TRAINSTOP_CHARGINGSTATION
@ GNE_TAG_WALK_CHARGINGSTATION_BUSSTOP
@ GNE_TAG_PERSONTRIP_JUNCTION_TRAINSTOP
@ GNE_TAG_RIDE_JUNCTION_TRAINSTOP
@ GNE_TAG_WALK_CONTAINERSTOP_TAZ
@ GNE_TAG_PERSONTRIP_TRAINSTOP_BUSSTOP
@ GNE_TAG_TRANSHIP_BUSSTOP_EDGE
@ GNE_TAG_TRANSHIP_TRAINSTOP_JUNCTION
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_EDGE_JUNCTION
@ GNE_TAG_PERSONTRIP_BUSSTOP_JUNCTION
@ GNE_TAG_TRANSHIP_TAZ_TRAINSTOP
@ GNE_TAG_WALK_JUNCTION_CONTAINERSTOP
@ GNE_TAG_STOPCONTAINER_CONTAINERSTOP
@ GNE_TAG_RIDE_TAZ_CONTAINERSTOP
@ GNE_TAG_RIDE_BUSSTOP_TRAINSTOP
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_EDGE
@ GNE_TAG_PERSONTRIP_EDGE_TRAINSTOP
@ GNE_TAG_RIDE_BUSSTOP_EDGE
@ GNE_TAG_RIDE_TRAINSTOP_BUSSTOP
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_TAZ
@ GNE_TAG_WALK_TRAINSTOP_EDGE
@ GNE_TAG_PERSONTRIP_PARKINGAREA_EDGE
@ GNE_TAG_TRANSPORT_BUSSTOP_CHARGINGSTATION
@ GNE_TAG_RIDE_JUNCTION_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_PARKINGAREA_TAZ
@ GNE_TAG_PERSONTRIP_PARKINGAREA_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_TRAINSTOP_TRAINSTOP
@ GNE_TAG_TRANSPORT_EDGE_EDGE
@ GNE_TAG_WALK_EDGE_TRAINSTOP
@ GNE_TAG_WALK_TAZ_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_EDGE_CONTAINERSTOP
@ GNE_TAG_STOPCONTAINER_BUSSTOP
@ GNE_TAG_WALK_JUNCTION_TAZ
@ GNE_TAG_WALK_JUNCTION_CHARGINGSTATION
@ GNE_TAG_WALK_CHARGINGSTATION_TAZ
@ GNE_TAG_PERSONTRIP_TAZ_BUSSTOP
@ GNE_TAG_RIDE_PARKINGAREA_CHARGINGSTATION
@ GNE_TAG_RIDE_BUSSTOP_JUNCTION
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_JUNCTION
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_CHARGINGSTATION
@ GNE_TAG_WALK_JUNCTION_JUNCTION
@ GNE_TAG_TRANSPORT_BUSSTOP_TAZ
@ GNE_TAG_RIDE_JUNCTION_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_PARKINGAREA_TRAINSTOP
@ GNE_TAG_TRANSHIP_PARKINGAREA_TAZ
@ GNE_TAG_TRANSHIP_PARKINGAREA_PARKINGAREA
@ GNE_TAG_WALK_CONTAINERSTOP_PARKINGAREA
@ GNE_TAG_TRANSHIP_TAZ_PARKINGAREA
@ GNE_TAG_PERSONTRIP_TAZ_TAZ
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_JUNCTION
@ GNE_TAG_TRANSHIP_TAZ_BUSSTOP
@ GNE_TAG_TRANSPORT_TAZ_EDGE
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_CHARGINGSTATION
@ GNE_TAG_RIDE_EDGE_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_TAZ_TAZ
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_EDGE
@ GNE_TAG_PERSONTRIP_EDGE_BUSSTOP
@ GNE_TAG_TRANSPORT_EDGE_JUNCTION
@ GNE_TAG_WALK_CHARGINGSTATION_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_TAZ_BUSSTOP
@ GNE_TAG_WALK_BUSSTOP_PARKINGAREA
@ GNE_TAG_WALK_CHARGINGSTATION_PARKINGAREA
@ GNE_TAG_TRANSPORT_JUNCTION_JUNCTION
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_CONTAINERSTOP
@ GNE_TAG_TRANSHIP_BUSSTOP_TRAINSTOP
@ GNE_TAG_PERSONTRIP_BUSSTOP_TAZ
@ GNE_TAG_RIDE_TAZ_PARKINGAREA
@ GNE_TAG_WALK_CONTAINERSTOP_BUSSTOP
@ GNE_TAG_RIDE_CHARGINGSTATION_PARKINGAREA
@ GNE_TAG_RIDE_CHARGINGSTATION_BUSSTOP
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_CONTAINERSTOP
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_TAZ
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_EDGE
@ GNE_TAG_PERSONTRIP_BUSSTOP_CHARGINGSTATION
@ GNE_TAG_WALK_BUSSTOP_EDGE
@ GNE_TAG_RIDE_JUNCTION_TAZ
@ GNE_TAG_TRANSPORT_TRAINSTOP_BUSSTOP
@ GNE_TAG_WALK_JUNCTION_TRAINSTOP
@ GNE_TAG_TRANSHIP_EDGE_TRAINSTOP
@ GNE_TAG_TRANSHIP_TRAINSTOP_TRAINSTOP
@ GNE_TAG_RIDE_PARKINGAREA_PARKINGAREA
@ GNE_TAG_WALK_TRAINSTOP_PARKINGAREA
@ GNE_TAG_RIDE_EDGE_BUSSTOP
@ GNE_TAG_WALK_TAZ_JUNCTION
@ GNE_TAG_RIDE_TAZ_JUNCTION
@ GNE_TAG_PERSONTRIP_JUNCTION_PARKINGAREA
@ GNE_TAG_TRANSPORT_BUSSTOP_TRAINSTOP
@ GNE_TAG_TRANSPORT_TRAINSTOP_PARKINGAREA
@ GNE_TAG_TRANSPORT_PARKINGAREA_JUNCTION
@ GNE_TAG_STOPPERSON_CONTAINERSTOP
@ GNE_TAG_WALK_BUSSTOP_TAZ
@ GNE_TAG_RIDE_CONTAINERSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_BUSSTOP_BUSSTOP
@ GNE_TAG_TRANSHIP_BUSSTOP_PARKINGAREA
@ GNE_TAG_PERSONTRIP_JUNCTION_JUNCTION
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_JUNCTION
@ GNE_TAG_WALK_TRAINSTOP_BUSSTOP
@ GNE_TAG_TRANSHIP_JUNCTION_TRAINSTOP
@ GNE_TAG_PERSONTRIP_TAZ_JUNCTION
@ GNE_TAG_WALK_EDGE_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_JUNCTION_TAZ
@ GNE_TAG_TRANSPORT_PARKINGAREA_BUSSTOP
@ GNE_TAG_RIDE_EDGE_TRAINSTOP
@ GNE_TAG_TRANSHIP_TAZ_JUNCTION
@ GNE_TAG_TRANSHIP_JUNCTION_CHARGINGSTATION
@ GNE_TAG_WALK_TRAINSTOP_CONTAINERSTOP
@ GNE_TAG_WALK_JUNCTION_BUSSTOP
@ GNE_TAG_TRANSHIP_JUNCTION_JUNCTION
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_JUNCTION
@ GNE_TAG_WALK_JUNCTION_EDGE
@ GNE_TAG_PERSONTRIP_BUSSTOP_PARKINGAREA
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_TRAINSTOP
@ GNE_TAG_PERSONTRIP_PARKINGAREA_BUSSTOP
@ GNE_TAG_RIDE_CHARGINGSTATION_JUNCTION
@ GNE_TAG_RIDE_BUSSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_JUNCTION_TRAINSTOP
@ GNE_TAG_WALK_EDGE_CONTAINERSTOP
@ GNE_TAG_WALK_TRAINSTOP_JUNCTION
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_PARKINGAREA
@ GNE_TAG_STOPPERSON_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_TAZ
@ GNE_TAG_TRANSPORT_BUSSTOP_EDGE
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_BUSSTOP
@ GNE_TAG_WALK_PARKINGAREA_TAZ
@ GNE_TAG_PERSONTRIP_JUNCTION_EDGE
@ GNE_TAG_RIDE_CONTAINERSTOP_PARKINGAREA
@ GNE_TAG_RIDE_CHARGINGSTATION_TRAINSTOP
@ GNE_TAG_STOPPERSON_TRAINSTOP
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_BUSSTOP
@ GNE_TAG_PERSONTRIP_PARKINGAREA_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_CONTAINERSTOP
@ GNE_TAG_TRANSHIP_EDGE_BUSSTOP
@ GNE_TAG_RIDE_BUSSTOP_PARKINGAREA
@ GNE_TAG_WALK_EDGE_JUNCTION
@ GNE_TAG_RIDE_PARKINGAREA_EDGE
@ GNE_TAG_PERSONTRIP_JUNCTION_TAZ
@ GNE_TAG_TRANSHIP_PARKINGAREA_EDGE
@ GNE_TAG_TRANSPORT_PARKINGAREA_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_TRAINSTOP_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_JUNCTION_CONTAINERSTOP
@ GNE_TAG_WALK_TRAINSTOP_TRAINSTOP
@ GNE_TAG_WALK_CHARGINGSTATION_EDGE
@ GNE_TAG_TRANSHIP_EDGE_PARKINGAREA
@ GNE_TAG_WALK_EDGE_BUSSTOP
@ GNE_TAG_PERSONTRIP_PARKINGAREA_PARKINGAREA
@ GNE_TAG_TRANSHIP_TRAINSTOP_BUSSTOP
@ GNE_TAG_TRANSHIP_BUSSTOP_BUSSTOP
@ GNE_TAG_TRANSPORT_TRAINSTOP_EDGE
@ GNE_TAG_PERSONTRIP_TRAINSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_EDGE_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_CONTAINERSTOP
@ GNE_TAG_WALK_CONTAINERSTOP_TRAINSTOP
@ GNE_TAG_RIDE_EDGE_PARKINGAREA
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_JUNCTION
@ GNE_TAG_RIDE_BUSSTOP_CONTAINERSTOP
@ GNE_TAG_WALK_TAZ_TRAINSTOP
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_CHARGINGSTATION
@ GNE_TAG_RIDE_JUNCTION_EDGE
@ GNE_TAG_TRANSHIP_TRAINSTOP_PARKINGAREA
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_BUSSTOP
@ GNE_TAG_TRANSHIP_JUNCTION_TAZ
@ GNE_TAG_TRANSPORT_JUNCTION_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_TAZ_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_TAZ_JUNCTION
@ GNE_TAG_RIDE_TRAINSTOP_TRAINSTOP
@ GNE_TAG_TRANSPORT_JUNCTION_EDGE
@ GNE_TAG_TRANSPORT_BUSSTOP_BUSSTOP
@ GNE_TAG_WALK_PARKINGAREA_BUSSTOP
@ GNE_TAG_RIDE_CONTAINERSTOP_TAZ
@ GNE_TAG_STOPCONTAINER_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_BUSSTOP_PARKINGAREA
@ GNE_TAG_WALK_TAZ_PARKINGAREA
@ GNE_TAG_TRANSHIP_TAZ_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_BUSSTOP_TAZ
@ GNE_TAG_PERSONTRIP_TRAINSTOP_JUNCTION
@ GNE_TAG_RIDE_CONTAINERSTOP_TRAINSTOP
@ GNE_TAG_RIDE_TAZ_CHARGINGSTATION
@ GNE_TAG_STOPPERSON_EDGE
@ GNE_TAG_RIDE_CONTAINERSTOP_JUNCTION
@ GNE_TAG_PERSONTRIP_JUNCTION_CHARGINGSTATION
@ GNE_TAG_RIDE_PARKINGAREA_TRAINSTOP
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_PARKINGAREA
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_CHARGINGSTATION
@ GNE_TAG_PERSONTRIP_EDGE_TAZ
@ GNE_TAG_RIDE_TAZ_BUSSTOP
@ GNE_TAG_WALK_CONTAINERSTOP_CONTAINERSTOP
@ GNE_TAG_RIDE_TRAINSTOP_PARKINGAREA
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_EDGE
@ GNE_TAG_WALK_CHARGINGSTATION_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_TRAINSTOP_TAZ
@ GNE_TAG_RIDE_EDGE_CONTAINERSTOP
@ GNE_TAG_STOPPERSON_PARKINGAREA
@ GNE_TAG_RIDE_TRAINSTOP_EDGE
@ GNE_TAG_TRANSHIP_TAZ_CONTAINERSTOP
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
@ GNE_ATTR_FROM_TRAINSTOP
@ GNE_ATTR_PLAN_GEOMETRY_STARTPOS
person/container geometry start position
@ SUMO_ATTR_FROM_JUNCTION
@ SUMO_ATTR_CONTAINER_STOP
@ GNE_ATTR_PARENT
parent of an additional element
@ GNE_ATTR_SELECTED
element is selected
@ GNE_ATTR_TAZ_CENTROID
TAZ Center (uses to return the TAZ centroid if center is not defined)
@ SUMO_ATTR_EDGES
the edges of a route
@ SUMO_ATTR_CHARGING_STATION
@ GNE_ATTR_FROM_PARKINGAREA
@ GNE_ATTR_FROM_CONTAINERSTOP
@ GNE_ATTR_FROM_CHARGINGSTATION
@ GNE_ATTR_PLAN_GEOMETRY_ENDPOS
person/container geometry end position
const double INVALID_DOUBLE
invalid double
const double SUMO_const_halfLaneWidth
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
A class that stores a 2D geometrical boundary.
Position getCenter() const
Returns the center of the boundary.
void add(double x, double y, double z=0)
Makes the boundary include the given coordinate.
bool isInitialised() const
check if Boundary is Initialised
Boundary & grow(double by)
extends the boundary by the given amount
plan parameters (used for group all from-to parameters related with plans)
std::string fromJunction
from junction
std::string fromContainerStop
from containerStop
std::string toTrainStop
to trainStop
std::string fromTrainStop
from trainStop
std::string toParkingArea
to parkingArea
std::string fromEdge
from edge
std::string fromBusStop
from busStop
std::string toEdge
to edge
std::vector< std::string > consecutiveEdges
consecutive edges
std::string toJunction
to junction
bool isSingleEdgePlan() const
check if this is a single-edge plan
std::string toBusStop
to busStop
std::string fromChargingStation
from chargingStation
std::string fromTAZ
from TAZ
std::string toChargingStation
to chargingStation
std::string toRoute
to route
std::string fromParkingArea
from parkingArea
std::string toContainerStop
to containerStop
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
static void drawTriangleAtEnd(const Position &p1, const Position &p2, double tLength, double tWidth, const double extraOffset=0)
Draws a triangle at the end of the given line.
static void popMatrix()
pop matrix
static void drawBoxLines(const PositionVector &geom, const std::vector< double > &rots, const std::vector< double > &lengths, double width, int cornerDetail=0, double offset=0)
Draws thick lines.
static void drawBoundary(const GUIVisualizationSettings &s, const Boundary &b)
Draw a boundary (used for debugging)
static void drawFilledCircleDetailled(const GUIVisualizationSettings::Detail d, const double radius)
Draws a filled circle around (0,0) depending of level of detail.
static void pushMatrix()
push matrix
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
const std::string & getTagStr() const
get tag assigned to this object in string format
const GNETagProperties & getTagProperty() const
get tagProperty associated with this Attribute Carrier
bool isTemplate() const
check if this AC is template
void unselectAttributeCarrier(const bool changeFlag=true)
unselect attribute carrier using GUIGlobalSelection
bool drawUsingSelectColor() const
check if attribute carrier must be drawn using selecting color.
GNENet * myNet
pointer to net
GNENet * getNet() const
get pointer to net
static std::string parseIDs(const std::vector< T > &ACs)
parses a list of specific Attribute Carriers into a string of IDs
void selectAttributeCarrier(const bool changeFlag=true)
select attribute carrier using GUIGlobalSelection
const GNETagProperties & myTagProperty
reference to tagProperty associated with this attribute carrier
static void changeAttribute(GNEAttributeCarrier *AC, SumoXMLAttr key, const std::string &value, GNEUndoList *undoList, const bool force=false)
change attribute
void calculateContourCircleShape(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GUIGlObject *glObject, const Position &pos, double radius, const double layer, const double scale) const
calculate contour (circle elements)
void calculateContourExtrudedShape(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GUIGlObject *glObject, const PositionVector &shape, const double layer, const double extrusionWidth, const double scale, const bool closeFirstExtrem, const bool closeLastExtrem, const double offset, const GNESegment *segment) const
calculate contour extruded (used in elements formed by a central shape)
void drawDottedContours(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GNEAttributeCarrier *AC, const double lineWidth, const bool addOffset) const
draw dotted contours (basics, select, delete, inspect...)
bool checkDrawPathContour(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GNEAttributeCarrier *AC) const
drawing contour functions
virtual void updateGeometry()=0
update pre-computed geometry information
virtual SUMOVehicleClass getVClass() const =0
obtain VClass related with this demand element
void replaceDemandElementParent(SumoXMLTag tag, const std::string &value, const int parentIndex)
replace demand element parent
virtual GNELane * getLastPathLane() const =0
get last path lane
virtual GNELane * getFirstPathLane() const =0
get first path lane
GUIGeometry myDemandElementGeometry
demand element geometry (also called "stacked geometry")
void replaceLastParentEdge(const std::string &value)
replace the last parent edge
virtual std::string getAttribute(SumoXMLAttr key) const =0
virtual void computePathElement()=0
compute pathElement
void replaceFirstParentEdge(const std::string &value)
replace the first parent edge
virtual Position getPositionInView() const =0
Returns position of demand element in view.
const GUIGeometry & getDemandElementGeometry()
get demand element geometry (stacked)
Problem
enum class for demandElement problems
GNEDemandElement * getPreviousChildDemandElement(const GNEDemandElement *demandElement) const
get previous child demand element to the given demand element
virtual void drawGL(const GUIVisualizationSettings &s) const =0
Draws the object.
static std::pair< SumoXMLTag, GUIIcon > getPersonTripTagIcon(const CommonXMLStructure::PlanParameters &planParameters)
get the personTrip tag and icon for the combination
Boundary myPlanBoundary
plan boundary
bool isPlanValid(SumoXMLAttr key, const std::string &value)
check if plan attribute is valid
Boundary getPlanCenteringBoundary() const
get plan centering boundary
Position getPlanPositionInView() const
Returns position of additional in view.
std::string getPersonPlanProblem() const
get plan problem
static std::pair< SumoXMLTag, GUIIcon > getContainerStopTagIcon(const CommonXMLStructure::PlanParameters &planParameters)
get the container stop tag and icon for the combination
void computePlanPathElement()
compute plan pathElement
Position getPlanAttributePosition(SumoXMLAttr key) const
get plan attribute position
GNEDemandElement::Problem isPlanPersonValid() const
check if plan is valid
static std::pair< SumoXMLTag, GUIIcon > getRideTagIcon(const CommonXMLStructure::PlanParameters &planParameters)
get the ride tag and icon for the combination
GNEContour myPlanContourEnd
variable used for draw contour end
GUIGLObjectPopupMenu * getPlanPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
GNEDemandElementPlan(GNEDemandElement *planElement, const double departPosition, const double arrivalPosition)
constructor
std::string getPlanHierarchyName() const
get plan Hierarchy Name (Used in AC Hierarchy)
void drawEndPosition(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const double endPosRadius) const
draw to arrow
void drawFromArrow(const GUIVisualizationSettings &s, const GNELane *lane, const GNESegment *segment) const
draw from arrow
void writeLocationAttributes(OutputDevice &device) const
write plan element common attributes
bool checkDrawPersonPlan() const
check if person plan can be drawn
static std::pair< SumoXMLTag, GUIIcon > getPersonStopTagIcon(const CommonXMLStructure::PlanParameters &planParameters)
get the person stop tag and icon for the combination
GNEContour myPlanContour
variable used for draw central contour
double getEndPosRadius(const GUIVisualizationSettings &s, const GNESegment *segment, const bool drawHalfWidth) const
get end position radius
GNEMoveOperation * getPlanMoveOperation()
get move operation
double getPlanAttributeDouble(SumoXMLAttr key) const
get plan attribute double
void setPlanAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)
set plan attribute
double myArrivalPosition
arrival position (used in all plans over edges)
double myDepartPosition
depart position (used in tranships)
static std::pair< SumoXMLTag, GUIIcon > getWalkTagIcon(const CommonXMLStructure::PlanParameters &planParameters)
get the walk tag and icon for the combination
static const double myArrivalPositionDiameter
arrival position diameter
void drawToArrow(const GUIVisualizationSettings &s, const GNELane *lane, const GNESegment *segment) const
draw to arrow
std::string getPlanAttribute(SumoXMLAttr key) const
get plan attribute string
bool isPlanAttributeEnabled(SumoXMLAttr key) const
check if plan attribute is enabled
bool checkDrawContainerPlan() const
check if container plan can be drawn
static std::pair< SumoXMLTag, GUIIcon > getTranshipTagIcon(const CommonXMLStructure::PlanParameters &planParameters)
get the tranship tag and icon for the combination
GNELane * getLastPlanPathLane() const
get last plan path lane
GNEDemandElement * myPlanElement
pointer to plan element
void updatePlanCenteringBoundary(const bool updateGrid)
update plan centering boundary
void drawPlanGL(const bool drawPlan, const GUIVisualizationSettings &s, const RGBColor &planColor, const RGBColor &planSelectedColor) const
draw plan
void updatePlanGeometry()
update pre-computed geometry information
GNELane * getFirstPlanPathLane() const
get first plan path lane
void drawPlanLanePartial(const bool drawPlan, const GUIVisualizationSettings &s, const GNESegment *segment, const double offsetFront, const double planWidth, const RGBColor &planColor, const RGBColor &planSelectedColor) const
draw plan partial lane
void drawPlanJunctionPartial(const bool drawPlan, const GUIVisualizationSettings &s, const GNESegment *segment, const double offsetFront, const double planWidth, const RGBColor &planColor, const RGBColor &planSelectedColor) const
draw plan partial junction
void writeOriginStop(OutputDevice &device) const
write initial stop stage if plan starts at a stopping place
bool replacePlanParent(const std::string &newParentID)
replace plan parent
static std::pair< SumoXMLTag, GUIIcon > getTransportTagIcon(const CommonXMLStructure::PlanParameters &planParameters)
get the transport tag and icon for the combination
const std::vector< GNEJunction * > & getParentJunctions() const
get parent junctions
const std::vector< GNEDemandElement * > & getChildDemandElements() const
return child demand elements
const std::vector< GNEAdditional * > getParentStoppingPlaces() const
get parent stoppingPlaces (used by plans)
const std::vector< GNEAdditional * > getParentTAZs() const
get parent TAZs (used by plans)
const std::vector< GNEDemandElement * > & getParentDemandElements() const
get parent demand elements
const std::vector< GNEAdditional * > & getParentAdditionals() const
get parent additionals
const std::vector< GNEEdge * > & getParentEdges() const
get parent edges
bool exist(const GNELane *toLane) const
check if exist a lane2lane geometry for the given toLane
const GUIGeometry & getLane2laneGeometry(const GNELane *toLane) const
get lane2lane geometry
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
const PositionVector & getLaneShape() const
get elements shape
const GNELane2laneConnection & getLane2laneConnections() const
get Lane2laneConnection struct
const GUIGeometry & getLaneGeometry() const
get lane geometry
GNEDemandElement * retrieveDemandElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named demand element.
void addGLObjectIntoGrid(GNEAttributeCarrier *AC)
add GL Object into net
void removeGLObjectFromGrid(GNEAttributeCarrier *AC)
add GL Object into net
GNEPathManager * getDemandPathManager()
get demand path manager
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
GNEViewNet * getViewNet() const
get view net
bool checkDrawPathGeometry(const GUIVisualizationSettings &s, const GNELane *lane, SumoXMLTag tag)
check if path element geometry must be drawn in the given lane
PathDraw * getPathDraw()
obtain instance of PathDraw
void calculateConsecutivePathEdges(GNEPathElement *pathElement, SUMOVehicleClass vClass, const std::vector< GNEEdge * > &edges, const int firstLaneIndex=-1, const int lastLaneIndex=-1)
calculate consecutive path edges
const GNELane * getLane() const
get lane associated with this segment
const GNELane * getNextLane() const
get next lane
const GNELane * getPreviousLane() const
get previous lane
bool isFirstSegment() const
check if segment is the first path's segment
GNEContour * getContour() const
bool isLastSegment() const
check if segment is the last path's segment
bool planFromJunction() const
return true if tag correspond to a plan that starts in junction
bool planToStoppingPlace() const
return true if tag correspond to a plan that ends in stoppingPlace
bool planStoppingPlace() const
return true if tag correspond to a plan placed in stoppingPlace
bool planToJunction() const
return true if tag correspond to a plan that starts in junction
bool planFromStoppingPlace() const
return true if tag correspond to a plan that starts in stoppingPlace
bool planFromEdge() const
return true if tag correspond to a plan that starts in edge
bool isPlanPerson() const
return true if tag correspond to a person plan
bool planToEdge() const
return true if tag correspond to a plan that starts in edge
GNEViewNetHelper::InspectedElements & getInspectedElements()
get inspected elements
void buildSelectionACPopupEntry(GUIGLObjectPopupMenu *ret, GNEAttributeCarrier *AC)
Builds an entry which allows to (de)select the object.
static FXMenuCommand * buildFXMenuCommand(FXComposite *p, const std::string &text, FXIcon *icon, FXObject *tgt, FXSelector sel, const bool disable=false)
build menu command
void clearGeometry()
clear geometry
static void drawGeometry(const GUIVisualizationSettings::Detail d, const GUIGeometry &geometry, const double width, double offset=0)
draw geometry
static void drawChildLine(const GUIVisualizationSettings &s, const Position &child, const Position &parent, const RGBColor &color, const bool drawEntire, const double lineWidth)
draw line between child and parent (used in netedit)
const PositionVector & getShape() const
The shape of the additional element.
void updateGeometry(const PositionVector &shape)
update entire geometry
void buildShowParamsPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the parameter window.
virtual Boundary getCenteringBoundary() const =0
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
void buildPopupHeader(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, bool addSeparator=true)
Builds the header.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
void buildPositionCopyEntry(GUIGLObjectPopupMenu *ret, const GUIMainWindow &app) const
Builds an entry which allows to copy the cursor position if geo projection is used,...
void drawName(const Position &pos, const double scale, const GUIVisualizationTextSettings &settings, const double angle=0, bool forceShow=false) const
draw name of item
virtual Position getPositionInformation() const
Returns the cursor's x/y position within the network.
void addToRedrawPathElements(const GNEPathElement *pathElement)
add path element to redrawing set
bool isPathElementMarkForRedraw(const GNEPathElement *pathElement) const
check if the given path element has to be redraw again
bool isObjectSelected(const GUIGlObject *GLObject) const
check if element was already selected
Stores the information about how to visualize structures.
GUIVisualizationTextSettings addName
bool drawBoundaries
enable or disable draw boundaries
bool drawForRectangleSelection
whether drawing is performed for the purpose of selecting objects using a rectangle
GUIVisualizationSizeSettings addSize
GUIVisualizationWidthSettings widthSettings
width settings
Detail getDetailLevel(const double exaggeration) const
return the detail level
double laneWidthExaggeration
The lane exaggeration (upscale thickness)
bool checkDrawContainer(Detail d, const bool selected) const
check if draw container
GUIVisualizationDottedContourSettings dottedContourSettings
dotted contour settings
double scale
information about a lane's width (temporary, used for a single view)
bool drawForViewObjectsHandler
whether drawing is performed for the purpose of selecting objects in view using ViewObjectsHandler
bool checkDrawPerson(Detail d, const bool selected) const
check if draw person
Static storage of an output device and its base (abstract) implementation.
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
A point in 2D or 3D with translation and scaling methods.
double distanceSquaredTo2D(const Position &p2) const
returns the square of the distance to another position (Only using x and y positions)
static const Position INVALID
used to indicate that a position is valid
double x() const
Returns the x-position.
double y() const
Returns the y-position.
Boundary getBoxBoundary() const
Returns a boundary enclosing this list of lines.
static const RGBColor RED
named colors
static void drawLockIcon(const GUIVisualizationSettings::Detail d, const GNEAttributeCarrier *AC, GUIGlObjectType type, const Position position, const double exaggeration, const double size=0.5, const double offsetx=0, const double offsety=0)
draw lock icon
static const double segmentWidth
width of dotted contour segments
double getExaggeration(const GUIVisualizationSettings &s, const GUIGlObject *o, double factor=20) const
return the drawing size including exaggeration and constantSize values
double walkWidth
width for walks
double personTripWidth
width for person trips
double rideWidth
width for rides