51 double vMin,
double vMax,
double vStep,
52 double aMin,
double aMax,
double aStep,
53 double sMin,
double sMax,
double sStep,
58 std::ofstream o(of.c_str());
63 std::unique_ptr<EnergyParams> energyParams;
64 std::map<std::string, SUMOVTypeParameter*> vTypes;
65 if (oc.
isSet(
"vtype") || oc.
isSet(
"additional-files")) {
66 if (!oc.
isSet(
"additional-files")) {
67 throw ProcessError(
TL(
"Option --vtype requires option --additional-files for loading vehicle types"));
72 for (
const std::string& file : oc.
getStringVector(
"additional-files")) {
78 if (!oc.
isSet(
"vtype") && vTypes.size() != 1) {
81 const auto vTypeIt = oc.
isSet(
"vtype") ? vTypes.find(oc.
getString(
"vtype")) : vTypes.begin();
82 if (vTypeIt == vTypes.end()) {
86 c = vTypeIt->second->emissionClass;
88 energyParams = std::unique_ptr<EnergyParams>(
new EnergyParams(vTypeIt->second));
90 energyParams = std::unique_ptr<EnergyParams>(
new EnergyParams());
92 for (
double v = vMin; v <= vMax; v += vStep) {
93 for (
double a = aMin; a <= aMax; a += aStep) {
94 for (
double s = sMin; s <= sMax; s += sStep) {
96 o << v <<
";" << a <<
";" << s <<
";" <<
"CO" <<
";" << result.
CO << std::endl;
97 o << v <<
";" << a <<
";" << s <<
";" <<
"CO2" <<
";" << result.
CO2 << std::endl;
98 o << v <<
";" << a <<
";" << s <<
";" <<
"HC" <<
";" << result.
HC << std::endl;
99 o << v <<
";" << a <<
";" << s <<
";" <<
"PMx" <<
";" << result.
PMx << std::endl;
100 o << v <<
";" << a <<
";" << s <<
";" <<
"NOx" <<
";" << result.
NOx << std::endl;
101 o << v <<
";" << a <<
";" << s <<
";" <<
"fuel" <<
";" << result.
fuel << std::endl;
102 o << v <<
";" << a <<
";" << s <<
";" <<
"electricity" <<
";" << result.
electricity << std::endl;
115 oc.
setApplicationName(
"emissionsMap",
"Eclipse SUMO emissionsMap Version " VERSION_STRING);
121 oc.
addDescription(
"iterate",
"Processing",
TL(
"If set, maps for all available emissions are written."));
124 oc.
addDescription(
"emission-class",
"Processing",
TL(
"Defines the name of the emission class to generate the map for."));
127 oc.
addDescription(
"additional-files",
"Input",
TL(
"Load emission parameters (vTypes) from FILE(s)"));
130 oc.
addDescription(
"vtype",
"Input",
TL(
"Defines the vehicle type to use for emission parameters."));
133 oc.
addDescription(
"v-min",
"Processing",
TL(
"Defines the minimum velocity boundary of the map to generate (in m/s)."));
135 oc.
addDescription(
"v-max",
"Processing",
TL(
"Defines the maximum velocity boundary of the map to generate (in m/s)."));
137 oc.
addDescription(
"v-step",
"Processing",
TL(
"Defines the velocity step size (in m/s)."));
139 oc.
addDescription(
"a-min",
"Processing",
TL(
"Defines the minimum acceleration boundary of the map to generate (in m/s^2)."));
141 oc.
addDescription(
"a-max",
"Processing",
TL(
"Defines the maximum acceleration boundary of the map to generate (in m/s^2)."));
143 oc.
addDescription(
"a-step",
"Processing",
TL(
"Defines the acceleration step size (in m/s^2)."));
145 oc.
addDescription(
"s-min",
"Processing",
TL(
"Defines the minimum slope boundary of the map to generate (in deg)."));
147 oc.
addDescription(
"s-max",
"Processing",
TL(
"Defines the maximum slope boundary of the map to generate (in deg)."));
149 oc.
addDescription(
"s-step",
"Processing",
TL(
"Defines the slope step size (in deg)."));
154 oc.
addDescription(
"output",
"Output",
TL(
"Defines the file (or the path if --iterate was set) to write the map(s) into."));
158 oc.
addDescription(
"emissions.volumetric-fuel",
"Emissions",
TL(
"Return fuel consumption values in (legacy) unit l instead of mg"));
161 oc.
addDescription(
"phemlight-path",
"Emissions",
TL(
"Determines where to load PHEMlight definitions from"));
164 oc.
addDescription(
"phemlight-year",
"Emissions",
TL(
"Enable fleet age modelling with the given reference year in PHEMlight5"));
167 oc.
addDescription(
"phemlight-temperature",
"Emissions",
TL(
"Set ambient temperature to correct NOx emissions in PHEMlight5"));
185 double vStep = oc.
getFloat(
"v-step");
188 double aStep = oc.
getFloat(
"a-step");
191 double sStep = oc.
getFloat(
"s-step");
193 if (!oc.
isSet(
"emission-class")) {
196 if (!oc.
isSet(
"output-file")) {
201 c, vMin, vMax, vStep, aMin, aMax, aStep, sMin, sMax, sStep, oc.
getBool(
"verbose"));
203 if (!oc.
isSet(
"output-file")) {
204 oc.
set(
"output-file",
"./");
207 for (std::vector<SUMOEmissionClass>::const_iterator ci = classes.begin(); ci != classes.end(); ++ci) {
211 c, vMin, vMax, vStep, aMin, aMax, aStep, sMin, sMax, sStep, oc.
getBool(
"verbose"));
219 if (std::string(e.what()) != std::string(
"Process Error") && std::string(e.what()) != std::string(
"")) {
232 std::cout <<
"Success." << std::endl;
#define WRITE_MESSAGEF(...)
std::vector< std::string > StringVector
Definition of a vector of strings.
const double INVALID_DOUBLE
invalid double
An upper class for objects with additional parameters.
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.
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)
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)
bool isDefault(const std::string &name) const
Returns the information whether the named option has still the default value.
void doRegister(const std::string &name, Option *o)
Adds an option under the given name.
void setApplicationDescription(const std::string &appDesc)
Sets the application description.
bool set(const std::string &name, const std::string &value, const bool append=false)
Sets the given value for the named option.
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)
const StringVector & getStringVector(const std::string &name) const
Returns the list of string-value of the named option (only for Option_StringVector)
static OptionsCont & getOptions()
Retrieves the options.
bool processMetaOptions(bool missingOptions)
Checks for help and configuration output, returns whether we should exit.
bool isUsableFileList(const std::string &name) const
Checks whether the named option is usable as a file list (with at least a single file)
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 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 Emissions computeAll(const SUMOEmissionClass c, const double v, const double a, const double slope, const EnergyParams *param)
Returns the amount of all emitted pollutants given the vehicle type and state (in mg/s or ml/s for fu...
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.
An XML-Handler for amitran and netstate trajectories.
static void init()
Initialises the xml-subsystem.
static bool runParser(GenericSAXHandler &handler, const std::string &file, const bool isNet=false, const bool isRoute=false, const bool isExternal=false, const bool catchExceptions=true)
Runs the given handler on the given file; returns if everything's ok.
int main(int argc, char **argv)
void single(const OptionsCont &oc, 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.