56 #ifdef CHECK_MEMORY_LEAKS 58 #endif // CHECK_MEMORY_LEAKS 66 const bool emptyDestinationsAllowed,
67 const bool ignoreErrors) :
71 myActiveContainerPlan(0),
72 myActiveContainerPlanSize(0),
73 myTryRepair(tryRepair),
74 myEmptyDestinationsAllowed(emptyDestinationsAllowed),
76 myCurrentVTypeDistribution(0),
77 myCurrentAlternatives(0) {
115 for (ConstROEdgeVector::const_iterator i = viaEdges.begin(); i != viaEdges.end(); ++i) {
160 const std::string fromID = attrs.
get<std::string>(
SUMO_ATTR_FROM, pid.c_str(), ok);
163 throw ProcessError(
"The from edge '" + fromID +
"' within a ride of person '" + pid +
"' is not known.");
165 if (!plan.empty() && plan.back()->getDestination() != from) {
168 }
else if (plan.empty()) {
169 throw ProcessError(
"The start edge for person '" + pid +
"' is not known.");
171 const std::string toID = attrs.
get<std::string>(
SUMO_ATTR_TO, pid.c_str(), ok);
174 throw ProcessError(
"The to edge '" + toID +
"' within a ride of person '" + pid +
"' is not known.");
186 if (attrs.
hasAttribute(SUMO_ATTR_DURATION) && duration <= 0) {
190 if (attrs.
hasAttribute(SUMO_ATTR_SPEED) && speed <= 0) {
213 (*myActiveContainerPlan) << attrs;
217 (*myActiveContainerPlan) << attrs;
227 (*myActiveContainerPlan) << attrs;
264 while (st.hasNext()) {
324 WRITE_WARNING(
"No probability for a route in '" + rid +
"', using default.");
436 if (ok && index < 0) {
446 const std::string routeID = st.
next();
494 if (route->
getID()[0] !=
'!') {
588 (*myActiveContainerPlan) << attrs;
593 std::string errorSuffix;
619 if (containerstop == 0) {
629 if (!ok || stop.
lane ==
"") {
630 myErrorOutput->
inform(
"A stop must be placed on a bus stop, a container stop or a lane" + errorSuffix);
662 const std::string& rid) {
664 std::istringstream in(desc, std::ios::binary);
670 const std::string
id = st.next();
675 into.push_back(edge);
696 +
"\n The route can not be build.");
702 +
"\n The route can not be build.");
709 const std::string mode = st.next();
712 }
else if (mode ==
"bicycle") {
714 }
else if (mode ==
"public") {
SUMOReal getLength() const
Returns the length of the edge.
RORouteDef * copy(const std::string &id, const SUMOTime stopOffset) const
Returns a deep copy of the route definition.
const int VEHPARS_TO_TAZ_SET
RORouteDef * myCurrentAlternatives
The currently parsed route alternatives.
void addRide(const ROEdge *const from, const ROEdge *const to, const std::string &lines, const std::string &destStop)
static MsgHandler * getErrorInstance()
Returns the instance to add errors to.
SUMOReal myCurrentCosts
The currently parsed route costs.
virtual void myEndElement(int element)
Called when a closing tag occurs.
void closeVehicleTypeDistribution()
std::string containerstop
(Optional) container stop if one is assigned to the stop
int repetitionNumber
The number of times the vehicle shall be repeatedly inserted.
void closePerson()
Ends the processing of a person.
std::string vtypeid
The vehicle's type id.
int getNumSuccessors() const
Returns the number of edges this edge is connected to.
void openRouteDistribution(const SUMOSAXAttributes &attrs)
static void parseVTypeEmbedded(SUMOVTypeParameter &into, int element, const SUMOSAXAttributes &attrs, bool fromVType=false)
Parses an element embedded in vtype definition.
Represents a generic random distribution.
SUMOVehicleParameter * myVehicleParameter
Parameter of the current vehicle, trip, person, container or flow.
SUMOReal getOverallProb() const
Returns the sum of the probablities of the contained routes.
static void readEdgeVector(std::istream &in, std::vector< const E *> &edges, const std::string &rid)
Reads an edge vector binary.
Structure representing possible vehicle parameter.
bool add(SUMOReal prob, T val, bool checkDuplicates=true)
Adds a value with an assigned probability to the distribution.
ConstROEdgeVector myActiveRoute
The current route.
void addAlternativeDef(const RORouteDef *alternative)
Adds an alternative loaded from the file.
std::string getString() const
Returns the current content as a string.
static bool checkStopPos(SUMOReal &startPos, SUMOReal &endPos, const SUMOReal laneLength, const SUMOReal minLength, const bool friendlyPos)
check start and end position of a stop
SUMOVTypeParameter * myCurrentVType
The currently parsed vehicle type.
int repetitionsDone
The number of times the vehicle was already inserted.
virtual void myStartElement(int element, const SUMOSAXAttributes &attrs)
Called on the opening of a tag;.
void addWalk(const ConstROEdgeVector &edges, const SUMOReal duration, const SUMOReal speed, const SUMOReal departPos, const SUMOReal arrivalPos, const std::string &busStop)
MsgHandler *const myErrorOutput
Depending on the "ignore-errors" option different outputs are used.
const SUMOReal DEFAULT_VEH_PROB
SUMOReal myActiveRouteProbability
The probability of the current route.
virtual void myEndElement(int element)
Called when a closing tag occurs.
void registerLastDepart()
save last depart (only to be used if vehicle is not discarded)
int myActiveContainerPlanSize
The number of stages in myActiveContainerPlan.
std::vector< const ROEdge * > ConstROEdgeVector
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
void openVehicleTypeDistribution(const SUMOSAXAttributes &attrs)
const std::string & getID() const
Returns the id.
std::string myActiveRouteID
The id of the current route.
int myInsertStopEdgesAt
where stop edges can be inserted into the current route (-1 means no insertion)
const std::string DEFAULT_VTYPE_ID
void closeVehicle()
Ends the processing of a vehicle.
virtual bool hasAttribute(int id) const =0
Returns the information whether the named (by its enum-value) attribute is within the current list...
RORouteDef * getRouteDef(const std::string &name) const
Returns the named route definition.
#define WRITE_WARNING(msg)
virtual bool addVehicleType(SUMOVTypeParameter *type)
Adds a read vehicle type definition to the network.
RandomDistributor< SUMOVTypeParameter * > * myCurrentVTypeDistribution
The currently parsed distribution of vehicle types (probability->vehicle type)
SUMOTime repetitionOffset
The time offset between vehicle reinsertions.
virtual bool addVehicle(const std::string &id, ROVehicle *veh)
static OptionsCont & getOptions()
Retrieves the options.
std::string toTaz
The vehicle's destination zone (district)
std::vector< Stop > stops
List of the stops the vehicle will make.
RORouteHandler(RONet &net, const std::string &file, const bool tryRepair, const bool emptyDestinationsAllowed, const bool ignoreErrors)
standard constructor
RONet & myNet
The current route.
int getNumPredecessors() const
Returns the number of edges connected to this edge.
bool addVTypeDistribution(const std::string &id, RandomDistributor< SUMOVTypeParameter *> *vehTypeDistribution)
Adds a vehicle type distribution.
std::string busstop
(Optional) bus stop if one is assigned to the stop
A vehicle as used by router.
bool addRouteDef(RORouteDef *def)
SUMOReal startPos
The stopping position start.
ROPerson * myActivePerson
The plan of the current person.
std::string routeid
The vehicle's route id.
Encapsulated SAX-Attributes.
T get(int attr, const char *objectid, bool &ok, bool report=true) const
Tries to read given attribute assuming it is an int.
SUMOReal endPos
The stopping position end.
std::vector< PlanItem * > & getPlan()
void addContainer(const SUMOTime depart, const std::string desc)
void parseEdges(const std::string &desc, ConstROEdgeVector &into, const std::string &rid)
Parse edges from strings.
void addStop(const SUMOVehicleParameter::Stop &stopPar, const ROEdge *const stopEdge)
void addTrip(const ROEdge *const from, const ROEdge *const to, const SVCPermissions modeSet, const std::string &vTypes, const SUMOReal departPos, const SUMOReal arrivalPos, const std::string &busStop)
SUMOTime depart
The vehicle's departure time.
DepartDefinition departProcedure
Information how the vehicle shall choose the depart time.
SUMOTime string2time(const std::string &r)
A person as used by router.
void addStop(const SUMOSAXAttributes &attrs)
Processing of a stop.
std::string fromTaz
The vehicle's origin zone (district)
vehicle is a passenger car (a "normal" car)
A basic edge for routing applications.
const int VEHPARS_FROM_TAZ_SET
std::string lane
The lane to stop at.
Parser for routes during their loading.
std::vector< std::string > via
List of the via-edges the vehicle must visit.
void closeContainer()
Ends the processing of a container.
std::vector< SUMOVehicleParameter::Stop > myActiveRouteStops
List of the stops on the parsed route.
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.
The router's network representation.
void openRoute(const SUMOSAXAttributes &attrs)
virtual void myStartElement(int element, const SUMOSAXAttributes &attrs)
Called on the opening of a tag;.
const std::string DEFAULT_PEDTYPE_ID
SUMOReal defaultProbability
The probability when being added to a distribution without an explicit probability.
Definition of vehicle stop (position and duration)
bool parseStop(SUMOVehicleParameter::Stop &stop, const SUMOSAXAttributes &attrs, std::string errorSuffix, MsgHandler *const errorOutput)
parses attributes common to all stops
const SUMOVehicleParameter::Stop * getContainerStop(const std::string &id) const
Retrieves a container stop from the network.
bool addPersonTrip(const SUMOSAXAttributes &attrs)
add a routing request for a walking person
const bool myTryRepair
Information whether routes shall be repaired.
void inform(std::string msg, bool addType=true)
adds a new error to the list
OutputDevice_String * myActiveContainerPlan
The plan of the current container.
Base class for a vehicle's route definition.
std::string id
The vehicle type's id.
void addLoadedAlternative(RORoute *alternative)
Adds a single alternative loaded from the file An alternative may also be generated during DUA...
void closeRoute(const bool mayBeDisconnected=false)
bool wasSet(int what) const
Returns whether the given parameter was set.
const RGBColor * myActiveRouteColor
The currently parsed route's color.
virtual ~RORouteHandler()
standard destructor
bool closeTag()
Closes the most recently opened tag.
SUMOVTypeParameter * getVehicleTypeSecure(const std::string &id)
Retrieves the named vehicle type.
void closeFlow()
Ends the processing of a flow.
ROEdge * getEdge(const std::string &name) const
Retrieves an edge from the network.
const SUMOVehicleParameter::Stop * getBusStop(const std::string &id) const
Retrieves a bus stop from the network.
bool addFlow(SUMOVehicleParameter *flow, const bool randomize)
An edge representing a whole district.
std::string myActiveRouteRefID
The id of the route the current route references to.
bool addPerson(ROPerson *person)
void parseFromViaTo(std::string element, const SUMOSAXAttributes &attrs)
Called for parsing from and to and the corresponding taz attributes.
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
A complete router's route.
An output device that encapsulates an ofstream.
void closeRouteDistribution()
std::string myCurrentVTypeDistributionID
The id of the currently parsed vehicle type distribution.
std::string id
The vehicle's id.
SUMOReal getOverallProb() const
Return the sum of the probabilites assigned to the members.