38 #include <xercesc/parsers/SAXParser.hpp>
39 #include <xercesc/util/PlatformUtils.hpp>
40 #include <xercesc/util/TransService.hpp>
41 #include <xercesc/sax2/SAX2XMLReader.hpp>
58 #ifdef CHECK_MEMORY_LEAKS
60 #endif // CHECK_MEMORY_LEAKS
78 WRITE_WARNING(
"Trying to set a weight for the unknown edge '" +
id +
"'.");
80 WRITE_ERROR(
"Trying to set a weight for the unknown edge '" +
id +
"'.");
93 ROEdge* e = myNet.getEdge(
id);
99 WRITE_WARNING(
"Trying to set a weight for the unknown edge '" +
id +
"'.");
101 WRITE_ERROR(
"Trying to set a weight for the unknown edge '" +
id +
"'.");
115 myLoaders(oc.exists(
"unsorted-input") && oc.getBool(
"unsorted-input") ? 0 :
DELTA_T) {
127 throw ProcessError(
"Missing definition of network to load!");
130 throw ProcessError(
"The network file '" + file +
"' is not accessible.");
147 for (std::vector<std::string>::const_iterator fileIt = files.begin(); fileIt != files.end(); ++fileIt) {
149 throw ProcessError(
"The additional file '" + *fileIt +
"' is not accessible.");
184 const std::string error =
"No route input specified or all routes were invalid.";
210 while (time <= end) {
220 if (time < end && time + increment > end) {
247 for (std::vector<std::string>::const_iterator fileIt = files.begin(); fileIt != files.end(); ++fileIt) {
252 std::string msg =
"The loader for " + optionName +
" from file '" + *fileIt +
"' could not be initialised;";
253 std::string reason = e.what();
254 if (reason !=
"Process Error" && reason !=
"") {
255 msg = msg +
"\n Reason: " + reason +
".";
257 msg = msg +
"\n (unknown reason).";
269 const std::string& measure,
const bool useLanes,
const bool boundariesOverride) {
275 std::vector<SAXWeightsHandler::ToRetrieveDefinition*> retrieverDefs;
281 if (measure !=
"traveltime") {
282 std::string umeasure = measure;
283 if (measure ==
"CO" || measure ==
"CO2" || measure ==
"HC" || measure ==
"PMx" || measure ==
"NOx" || measure ==
"fuel" || measure ==
"electricity") {
284 umeasure = measure +
"_perVeh";
292 for (std::vector<std::string>::const_iterator fileIt = files.begin(); fileIt != files.end(); ++fileIt) {
302 const std::map<std::string, ROEdge*>& edges = net.
getEdgeMap();
303 for (std::map<std::string, ROEdge*>::const_iterator i = edges.begin(); i != edges.end(); ++i) {
304 (*i).second->buildTimeLines(measure, boundariesOverride);
317 std::cout <<
"Reading up to time step: " +
time2string(time) +
"\r";
std::vector< std::string > getStringVector(const std::string &name) const
Returns the list of string-vector-value of the named option (only for Option_String) ...
static MsgHandler * getErrorInstance()
Returns the instance to add errors to.
std::set< std::string > deprecatedVehicleClassesSeen
void loadNext(SUMOTime step)
loads the next routes up to and including the given time step
RONet & myNet
The network edges shall be obtained from.
static bool isReadable(std::string path)
Checks whether the given file is readable.
void openRoutes(RONet &net)
Builds and opens all route loaders.
An XML-handler for network weights.
ROEdge * getEdge(const std::string &name) const
Retrieves an edge from the network.
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
SUMOTime getFirstLoadTime() const
returns the timestamp of the first loaded vehicle or flow
std::string time2string(SUMOTime t)
void add(SUMORouteLoader *loader)
add another loader
const bool myLogSteps
Information whether the routing steps should be logged.
void writeStats(const SUMOTime time, const SUMOTime start, const SUMOTime absNo, bool endGiven)
static bool runParser(GenericSAXHandler &handler, const std::string &file, const bool isNet=false)
Runs the given handler on the given file; returns if everything's ok.
Interface for building instances of router-edges.
void addTravelTime(SUMOReal value, SUMOReal timeBegin, SUMOReal timeEnd)
Adds a travel time value.
#define WRITE_WARNING(msg)
const std::map< std::string, ROEdge * > & getEdgeMap() const
static OptionsCont & getOptions()
Retrieves the options.
OptionsCont & myOptions
Options to use.
void addEdgeWeight(const std::string &id, SUMOReal val, SUMOReal beg, SUMOReal end) const
Adds an effort for a given edge and time period.
virtual ~ROLoader()
Destructor.
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
#define PROGRESS_FAILED_MESSAGE()
void setFileName(const std::string &name)
Sets the current file name.
bool isUsableFileList(const std::string &name) const
Checks whether the named option is usable as a file list (with at least a single file) ...
Obtains edge weights from a weights handler and stores them within the edges.
SUMORouteLoaderControl myLoaders
List of route loaders.
const bool myEmptyDestinationsAllowed
Information whether empty destinations are allowed.
void addEdgeWeight(const std::string &id, SUMOReal val, SUMOReal beg, SUMOReal end) const
Adds a travel time for a given edge and time period.
bool openTypedRoutes(const std::string &optionName, RONet &net)
Opens route handler of the given type.
virtual bool furtherStored()
Returns the information whether further vehicles, persons or containers are stored.
SUMOTime string2time(const std::string &r)
#define PROGRESS_BEGIN_MESSAGE(msg)
bool isDefault(const std::string &name) const
Returns the information whether the named option has still the default value.
bool wasInformed() const
Returns the information whether any messages were added.
std::string toString(const T &t, std::streamsize accuracy=OUTPUT_ACCURACY)
virtual void loadNet(RONet &toFill, ROAbstractEdgeBuilder &eb)
Loads the network.
A basic edge for routing applications.
Complete definition about what shall be retrieved and where to store it.
The router's network representation.
Obtains edge travel times from a weights handler and stores them within the edges.
void addEffort(SUMOReal value, SUMOReal timeBegin, SUMOReal timeEnd)
Adds a weight value.
void processRoutes(const SUMOTime start, const SUMOTime end, const SUMOTime increment, RONet &net, const RORouterProvider &provider)
Loads routes from all previously build route loaders.
A storage for options typed value containers)
The handler that parses a SUMO-network for its usage in a router.
Parser and container for routes during their loading.
#define PROGRESS_DONE_MESSAGE()
#define WRITE_MESSAGE(msg)
ROLoader(OptionsCont &oc, const bool emptyDestinationsAllowed, const bool logSteps)
Constructor.
bool haveAllLoaded() const
returns whether loading is completed
bool loadWeights(RONet &net, const std::string &optionName, const std::string &measure, const bool useLanes, const bool boundariesOverride)
Loads the net weights.
SUMOTime saveAndRemoveRoutesUntil(OptionsCont &options, const RORouterProvider &provider, SUMOTime time)
Computes routes described by their definitions and saves them.
bool exists(const std::string &name) const
Returns the information whether the named option is known.
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.