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 +
"'.");
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";
static MsgHandler * getErrorInstance()
Returns the instance to add errors to.
SUMOTime getFirstLoadTime() const
returns the timestamp of the first loaded vehicle or flow
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.
std::string time2string(SUMOTime t)
void add(SUMORouteLoader *loader)
add another loader
const bool myLogSteps
Information whether the routing steps should be logged.
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
bool isDefault(const std::string &name) const
Returns the information whether the named option has still the default value.
void writeStats(const SUMOTime time, const SUMOTime start, const SUMOTime absNo, bool endGiven)
bool wasInformed() const
Returns the information whether any messages were added.
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)
void addEdgeWeight(const std::string &id, SUMOReal val, SUMOReal beg, SUMOReal end) const
Adds an effort for a given edge and time period.
static OptionsCont & getOptions()
Retrieves the options.
OptionsCont & myOptions
Options to use.
virtual ~ROLoader()
Destructor.
bool haveAllLoaded() const
returns whether loading is completed
#define PROGRESS_FAILED_MESSAGE()
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
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.
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
bool exists(const std::string &name) const
Returns the information whether the named option is known.
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)
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) ...
#define PROGRESS_BEGIN_MESSAGE(msg)
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.
void addEdgeWeight(const std::string &id, SUMOReal val, SUMOReal beg, SUMOReal end) const
Adds a travel time for a given edge and time period.
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.
const std::map< std::string, ROEdge * > & getEdgeMap() const
Parser and container for routes during their loading.
ROEdge * getEdge(const std::string &name) const
Retrieves an edge from the network.
#define PROGRESS_DONE_MESSAGE()
#define WRITE_MESSAGE(msg)
ROLoader(OptionsCont &oc, const bool emptyDestinationsAllowed, const bool logSteps)
Constructor.
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.