void AGActivityGenHandler::parseStreets(const SUMOSAXAttributes& attrs) { try { SUMOReal pop = 0; SUMOReal work = 0; if (attrs.hasAttribute(AGEN_ATTR_POPULATION)) { pop = attrs.getFloat(AGEN_ATTR_POPULATION); } if (attrs.hasAttribute(AGEN_ATTR_OUT_WORKPOSITION)) { work = attrs.getFloat(AGEN_ATTR_OUT_WORKPOSITION); } std::string eid = attrs.getString(SUMO_ATTR_EDGE); AGStreet* street = dynamic_cast<AGStreet*>(net->getEdge(eid)); if (street == 0) { WRITE_ERROR("Edge '" + eid + "' is not known."); return; } street->setPopulation(pop * street->getLength()); street->setWorkplaceNumber(work * street->getLength()); myCity.streets.push_back(street); } catch (const std::exception& e) { WRITE_ERROR("Error while parsing the element " + SUMOXMLDefinitions::Tags.getString(AGEN_TAG_STREET) + ": " + e.what()); throw ProcessError(); } }
SUMOReal AGPosition::randomPositionInStreet(const AGStreet& s) { return RandHelper::rand(0.0, s.getLength()); }