/** * loads the net * The net is in this meaning made up by the net itself and the dynamic * weights which may be supplied in a separate file */ void initNet(RONet& net, ROLoader& loader, const std::vector<double>& turnDefs) { // load the net ROJTREdgeBuilder builder; loader.loadNet(net, builder); // set the turn defaults for (const auto& i : net.getEdgeMap()) { static_cast<ROJTREdge*>(i.second)->setTurnDefaults(turnDefs); } }
/** * loads the net * The net is in this meaning made up by the net itself and the dynamic * weights which may be supplied in a separate file */ void initNet(RONet& net, ROLoader& loader, const std::vector<SUMOReal>& turnDefs) { // load the net ROJTREdgeBuilder builder; loader.loadNet(net, builder); // set the turn defaults const std::map<std::string, ROEdge*>& edges = net.getEdgeMap(); for (std::map<std::string, ROEdge*>::const_iterator i = edges.begin(); i != edges.end(); ++i) { static_cast<ROJTREdge*>((*i).second)->setTurnDefaults(turnDefs); } }
/** * loads the net * The net is in this meaning made up by the net itself and the dynamic * weights which may be supplied in a separate file */ void initNet(RONet &net, ROLoader &loader, OptionsCont &oc, const std::vector<SUMOReal> &turnDefs) { // load the net ROJTREdgeBuilder builder; loader.loadNet(net, builder); // set the turn defaults const std::map<std::string, ROEdge*> &edges = net.getEdgeMap(); for (std::map<std::string, ROEdge*>::const_iterator i=edges.begin(); i!=edges.end(); ++i) { static_cast<ROJTREdge*>((*i).second)->setTurnDefaults(turnDefs); } // load the weights when wished/available if (oc.isSet("weights")) { loader.loadWeights(net, "weights", oc.getString("measure"), false); } if (oc.isSet("lane-weights")) { loader.loadWeights(net, "lane-weights", oc.getString("measure"), true); } }
bool ROLoader::loadWeights(RONet& net, const std::string& optionName, const std::string& measure, bool useLanes) { // check whether the file exists if (!myOptions.isUsableFileList(optionName)) { return false; } // build and prepare the weights handler std::vector<SAXWeightsHandler::ToRetrieveDefinition*> retrieverDefs; // travel time, first (always used) EdgeFloatTimeLineRetriever_EdgeTravelTime ttRetriever(net); retrieverDefs.push_back(new SAXWeightsHandler::ToRetrieveDefinition("traveltime", !useLanes, ttRetriever)); // the measure to use, then EdgeFloatTimeLineRetriever_EdgeWeight eRetriever(net); if (measure != "traveltime") { std::string umeasure = measure; if (measure == "CO" || measure == "CO2" || measure == "HC" || measure == "PMx" || measure == "NOx" || measure == "fuel") { umeasure = measure + "_perVeh"; } retrieverDefs.push_back(new SAXWeightsHandler::ToRetrieveDefinition(umeasure, !useLanes, eRetriever)); } // set up handler SAXWeightsHandler handler(retrieverDefs, ""); // go through files std::vector<std::string> files = myOptions.getStringVector(optionName); for (std::vector<std::string>::const_iterator fileIt = files.begin(); fileIt != files.end(); ++fileIt) { PROGRESS_BEGIN_MESSAGE("Loading precomputed net weights from '" + *fileIt + "'"); if (XMLSubSys::runParser(handler, *fileIt)) { PROGRESS_DONE_MESSAGE(); } else { WRITE_MESSAGE("failed."); return false; } } // build edge-internal time lines const std::map<std::string, ROEdge*>& edges = net.getEdgeMap(); for (std::map<std::string, ROEdge*>::const_iterator i = edges.begin(); i != edges.end(); ++i) { (*i).second->buildTimeLines(measure); } return true; }