void GNEStop::updateGeometry(bool updateGrid) { // first check if object has to be removed from grid (SUMOTree) if (updateGrid) { myViewNet->getNet()->removeGLObjectFromGrid(this); } // Clear all containers myGeometry.clearGeometry(); //only update Stops over lanes, because other uses the geometry of stopping place parent if (getLaneParents().size() > 0) { // Cut shape using as delimitators fixed start position and fixed end position myGeometry.shape = getLaneParents().front()->getShape().getSubpart(getStartGeometryPositionOverLane(), getEndGeometryPositionOverLane()); // Get calculate lenghts and rotations myGeometry.calculateShapeRotationsAndLengths(); } else if (getAdditionalParents().size() > 0) { // copy geometry of additional myGeometry.shape = getAdditionalParents().at(0)->getAdditionalGeometry().shape; myGeometry.shapeLengths = getAdditionalParents().at(0)->getAdditionalGeometry().shapeLengths; myGeometry.shapeRotations = getAdditionalParents().at(0)->getAdditionalGeometry().shapeRotations; } // last step is to check if object has to be added into grid (SUMOTree) again if (updateGrid) { myViewNet->getNet()->addGLObjectIntoGrid(this); } }
std::string GNEStop::getHierarchyName() const { if (getAdditionalParents().size() > 0) { return "stop: " + getAdditionalParents().front()->getTagStr(); } else { return "stop: lane"; } }
std::string GNEStop::getParentName() const { if (getDemandElementParents().size() > 0) { return getDemandElementParents().front()->getID(); } else if (getAdditionalParents().size() > 0) { return getAdditionalParents().front()->getID(); } else if (getLaneParents().size() > 0) { return getLaneParents().front()->getID(); } else { throw ProcessError("Invalid parent"); } }
std::string GNEAccess::getAttribute(SumoXMLAttr key) const { switch (key) { case SUMO_ATTR_ID: return getAdditionalID(); case SUMO_ATTR_LANE: return getLaneParents().front()->getID(); case SUMO_ATTR_POSITION: return toString(myPositionOverLane); case SUMO_ATTR_LENGTH: return toString(myLength); case SUMO_ATTR_FRIENDLY_POS: return toString(myFriendlyPosition); case GNE_ATTR_BLOCK_MOVEMENT: return toString(myBlockMovement); case GNE_ATTR_PARENT: return getAdditionalParents().at(0)->getID(); case GNE_ATTR_SELECTED: return toString(isAttributeCarrierSelected()); case GNE_ATTR_GENERIC: return getGenericParametersStr(); default: throw InvalidArgument(getTagStr() + " doesn't have an attribute of type '" + toString(key) + "'"); } }
std::string GNECalibratorFlow::getAttribute(SumoXMLAttr key) const { switch (key) { case SUMO_ATTR_ID: return getAdditionalID(); case SUMO_ATTR_TYPE: return myVehicleType->getID(); case SUMO_ATTR_ROUTE: return myRoute->getID(); case SUMO_ATTR_VEHSPERHOUR: return toString(myVehsPerHour); case SUMO_ATTR_SPEED: return toString(mySpeed); case SUMO_ATTR_COLOR: return toString(myColor); case SUMO_ATTR_BEGIN: return toString(myBegin); case SUMO_ATTR_END: return toString(myEnd); case SUMO_ATTR_DEPARTLANE: return myDepartLane; case SUMO_ATTR_DEPARTPOS: return myDepartPos; case SUMO_ATTR_DEPARTSPEED: return myDepartSpeed; case SUMO_ATTR_ARRIVALLANE: return myArrivalLane; case SUMO_ATTR_ARRIVALPOS: return myArrivalPos; case SUMO_ATTR_ARRIVALSPEED: return myArrivalSpeed; case SUMO_ATTR_LINE: return myLine; case SUMO_ATTR_PERSON_NUMBER: return toString(myPersonNumber); case SUMO_ATTR_CONTAINER_NUMBER: return toString(myContainerNumber); case SUMO_ATTR_REROUTE: return toString(myReroute); case SUMO_ATTR_DEPARTPOS_LAT: return myDepartPosLat; case SUMO_ATTR_ARRIVALPOS_LAT: return myArrivalPosLat; case GNE_ATTR_PARENT: return getAdditionalParents().at(0)->getID(); case GNE_ATTR_GENERIC: return getGenericParametersStr(); default: throw InvalidArgument(getTagStr() + " doesn't have an attribute of type '" + toString(key) + "'"); } }
std::string GNERouteProbReroute::getAttribute(SumoXMLAttr key) const { switch (key) { case SUMO_ATTR_ID: return getAdditionalID(); case SUMO_ATTR_ROUTE: return myNewRouteId; case SUMO_ATTR_PROB: return toString(myProbability); case GNE_ATTR_PARENT: return getAdditionalParents().at(0)->getID(); case GNE_ATTR_GENERIC: return getGenericParametersStr(); default: throw InvalidArgument(getTagStr() + " doesn't have an attribute of type '" + toString(key) + "'"); } }
std::string GNEClosingReroute::getAttribute(SumoXMLAttr key) const { switch (key) { case SUMO_ATTR_ID: return getAdditionalID(); case SUMO_ATTR_EDGE: return myClosedEdge->getID(); case SUMO_ATTR_ALLOW: return getVehicleClassNames(myPermissions); case SUMO_ATTR_DISALLOW: return getVehicleClassNames(invertPermissions(myPermissions)); case GNE_ATTR_PARENT: return getAdditionalParents().at(0)->getID(); case GNE_ATTR_GENERIC: return getGenericParametersStr(); default: throw InvalidArgument(getTagStr() + " doesn't have an attribute of type '" + toString(key) + "'"); } }
bool GNEAccess::isValid(SumoXMLAttr key, const std::string& value) { switch (key) { case SUMO_ATTR_ID: return isValidAdditionalID(value); case SUMO_ATTR_LANE: { GNELane* lane = myViewNet->getNet()->retrieveLane(value, false); if (lane != nullptr) { if (getLaneParents().front()->getParentEdge().getID() != lane->getParentEdge().getID()) { return GNEAdditionalHandler::accessCanBeCreated(getAdditionalParents().at(0), lane->getParentEdge()); } else { return true; } } else { return false; } } case SUMO_ATTR_POSITION: if (value.empty()) { return true; } else { return canParse<double>(value); } case SUMO_ATTR_LENGTH: if (value.empty()) { return true; } else { return (canParse<double>(value) && (parse<double>(value) >= 0)); } case SUMO_ATTR_FRIENDLY_POS: return canParse<bool>(value); case GNE_ATTR_BLOCK_MOVEMENT: return canParse<bool>(value); case GNE_ATTR_SELECTED: return canParse<bool>(value); case GNE_ATTR_GENERIC: return isGenericParametersValid(value); default: throw InvalidArgument(getTagStr() + " doesn't have an attribute of type '" + toString(key) + "'"); } }
std::string GNEClosingReroute::getParentName() const { return getAdditionalParents().at(0)->getID(); }
Position GNEClosingReroute::getPositionInView() const { return getAdditionalParents().at(0)->getPositionInView(); }
std::string GNEAccess::getParentName() const { return getAdditionalParents().at(0)->getID(); }
Position GNECalibratorFlow::getPositionInView() const { return getAdditionalParents().at(0)->getPositionInView(); }
std::string GNECalibratorFlow::getParentName() const { return getAdditionalParents().at(0)->getID(); }
std::string GNEStop::getAttribute(SumoXMLAttr key) const { switch (key) { case SUMO_ATTR_ID: return getDemandElementID(); case SUMO_ATTR_DURATION: return time2string(duration); case SUMO_ATTR_UNTIL: return time2string(until); case SUMO_ATTR_INDEX: if (index == STOP_INDEX_END) { return "end"; } else if (index == STOP_INDEX_FIT) { return "fit"; } else { return toString(index); } case SUMO_ATTR_TRIGGERED: if (parametersSet & STOP_TRIGGER_SET) { return toString(triggered); } else { return ""; } case SUMO_ATTR_CONTAINER_TRIGGERED: if (parametersSet & STOP_CONTAINER_TRIGGER_SET) { return toString(containerTriggered); } else { return ""; } case SUMO_ATTR_EXPECTED: if (parametersSet & STOP_EXPECTED_SET) { return toString(awaitedPersons); } else { return ""; } case SUMO_ATTR_EXPECTED_CONTAINERS: if (parametersSet & STOP_EXPECTED_CONTAINERS_SET) { return toString(awaitedContainers); } else { return ""; } case SUMO_ATTR_PARKING: if (parametersSet & STOP_PARKING_SET) { return toString(parking); } else { return ""; } case SUMO_ATTR_ACTTYPE: return ""; // CHECK case SUMO_ATTR_TRIP_ID: if (parametersSet & STOP_TRIP_ID_SET) { return tripId; } else { return ""; } // specific of Stops over stoppingPlaces case SUMO_ATTR_BUS_STOP: case SUMO_ATTR_CONTAINER_STOP: case SUMO_ATTR_CHARGING_STATION: case SUMO_ATTR_PARKING_AREA: return getAdditionalParents().front()->getID(); // specific of stops over lanes case SUMO_ATTR_LANE: return getLaneParents().front()->getID(); case SUMO_ATTR_STARTPOS: if (parametersSet & STOP_START_SET) { return toString(startPos); } else { return ""; } case SUMO_ATTR_ENDPOS: if (parametersSet & STOP_END_SET) { return toString(endPos); } else { return ""; } case SUMO_ATTR_FRIENDLY_POS: return toString(myFriendlyPosition); // case GNE_ATTR_SELECTED: return toString(isAttributeCarrierSelected()); case GNE_ATTR_GENERIC: return getGenericParametersStr(); default: throw InvalidArgument(getTagStr() + " doesn't have an attribute of type '" + toString(key) + "'"); } }