53 double vMin,
double vMax,
double vStep,
54 double aMin,
double aMax,
double aStep,
55 double sMin,
double sMax,
double sStep,
58 WRITE_MESSAGE(
"Writing map of '" + className +
"' into '" + of +
"'.");
60 std::ofstream o(of.c_str());
62 throw ProcessError(
"Could not open file '" + of +
"' for writing.");
64 for (
double v = vMin; v <= vMax; v += vStep) {
65 for (
double a = aMin; a <= aMax; a += aStep) {
66 for (
double s = sMin; s <= sMax; s += sStep) {
68 o << v <<
";" << a <<
";" << s <<
";" <<
"CO" <<
";" << result.
CO << std::endl;
69 o << v <<
";" << a <<
";" << s <<
";" <<
"CO2" <<
";" << result.
CO2 << std::endl;
70 o << v <<
";" << a <<
";" << s <<
";" <<
"HC" <<
";" << result.
HC << std::endl;
71 o << v <<
";" << a <<
";" << s <<
";" <<
"PMx" <<
";" << result.
PMx << std::endl;
72 o << v <<
";" << a <<
";" << s <<
";" <<
"NOx" <<
";" << result.
NOx << std::endl;
73 o << v <<
";" << a <<
";" << s <<
";" <<
"fuel" <<
";" << result.
fuel << std::endl;
74 o << v <<
";" << a <<
";" << s <<
";" <<
"electricity" <<
";" << result.
electricity << std::endl;
84 main(
int argc,
char** argv) {
89 oc.
setApplicationName(
"emissionsMap",
"Eclipse SUMO emissionsMap Version " VERSION_STRING);
94 oc.
addDescription(
"iterate",
"Processing",
"If set, maps for all available emissions are written.");
97 oc.
addDescription(
"emission-class",
"Processing",
"Defines the name of the emission class to generate the map for.");
100 oc.
addDescription(
"v-min",
"Processing",
"Defines the minimum velocity boundary of the map to generate (in m/s).");
102 oc.
addDescription(
"v-max",
"Processing",
"Defines the maximum velocity boundary of the map to generate (in m/s).");
104 oc.
addDescription(
"v-step",
"Processing",
"Defines the velocity step size (in m/s).");
106 oc.
addDescription(
"a-min",
"Processing",
"Defines the minimum acceleration boundary of the map to generate (in m/s^2).");
108 oc.
addDescription(
"a-max",
"Processing",
"Defines the maximum acceleration boundary of the map to generate (in m/s^2).");
110 oc.
addDescription(
"a-step",
"Processing",
"Defines the acceleration step size (in m/s^2).");
112 oc.
addDescription(
"s-min",
"Processing",
"Defines the minimum slope boundary of the map to generate (in deg).");
114 oc.
addDescription(
"s-max",
"Processing",
"Defines the maximum slope boundary of the map to generate (in deg).");
116 oc.
addDescription(
"s-step",
"Processing",
"Defines the slope step size (in deg).");
121 oc.
addDescription(
"output",
"Output",
"Defines the file (or the path if --iterate was set) to write the map(s) into.");
125 oc.
addDescription(
"phemlight-path",
"Emissions",
"Determines where to load PHEMlight definitions from.");
143 double vStep = oc.
getFloat(
"v-step");
146 double aStep = oc.
getFloat(
"a-step");
149 double sStep = oc.
getFloat(
"s-step");
151 if (!oc.
isSet(
"emission-class")) {
152 throw ProcessError(
"The emission class (-e) must be given.");
154 if (!oc.
isSet(
"output-file")) {
155 throw ProcessError(
"The output file (-o) must be given.");
159 c, vMin, vMax, vStep, aMin, aMax, aStep, sMin, sMax, sStep, oc.
getBool(
"verbose"));
161 if (!oc.
isSet(
"output-file")) {
162 oc.
set(
"output-file",
"./");
165 for (std::vector<SUMOEmissionClass>::const_iterator ci = classes.begin(); ci != classes.end(); ++ci) {
168 c, vMin, vMax, vStep, aMin, aMax, aStep, sMin, sMax, sStep, oc.
getBool(
"verbose"));
176 if (std::string(e.what()) != std::string(
"Process Error") && std::string(e.what()) != std::string(
"")) {
189 std::cout <<
"Success." << std::endl;
#define WRITE_MESSAGE(msg)
std::vector< std::string > StringVector
Definition of a vector of strings.
static MsgHandler * getErrorInstance()
Returns the instance to add errors to.
virtual void inform(std::string msg, bool addType=true)
adds a new error to the list
A storage for options typed value containers)
void addDescription(const std::string &name, const std::string &subtopic, const std::string &description)
Adds a description for an option.
void doRegister(const std::string &name, Option *v)
Adds an option under the given name.
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
double getFloat(const std::string &name) const
Returns the double-value of the named option (only for Option_Float)
bool set(const std::string &name, const std::string &value)
Sets the given value for the named option.
void setApplicationName(const std::string &appName, const std::string &fullName)
Sets the application name.
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
void addSynonyme(const std::string &name1, const std::string &name2, bool isDeprecated=false)
Adds a synonyme for an options name (any order)
void setApplicationDescription(const std::string &appDesc)
Sets the application description.
void addOptionSubTopic(const std::string &topic)
Adds an option subtopic.
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
static OptionsCont & getOptions()
Retrieves the options.
bool processMetaOptions(bool missingOptions)
Checks for help and configuration output, returns whether we should exit.
static void setArgs(int argc, char **argv)
Stores the command line arguments for later parsing.
static void getOptions(const bool commandLineOnly=false)
Parses the command line arguments and loads the configuration.
static Emissions computeAll(const SUMOEmissionClass c, const double v, const double a, const double slope, const std::map< int, double > *param=0)
Returns the amount of all emitted pollutants given the vehicle type and state (in mg/s or ml/s for fu...
static std::string getName(const SUMOEmissionClass c)
Checks whether the string describes a known vehicle class.
static const std::vector< SUMOEmissionClass > getAllClasses()
Checks whether the string describes a known vehicle class.
static SUMOEmissionClass getClassByName(const std::string &eClass, const SUMOVehicleClass vc=SVC_IGNORING)
Checks whether the string describes a known vehicle class.
static void close()
Closes all of an applications subsystems.
static void addConfigurationOptions(OptionsCont &oc)
Adds configuration options to the given container.
static void addReportOptions(OptionsCont &oc)
Adds reporting options to the given container.
static void init()
Initialises the xml-subsystem.
int main(int argc, char **argv)
void single(const std::string &of, const std::string &className, SUMOEmissionClass c, double vMin, double vMax, double vStep, double aMin, double aMax, double aStep, double sMin, double sMax, double sStep, bool verbose)
Storage for collected values of all emission types.