Eclipse SUMO - Simulation of Urban MObility
GNERouteHandler.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2022 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials are made available under the
5 // terms of the Eclipse Public License 2.0 which is available at
6 // https://www.eclipse.org/legal/epl-2.0/
7 // This Source Code may also be made available under the following Secondary
8 // Licenses when the conditions for such availability set forth in the Eclipse
9 // Public License 2.0 are satisfied: GNU General Public License, version 2
10 // or later which is available at
11 // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 /****************************************************************************/
18 // Builds demand objects for netedit
19 /****************************************************************************/
20 #pragma once
21 #include <config.h>
22 
31 
32 
33 // ===========================================================================
34 // class declarations
35 // ===========================================================================
36 
37 class GNEViewNet;
38 class GNEEdge;
39 class GNETAZ;
40 class GNEDemandElement;
41 class GNEVehicle;
42 class GNEPerson;
43 class GNEContainer;
44 class GNEUndoList;
45 
46 // ===========================================================================
47 // class definitions
48 // ===========================================================================
49 
52 class GNERouteHandler : public RouteHandler {
53 
54 public:
56  GNERouteHandler(const std::string& file, GNENet* net, bool undoDemandElements = true);
57 
60 
63 
65  void buildVType(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const SUMOVTypeParameter& vTypeParameter);
66 
68  void buildVTypeDistribution(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const std::string& id,
69  const std::vector<std::string>& vTypes);
70 
72  void buildRoute(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const std::string& id, SUMOVehicleClass vClass,
73  const std::vector<std::string>& edgeIDs, const RGBColor& color, const int repeat, const SUMOTime cycleTime,
74  const std::map<std::string, std::string>& routeParameters);
75 
77  void buildEmbeddedRoute(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const std::vector<std::string>& edgeIDs,
78  const RGBColor& color, const int repeat, const SUMOTime cycleTime,
79  const std::map<std::string, std::string>& routeParameters);
80 
82  void buildRouteDistribution(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const std::string& id);
83 
85  void buildVehicleOverRoute(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const SUMOVehicleParameter& vehicleParameters);
86 
88  void buildFlowOverRoute(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const SUMOVehicleParameter& vehicleParameters);
89 
91  void buildTrip(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const SUMOVehicleParameter& vehicleParameters,
92  const std::string& fromEdgeID, const std::string& toEdgeID, const std::vector<std::string>& viaIDs);
93 
95  void buildTrip(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const SUMOVehicleParameter& vehicleParameters,
96  const std::string& fromJunctionID, const std::string& toJunctionID);
97 
99  void buildFlow(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const SUMOVehicleParameter& vehicleParameters,
100  const std::string& fromEdgeID, const std::string& toEdgeID, const std::vector<std::string>& viaIDs);
101 
103  void buildFlow(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const SUMOVehicleParameter& vehicleParameters,
104  const std::string& fromJunctionID, const std::string& toJunctionID);
105 
107  void buildPerson(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const SUMOVehicleParameter& personParameters);
108 
110  void buildPersonFlow(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const SUMOVehicleParameter& personFlowParameters);
111 
113  void buildPersonTrip(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const std::string& fromEdgeID, const std::string& toEdgeID,
114  const std::string& fromJunctionID, const std::string& toJunctionID, const std::string& toBusStopID, double arrivalPos,
115  const std::vector<std::string>& types, const std::vector<std::string>& modes);
116 
118  void buildWalk(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const std::string& fromEdgeID, const std::string& toEdgeID,
119  const std::string& fromJunctionID, const std::string& toJunctionID, const std::string& toBusStopID,
120  const std::vector<std::string>& edgeIDs, const std::string& routeID, double arrivalPos);
121 
123  void buildRide(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const std::string& fromEdgeID, const std::string& toEdgeID,
124  const std::string& toBusStopID, double arrivalPos, const std::vector<std::string>& lines);
125 
127  void buildContainer(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const SUMOVehicleParameter& containerParameters);
128 
130  void buildContainerFlow(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const SUMOVehicleParameter& containerFlowParameters);
131 
133  void buildTransport(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const std::string& fromEdgeID, const std::string& toEdgeID,
134  const std::string& toBusStopID, const std::vector<std::string>& lines, const double arrivalPos);
135 
137  void buildTranship(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const std::string& fromEdgeID, const std::string& toEdgeID,
138  const std::string& toBusStopID, const std::vector<std::string>& edgeIDs, const double speed, const double departPosition,
139  const double arrivalPosition);
141 
143  void buildStop(const CommonXMLStructure::SumoBaseObject* sumoBaseObject, const SUMOVehicleParameter::Stop& stopParameters);
144 
146  bool buildPersonPlan(SumoXMLTag tag, GNEDemandElement* personParent, GNEFrameAttributeModules::AttributesCreator* personPlanAttributes,
147  GNEFrameModules::PathCreator* pathCreator, const bool centerAfterCreation);
148 
150  bool buildContainerPlan(SumoXMLTag tag, GNEDemandElement* containerParent, GNEFrameAttributeModules::AttributesCreator* containerPlanAttributes, GNEFrameModules::PathCreator* pathCreator);
151 
153  static bool isVehicleIdDuplicated(GNENet* net, const std::string& id);
154 
156  static bool isPersonIdDuplicated(GNENet* net, const std::string& id);
157 
159  static bool isContainerIdDuplicated(GNENet* net, const std::string& id);
160 
163 
165  static void transformToVehicle(GNEVehicle* originalVehicle, bool createEmbeddedRoute);
166 
168  static void transformToRouteFlow(GNEVehicle* originalVehicle, bool createEmbeddedRoute);
169 
171  static void transformToTrip(GNEVehicle* originalVehicle);
172 
174  static void transformToFlow(GNEVehicle* originalVehicle);
175 
177 
180 
182  static void transformToPerson(GNEPerson* originalPerson);
183 
185  static void transformToPersonFlow(GNEPerson* originalPerson);
186 
188 
191 
193  static void transformToContainer(GNEContainer* originalContainer);
194 
196  static void transformToContainerFlow(GNEContainer* originalContainer);
197 
199 
201  static void setFlowParameters(const SumoXMLAttr attribute, int& parameters);
202 
203 protected:
205  GNEJunction* parseJunction(const SumoXMLTag tag, const std::string& junctionID) const;
206 
208  GNEEdge* parseEdge(const SumoXMLTag tag, const std::string& edgeID) const;
209 
211  std::vector<GNEEdge*> parseEdges(const SumoXMLTag tag, const std::vector<std::string>& edgeIDs) const;
212 
215 
218 
220  GNEEdge* getPreviousPlanEdge(const bool person, const CommonXMLStructure::SumoBaseObject* obj) const;
221 
222 private:
225 
228 
231 };
232 
233 
long long int SUMOTime
Definition: SUMOTime.h:32
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
SumoXMLTag
Numbers representing SUMO-XML - element names.
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
An Element which don't belongs to GNENet but has influency in the simulation.
A road/street connecting two junctions (netedit-version)
Definition: GNEEdge.h:53
A NBNetBuilder extended by visualisation and editing capabilities.
Definition: GNENet.h:42
Builds trigger objects for GNENet (busStops, chargingStations, detectors, etc..)
void buildContainerFlow(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const SUMOVehicleParameter &containerFlowParameters)
build container flow
void buildRouteDistribution(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id)
build route distribution
CommonXMLStructure::SumoBaseObject * myPlanObject
pointer for person and container plans
GNEDemandElement * getPersonParent(const CommonXMLStructure::SumoBaseObject *sumoBaseObject) const
get person parent
GNEEdge * getPreviousPlanEdge(const bool person, const CommonXMLStructure::SumoBaseObject *obj) const
get previos person/container plan edge
void buildPerson(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const SUMOVehicleParameter &personParameters)
build person
static void transformToRouteFlow(GNEVehicle *originalVehicle, bool createEmbeddedRoute)
transform routeFlow over an existent route
void buildFlow(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const SUMOVehicleParameter &vehicleParameters, const std::string &fromEdgeID, const std::string &toEdgeID, const std::vector< std::string > &viaIDs)
build flow
GNENet * myNet
pointer to GNENet
void buildPersonTrip(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &fromEdgeID, const std::string &toEdgeID, const std::string &fromJunctionID, const std::string &toJunctionID, const std::string &toBusStopID, double arrivalPos, const std::vector< std::string > &types, const std::vector< std::string > &modes)
build person trip
static bool isPersonIdDuplicated(GNENet *net, const std::string &id)
check if there is already a person (Person or PersonFlow) with the given ID
void buildWalk(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &fromEdgeID, const std::string &toEdgeID, const std::string &fromJunctionID, const std::string &toJunctionID, const std::string &toBusStopID, const std::vector< std::string > &edgeIDs, const std::string &routeID, double arrivalPos)
build walk
void buildTrip(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const SUMOVehicleParameter &vehicleParameters, const std::string &fromEdgeID, const std::string &toEdgeID, const std::vector< std::string > &viaIDs)
build trip
static void transformToContainerFlow(GNEContainer *originalContainer)
transform routeFlow over an existent route
void buildVehicleOverRoute(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const SUMOVehicleParameter &vehicleParameters)
build a vehicle over an existent route
bool buildPersonPlan(SumoXMLTag tag, GNEDemandElement *personParent, GNEFrameAttributeModules::AttributesCreator *personPlanAttributes, GNEFrameModules::PathCreator *pathCreator, const bool centerAfterCreation)
build person plan
void buildTransport(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &fromEdgeID, const std::string &toEdgeID, const std::string &toBusStopID, const std::vector< std::string > &lines, const double arrivalPos)
build transport
static void transformToFlow(GNEVehicle *originalVehicle)
transform to flow
void buildEmbeddedRoute(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::vector< std::string > &edgeIDs, const RGBColor &color, const int repeat, const SUMOTime cycleTime, const std::map< std::string, std::string > &routeParameters)
build embedded route
void buildFlowOverRoute(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const SUMOVehicleParameter &vehicleParameters)
build a flow over an existent route
static bool isContainerIdDuplicated(GNENet *net, const std::string &id)
check if there is already a container (Container or ContainerFlow) with the given ID
static void setFlowParameters(const SumoXMLAttr attribute, int &parameters)
set flow parameters
void buildVType(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const SUMOVTypeParameter &vTypeParameter)
build vType
static bool isVehicleIdDuplicated(GNENet *net, const std::string &id)
check if there is already a vehicle (Vehicle, Trip, Flow or Flow) with the given ID
GNERouteHandler(const std::string &file, GNENet *net, bool undoDemandElements=true)
Constructor.
void buildTranship(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &fromEdgeID, const std::string &toEdgeID, const std::string &toBusStopID, const std::vector< std::string > &edgeIDs, const double speed, const double departPosition, const double arrivalPosition)
build tranship
std::vector< GNEEdge * > parseEdges(const SumoXMLTag tag, const std::vector< std::string > &edgeIDs) const
parse edges
static void transformToTrip(GNEVehicle *originalVehicle)
transform to trip
void buildVTypeDistribution(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, const std::vector< std::string > &vTypes)
build vType distribution
static void transformToPerson(GNEPerson *originalPerson)
transform person functions
bool myUndoDemandElements
flag to check if created demand elements must be undo and redo
~GNERouteHandler()
Destructor.
bool buildContainerPlan(SumoXMLTag tag, GNEDemandElement *containerParent, GNEFrameAttributeModules::AttributesCreator *containerPlanAttributes, GNEFrameModules::PathCreator *pathCreator)
build container plan
void buildRide(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &fromEdgeID, const std::string &toEdgeID, const std::string &toBusStopID, double arrivalPos, const std::vector< std::string > &lines)
build ride
void buildPersonFlow(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const SUMOVehicleParameter &personFlowParameters)
build person flow
GNEEdge * parseEdge(const SumoXMLTag tag, const std::string &edgeID) const
parse edge
void buildRoute(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &id, SUMOVehicleClass vClass, const std::vector< std::string > &edgeIDs, const RGBColor &color, const int repeat, const SUMOTime cycleTime, const std::map< std::string, std::string > &routeParameters)
build route
GNEJunction * parseJunction(const SumoXMLTag tag, const std::string &junctionID) const
parse junction
GNEDemandElement * getContainerParent(const CommonXMLStructure::SumoBaseObject *sumoBaseObject) const
get container parent
void buildStop(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const SUMOVehicleParameter::Stop &stopParameters)
build stop
static void transformToContainer(GNEContainer *originalContainer)
transform container functions
void buildContainer(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const SUMOVehicleParameter &containerParameters)
build container
static void transformToPersonFlow(GNEPerson *originalPerson)
transform routeFlow over an existent route
static void transformToVehicle(GNEVehicle *originalVehicle, bool createEmbeddedRoute)
transform vehicle functions
Definition: GNETAZ.h:34
Structure representing possible vehicle parameter.
Definition of vehicle stop (position and duration)
Structure representing possible vehicle parameter.