![]() |
SUMO - Simulation of Urban MObility
|
Builds detectors for microsim. More...
#include <NLDetectorBuilder.h>
Data Structures | |
class | E3DetectorDefinition |
Holds the incoming definitions of an e3 detector unless the detector is build. More... | |
Public Member Functions | |
MSDetectorFileOutput * | buildMultiLaneE2Det (const std::string &id, DetectorUsage usage, MSLane *lane, SUMOReal pos, SUMOReal length, SUMOTime haltingTimeThreshold, SUMOReal haltingSpeedThreshold, SUMOReal jamDistThreshold, const std::string &vTypes) |
Builds an e2 detector that continues on preceeding lanes. More... | |
MSE2Collector * | buildSingleLaneE2Det (const std::string &id, DetectorUsage usage, MSLane *lane, SUMOReal pos, SUMOReal length, SUMOTime haltingTimeThreshold, SUMOReal haltingSpeedThreshold, SUMOReal jamDistThreshold, const std::string &vTypes) |
Builds an e2 detector that lies on only one lane. More... | |
NLDetectorBuilder (MSNet &net) | |
Constructor. More... | |
virtual | ~NLDetectorBuilder () |
Destructor. More... | |
Value parsing and detector building methods | |
void | buildInductLoop (const std::string &id, const std::string &lane, SUMOReal pos, SUMOTime splInterval, const std::string &device, bool friendlyPos, const std::string &vTypes) |
Builds an e1 detector and adds it to the net. More... | |
void | buildInstantInductLoop (const std::string &id, const std::string &lane, SUMOReal pos, const std::string &device, bool friendlyPos, const std::string &vTypes) |
Builds an instantenous induction and adds it to the net. More... | |
void | buildE2Detector (const std::string &id, const std::string &lane, SUMOReal pos, SUMOReal length, bool cont, SUMOTime splInterval, const std::string &device, SUMOTime haltingTimeThreshold, SUMOReal haltingSpeedThreshold, SUMOReal jamDistThreshold, bool friendlyPos, const std::string &vTypes) |
Builds an e2 detector with a fixed interval and adds it to the net. More... | |
void | buildE2Detector (const std::string &id, const std::string &lane, SUMOReal pos, SUMOReal length, bool cont, MSTLLogicControl::TLSLogicVariants &tlls, const std::string &device, SUMOTime haltingTimeThreshold, SUMOReal haltingSpeedThreshold, SUMOReal jamDistThreshold, bool friendlyPos, const std::string &vTypes) |
Builds an e2 detector connected to a lsa. More... | |
void | buildE2Detector (const std::string &id, const std::string &lane, SUMOReal pos, SUMOReal length, bool cont, MSTLLogicControl::TLSLogicVariants &tlls, const std::string &tolane, const std::string &device, SUMOTime haltingTimeThreshold, SUMOReal haltingSpeedThreshold, SUMOReal jamDistThreshold, bool friendlyPos, const std::string &vTypes) |
Builds an e2 detector connected to a link's state. More... | |
void | beginE3Detector (const std::string &id, const std::string &device, SUMOTime splInterval, SUMOReal haltingSpeedThreshold, SUMOTime haltingTimeThreshold, const std::string &vTypes) |
Stores temporary the initial information about an e3 detector to build. More... | |
void | addE3Entry (const std::string &lane, SUMOReal pos, bool friendlyPos) |
Builds an entry point of an e3 detector. More... | |
void | addE3Exit (const std::string &lane, SUMOReal pos, bool friendlyPos) |
Builds an exit point of an e3 detector. More... | |
void | endE3Detector () |
Builds of an e3 detector using collected values. More... | |
std::string | getCurrentE3ID () const |
Returns the id of the currently built e3 detector. More... | |
void | buildVTypeProbe (const std::string &id, const std::string &vtype, SUMOTime frequency, const std::string &device) |
Builds a vTypeProbe and adds it to the net. More... | |
void | buildRouteProbe (const std::string &id, const std::string &edge, SUMOTime frequency, SUMOTime begin, const std::string &device, const std::string &vTypes) |
Builds a routeProbe and adds it to the net. More... | |
Detector creating methods | |
Virtual, so they may be overwritten, for generating gui-versions of the detectors, for example. | |
virtual MSDetectorFileOutput * | createInductLoop (const std::string &id, MSLane *lane, SUMOReal pos, const std::string &vTypes, bool show=true) |
Creates an instance of an e1 detector using the given values. More... | |
virtual MSDetectorFileOutput * | createInstantInductLoop (const std::string &id, MSLane *lane, SUMOReal pos, const std::string &od, const std::string &vTypes) |
Creates an instance of an e1 detector using the given values. More... | |
virtual MSE2Collector * | createSingleLaneE2Detector (const std::string &id, DetectorUsage usage, MSLane *lane, SUMOReal pos, SUMOReal length, SUMOTime haltingTimeThreshold, SUMOReal haltingSpeedThreshold, SUMOReal jamDistThreshold, const std::string &vTypes) |
Creates an instance of an e2 detector using the given values. More... | |
virtual MSDetectorFileOutput * | createMultiLaneE2Detector (const std::string &id, DetectorUsage usage, MSLane *lane, SUMOReal pos, SUMOTime haltingTimeThreshold, SUMOReal haltingSpeedThreshold, SUMOReal jamDistThreshold, const std::string &vTypes) |
Creates an instance of an e2ol-detector using the given values. More... | |
virtual MSDetectorFileOutput * | createE3Detector (const std::string &id, const CrossSectionVector &entries, const CrossSectionVector &exits, SUMOReal haltingSpeedThreshold, SUMOTime haltingTimeThreshold, const std::string &vTypes) |
Creates an instance of an e3 detector using the given values. More... | |
void | createEdgeLaneMeanData (const std::string &id, SUMOTime frequency, SUMOTime begin, SUMOTime end, const std::string &type, const bool useLanes, const bool withEmpty, const bool printDefaults, const bool withInternal, const bool trackVehicles, const SUMOReal maxTravelTime, const SUMOReal minSamples, const SUMOReal haltSpeed, const std::string &vTypes, const std::string &device) |
Creates edge based mean data collector using the given specification. More... | |
Protected Member Functions | |
void | convContE2PosLength (const std::string &id, MSLane *clane, SUMOReal &pos, SUMOReal &length, bool frinedly_pos) |
Converts the length and the position information for an e2ol-detector. More... | |
void | convUncontE2PosLength (const std::string &id, MSLane *clane, SUMOReal &pos, SUMOReal &length, bool frinedly_pos) |
Converts the length and the position information for an e2 detector. More... | |
SUMOReal | getPositionChecking (SUMOReal pos, MSLane *lane, bool friendlyPos, const std::string &detid) |
Computes the position to use. More... | |
Value checking/adapting methods | |
MSEdge * | getEdgeChecking (const std::string &edgeID, SumoXMLTag type, const std::string &detid) |
Returns the named edge. More... | |
MSLane * | getLaneChecking (const std::string &laneID, SumoXMLTag type, const std::string &detid) |
Returns the named lane. More... | |
void | checkSampleInterval (SUMOTime splInterval, SumoXMLTag type, const std::string &id) |
Checks whether the given frequency (sample interval) is valid. More... | |
Protected Attributes | |
MSNet & | myNet |
The net to fill. More... | |
Private Member Functions | |
NLDetectorBuilder (const NLDetectorBuilder &) | |
Invalidated copy constructor. More... | |
NLDetectorBuilder & | operator= (const NLDetectorBuilder &) |
Invalidated assignment operator. More... | |
Private Attributes | |
E3DetectorDefinition * | myE3Definition |
definition of the currently parsed e3 detector More... | |
Builds detectors for microsim.
The building methods may be overridden, to build guisim-instances of the triggers, for example.
Definition at line 62 of file NLDetectorBuilder.h.
NLDetectorBuilder::NLDetectorBuilder | ( | MSNet & | net | ) |
Constructor.
[in] | net | The network to which's detector control built detector shall be added |
Definition at line 94 of file NLDetectorBuilder.cpp.
|
virtual |
|
private |
Invalidated copy constructor.
void NLDetectorBuilder::addE3Entry | ( | const std::string & | lane, |
SUMOReal | pos, | ||
bool | friendlyPos | ||
) |
Builds an entry point of an e3 detector.
If the lane is not known or the position information is not within the lane, an InvalidArgument is thrown. Otherwise a MSCrossSection is built using the obtained values and added to the list of entries of the e3 definition stored in "myE3Definition".
[in] | lane | The id of the lane the entry shall be placed at |
[in] | pos | The position on the lane the entry shall be placed at |
[in] | friendlyPos | Whether the position information shall be used "friendly" (see user docs) |
InvalidArgument | If one of the values is invalid |
Definition at line 278 of file NLDetectorBuilder.cpp.
References getLaneChecking(), getPositionChecking(), myE3Definition, NLDetectorBuilder::E3DetectorDefinition::myEntries, NLDetectorBuilder::E3DetectorDefinition::myID, and SUMO_TAG_E3DETECTOR.
Referenced by NLHandler::addE3Entry().
void NLDetectorBuilder::addE3Exit | ( | const std::string & | lane, |
SUMOReal | pos, | ||
bool | friendlyPos | ||
) |
Builds an exit point of an e3 detector.
If the lane is not known or the position information is not within the lane, an InvalidArgument is thrown. Otherwise a MSCrossSection is built using the obtained values and added to the list of exits of the e3 definition stored in "myE3Definition".
[in] | lane | The id of the lane the exit shall be placed at |
[in] | pos | The position on the lane the exit shall be placed at |
[in] | friendlyPos | Whether the position information shall be used "friendly" (see user docs) |
InvalidArgument | If one of the values is invalid |
Definition at line 292 of file NLDetectorBuilder.cpp.
References getLaneChecking(), getPositionChecking(), myE3Definition, NLDetectorBuilder::E3DetectorDefinition::myExits, NLDetectorBuilder::E3DetectorDefinition::myID, and SUMO_TAG_E3DETECTOR.
Referenced by NLHandler::addE3Exit().
void NLDetectorBuilder::beginE3Detector | ( | const std::string & | id, |
const std::string & | device, | ||
SUMOTime | splInterval, | ||
SUMOReal | haltingSpeedThreshold, | ||
SUMOTime | haltingTimeThreshold, | ||
const std::string & | vTypes | ||
) |
Stores temporary the initial information about an e3 detector to build.
If the given sample interval is < 0, an InvalidArgument is thrown. Otherwise, the values are stored in a new instance of E3DetectorDefinition within "myE3Definition".
[in] | id | The id the detector shall have |
[in] | device | The output device the detector shall write into |
[in] | splInterval | The aggregation time span the detector shall use |
[in] | haltingTimeThreshold | Detector parameter: the time a vehicle's speed must be below haltingSpeedThreshold to be assigned as jammed |
[in] | haltingSpeedThreshold | Detector parameter: the speed a vehicle's speed must be below to be assigned as jammed |
InvalidArgument | If one of the values is invalid |
Definition at line 267 of file NLDetectorBuilder.cpp.
References checkSampleInterval(), myE3Definition, and SUMO_TAG_E3DETECTOR.
Referenced by NLHandler::beginE3Detector().
void NLDetectorBuilder::buildE2Detector | ( | const std::string & | id, |
const std::string & | lane, | ||
SUMOReal | pos, | ||
SUMOReal | length, | ||
bool | cont, | ||
SUMOTime | splInterval, | ||
const std::string & | device, | ||
SUMOTime | haltingTimeThreshold, | ||
SUMOReal | haltingSpeedThreshold, | ||
SUMOReal | jamDistThreshold, | ||
bool | friendlyPos, | ||
const std::string & | vTypes | ||
) |
Builds an e2 detector with a fixed interval and adds it to the net.
Checks the given values, first. If one of the values is invalid (lane is not known, sampling frequency<=0, position is larger than lane's length, length is too large, the id is already in use), an InvalidArgument is thrown.
Otherwise the e2 detector is built, either by calling "buildMultiLaneE2Det" if the detector shall continue on consecutive lanes, or by calling "buildSingleLaneE2Det" if it is a one-lane detector.
[in] | id | The id the detector shall have |
[in] | lane | The name of the lane the detector is placed at |
[in] | pos | The definition of the position on the lane the detector shall be placed at |
[in] | length | The definition of the length the detector shall have |
[in] | cont | Whether the detector shall continue on predeceeding lanes |
[in] | splInterval | The aggregation time span the detector shall use |
[in] | device | The output device the detector shall write into |
[in] | haltingTimeThreshold | Detector parameter: the time a vehicle's speed must be below haltingSpeedThreshold to be assigned as jammed |
[in] | haltingSpeedThreshold | Detector parameter: the speed a vehicle's speed must be below to be assigned as jammed |
[in] | jamDistThreshold | Detector parameter: the distance between two vehicles in order to not count them to one jam |
[in] | friendlyPos | Whether the position information shall be used "friendly" (see user docs) |
InvalidArgument | If one of the values is invalid |
Definition at line 137 of file NLDetectorBuilder.cpp.
References MSDetectorControl::add(), buildMultiLaneE2Det(), buildSingleLaneE2Det(), checkSampleInterval(), convContE2PosLength(), convUncontE2PosLength(), DU_USER_DEFINED, MSNet::getDetectorControl(), getLaneChecking(), myNet, SUMO_TAG_E2DETECTOR, and SUMO_TAG_LANE_AREA_DETECTOR.
Referenced by NLHandler::addE2Detector().
void NLDetectorBuilder::buildE2Detector | ( | const std::string & | id, |
const std::string & | lane, | ||
SUMOReal | pos, | ||
SUMOReal | length, | ||
bool | cont, | ||
MSTLLogicControl::TLSLogicVariants & | tlls, | ||
const std::string & | device, | ||
SUMOTime | haltingTimeThreshold, | ||
SUMOReal | haltingSpeedThreshold, | ||
SUMOReal | jamDistThreshold, | ||
bool | friendlyPos, | ||
const std::string & | vTypes | ||
) |
Builds an e2 detector connected to a lsa.
Checks the given values, first. If one of the values is invalid (lane is not known, position is larger than lane's length, length is too large, the tls is not known, the id is already in use), an InvalidArgument is thrown.
Otherwise the e2 detector is built, either by calling "buildMultiLaneE2Det" if the detector shall continue on consecutive lanes, or by calling "buildSingleLaneE2Det" if it is a one-lane detector.
[in] | id | The id the detector shall have |
[in] | lane | The name of the lane the detector is placed at |
[in] | pos | The definition of the position on the lane the detector shall be placed at |
[in] | length | The definition of the length the detector shall have |
[in] | cont | Whether the detector shall continue on predeceeding lanes |
[in] | tlls | The tls the detector is assigned to |
[in] | device | The output device the detector shall write into |
[in] | haltingTimeThreshold | Detector parameter: the time a vehicle's speed must be below haltingSpeedThreshold to be assigned as jammed |
[in] | haltingSpeedThreshold | Detector parameter: the speed a vehicle's speed must be below to be assigned as jammed |
[in] | jamDistThreshold | Detector parameter: the distance between two vehicles in order to not count them to one jam |
[in] | friendlyPos | Whether the position information shall be used "friendly" (see user docs) |
InvalidArgument | If one of the values is invalid |
Definition at line 162 of file NLDetectorBuilder.cpp.
References MSDetectorControl::add(), buildMultiLaneE2Det(), buildSingleLaneE2Det(), convContE2PosLength(), convUncontE2PosLength(), DU_USER_DEFINED, MSTLLogicControl::TLSLogicVariants::getActive(), MSNet::getCurrentTimeStep(), MSNet::getDetectorControl(), OutputDevice::getDevice(), getLaneChecking(), myNet, SUMO_TAG_E2DETECTOR, and SUMO_TAG_LANE_AREA_DETECTOR.
void NLDetectorBuilder::buildE2Detector | ( | const std::string & | id, |
const std::string & | lane, | ||
SUMOReal | pos, | ||
SUMOReal | length, | ||
bool | cont, | ||
MSTLLogicControl::TLSLogicVariants & | tlls, | ||
const std::string & | tolane, | ||
const std::string & | device, | ||
SUMOTime | haltingTimeThreshold, | ||
SUMOReal | haltingSpeedThreshold, | ||
SUMOReal | jamDistThreshold, | ||
bool | friendlyPos, | ||
const std::string & | vTypes | ||
) |
Builds an e2 detector connected to a link's state.
Checks the given values, first. If one of the values is invalid (lane is not known, position is larger than lane's length, length is too large, the tls or the destination lane is not known, the id is already in use), an InvalidArgument is thrown.
Otherwise the e2 detector is built, either by calling "buildMultiLaneE2Det" if the detector shall continue on consecutive lanes, or by calling "buildSingleLaneE2Det" if it is a one-lane detector.
[in] | id | The id the detector shall have |
[in] | lane | The name of the lane the detector is placed at |
[in] | pos | The definition of the position on the lane the detector shall be placed at |
[in] | length | The definition of the length the detector shall have |
[in] | cont | Whether the detector shall continue on predeceeding lanes |
[in] | tlls | The tls the detector is assigned to |
[in] | tolane | The name of the lane to which the link to which the detector to build shall be assigned to points |
[in] | device | The output device the detector shall write into |
[in] | haltingTimeThreshold | Detector parameter: the time a vehicle's speed must be below haltingSpeedThreshold to be assigned as jammed |
[in] | haltingSpeedThreshold | Detector parameter: the speed a vehicle's speed must be below to be assigned as jammed |
[in] | jamDistThreshold | Detector parameter: the distance between two vehicles in order to not count them to one jam |
[in] | friendlyPos | Whether the position information shall be used "friendly" (see user docs) |
InvalidArgument | If one of the values is invalid |
Definition at line 192 of file NLDetectorBuilder.cpp.
References MSDetectorControl::add(), buildMultiLaneE2Det(), buildSingleLaneE2Det(), convContE2PosLength(), convUncontE2PosLength(), DU_USER_DEFINED, MSTLLogicControl::TLSLogicVariants::getActive(), MSLinkContHelper::getConnectingLink(), MSNet::getCurrentTimeStep(), MSNet::getDetectorControl(), OutputDevice::getDevice(), getLaneChecking(), myNet, SUMO_TAG_E2DETECTOR, and SUMO_TAG_LANE_AREA_DETECTOR.
void NLDetectorBuilder::buildInductLoop | ( | const std::string & | id, |
const std::string & | lane, | ||
SUMOReal | pos, | ||
SUMOTime | splInterval, | ||
const std::string & | device, | ||
bool | friendlyPos, | ||
const std::string & | vTypes | ||
) |
Builds an e1 detector and adds it to the net.
Checks the given values, first. If one of the values is invalid (lane is not known, sampling frequency<=0, position is larger than lane's length, the id is already in use), an InvalidArgument is thrown.
Otherwise the e1 detector is built by calling "createInductLoop".
Internally, there is also a distinction whether a mesosim e1 detector shall be built.
[in] | id | The id the detector shall have |
[in] | lane | The name of the lane the detector is placed at |
[in] | pos | The definition of the position on the lane the detector shall be placed at |
[in] | splInterval | The aggregation time span the detector shall use |
[in] | device | The output device the detector shall write into |
[in] | friendlyPos | Whether the position information shall be used "friendly" (see user docs) |
[in] | splitByType | Whether vehicle types shall be disaggregated |
InvalidArgument | If one of the values is invalid |
Definition at line 104 of file NLDetectorBuilder.cpp.
References MSDetectorControl::add(), checkSampleInterval(), createInductLoop(), MSNet::getDetectorControl(), getLaneChecking(), getPositionChecking(), myNet, SUMO_TAG_E1DETECTOR, and SUMO_TAG_INDUCTION_LOOP.
Referenced by NLHandler::addE1Detector().
void NLDetectorBuilder::buildInstantInductLoop | ( | const std::string & | id, |
const std::string & | lane, | ||
SUMOReal | pos, | ||
const std::string & | device, | ||
bool | friendlyPos, | ||
const std::string & | vTypes | ||
) |
Builds an instantenous induction and adds it to the net.
Checks the given values, first. If one of the values is invalid (lane is not known, sampling frequency<=0, position is larger than lane's length, the id is already in use), an InvalidArgument is thrown.
Otherwise the e1 detector is built by calling "createInductLoop".
[in] | id | The id the detector shall have |
[in] | lane | The name of the lane the detector is placed at |
[in] | pos | The definition of the position on the lane the detector shall be placed at |
[in] | device | The output device the detector shall write into |
[in] | friendlyPos | Whether the position information shall be used "friendly" (see user docs) |
InvalidArgument | If one of the values is invalid |
Definition at line 121 of file NLDetectorBuilder.cpp.
References MSDetectorControl::add(), createInstantInductLoop(), MSNet::getDetectorControl(), getLaneChecking(), getPositionChecking(), myNet, and SUMO_TAG_INSTANT_INDUCTION_LOOP.
Referenced by NLHandler::addInstantE1Detector().
MSDetectorFileOutput * NLDetectorBuilder::buildMultiLaneE2Det | ( | const std::string & | id, |
DetectorUsage | usage, | ||
MSLane * | lane, | ||
SUMOReal | pos, | ||
SUMOReal | length, | ||
SUMOTime | haltingTimeThreshold, | ||
SUMOReal | haltingSpeedThreshold, | ||
SUMOReal | jamDistThreshold, | ||
const std::string & | vTypes | ||
) |
Builds an e2 detector that continues on preceeding lanes.
[in] | id | The id the detector shall have |
[in] | usage | Information how the detector is used within the simulation |
[in] | lane | The lane the detector is placed at |
[in] | pos | The position on the lane the detector is placed at |
[in] | length | The length the detector has |
[in] | haltingTimeThreshold | Detector parameter: the time a vehicle's speed must be below haltingSpeedThreshold to be assigned as jammed |
[in] | haltingSpeedThreshold | Detector parameter: the speed a vehicle's speed must be below to be assigned as jammed |
[in] | jamDistThreshold | Detector parameter: the distance between two vehicles in order to not count them to one jam |
Definition at line 374 of file NLDetectorBuilder.cpp.
References createMultiLaneE2Detector().
Referenced by buildE2Detector().
void NLDetectorBuilder::buildRouteProbe | ( | const std::string & | id, |
const std::string & | edge, | ||
SUMOTime | frequency, | ||
SUMOTime | begin, | ||
const std::string & | device, | ||
const std::string & | vTypes | ||
) |
Builds a routeProbe and adds it to the net.
Checks the given values, first. If one of the values is invalid (sampling frequency<=0), an InvalidArgument is thrown.
Otherwise the routeProbe is built (directly).
[in] | id | The id the detector shall have |
[in] | edge | The name of the edge the detector shall observe |
[in] | frequency | The reporting frequency |
[in] | begin | The start of the first reporting interval |
[in] | device | The output device the detector shall write into |
InvalidArgument | If one of the values is invalid |
Definition at line 346 of file NLDetectorBuilder.cpp.
References MSDetectorControl::add(), checkSampleInterval(), MSNet::getDetectorControl(), getEdgeChecking(), myNet, SUMO_TAG_ROUTEPROBE, and toString().
Referenced by NLHandler::addRouteProbeDetector().
MSE2Collector * NLDetectorBuilder::buildSingleLaneE2Det | ( | const std::string & | id, |
DetectorUsage | usage, | ||
MSLane * | lane, | ||
SUMOReal | pos, | ||
SUMOReal | length, | ||
SUMOTime | haltingTimeThreshold, | ||
SUMOReal | haltingSpeedThreshold, | ||
SUMOReal | jamDistThreshold, | ||
const std::string & | vTypes | ||
) |
Builds an e2 detector that lies on only one lane.
[in] | id | The id the detector shall have |
[in] | usage | Information how the detector is used within the simulation |
[in] | lane | The lane the detector is placed at |
[in] | pos | The position on the lane the detector is placed at |
[in] | length | The length the detector has |
[in] | haltingTimeThreshold | Detector parameter: the time a vehicle's speed must be below haltingSpeedThreshold to be assigned as jammed |
[in] | haltingSpeedThreshold | Detector parameter: the speed a vehicle's speed must be below to be assigned as jammed |
[in] | jamDistThreshold | Detector parameter: the distance between two vehicles in order to not count them to one jam |
Definition at line 360 of file NLDetectorBuilder.cpp.
References createSingleLaneE2Detector().
Referenced by MSSOTLE2Sensors::buildContinueSensior(), MSSOTLE2Sensors::buildCountSensorForLane(), MSSOTLE2Sensors::buildCountSensorForOutLane(), buildE2Detector(), MSSOTLE2Sensors::buildSensorForLane(), and MSSOTLE2Sensors::buildSensorForOutLane().
void NLDetectorBuilder::buildVTypeProbe | ( | const std::string & | id, |
const std::string & | vtype, | ||
SUMOTime | frequency, | ||
const std::string & | device | ||
) |
Builds a vTypeProbe and adds it to the net.
Checks the given values, first. If one of the values is invalid (sampling frequency<=0), an InvalidArgument is thrown.
Otherwise the vTypeProbe is built (directly).
[in] | id | The id the detector shall have |
[in] | vtype | The name of the vehicle type the detector shall observe |
[in] | frequency | The reporting frequency |
[in] | device | The output device the detector shall write into |
InvalidArgument | If one of the values is invalid |
Definition at line 337 of file NLDetectorBuilder.cpp.
References checkSampleInterval(), OutputDevice::getDevice(), and SUMO_TAG_VTYPEPROBE.
Referenced by NLHandler::addVTypeProbeDetector().
|
protected |
Checks whether the given frequency (sample interval) is valid.
[in] | splInterval | The sample interval |
[in] | type | The type of the detector (for error message generation) |
[in] | id | The id of the detector (for error message generation) |
InvalidArgument | If the given sample interval is invalid (<=0) |
Definition at line 535 of file NLDetectorBuilder.cpp.
References toString().
Referenced by beginE3Detector(), buildE2Detector(), buildInductLoop(), buildRouteProbe(), and buildVTypeProbe().
|
protected |
Converts the length and the position information for an e2ol-detector.
[in] | id | The id of the currently built detector (for error message generation) |
[in] | clane | The lane the detector is placed at |
[in,out] | pos | The position definition to convert |
[in,out] | length | The length definition to convert |
InvalidArgument | If the defined position or the defined length is invalid |
Definition at line 257 of file NLDetectorBuilder.cpp.
References getPositionChecking().
Referenced by buildE2Detector().
|
protected |
Converts the length and the position information for an e2 detector.
[in] | id | The id of the currently built detector (for error message generation) |
[in] | clane | The lane the detector is placed at |
[in,out] | pos | The position definition to convert |
[in,out] | length | The length definition to convert |
InvalidArgument | If the defined position or the defined length is invalid |
Definition at line 233 of file NLDetectorBuilder.cpp.
References Named::getID(), MSLane::getLength(), getPositionChecking(), and SUMOReal.
Referenced by buildE2Detector().
|
virtual |
Creates an instance of an e3 detector using the given values.
Simply calls the MSE3Collector constructor.
[in] | id | The id the detector shall have |
[in] | entries | The list of this detector's entries |
[in] | exits | The list of this detector's exits |
[in] | haltingSpeedThreshold | Detector parameter: the speed a vehicle's speed must be below to be assigned as jammed |
[in] | haltingTimeThreshold | Detector parameter: the time a vehicle's speed must be below haltingSpeedThreshold to be assigned as jammed |
Reimplemented in GUIDetectorBuilder.
Definition at line 426 of file NLDetectorBuilder.cpp.
References SUMOReal.
Referenced by endE3Detector().
void NLDetectorBuilder::createEdgeLaneMeanData | ( | const std::string & | id, |
SUMOTime | frequency, | ||
SUMOTime | begin, | ||
SUMOTime | end, | ||
const std::string & | type, | ||
const bool | useLanes, | ||
const bool | withEmpty, | ||
const bool | printDefaults, | ||
const bool | withInternal, | ||
const bool | trackVehicles, | ||
const SUMOReal | maxTravelTime, | ||
const SUMOReal | minSamples, | ||
const SUMOReal | haltSpeed, | ||
const std::string & | vTypes, | ||
const std::string & | device | ||
) |
Creates edge based mean data collector using the given specification.
[in] | id | The id the detector shall have |
[in] | frequency | The aggregation interval the detector shall use |
[in] | begin | dump begin time |
[in] | end | dump end time |
[in] | type | The type of values to be generated |
[in] | useLanes | Information whether lane-based or edge-based dump shall be generated |
[in] | withEmpty | Information whether empty lanes/edges shall be written |
[in] | withInternal | Information whether internal lanes/edges shall be written |
[in] | trackVehicles | Information whether information shall be collected per vehicle |
[in] | maxTravelTime | the maximum travel time to output |
[in] | minSamples | the minimum number of sample seconds before the values are valid |
[in] | haltSpeed | the maximum speed to consider a vehicle waiting |
[in] | vTypes | the set of vehicle types to consider |
InvalidArgument | If one of the values is invalid |
Definition at line 463 of file NLDetectorBuilder.cpp.
References MSDetectorControl::add(), MSNet::getDetectorControl(), MSNet::getInstance(), SUMOTime_MAX, and WRITE_WARNING.
Referenced by NLHandler::addEdgeLaneMeanData().
|
virtual |
Creates an instance of an e1 detector using the given values.
Simply calls the MSInductLoop constructor
[in] | id | The id the detector shall have |
[in] | lane | The lane the detector is placed at |
[in] | pos | The position on the lane the detector is placed at |
[in] | splitByType | Whether additional information split by vehicle classes shall be generated |
[in] | show | Whether to show the detector in the gui if available |
Reimplemented in GUIDetectorBuilder.
Definition at line 389 of file NLDetectorBuilder.cpp.
References MSLane::getEdge(), MSGlobals::gMesoNet, and MSGlobals::gUseMesoSim.
Referenced by buildInductLoop(), GUIDetectorBuilder::createInductLoop(), and MSActuatedTrafficLightLogic::init().
|
virtual |
Creates an instance of an e1 detector using the given values.
Simply calls the MSInductLoop constructor
[in] | id | The id the detector shall have |
[in] | lane | The lane the detector is placed at |
[in] | pos | The position on the lane the detector is placed at |
[in] | od | The output device the loop shall use |
Reimplemented in GUIDetectorBuilder.
Definition at line 400 of file NLDetectorBuilder.cpp.
References OutputDevice::getDevice().
Referenced by buildInstantInductLoop().
|
virtual |
Creates an instance of an e2ol-detector using the given values.
Simply calls the MS_E2_ZS_CollectorOverLanes constructor. After this call, the detector must be initialised.
[in] | id | The id the detector shall have |
[in] | lane | The lane the detector is placed at |
[in] | pos | The position on the lane the detector is placed at |
[in] | length | The length the detector has |
[in] | haltingTimeThreshold | Detector parameter: the time a vehicle's speed must be below haltingSpeedThreshold to be assigned as jammed |
[in] | haltingSpeedThreshold | Detector parameter: the speed a vehicle's speed must be below to be assigned as jammed |
[in] | jamDistThreshold | Detector parameter: the distance between two vehicles in order to not count them to one jam |
Reimplemented in GUIDetectorBuilder.
Definition at line 417 of file NLDetectorBuilder.cpp.
Referenced by buildMultiLaneE2Det().
|
virtual |
Creates an instance of an e2 detector using the given values.
Simply calls the MSE2Collector constructor
[in] | id | The id the detector shall have |
[in] | lane | The lane the detector is placed at |
[in] | pos | The position on the lane the detector is placed at |
[in] | length | The length the detector has |
[in] | haltingTimeThreshold | Detector parameter: the time a vehicle's speed must be below haltingSpeedThreshold to be assigned as jammed |
[in] | haltingSpeedThreshold | Detector parameter: the speed a vehicle's speed must be below to be assigned as jammed |
[in] | jamDistThreshold | Detector parameter: the distance between two vehicles in order to not count them to one jam |
Reimplemented in GUIDetectorBuilder.
Definition at line 408 of file NLDetectorBuilder.cpp.
Referenced by buildSingleLaneE2Det().
void NLDetectorBuilder::endE3Detector | ( | ) |
Builds of an e3 detector using collected values.
The parameter collected are used to build an e3 detector using "createE3Detector". The resulting detector is added to the net.
[in] | lane | The id of the lane the exit shall be placed at |
[in] | pos | The position on the lane the exit shall be placed at |
InvalidArgument | If one of the values is invalid |
Definition at line 315 of file NLDetectorBuilder.cpp.
References MSDetectorControl::add(), createE3Detector(), MSNet::getDetectorControl(), NLDetectorBuilder::E3DetectorDefinition::myDevice, myE3Definition, NLDetectorBuilder::E3DetectorDefinition::myEntries, NLDetectorBuilder::E3DetectorDefinition::myExits, NLDetectorBuilder::E3DetectorDefinition::myHaltingSpeedThreshold, NLDetectorBuilder::E3DetectorDefinition::myHaltingTimeThreshold, NLDetectorBuilder::E3DetectorDefinition::myID, myNet, NLDetectorBuilder::E3DetectorDefinition::mySampleInterval, NLDetectorBuilder::E3DetectorDefinition::myVehicleTypes, SUMO_TAG_DET_ENTRY, SUMO_TAG_DET_EXIT, SUMO_TAG_E3DETECTOR, SUMO_TAG_ENTRY_EXIT_DETECTOR, toString(), and WRITE_WARNING.
Referenced by NLHandler::endE3Detector().
std::string NLDetectorBuilder::getCurrentE3ID | ( | ) | const |
Returns the id of the currently built e3 detector.
This is used for error-message generation only. If no id is known, "<unknown>" is returned.
Definition at line 306 of file NLDetectorBuilder.cpp.
References myE3Definition, and NLDetectorBuilder::E3DetectorDefinition::myID.
Referenced by NLHandler::addE3Entry(), and NLHandler::addE3Exit().
|
protected |
Returns the named edge.
[in] | edgeID | The id of the lane |
[in] | type | The type of the detector (for error message generation) |
[in] | detid | The id of the currently built detector (for error message generation) |
InvalidArgument | If the named edge is not known |
Definition at line 511 of file NLDetectorBuilder.cpp.
References MSEdge::dictionary(), and toString().
Referenced by buildRouteProbe().
|
protected |
Returns the named lane.
[in] | laneID | The id of the lane |
[in] | type | The type of the detector (for error message generation) |
[in] | detid | The id of the currently built detector (for error message generation) |
InvalidArgument | If the named lane is not known |
Definition at line 523 of file NLDetectorBuilder.cpp.
References MSLane::dictionary(), and toString().
Referenced by addE3Entry(), addE3Exit(), buildE2Detector(), buildInductLoop(), and buildInstantInductLoop().
|
protected |
Computes the position to use.
At first, it is checked whether the given position is negative. If so, the position is added to the lane's length to obtain the position counted backwards.
If the resulting position is beyond or in front (<0) of the lane, it is either set to the according lane's boundary (.1 or length-.1) if friendlyPos is set, or, if friendlyPos is not set, an InvalidArgument is thrown.
[in] | pos | Definition of the position on the lane |
[in] | lane | The lane the position must be valid for |
[in] | friendlyPos | Whether false positions shall be made acceptable |
[in] | detid | The id of the currently built detector (for error message generation) |
InvalidArgument | If the defined position is invalid |
Definition at line 437 of file NLDetectorBuilder.cpp.
References Named::getID(), and MSLane::getLength().
Referenced by addE3Entry(), addE3Exit(), buildInductLoop(), buildInstantInductLoop(), convContE2PosLength(), and convUncontE2PosLength().
|
private |
Invalidated assignment operator.
|
private |
definition of the currently parsed e3 detector
Definition at line 624 of file NLDetectorBuilder.h.
Referenced by addE3Entry(), addE3Exit(), beginE3Detector(), endE3Detector(), getCurrentE3ID(), and ~NLDetectorBuilder().
|
protected |
The net to fill.
Definition at line 619 of file NLDetectorBuilder.h.
Referenced by buildE2Detector(), buildInductLoop(), buildInstantInductLoop(), buildRouteProbe(), and endE3Detector().