41 const double defaultSlope, std::ostream* stdOut,
OutputDevice* xmlOut)
42 :
SUMOSAXHandler(
""), myComputeA(computeA), myComputeAForward(computeAForward), myAccelZeroCorrection(accelZeroCorrection), myDefaultClass(defaultClass),
43 myDefaultSlope(defaultSlope), myStdOut(stdOut), myXMLOut(xmlOut), myCurrentTime(-1), myStepSize(
TS) {}
70 WRITE_WARNING(
"Unknown actor configuration '" + acId +
"' for vehicle '" +
id +
"'!");
88 WRITE_WARNING(
"Motion state for unknown vehicle '" +
id +
"'!");
112 double& v,
double& a,
double& s) {
129 throw ProcessError(
"Acceleration information is missing; try running with --compute-a.");
147 double& a,
double& s) {
155 const double nextS = s;
160 o << t <<
";" << v <<
";" << a <<
";" << s <<
";"
161 << e.
CO <<
";" << e.
CO2 <<
";" << e.
HC <<
";" << e.
PMx <<
";"
171 double a,
double s) {
194 o <<
"CO:" <<
mySums[id].CO << std::endl
195 <<
"CO2:" <<
mySums[id].CO2 << std::endl
196 <<
"HC:" <<
mySums[id].HC << std::endl
197 <<
"NOx:" <<
mySums[id].NOx << std::endl
198 <<
"PMx:" <<
mySums[id].PMx << std::endl
199 <<
"fuel:" <<
mySums[id].fuel << std::endl
200 <<
"electricity:" <<
mySums[id].electricity << std::endl;
206 o <<
mySums[id].fuel / factor <<
","
207 <<
mySums[id].electricity / factor <<
","
208 <<
mySums[id].CO2 / factor <<
","
209 <<
mySums[id].NOx / factor <<
","
210 <<
mySums[id].CO / factor <<
","
211 <<
mySums[id].HC / factor <<
","
212 <<
mySums[id].PMx / factor << std::endl;
#define WRITE_WARNING(msg)
std::string time2string(SUMOTime t)
convert SUMOTime to string
@ SUMO_TAG_VEHICLE
description of a vehicle
@ SUMO_ATTR_EMISSIONCLASS
@ SUMO_ATTR_TIME
trigger: the time of the step
Static storage of an output device and its base (abstract) implementation.
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
static double getModifiedAccel(const SUMOEmissionClass c, const double v, const double a, const double slope)
Returns the adapted acceleration value, useful for comparing with external PHEMlight references.
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 SUMOEmissionClass getClass(const SUMOEmissionClass base, const std::string &vClass, const std::string &fuel, const std::string &eClass, const double weight)
Returns the emission class fittig the given parameters.
Encapsulated SAX-Attributes.
T getOpt(int attr, const char *objectid, bool &ok, T defaultValue, bool report=true) const
Tries to read given attribute assuming it is an int.
virtual double getFloat(int id) const =0
Returns the double-value of the named (by its enum-value) attribute.
T get(int attr, const char *objectid, bool &ok, bool report=true) const
Tries to read given attribute assuming it is an int.
virtual bool hasAttribute(int id) const =0
Returns the information whether the named (by its enum-value) attribute is within the current list.
virtual std::string getString(int id) const =0
Returns the string-value of the named (by its enum-value) attribute.
SUMOTime getSUMOTimeReporting(int attr, const char *objectid, bool &ok, bool report=true) const
Tries to read given attribute assuming it is a SUMOTime.
SAX-handler base for SUMO-files.
std::map< std::string, double > myLastSlope
const SUMOEmissionClass myDefaultClass
void writeNormedSums(std::ostream &o, const std::string id, const double factor)
const PollutantsInterface::Emissions computeEmissions(const std::string id, const SUMOEmissionClass c, double &v, double &a, double &s)
std::map< std::string, PollutantsInterface::Emissions > mySums
void writeSums(std::ostream &o, const std::string id)
const double myDefaultSlope
static const int INVALID_VALUE
TrajectoriesHandler(const bool computeA, const bool computeAForward, const bool accelZeroCorrection, const SUMOEmissionClass defaultClass, const double defaultSlope, std::ostream *stdOut, OutputDevice *xmlOut)
Constructor.
std::map< std::string, SUMOEmissionClass > myEmissionClassByVehicle
const bool myAccelZeroCorrection
std::map< std::string, SUMOEmissionClass > myEmissionClassByType
bool writeXMLEmissions(const std::string id, const SUMOEmissionClass c, SUMOTime t, double &v, double a=INVALID_VALUE, double s=INVALID_VALUE)
std::map< std::string, double > myLastV
bool writeEmissions(std::ostream &o, const std::string id, const SUMOEmissionClass c, double t, double &v, double &a, double &s)
~TrajectoriesHandler()
Destructor.
const bool myComputeAForward
void myStartElement(int element, const SUMOSAXAttributes &attrs)
Called when an opening-tag occurs.
Storage for collected values of all emission types.