67 : myHandler(0), myParkingArea(0), myCurrentStop(0) {}
88 WRITE_ERROR(
"Unknown edge ('" +
id +
"') referenced in a vaporizer.");
97 WRITE_ERROR(
"A vaporization begin time is negative (edge id='" +
id +
"').");
101 WRITE_ERROR(
"A vaporization ends before it starts (edge id='" +
id +
"').");
116 const std::string& base) {
128 throw InvalidArgument(
"The lanes to use within MSLaneSpeedTrigger '" +
id +
"' are not known.");
130 std::vector<MSLane*> lanes;
131 std::vector<std::string> laneIDs;
133 for (std::vector<std::string>::iterator i = laneIDs.begin(); i != laneIDs.end(); ++i) {
136 throw InvalidArgument(
"The lane to use within MSLaneSpeedTrigger '" +
id +
"' is not known.");
138 lanes.push_back(lane);
140 if (lanes.size() == 0) {
141 throw InvalidArgument(
"No lane defined for MSLaneSpeedTrigger '" +
id +
"'.");
178 throw InvalidArgument(
"Invalid position for Charging Station '" +
id +
"'.");
182 buildChargingStation(net,
id, lane, frompos, topos, chargingPower, efficiency, chargeInTransit, chargeDelay);
208 std::vector<std::string> lines;
252 throw InvalidArgument(
"Invalid position for parking area '" +
id +
"'.");
255 std::vector<std::string> lines;
258 beginParkingArea(net,
id, lines, lane, frompos, topos, capacity, width, length, angle);
290 const std::string& base) {
304 throw InvalidArgument(
"The edge " + edgeID +
" to use within the calibrator '" +
id +
"' is not known.");
307 lane =
getLane(attrs,
"calibrator",
id);
308 if (&lane->
getEdge() != edge) {
309 throw InvalidArgument(
"The edge " + edgeID +
" to use within the calibrator '" +
id 310 +
"' does not match the calibrator lane '" + lane->
getID() +
".");
314 lane =
getLane(attrs,
"calibrator",
id);
317 const double pos =
getPosition(attrs, lane,
"calibrator",
id, edge);
323 if (routeProbe !=
"") {
327 if (lane != 0 && edge->
getLanes().size() > 1) {
329 +
"' defined for lane '" + lane->
getID()
330 +
"' will collect data for all lanes of edge '" + edge->
getID() +
"'.");
347 const std::string& base) {
358 throw InvalidArgument(
"The edge to use within MSTriggeredRerouter '" +
id +
"' is not known.");
361 std::vector<std::string> edgeIDs;
363 for (std::vector<std::string>::iterator i = edgeIDs.begin(); i != edgeIDs.end(); ++i) {
366 throw InvalidArgument(
"The edge '" + (*i) +
"' to use within MSTriggeredRerouter '" +
id +
"' is not known.");
368 edges.push_back(edge);
370 if (edges.size() == 0) {
371 throw InvalidArgument(
"No edges found for MSTriggeredRerouter '" +
id +
"'.");
377 throw InvalidArgument(
"Could not parse MSTriggeredRerouter '" +
id +
"'.");
394 const std::vector<MSLane*>& destLanes,
395 const std::string& file) {
404 const std::string& file,
405 const std::string& outfile,
416 const std::string& file,
417 const std::string& outfile,
426 double prob,
const std::string& file,
bool off,
434 double frompos,
double topos,
const SumoXMLTag element, std::string ptStopName) {
446 const std::vector<std::string>& lines,
447 MSLane* lane,
double frompos,
double topos,
448 unsigned int capacity,
449 double width,
double length,
double angle) {
454 throw InvalidArgument(
"Could not build parking area '" +
id +
"'; probably declared twice.");
463 double width,
double length,
double angle) {
467 throw InvalidArgument(
"Could not add lot entry outside a parking area.");
477 throw InvalidArgument(
"Could not end a parking area that is not opened.");
484 double chargingPower,
double efficiency,
bool chargeInTransit,
double chargeDelay) {
487 delete chargingStation;
488 throw InvalidArgument(
"Could not build charging station '" +
id +
"'; probably declared twice.");
494 const std::string& base,
495 const bool allowEmpty) {
515 const std::string& tt,
516 const std::string& tid) {
521 throw InvalidArgument(
"The lane " + objectid +
" to use within the " + tt +
" '" + tid +
"' is not known.");
530 const std::string& tt,
const std::string& tid,
532 assert(lane != 0 || edge != 0);
545 pos = length - (double) 0.1;
548 throw InvalidArgument(
"The position of " + tt +
" '" + tid +
"' lies beyond the lane's '" + lane->
getID() +
"' length.");
550 throw InvalidArgument(
"The position of " + tt +
" '" + tid +
"' lies beyond the edges's '" + edge->
getID() +
"' length.");
void setHandler(NLHandler *handler)
Sets the parent handler to use for nested parsing.
void parseAndAddLotEntry(const SUMOSAXAttributes &attrs)
Parses his values and adds a lot entry to current parking area.
A lane area vehicles can halt at.
void parseAndBuildCalibrator(MSNet &net, const SUMOSAXAttributes &attrs, const std::string &base)
Parses his values and builds a mesoscopic or microscopic calibrator.
double getLength() const
return the length of the edge
SumoXMLTag
Numbers representing SUMO-XML - element names.
MSEdge & getEdge() const
Returns the lane's edge.
virtual void buildStoppingPlace(MSNet &net, std::string id, std::vector< std::string > lines, MSLane *lane, double frompos, double topos, const SumoXMLTag element, std::string string)
Builds a stopping place.
double getLength() const
Returns the lot rectangle length.
static std::string getConfigurationRelative(const std::string &configPath, const std::string &path)
Returns the second path as a relative path to the first file.
void addAccess(MSNet &net, const SUMOSAXAttributes &attrs)
Parses the values and adds an access point to the currently parsed stopping place.
A lane area vehicles can halt at.
const std::vector< MSLane * > & getLanes() const
Returns this edge's lanes.
A calibrator placed over edge.
Writes routes of vehicles passing a certain edge.
virtual void addAccess(MSLane *lane, const double pos)
adds an access point to this stop
Allow/disallow charge in transit in Charging Stations.
void parseAndBuildChargingStation(MSNet &net, const SUMOSAXAttributes &attrs)
Parses his values and builds a charging station.
void parseAndBuildRerouter(MSNet &net, const SUMOSAXAttributes &attrs, const std::string &base)
Parses his values and builds a rerouter.
weights: time range begin
double getLength() const
Returns the lane's length.
static MSNet * getInstance()
Returns the pointer to the unique instance of MSNet (singleton).
static bool dictionary(const std::string &id, MSEdge *edge)
Inserts edge into the static dictionary Returns true if the key id isn't already in the dictionary...
SUMOTime incVaporization(SUMOTime t)
Enables vaporization.
double getWidth() const
Returns the lot rectangle width.
virtual MSTriggeredRerouter * buildRerouter(MSNet &net, const std::string &id, MSEdgeVector &edges, double prob, const std::string &file, bool off, SUMOTime timeThreshold)
builds an rerouter
NLTriggerBuilder()
Constructor.
Base (microsim) event class.
MSParkingArea * myParkingArea
definition of the currently parsed parking area
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.
virtual ~NLTriggerBuilder()
Destructor.
SUMOTime decVaporization(SUMOTime t)
Disables vaporization.
void parseAndBeginParkingArea(MSNet &net, const SUMOSAXAttributes &attrs)
Parses his values and builds a parking area.
virtual MSCalibrator * buildCalibrator(MSNet &net, const std::string &id, MSEdge *edge, MSLane *lane, double pos, const std::string &file, const std::string &outfile, const SUMOTime freq, const MSRouteProbe *probe)
builds a microscopic calibrator
virtual bool hasAttribute(int id) const =0
Returns the information whether the named (by its enum-value) attribute is within the current list...
bool addStoppingPlace(const SumoXMLTag category, MSStoppingPlace *stop)
Adds a stopping place.
void addLotEntry(double x, double y, double z, double width, double length, double angle)
Add a lot entry to current parking area.
#define WRITE_WARNING(msg)
The simulated network and simulation perfomer.
static OptionsCont & getOptions()
Retrieves the options.
SUMOTime getOptSUMOTimeReporting(int attr, const char *objectid, bool &ok, SUMOTime defaultValue, bool report=true) const
Tries to read given attribute assuming it is a SUMOTime.
Changes the speed allowed on a set of lanes.
T get(const std::string &id) const
Retrieves an item.
const std::string & getID() const
Returns the id.
A road/street connecting two junctions.
const NamedObjectCont< MSDetectorFileOutput * > & getTypedDetectors(SumoXMLTag type) const
Returns the list of detectors of the given type.
static void parseStringVector(const std::string &def, std::vector< std::string > &into)
Splits the given string.
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Encapsulated SAX-Attributes.
Calibrates the flow on a segment to a specified one.
NLHandler * myHandler
The parent handler to set for subhandlers.
static bool isAbsolute(const std::string &path)
Returns the information whether the given path is absolute.
virtual void endParkingArea()
End a parking area.
virtual void buildChargingStation(MSNet &net, const std::string &id, MSLane *lane, double frompos, double topos, double chargingPower, double efficiency, bool chargeInTransit, double chargeDelay)
Builds a charging Station.
MSEventControl * getBeginOfTimestepEvents()
Returns the event control for events executed at the begin of a time step.
A wrapper for a Command function.
virtual METriggeredCalibrator * buildMECalibrator(MSNet &net, const std::string &id, const MSEdge *edge, double pos, const std::string &file, const std::string &outfile, const SUMOTime freq, MSRouteProbe *probe)
builds a mesoscopic calibrator
virtual void addEvent(Command *operation, SUMOTime execTimeStep=-1)
Adds an Event.
void parseAndBuildLaneSpeedTrigger(MSNet &net, const SUMOSAXAttributes &attrs, const std::string &base)
Parses his values and builds a lane speed trigger.
void registerParent(const int tag, GenericSAXHandler *handler)
Assigning a parent handler which is enabled when the specified tag is closed.
MSStoppingPlace * myCurrentStop
The currently parsed stop to add access points to.
SUMOTime string2time(const std::string &r)
void parseAndBuildStoppingPlace(MSNet &net, const SUMOSAXAttributes &attrs, const SumoXMLTag element)
Parses the values and builds a stopping places for busses, trains or container vehicles.
SUMOTime getSUMOTimeReporting(int attr, const char *objectid, bool &ok, bool report=true) const
Tries to read given attribute assuming it is a SUMOTime.
MSDetectorControl & getDetectorControl()
Returns the detector control.
std::string getFileName(const SUMOSAXAttributes &attrs, const std::string &base, const bool allowEmpty=false)
Helper method to obtain the filename.
void addLotEntry(double x, double y, double z, double width, double length, double angle)
Add a lot entry to parking area.
The XML-Handler for network loading.
Reroutes vehicles passing an edge.
static bool dictionary(const std::string &id, MSLane *lane)
Static (sic!) container methods {.
static bool checkStopPos(double &startPos, double &endPos, const double laneLength, const double minLength, const bool friendlyPos)
check start and end position of a stop
virtual void beginParkingArea(MSNet &net, const std::string &id, const std::vector< std::string > &lines, MSLane *lane, double frompos, double topos, unsigned int capacity, double width, double length, double angle)
Begin a parking area.
static MELoop * gMesoNet
mesoscopic simulation infrastructure
Calibrates the flow on a segment to a specified one.
Eficiency of the charge in Charging Stations.
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 MSLaneSpeedTrigger * buildLaneSpeedTrigger(MSNet &net, const std::string &id, const std::vector< MSLane * > &destLanes, const std::string &file)
Builds a lane speed trigger.
Delay in the charge of charging stations.
std::vector< MSEdge * > MSEdgeVector
T get(int attr, const char *objectid, bool &ok, bool report=true) const
Tries to read given attribute assuming it is an int.
double getPosition(const SUMOSAXAttributes &attrs, MSLane *lane, const std::string &tt, const std::string &tid, MSEdge *edge=0)
returns the position on the lane checking it
Representation of a lane in the micro simulation.
void buildVaporizer(const SUMOSAXAttributes &attrs)
Builds a vaporization.
MSLane * getLane(const SUMOSAXAttributes &attrs, const std::string &tt, const std::string &tid)
Returns the lane defined by attribute "lane".
double getAngle() const
Returns the lot rectangle angle.