Line data Source code
1 : /****************************************************************************/
2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 : // Copyright (C) 2002-2024 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 : /****************************************************************************/
14 : /// @file SUMOXMLDefinitions.cpp
15 : /// @author Daniel Krajzewicz
16 : /// @author Jakob Erdmann
17 : /// @author Clemens Honomichl
18 : /// @author Piotr Woznica
19 : /// @author Michael Behrisch
20 : /// @author Walter Bamberger
21 : /// @date Sept 2002
22 : ///
23 : // Definitions of elements and attributes known by SUMO
24 : /****************************************************************************/
25 : #include <config.h>
26 :
27 : #include <algorithm>
28 : #include <cassert>
29 : #include <utils/common/StringTokenizer.h>
30 : #include <utils/common/StringUtils.h>
31 :
32 : #include "SUMOXMLDefinitions.h"
33 :
34 : // ===========================================================================
35 : // definitions
36 : // ===========================================================================
37 :
38 : SequentialStringBijection::Entry SUMOXMLDefinitions::tags[] = {
39 : // Simulation elements
40 : { "net", SUMO_TAG_NET },
41 : { "edge", SUMO_TAG_EDGE },
42 : { "lane", SUMO_TAG_LANE },
43 : { "neigh", SUMO_TAG_NEIGH },
44 : { "poly", SUMO_TAG_POLY },
45 : { "poi", SUMO_TAG_POI },
46 : { "junction", SUMO_TAG_JUNCTION },
47 : { "restriction", SUMO_TAG_RESTRICTION },
48 : { "meso", SUMO_TAG_MESO },
49 : { "busStop", SUMO_TAG_BUS_STOP },
50 : { "trainStop", SUMO_TAG_TRAIN_STOP },
51 : { "ptLine", SUMO_TAG_PT_LINE },
52 : { "access", SUMO_TAG_ACCESS },
53 : { "containerStop", SUMO_TAG_CONTAINER_STOP },
54 : { "chargingStation", SUMO_TAG_CHARGING_STATION },
55 : { "chargingEvent", SUMO_TAG_CHARGING_EVENT },
56 : { "parkingArea", SUMO_TAG_PARKING_AREA },
57 : { "space", SUMO_TAG_PARKING_SPACE },
58 : { "e1Detector", SUMO_TAG_E1DETECTOR },
59 : { "inductionLoop", SUMO_TAG_INDUCTION_LOOP },
60 : { "e2Detector", SUMO_TAG_E2DETECTOR },
61 : { "laneAreaDetector", SUMO_TAG_LANE_AREA_DETECTOR },
62 : { "multiLaneAreaDetector", GNE_TAG_MULTI_LANE_AREA_DETECTOR },
63 : { "e3Detector", SUMO_TAG_E3DETECTOR },
64 : { "entryExitDetector", SUMO_TAG_ENTRY_EXIT_DETECTOR },
65 : { "detEntry", SUMO_TAG_DET_ENTRY },
66 : { "detExit", SUMO_TAG_DET_EXIT },
67 : { "edgeData", SUMO_TAG_MEANDATA_EDGE },
68 : { "laneData", SUMO_TAG_MEANDATA_LANE },
69 : { "edgeFollowDetector", SUMO_TAG_EDGEFOLLOWDETECTOR },
70 : { "instantInductionLoop", SUMO_TAG_INSTANT_INDUCTION_LOOP },
71 : { "routeProbe", SUMO_TAG_ROUTEPROBE },
72 : { "calibrator", SUMO_TAG_CALIBRATOR },
73 : { "calibratorLane", GNE_TAG_CALIBRATOR_LANE },
74 : { "calibratorFlow", GNE_TAG_CALIBRATOR_FLOW },
75 : { "rerouter", SUMO_TAG_REROUTER },
76 : { "rerouterSymbol", GNE_TAG_REROUTER_SYMBOL },
77 : { "interval", SUMO_TAG_INTERVAL },
78 : { "destProbReroute", SUMO_TAG_DEST_PROB_REROUTE },
79 : { "closingReroute", SUMO_TAG_CLOSING_REROUTE },
80 : { "closingLaneReroute", SUMO_TAG_CLOSING_LANE_REROUTE },
81 : { "routeProbReroute", SUMO_TAG_ROUTE_PROB_REROUTE },
82 : { "parkingAreaReroute", SUMO_TAG_PARKING_AREA_REROUTE },
83 : { "viaProbReroute", SUMO_TAG_VIA_PROB_REROUTE },
84 : { "step", SUMO_TAG_STEP },
85 : { "variableSpeedSign", SUMO_TAG_VSS },
86 : { "variableSpeedSignSymbol", GNE_TAG_VSS_SYMBOL },
87 : { "vaporizer", SUMO_TAG_VAPORIZER },
88 : { "tractionSubstation", SUMO_TAG_TRACTION_SUBSTATION },
89 : { "overheadWireSegment", SUMO_TAG_OVERHEAD_WIRE_SEGMENT }, // <- Deprecate
90 : { "overheadWire", SUMO_TAG_OVERHEAD_WIRE_SECTION },
91 : { "overheadWireClamp", SUMO_TAG_OVERHEAD_WIRE_CLAMP },
92 : { "vTypeProbe", SUMO_TAG_VTYPEPROBE },
93 : { "routes", SUMO_TAG_ROUTES },
94 : { "trip", SUMO_TAG_TRIP },
95 : { "tripJunctions", GNE_TAG_TRIP_JUNCTIONS },
96 : { "tripTAZs", GNE_TAG_TRIP_TAZS },
97 : { "vehicle", SUMO_TAG_VEHICLE },
98 : { "vehicleWithRoute", GNE_TAG_VEHICLE_WITHROUTE },
99 : { "flow", SUMO_TAG_FLOW },
100 : { "flowJunctions", GNE_TAG_FLOW_JUNCTIONS },
101 : { "flowTAZs", GNE_TAG_FLOW_TAZS },
102 : { "flowState", SUMO_TAG_FLOWSTATE },
103 : { "vType", SUMO_TAG_VTYPE },
104 : { "route", SUMO_TAG_ROUTE },
105 : { "routeEmbedded", GNE_TAG_ROUTE_EMBEDDED },
106 : { "request", SUMO_TAG_REQUEST },
107 : { "source", SUMO_TAG_SOURCE },
108 : { "taz", SUMO_TAG_TAZ },
109 : { "tazSource", SUMO_TAG_TAZSOURCE },
110 : { "tazSink", SUMO_TAG_TAZSINK },
111 : { "trafficLight", SUMO_TAG_TRAFFIC_LIGHT },
112 : { "tlLogic", SUMO_TAG_TLLOGIC },
113 : { "phase", SUMO_TAG_PHASE },
114 : { "condition", SUMO_TAG_CONDITION },
115 : { "assignment", SUMO_TAG_ASSIGNMENT },
116 : { "function", SUMO_TAG_FUNCTION },
117 : { "edgeControl", SUMO_TAG_EDGECONTROL },
118 :
119 : { "edgeRelation", SUMO_TAG_EDGEREL },
120 : { "tazRelation", SUMO_TAG_TAZREL },
121 : { "timedEvent", SUMO_TAG_TIMEDEVENT },
122 : { "fromEdge", SUMO_TAG_FROMEDGE },
123 : { "toEdge", SUMO_TAG_TOEDGE },
124 : { "sink", SUMO_TAG_SINK },
125 : { "param", SUMO_TAG_PARAM },
126 : { "WAUT", SUMO_TAG_WAUT },
127 : { "wautSwitch", SUMO_TAG_WAUT_SWITCH },
128 : { "wautJunction", SUMO_TAG_WAUT_JUNCTION },
129 : { "segment", SUMO_TAG_SEGMENT },
130 : { "delete", SUMO_TAG_DEL },
131 : { "connections", SUMO_TAG_CONNECTIONS },
132 : { "stop", SUMO_TAG_STOP },
133 : { "stopBusStop", GNE_TAG_STOP_BUSSTOP },
134 : { "stopTrainStop", GNE_TAG_STOP_TRAINSTOP },
135 : { "stopContainerStop", GNE_TAG_STOP_CONTAINERSTOP },
136 : { "stopChargingStation", GNE_TAG_STOP_CHARGINGSTATION },
137 : { "stopParkingArea", GNE_TAG_STOP_PARKINGAREA },
138 : { "stopLane", GNE_TAG_STOP_LANE },
139 : { "polygonType", SUMO_TAG_POLYTYPE },
140 : { "connection", SUMO_TAG_CONNECTION },
141 : { "conflict", SUMO_TAG_CONFLICT },
142 : { "prohibition", SUMO_TAG_PROHIBITION },
143 : { "split", SUMO_TAG_SPLIT },
144 : { "node", SUMO_TAG_NODE },
145 : { "type", SUMO_TAG_TYPE },
146 : { "laneType", SUMO_TAG_LANETYPE },
147 : { "detectorDefinition", SUMO_TAG_DETECTOR_DEFINITION },
148 : { "routeDistribution", SUMO_TAG_ROUTE_DISTRIBUTION },
149 : { "vTypeDistribution", SUMO_TAG_VTYPE_DISTRIBUTION },
150 : { "roundabout", SUMO_TAG_ROUNDABOUT },
151 : { "join", SUMO_TAG_JOIN },
152 : { "joinExclude", SUMO_TAG_JOINEXCLUDE },
153 : { "crossing", SUMO_TAG_CROSSING },
154 : { "walkingArea", SUMO_TAG_WALKINGAREA },
155 : { "stopOffset", SUMO_TAG_STOPOFFSET },
156 : { "railSignalConstraints", SUMO_TAG_RAILSIGNAL_CONSTRAINTS },
157 : { "predecessor", SUMO_TAG_PREDECESSOR },
158 : { "insertionPredecessor", SUMO_TAG_INSERTION_PREDECESSOR },
159 : { "foeInsertion", SUMO_TAG_FOE_INSERTION },
160 : { "insertionOrder", SUMO_TAG_INSERTION_ORDER },
161 : { "bidiPredecessor", SUMO_TAG_BIDI_PREDECESSOR },
162 : { "railSignalConstraintTracker", SUMO_TAG_RAILSIGNAL_CONSTRAINT_TRACKER },
163 : { "deadlock", SUMO_TAG_DEADLOCK },
164 : { "driveWay", SUMO_TAG_DRIVEWAY },
165 : { "subDriveWay", SUMO_TAG_SUBDRIVEWAY },
166 : { "link", SUMO_TAG_LINK },
167 : { "approaching", SUMO_TAG_APPROACHING },
168 : // OSM
169 : { "way", SUMO_TAG_WAY },
170 : { "nd", SUMO_TAG_ND },
171 : { "tag", SUMO_TAG_TAG },
172 : { "relation", SUMO_TAG_RELATION },
173 : { "member", SUMO_TAG_MEMBER },
174 : // View
175 : { "viewsettings", SUMO_TAG_VIEWSETTINGS },
176 : { "view3D", SUMO_TAG_VIEWSETTINGS_3D },
177 : { "decal", SUMO_TAG_VIEWSETTINGS_DECAL },
178 : { "light", SUMO_TAG_VIEWSETTINGS_LIGHT },
179 : { "scheme", SUMO_TAG_VIEWSETTINGS_SCHEME },
180 : { "opengl", SUMO_TAG_VIEWSETTINGS_OPENGL },
181 : { "background", SUMO_TAG_VIEWSETTINGS_BACKGROUND },
182 : { "edges", SUMO_TAG_VIEWSETTINGS_EDGES },
183 : { "vehicles", SUMO_TAG_VIEWSETTINGS_VEHICLES },
184 : { "persons", SUMO_TAG_VIEWSETTINGS_PERSONS },
185 : { "containers", SUMO_TAG_VIEWSETTINGS_CONTAINERS },
186 : { "junctions", SUMO_TAG_VIEWSETTINGS_JUNCTIONS },
187 : { "additionals", SUMO_TAG_VIEWSETTINGS_ADDITIONALS },
188 : { "pois", SUMO_TAG_VIEWSETTINGS_POIS },
189 : { "polys", SUMO_TAG_VIEWSETTINGS_POLYS },
190 : { "legend", SUMO_TAG_VIEWSETTINGS_LEGEND },
191 : { "event", SUMO_TAG_VIEWSETTINGS_EVENT },
192 : { "jamTime", SUMO_TAG_VIEWSETTINGS_EVENT_JAM_TIME },
193 : { "include", SUMO_TAG_INCLUDE },
194 : { "delay", SUMO_TAG_DELAY },
195 : { "viewport", SUMO_TAG_VIEWPORT },
196 : { "snapshot", SUMO_TAG_SNAPSHOT },
197 : { "breakpoint", SUMO_TAG_BREAKPOINT },
198 : { "location", SUMO_TAG_LOCATION },
199 : { "colorScheme", SUMO_TAG_COLORSCHEME },
200 : { "scalingScheme", SUMO_TAG_SCALINGSCHEME },
201 : { "entry", SUMO_TAG_ENTRY },
202 : { "rngState", SUMO_TAG_RNGSTATE },
203 : { "rngLane", SUMO_TAG_RNGLANE },
204 : { "vehicleTransfer", SUMO_TAG_VEHICLETRANSFER },
205 : { "device", SUMO_TAG_DEVICE },
206 : // Cars
207 : { "carFollowing-IDM", SUMO_TAG_CF_IDM },
208 : { "carFollowing-IDMM", SUMO_TAG_CF_IDMM },
209 : { "carFollowing-Krauss", SUMO_TAG_CF_KRAUSS },
210 : { "carFollowing-KraussPS", SUMO_TAG_CF_KRAUSS_PLUS_SLOPE },
211 : { "carFollowing-KraussOrig1", SUMO_TAG_CF_KRAUSS_ORIG1 },
212 : { "carFollowing-KraussX", SUMO_TAG_CF_KRAUSSX },
213 : { "carFollowing-EIDM", SUMO_TAG_CF_EIDM },
214 : { "carFollowing-SmartSK", SUMO_TAG_CF_SMART_SK },
215 : { "carFollowing-Daniel1", SUMO_TAG_CF_DANIEL1 },
216 : { "carFollowing-PWagner2009", SUMO_TAG_CF_PWAGNER2009 },
217 : { "carFollowing-BKerner", SUMO_TAG_CF_BKERNER },
218 : { "carFollowing-Wiedemann", SUMO_TAG_CF_WIEDEMANN },
219 : { "carFollowing-W99", SUMO_TAG_CF_W99 },
220 : { "carFollowing-Rail", SUMO_TAG_CF_RAIL },
221 : { "carFollowing-ACC", SUMO_TAG_CF_ACC },
222 : { "carFollowing-CACC", SUMO_TAG_CF_CACC },
223 : { "carFollowing-CC", SUMO_TAG_CF_CC },
224 : // Person
225 : { "person", SUMO_TAG_PERSON },
226 : { "personTrip", SUMO_TAG_PERSONTRIP },
227 : { "ride", SUMO_TAG_RIDE },
228 : { "walk", SUMO_TAG_WALK },
229 : { "personFlow", SUMO_TAG_PERSONFLOW },
230 : // Data (Netedit)
231 : { "dataSet", SUMO_TAG_DATASET },
232 : { "dataInterval", SUMO_TAG_DATAINTERVAL },
233 : // Transport
234 : { "container", SUMO_TAG_CONTAINER },
235 : { "transport", SUMO_TAG_TRANSPORT },
236 : { "tranship", SUMO_TAG_TRANSHIP },
237 : { "containerFlow", SUMO_TAG_CONTAINERFLOW },
238 : //Trajectories
239 : { "trajectories", SUMO_TAG_TRAJECTORIES },
240 : { "timestep", SUMO_TAG_TIMESTEP },
241 : { "timeSlice", SUMO_TAG_TIMESLICE },
242 : { "actorConfig", SUMO_TAG_ACTORCONFIG },
243 : { "motionState", SUMO_TAG_MOTIONSTATE },
244 : { "odPair", SUMO_TAG_OD_PAIR },
245 : { "transportables", SUMO_TAG_TRANSPORTABLES },
246 : // ActivityGen statistics file
247 : { "general", AGEN_TAG_GENERAL },
248 : { "street", AGEN_TAG_STREET },
249 : { "workHours", AGEN_TAG_WORKHOURS },
250 : { "opening", AGEN_TAG_OPENING },
251 : { "closing", AGEN_TAG_CLOSING },
252 : { "schools", AGEN_TAG_SCHOOLS },
253 : { "school", AGEN_TAG_SCHOOL },
254 : { "busStation", AGEN_TAG_BUSSTATION },
255 : { "busLine", AGEN_TAG_BUSLINE },
256 : { "stations", AGEN_TAG_STATIONS },
257 : { "revStations", AGEN_TAG_REV_STATIONS },
258 : { "station", AGEN_TAG_STATION },
259 : { "frequency", AGEN_TAG_FREQUENCY },
260 : { "population", AGEN_TAG_POPULATION },
261 : { "bracket", AGEN_TAG_BRACKET },
262 : { "cityGates", AGEN_TAG_CITYGATES },
263 : { "entrance", AGEN_TAG_ENTRANCE },
264 : { "parameters", AGEN_TAG_PARAM },
265 : // Netedit
266 : { "edgeData-edge", GNE_TAG_EDGEREL_SINGLE },
267 : { "internalLane", GNE_TAG_INTERNAL_LANE },
268 : { "poiLane", GNE_TAG_POILANE },
269 : { "poiGeo", GNE_TAG_POIGEO },
270 : { "jupedsim.walkable_area", GNE_TAG_JPS_WALKABLEAREA },
271 : { "jupedsim.obstacle", GNE_TAG_JPS_OBSTACLE },
272 : { "flowRoute", GNE_TAG_FLOW_ROUTE },
273 : { "flowWithRoute", GNE_TAG_FLOW_WITHROUTE },
274 : // GNE waypoints
275 : { "waypoint", GNE_TAG_WAYPOINT },
276 : { "waypointLane", GNE_TAG_WAYPOINT_LANE },
277 : { "waypointBusStop", GNE_TAG_WAYPOINT_BUSSTOP },
278 : { "waypointTrainStop", GNE_TAG_WAYPOINT_TRAINSTOP },
279 : { "waypointContainerStop", GNE_TAG_WAYPOINT_CONTAINERSTOP },
280 : { "waypointChargingStation", GNE_TAG_WAYPOINT_CHARGINGSTATION },
281 : { "waypointParkingArea", GNE_TAG_WAYPOINT_PARKINGAREA },
282 : // GNE Person trips
283 : { "persontrip: edge->edge", GNE_TAG_PERSONTRIP_EDGE_EDGE },
284 : { "persontrip: edge->taz", GNE_TAG_PERSONTRIP_EDGE_TAZ },
285 : { "persontrip: edge->junction", GNE_TAG_PERSONTRIP_EDGE_JUNCTION },
286 : { "persontrip: edge->busstop", GNE_TAG_PERSONTRIP_EDGE_BUSSTOP },
287 : { "persontrip: edge->trainstop", GNE_TAG_PERSONTRIP_EDGE_TRAINSTOP },
288 : { "persontrip: edge->containerstop", GNE_TAG_PERSONTRIP_EDGE_CONTAINERSTOP },
289 : { "persontrip: edge->chargingstation", GNE_TAG_PERSONTRIP_EDGE_CHARGINGSTATION },
290 : { "persontrip: edge->parkingarea", GNE_TAG_PERSONTRIP_EDGE_PARKINGAREA },
291 : { "persontrip: taz->edge", GNE_TAG_PERSONTRIP_TAZ_EDGE },
292 : { "persontrip: taz->taz", GNE_TAG_PERSONTRIP_TAZ_TAZ },
293 : { "persontrip: taz->junction", GNE_TAG_PERSONTRIP_TAZ_JUNCTION },
294 : { "persontrip: taz->busstop", GNE_TAG_PERSONTRIP_TAZ_BUSSTOP },
295 : { "persontrip: taz->trainstop", GNE_TAG_PERSONTRIP_TAZ_TRAINSTOP },
296 : { "persontrip: taz->containerstop", GNE_TAG_PERSONTRIP_TAZ_CONTAINERSTOP },
297 : { "persontrip: taz->chargingstation", GNE_TAG_PERSONTRIP_TAZ_CHARGINGSTATION },
298 : { "persontrip: taz->parkingarea", GNE_TAG_PERSONTRIP_TAZ_PARKINGAREA },
299 : { "persontrip: junction->edge", GNE_TAG_PERSONTRIP_JUNCTION_EDGE },
300 : { "persontrip: junction->taz", GNE_TAG_PERSONTRIP_JUNCTION_TAZ },
301 : { "persontrip: junction->junction", GNE_TAG_PERSONTRIP_JUNCTION_JUNCTION },
302 : { "persontrip: junction->busstop", GNE_TAG_PERSONTRIP_JUNCTION_BUSSTOP },
303 : { "persontrip: junction->trainstop", GNE_TAG_PERSONTRIP_JUNCTION_TRAINSTOP },
304 : { "persontrip: junction->containerstop", GNE_TAG_PERSONTRIP_JUNCTION_CONTAINERSTOP },
305 : { "persontrip: junction->chargingstation", GNE_TAG_PERSONTRIP_JUNCTION_CHARGINGSTATION },
306 : { "persontrip: junction->parkingarea", GNE_TAG_PERSONTRIP_JUNCTION_PARKINGAREA },
307 : { "persontrip: busstop->edge", GNE_TAG_PERSONTRIP_BUSSTOP_EDGE },
308 : { "persontrip: busstop->taz", GNE_TAG_PERSONTRIP_BUSSTOP_TAZ },
309 : { "persontrip: busstop->junction", GNE_TAG_PERSONTRIP_BUSSTOP_JUNCTION },
310 : { "persontrip: busstop->busstop", GNE_TAG_PERSONTRIP_BUSSTOP_BUSSTOP },
311 : { "persontrip: busstop->trainstop", GNE_TAG_PERSONTRIP_BUSSTOP_TRAINSTOP },
312 : { "persontrip: busstop->containerstop", GNE_TAG_PERSONTRIP_BUSSTOP_CONTAINERSTOP },
313 : { "persontrip: busstop->chargingstation", GNE_TAG_PERSONTRIP_BUSSTOP_CHARGINGSTATION },
314 : { "persontrip: busstop->parkingarea", GNE_TAG_PERSONTRIP_BUSSTOP_PARKINGAREA },
315 : { "persontrip: trainstop->edge", GNE_TAG_PERSONTRIP_TRAINSTOP_EDGE },
316 : { "persontrip: trainstop->taz", GNE_TAG_PERSONTRIP_TRAINSTOP_TAZ },
317 : { "persontrip: trainstop->junction", GNE_TAG_PERSONTRIP_TRAINSTOP_JUNCTION },
318 : { "persontrip: trainstop->busstop", GNE_TAG_PERSONTRIP_TRAINSTOP_BUSSTOP },
319 : { "persontrip: trainstop->trainstop", GNE_TAG_PERSONTRIP_TRAINSTOP_TRAINSTOP },
320 : { "persontrip: trainstop->containerstop", GNE_TAG_PERSONTRIP_TRAINSTOP_CONTAINERSTOP },
321 : { "persontrip: trainstop->chargingstation", GNE_TAG_PERSONTRIP_TRAINSTOP_CHARGINGSTATION },
322 : { "persontrip: trainstop->parkingarea", GNE_TAG_PERSONTRIP_TRAINSTOP_PARKINGAREA },
323 : { "persontrip: containerstop->edge", GNE_TAG_PERSONTRIP_CONTAINERSTOP_EDGE },
324 : { "persontrip: containerstop->taz", GNE_TAG_PERSONTRIP_CONTAINERSTOP_TAZ },
325 : { "persontrip: containerstop->junction", GNE_TAG_PERSONTRIP_CONTAINERSTOP_JUNCTION },
326 : { "persontrip: containerstop->busstop", GNE_TAG_PERSONTRIP_CONTAINERSTOP_BUSSTOP },
327 : { "persontrip: containerstop->trainstop", GNE_TAG_PERSONTRIP_CONTAINERSTOP_TRAINSTOP },
328 : { "persontrip: containerstop->containerstop", GNE_TAG_PERSONTRIP_CONTAINERSTOP_CONTAINERSTOP },
329 : { "persontrip: containerstop->chargingstation", GNE_TAG_PERSONTRIP_CONTAINERSTOP_CHARGINGSTATION },
330 : { "persontrip: containerstop->parkingarea", GNE_TAG_PERSONTRIP_CONTAINERSTOP_PARKINGAREA },
331 : { "persontrip: chargingstation->edge", GNE_TAG_PERSONTRIP_CHARGINGSTATION_EDGE },
332 : { "persontrip: chargingstation->taz", GNE_TAG_PERSONTRIP_CHARGINGSTATION_TAZ },
333 : { "persontrip: chargingstation->junction", GNE_TAG_PERSONTRIP_CHARGINGSTATION_JUNCTION },
334 : { "persontrip: chargingstation->busstop", GNE_TAG_PERSONTRIP_CHARGINGSTATION_BUSSTOP },
335 : { "persontrip: chargingstation->trainstop", GNE_TAG_PERSONTRIP_CHARGINGSTATION_TRAINSTOP },
336 : { "persontrip: chargingstation->containestop", GNE_TAG_PERSONTRIP_CHARGINGSTATION_CONTAINERSTOP },
337 : { "persontrip: chargingstation->chargingstation", GNE_TAG_PERSONTRIP_CHARGINGSTATION_CHARGINGSTATION },
338 : { "persontrip: chargingstation->parkingarea", GNE_TAG_PERSONTRIP_CHARGINGSTATION_PARKINGAREA },
339 : { "persontrip: parkingarea->edge", GNE_TAG_PERSONTRIP_PARKINGAREA_EDGE },
340 : { "persontrip: parkingarea->taz", GNE_TAG_PERSONTRIP_PARKINGAREA_TAZ },
341 : { "persontrip: parkingarea->junction", GNE_TAG_PERSONTRIP_PARKINGAREA_JUNCTION },
342 : { "persontrip: parkingarea->busstop", GNE_TAG_PERSONTRIP_PARKINGAREA_BUSSTOP },
343 : { "persontrip: parkingarea->trainstop", GNE_TAG_PERSONTRIP_PARKINGAREA_TRAINSTOP },
344 : { "persontrip: parkingarea->containerstop", GNE_TAG_PERSONTRIP_PARKINGAREA_CONTAINERSTOP },
345 : { "persontrip: parkingarea->chargingstation", GNE_TAG_PERSONTRIP_PARKINGAREA_CHARGINGSTATION },
346 : { "persontrip: parkingarea->parkingarea", GNE_TAG_PERSONTRIP_PARKINGAREA_PARKINGAREA },
347 : // GNE Walks
348 : { "walk: edge->edge", GNE_TAG_WALK_EDGE_EDGE },
349 : { "walk: edge->taz", GNE_TAG_WALK_EDGE_TAZ },
350 : { "walk: edge->junction", GNE_TAG_WALK_EDGE_JUNCTION },
351 : { "walk: edge->busstop", GNE_TAG_WALK_EDGE_BUSSTOP },
352 : { "walk: edge->trainstop", GNE_TAG_WALK_EDGE_TRAINSTOP },
353 : { "walk: edge->containerstop", GNE_TAG_WALK_EDGE_CONTAINERSTOP },
354 : { "walk: edge->chargingstation", GNE_TAG_WALK_EDGE_CHARGINGSTATION },
355 : { "walk: edge->parkingarea", GNE_TAG_WALK_EDGE_PARKINGAREA },
356 : { "walk: taz->edge", GNE_TAG_WALK_TAZ_EDGE },
357 : { "walk: taz->taz", GNE_TAG_WALK_TAZ_TAZ },
358 : { "walk: taz->junction", GNE_TAG_WALK_TAZ_JUNCTION },
359 : { "walk: taz->busstop", GNE_TAG_WALK_TAZ_BUSSTOP },
360 : { "walk: taz->trainstop", GNE_TAG_WALK_TAZ_TRAINSTOP },
361 : { "walk: taz->containerstop", GNE_TAG_WALK_TAZ_CONTAINERSTOP },
362 : { "walk: taz->chargingstation", GNE_TAG_WALK_TAZ_CHARGINGSTATION },
363 : { "walk: taz->parkingarea", GNE_TAG_WALK_TAZ_PARKINGAREA },
364 : { "walk: junction->edge", GNE_TAG_WALK_JUNCTION_EDGE },
365 : { "walk: junction->taz", GNE_TAG_WALK_JUNCTION_TAZ },
366 : { "walk: junction->junction", GNE_TAG_WALK_JUNCTION_JUNCTION },
367 : { "walk: junction->busstop", GNE_TAG_WALK_JUNCTION_BUSSTOP },
368 : { "walk: junction->trainstop", GNE_TAG_WALK_JUNCTION_TRAINSTOP },
369 : { "walk: junction->containerstop", GNE_TAG_WALK_JUNCTION_CONTAINERSTOP },
370 : { "walk: junction->chargingstation", GNE_TAG_WALK_JUNCTION_CHARGINGSTATION },
371 : { "walk: junction->parkingarea", GNE_TAG_WALK_JUNCTION_PARKINGAREA },
372 : { "walk: busstop->edge", GNE_TAG_WALK_BUSSTOP_EDGE },
373 : { "walk: busstop->taz", GNE_TAG_WALK_BUSSTOP_TAZ },
374 : { "walk: busstop->junction", GNE_TAG_WALK_BUSSTOP_JUNCTION },
375 : { "walk: busstop->busstop", GNE_TAG_WALK_BUSSTOP_BUSSTOP },
376 : { "walk: busstop->trainstop", GNE_TAG_WALK_BUSSTOP_TRAINSTOP },
377 : { "walk: busstop->containerstop", GNE_TAG_WALK_BUSSTOP_CONTAINERSTOP },
378 : { "walk: busstop->chargingstation", GNE_TAG_WALK_BUSSTOP_CHARGINGSTATION },
379 : { "walk: busstop->parkingarea", GNE_TAG_WALK_BUSSTOP_PARKINGAREA },
380 : { "walk: trainstop->edge", GNE_TAG_WALK_TRAINSTOP_EDGE },
381 : { "walk: trainstop->taz", GNE_TAG_WALK_TRAINSTOP_TAZ },
382 : { "walk: trainstop->junction", GNE_TAG_WALK_TRAINSTOP_JUNCTION },
383 : { "walk: trainstop->busstop", GNE_TAG_WALK_TRAINSTOP_BUSSTOP },
384 : { "walk: trainstop->trainstop", GNE_TAG_WALK_TRAINSTOP_TRAINSTOP },
385 : { "walk: trainstop->containerstop", GNE_TAG_WALK_TRAINSTOP_CONTAINERSTOP },
386 : { "walk: trainstop->chargingstation", GNE_TAG_WALK_TRAINSTOP_CHARGINGSTATION },
387 : { "walk: trainstop->parkingarea", GNE_TAG_WALK_TRAINSTOP_PARKINGAREA },
388 : { "walk: containerstop->edge", GNE_TAG_WALK_CONTAINERSTOP_EDGE },
389 : { "walk: containerstop->taz", GNE_TAG_WALK_CONTAINERSTOP_TAZ },
390 : { "walk: containerstop->junction", GNE_TAG_WALK_CONTAINERSTOP_JUNCTION },
391 : { "walk: containerstop->busstop", GNE_TAG_WALK_CONTAINERSTOP_BUSSTOP },
392 : { "walk: containerstop->trainstop", GNE_TAG_WALK_CONTAINERSTOP_TRAINSTOP },
393 : { "walk: containerstop->containerstop", GNE_TAG_WALK_CONTAINERSTOP_CONTAINERSTOP },
394 : { "walk: containerstop->chargingstation", GNE_TAG_WALK_CONTAINERSTOP_CHARGINGSTATION },
395 : { "walk: containerstop->parkingarea", GNE_TAG_WALK_CONTAINERSTOP_PARKINGAREA },
396 : { "walk: chargingstation->edge", GNE_TAG_WALK_CHARGINGSTATION_EDGE },
397 : { "walk: chargingstation->taz", GNE_TAG_WALK_CHARGINGSTATION_TAZ },
398 : { "walk: chargingstation->junction", GNE_TAG_WALK_CHARGINGSTATION_JUNCTION },
399 : { "walk: chargingstation->busstop", GNE_TAG_WALK_CHARGINGSTATION_BUSSTOP },
400 : { "walk: chargingstation->trainstop", GNE_TAG_WALK_CHARGINGSTATION_TRAINSTOP },
401 : { "walk: chargingstation->containestop", GNE_TAG_WALK_CHARGINGSTATION_CONTAINERSTOP },
402 : { "walk: chargingstation->chargingstation", GNE_TAG_WALK_CHARGINGSTATION_CHARGINGSTATION },
403 : { "walk: chargingstation->parkingarea", GNE_TAG_WALK_CHARGINGSTATION_PARKINGAREA },
404 : { "walk: parkingarea->edge", GNE_TAG_WALK_PARKINGAREA_EDGE },
405 : { "walk: parkingarea->taz", GNE_TAG_WALK_PARKINGAREA_TAZ },
406 : { "walk: parkingarea->junction", GNE_TAG_WALK_PARKINGAREA_JUNCTION },
407 : { "walk: parkingarea->busstop", GNE_TAG_WALK_PARKINGAREA_BUSSTOP },
408 : { "walk: parkingarea->trainstop", GNE_TAG_WALK_PARKINGAREA_TRAINSTOP },
409 : { "walk: parkingarea->containerstop", GNE_TAG_WALK_PARKINGAREA_CONTAINERSTOP },
410 : { "walk: parkingarea->chargingstation", GNE_TAG_WALK_PARKINGAREA_CHARGINGSTATION },
411 : { "walk: parkingarea->parkingarea", GNE_TAG_WALK_PARKINGAREA_PARKINGAREA },
412 : { "walk: edges", GNE_TAG_WALK_EDGES },
413 : { "walk: route", GNE_TAG_WALK_ROUTE },
414 : // GNE Rides
415 : { "ride: edge->edge", GNE_TAG_RIDE_EDGE_EDGE },
416 : { "ride: edge->taz", GNE_TAG_RIDE_EDGE_TAZ },
417 : { "ride: edge->junction", GNE_TAG_RIDE_EDGE_JUNCTION },
418 : { "ride: edge->busstop", GNE_TAG_RIDE_EDGE_BUSSTOP },
419 : { "ride: edge->trainstop", GNE_TAG_RIDE_EDGE_TRAINSTOP },
420 : { "ride: edge->containerstop", GNE_TAG_RIDE_EDGE_CONTAINERSTOP },
421 : { "ride: edge->chargingstation", GNE_TAG_RIDE_EDGE_CHARGINGSTATION },
422 : { "ride: edge->parkingarea", GNE_TAG_RIDE_EDGE_PARKINGAREA },
423 : { "ride: taz->edge", GNE_TAG_RIDE_TAZ_EDGE },
424 : { "ride: taz->taz", GNE_TAG_RIDE_TAZ_TAZ },
425 : { "ride: taz->junction", GNE_TAG_RIDE_TAZ_JUNCTION },
426 : { "ride: taz->busstop", GNE_TAG_RIDE_TAZ_BUSSTOP },
427 : { "ride: taz->trainstop", GNE_TAG_RIDE_TAZ_TRAINSTOP },
428 : { "ride: taz->containerstop", GNE_TAG_RIDE_TAZ_CONTAINERSTOP },
429 : { "ride: taz->chargingstation", GNE_TAG_RIDE_TAZ_CHARGINGSTATION },
430 : { "ride: taz->parkingarea", GNE_TAG_RIDE_TAZ_PARKINGAREA },
431 : { "ride: junction->edge", GNE_TAG_RIDE_JUNCTION_EDGE },
432 : { "ride: junction->taz", GNE_TAG_RIDE_JUNCTION_TAZ },
433 : { "ride: junction->junction", GNE_TAG_RIDE_JUNCTION_JUNCTION },
434 : { "ride: junction->busstop", GNE_TAG_RIDE_JUNCTION_BUSSTOP },
435 : { "ride: junction->trainstop", GNE_TAG_RIDE_JUNCTION_TRAINSTOP },
436 : { "ride: junction->containerstop", GNE_TAG_RIDE_JUNCTION_CONTAINERSTOP },
437 : { "ride: junction->chargingstation", GNE_TAG_RIDE_JUNCTION_CHARGINGSTATION },
438 : { "ride: junction->parkingarea", GNE_TAG_RIDE_JUNCTION_PARKINGAREA },
439 : { "ride: busstop->edge", GNE_TAG_RIDE_BUSSTOP_EDGE },
440 : { "ride: busstop->taz", GNE_TAG_RIDE_BUSSTOP_TAZ },
441 : { "ride: busstop->junction", GNE_TAG_RIDE_BUSSTOP_JUNCTION },
442 : { "ride: busstop->busstop", GNE_TAG_RIDE_BUSSTOP_BUSSTOP },
443 : { "ride: busstop->trainstop", GNE_TAG_RIDE_BUSSTOP_TRAINSTOP },
444 : { "ride: busstop->containerstop", GNE_TAG_RIDE_BUSSTOP_CONTAINERSTOP },
445 : { "ride: busstop->chargingstation", GNE_TAG_RIDE_BUSSTOP_CHARGINGSTATION },
446 : { "ride: busstop->parkingarea", GNE_TAG_RIDE_BUSSTOP_PARKINGAREA },
447 : { "ride: trainstop->edge", GNE_TAG_RIDE_TRAINSTOP_EDGE },
448 : { "ride: trainstop->taz", GNE_TAG_RIDE_TRAINSTOP_TAZ },
449 : { "ride: trainstop->junction", GNE_TAG_RIDE_TRAINSTOP_JUNCTION },
450 : { "ride: trainstop->busstop", GNE_TAG_RIDE_TRAINSTOP_BUSSTOP },
451 : { "ride: trainstop->trainstop", GNE_TAG_RIDE_TRAINSTOP_TRAINSTOP },
452 : { "ride: trainstop->containerstop", GNE_TAG_RIDE_TRAINSTOP_CONTAINERSTOP },
453 : { "ride: trainstop->chargingstation", GNE_TAG_RIDE_TRAINSTOP_CHARGINGSTATION },
454 : { "ride: trainstop->parkingarea", GNE_TAG_RIDE_TRAINSTOP_PARKINGAREA },
455 : { "ride: containerstop->edge", GNE_TAG_RIDE_CONTAINERSTOP_EDGE },
456 : { "ride: containerstop->taz", GNE_TAG_RIDE_CONTAINERSTOP_TAZ },
457 : { "ride: containerstop->junction", GNE_TAG_RIDE_CONTAINERSTOP_JUNCTION },
458 : { "ride: containerstop->busstop", GNE_TAG_RIDE_CONTAINERSTOP_BUSSTOP },
459 : { "ride: containerstop->trainstop", GNE_TAG_RIDE_CONTAINERSTOP_TRAINSTOP },
460 : { "ride: containerstop->containerstop", GNE_TAG_RIDE_CONTAINERSTOP_CONTAINERSTOP },
461 : { "ride: containerstop->chargingstation", GNE_TAG_RIDE_CONTAINERSTOP_CHARGINGSTATION },
462 : { "ride: containerstop->parkingarea", GNE_TAG_RIDE_CONTAINERSTOP_PARKINGAREA },
463 : { "ride: chargingstation->edge", GNE_TAG_RIDE_CHARGINGSTATION_EDGE },
464 : { "ride: chargingstation->taz", GNE_TAG_RIDE_CHARGINGSTATION_TAZ },
465 : { "ride: chargingstation->junction", GNE_TAG_RIDE_CHARGINGSTATION_JUNCTION },
466 : { "ride: chargingstation->busstop", GNE_TAG_RIDE_CHARGINGSTATION_BUSSTOP },
467 : { "ride: chargingstation->trainstop", GNE_TAG_RIDE_CHARGINGSTATION_TRAINSTOP },
468 : { "ride: chargingstation->containestop", GNE_TAG_RIDE_CHARGINGSTATION_CONTAINERSTOP },
469 : { "ride: chargingstation->chargingstation", GNE_TAG_RIDE_CHARGINGSTATION_CHARGINGSTATION },
470 : { "ride: chargingstation->parkingarea", GNE_TAG_RIDE_CHARGINGSTATION_PARKINGAREA },
471 : { "ride: parkingarea->edge", GNE_TAG_RIDE_PARKINGAREA_EDGE },
472 : { "ride: parkingarea->taz", GNE_TAG_RIDE_PARKINGAREA_TAZ },
473 : { "ride: parkingarea->junction", GNE_TAG_RIDE_PARKINGAREA_JUNCTION },
474 : { "ride: parkingarea->busstop", GNE_TAG_RIDE_PARKINGAREA_BUSSTOP },
475 : { "ride: parkingarea->trainstop", GNE_TAG_RIDE_PARKINGAREA_TRAINSTOP },
476 : { "ride: parkingarea->containerstop", GNE_TAG_RIDE_PARKINGAREA_CONTAINERSTOP },
477 : { "ride: parkingarea->chargingstation", GNE_TAG_RIDE_PARKINGAREA_CHARGINGSTATION },
478 : { "ride: parkingarea->parkingarea", GNE_TAG_RIDE_PARKINGAREA_PARKINGAREA },
479 : // GNE Person Stops
480 : { "stopPerson", GNE_TAG_STOPPERSON },
481 : { "stopPerson: edge", GNE_TAG_STOPPERSON_EDGE },
482 : { "stopPerson: busStop", GNE_TAG_STOPPERSON_BUSSTOP },
483 : { "stopPerson: trainStop", GNE_TAG_STOPPERSON_TRAINSTOP },
484 : { "stopPerson: containerStop", GNE_TAG_STOPPERSON_CONTAINERSTOP },
485 : { "stopPerson: chargingStation", GNE_TAG_STOPPERSON_CHARGINGSTATION },
486 : { "stopPerson: parkingArea", GNE_TAG_STOPPERSON_PARKINGAREA },
487 : // GNE Transports
488 : { "transport: edge->edge", GNE_TAG_TRANSPORT_EDGE_EDGE },
489 : { "transport: edge->taz", GNE_TAG_TRANSPORT_EDGE_TAZ },
490 : { "transport: edge->junction", GNE_TAG_TRANSPORT_EDGE_JUNCTION },
491 : { "transport: edge->busstop", GNE_TAG_TRANSPORT_EDGE_BUSSTOP },
492 : { "transport: edge->trainstop", GNE_TAG_TRANSPORT_EDGE_TRAINSTOP },
493 : { "transport: edge->containerstop", GNE_TAG_TRANSPORT_EDGE_CONTAINERSTOP },
494 : { "transport: edge->chargingstation", GNE_TAG_TRANSPORT_EDGE_CHARGINGSTATION },
495 : { "transport: edge->parkingarea", GNE_TAG_TRANSPORT_EDGE_PARKINGAREA },
496 : { "transport: taz->edge", GNE_TAG_TRANSPORT_TAZ_EDGE },
497 : { "transport: taz->taz", GNE_TAG_TRANSPORT_TAZ_TAZ },
498 : { "transport: taz->junction", GNE_TAG_TRANSPORT_TAZ_JUNCTION },
499 : { "transport: taz->busstop", GNE_TAG_TRANSPORT_TAZ_BUSSTOP },
500 : { "transport: taz->trainstop", GNE_TAG_TRANSPORT_TAZ_TRAINSTOP },
501 : { "transport: taz->containerstop", GNE_TAG_TRANSPORT_TAZ_CONTAINERSTOP },
502 : { "transport: taz->chargingstation", GNE_TAG_TRANSPORT_TAZ_CHARGINGSTATION },
503 : { "transport: taz->parkingarea", GNE_TAG_TRANSPORT_TAZ_PARKINGAREA },
504 : { "transport: junction->edge", GNE_TAG_TRANSPORT_JUNCTION_EDGE },
505 : { "transport: junction->taz", GNE_TAG_TRANSPORT_JUNCTION_TAZ },
506 : { "transport: junction->junction", GNE_TAG_TRANSPORT_JUNCTION_JUNCTION },
507 : { "transport: junction->busstop", GNE_TAG_TRANSPORT_JUNCTION_BUSSTOP },
508 : { "transport: junction->trainstop", GNE_TAG_TRANSPORT_JUNCTION_TRAINSTOP },
509 : { "transport: junction->containerstop", GNE_TAG_TRANSPORT_JUNCTION_CONTAINERSTOP },
510 : { "transport: junction->chargingstation", GNE_TAG_TRANSPORT_JUNCTION_CHARGINGSTATION },
511 : { "transport: junction->parkingarea", GNE_TAG_TRANSPORT_JUNCTION_PARKINGAREA },
512 : { "transport: busstop->edge", GNE_TAG_TRANSPORT_BUSSTOP_EDGE },
513 : { "transport: busstop->taz", GNE_TAG_TRANSPORT_BUSSTOP_TAZ },
514 : { "transport: busstop->junction", GNE_TAG_TRANSPORT_BUSSTOP_JUNCTION },
515 : { "transport: busstop->busstop", GNE_TAG_TRANSPORT_BUSSTOP_BUSSTOP },
516 : { "transport: busstop->trainstop", GNE_TAG_TRANSPORT_BUSSTOP_TRAINSTOP },
517 : { "transport: busstop->containerstop", GNE_TAG_TRANSPORT_BUSSTOP_CONTAINERSTOP },
518 : { "transport: busstop->chargingstation", GNE_TAG_TRANSPORT_BUSSTOP_CHARGINGSTATION },
519 : { "transport: busstop->parkingarea", GNE_TAG_TRANSPORT_BUSSTOP_PARKINGAREA },
520 : { "transport: trainstop->edge", GNE_TAG_TRANSPORT_TRAINSTOP_EDGE },
521 : { "transport: trainstop->taz", GNE_TAG_TRANSPORT_TRAINSTOP_TAZ },
522 : { "transport: trainstop->junction", GNE_TAG_TRANSPORT_TRAINSTOP_JUNCTION },
523 : { "transport: trainstop->busstop", GNE_TAG_TRANSPORT_TRAINSTOP_BUSSTOP },
524 : { "transport: trainstop->trainstop", GNE_TAG_TRANSPORT_TRAINSTOP_TRAINSTOP },
525 : { "transport: trainstop->containerstop", GNE_TAG_TRANSPORT_TRAINSTOP_CONTAINERSTOP },
526 : { "transport: trainstop->chargingstation", GNE_TAG_TRANSPORT_TRAINSTOP_CHARGINGSTATION },
527 : { "transport: trainstop->parkingarea", GNE_TAG_TRANSPORT_TRAINSTOP_PARKINGAREA },
528 : { "transport: containerstop->edge", GNE_TAG_TRANSPORT_CONTAINERSTOP_EDGE },
529 : { "transport: containerstop->taz", GNE_TAG_TRANSPORT_CONTAINERSTOP_TAZ },
530 : { "transport: containerstop->junction", GNE_TAG_TRANSPORT_CONTAINERSTOP_JUNCTION },
531 : { "transport: containerstop->busstop", GNE_TAG_TRANSPORT_CONTAINERSTOP_BUSSTOP },
532 : { "transport: containerstop->trainstop", GNE_TAG_TRANSPORT_CONTAINERSTOP_TRAINSTOP },
533 : { "transport: containerstop->containerstop", GNE_TAG_TRANSPORT_CONTAINERSTOP_CONTAINERSTOP },
534 : { "transport: containerstop->chargingstation", GNE_TAG_TRANSPORT_CONTAINERSTOP_CHARGINGSTATION },
535 : { "transport: containerstop->parkingarea", GNE_TAG_TRANSPORT_CONTAINERSTOP_PARKINGAREA },
536 : { "transport: chargingstation->edge", GNE_TAG_TRANSPORT_CHARGINGSTATION_EDGE },
537 : { "transport: chargingstation->taz", GNE_TAG_TRANSPORT_CHARGINGSTATION_TAZ },
538 : { "transport: chargingstation->junction", GNE_TAG_TRANSPORT_CHARGINGSTATION_JUNCTION },
539 : { "transport: chargingstation->busstop", GNE_TAG_TRANSPORT_CHARGINGSTATION_BUSSTOP },
540 : { "transport: chargingstation->trainstop", GNE_TAG_TRANSPORT_CHARGINGSTATION_TRAINSTOP },
541 : { "transport: chargingstation->containestop", GNE_TAG_TRANSPORT_CHARGINGSTATION_CONTAINERSTOP },
542 : { "transport: chargingstation->chargingstation", GNE_TAG_TRANSPORT_CHARGINGSTATION_CHARGINGSTATION },
543 : { "transport: chargingstation->parkingarea", GNE_TAG_TRANSPORT_CHARGINGSTATION_PARKINGAREA },
544 : { "transport: parkingarea->edge", GNE_TAG_TRANSPORT_PARKINGAREA_EDGE },
545 : { "transport: parkingarea->taz", GNE_TAG_TRANSPORT_PARKINGAREA_TAZ },
546 : { "transport: parkingarea->junction", GNE_TAG_TRANSPORT_PARKINGAREA_JUNCTION },
547 : { "transport: parkingarea->busstop", GNE_TAG_TRANSPORT_PARKINGAREA_BUSSTOP },
548 : { "transport: parkingarea->trainstop", GNE_TAG_TRANSPORT_PARKINGAREA_TRAINSTOP },
549 : { "transport: parkingarea->containerstop", GNE_TAG_TRANSPORT_PARKINGAREA_CONTAINERSTOP },
550 : { "transport: parkingarea->chargingstation", GNE_TAG_TRANSPORT_PARKINGAREA_CHARGINGSTATION },
551 : { "transport: parkingarea->parkingarea", GNE_TAG_TRANSPORT_PARKINGAREA_PARKINGAREA },
552 : // GNE Tranships
553 : { "tranship: edge->edge", GNE_TAG_TRANSHIP_EDGE_EDGE },
554 : { "tranship: edge->taz", GNE_TAG_TRANSHIP_EDGE_TAZ },
555 : { "tranship: edge->junction", GNE_TAG_TRANSHIP_EDGE_JUNCTION },
556 : { "tranship: edge->busstop", GNE_TAG_TRANSHIP_EDGE_BUSSTOP },
557 : { "tranship: edge->trainstop", GNE_TAG_TRANSHIP_EDGE_TRAINSTOP },
558 : { "tranship: edge->containerstop", GNE_TAG_TRANSHIP_EDGE_CONTAINERSTOP },
559 : { "tranship: edge->chargingstation", GNE_TAG_TRANSHIP_EDGE_CHARGINGSTATION },
560 : { "tranship: edge->parkingarea", GNE_TAG_TRANSHIP_EDGE_PARKINGAREA },
561 : { "tranship: taz->edge", GNE_TAG_TRANSHIP_TAZ_EDGE },
562 : { "tranship: taz->taz", GNE_TAG_TRANSHIP_TAZ_TAZ },
563 : { "tranship: taz->junction", GNE_TAG_TRANSHIP_TAZ_JUNCTION },
564 : { "tranship: taz->busstop", GNE_TAG_TRANSHIP_TAZ_BUSSTOP },
565 : { "tranship: taz->trainstop", GNE_TAG_TRANSHIP_TAZ_TRAINSTOP },
566 : { "tranship: taz->containerstop", GNE_TAG_TRANSHIP_TAZ_CONTAINERSTOP },
567 : { "tranship: taz->chargingstation", GNE_TAG_TRANSHIP_TAZ_CHARGINGSTATION },
568 : { "tranship: taz->parkingarea", GNE_TAG_TRANSHIP_TAZ_PARKINGAREA },
569 : { "tranship: junction->edge", GNE_TAG_TRANSHIP_JUNCTION_EDGE },
570 : { "tranship: junction->taz", GNE_TAG_TRANSHIP_JUNCTION_TAZ },
571 : { "tranship: junction->junction", GNE_TAG_TRANSHIP_JUNCTION_JUNCTION },
572 : { "tranship: junction->busstop", GNE_TAG_TRANSHIP_JUNCTION_BUSSTOP },
573 : { "tranship: junction->trainstop", GNE_TAG_TRANSHIP_JUNCTION_TRAINSTOP },
574 : { "tranship: junction->containerstop", GNE_TAG_TRANSHIP_JUNCTION_CONTAINERSTOP },
575 : { "tranship: junction->chargingstation", GNE_TAG_TRANSHIP_JUNCTION_CHARGINGSTATION },
576 : { "tranship: junction->parkingarea", GNE_TAG_TRANSHIP_JUNCTION_PARKINGAREA },
577 : { "tranship: busstop->edge", GNE_TAG_TRANSHIP_BUSSTOP_EDGE },
578 : { "tranship: busstop->taz", GNE_TAG_TRANSHIP_BUSSTOP_TAZ },
579 : { "tranship: busstop->junction", GNE_TAG_TRANSHIP_BUSSTOP_JUNCTION },
580 : { "tranship: busstop->busstop", GNE_TAG_TRANSHIP_BUSSTOP_BUSSTOP },
581 : { "tranship: busstop->trainstop", GNE_TAG_TRANSHIP_BUSSTOP_TRAINSTOP },
582 : { "tranship: busstop->containerstop", GNE_TAG_TRANSHIP_BUSSTOP_CONTAINERSTOP },
583 : { "tranship: busstop->chargingstation", GNE_TAG_TRANSHIP_BUSSTOP_CHARGINGSTATION },
584 : { "tranship: busstop->parkingarea", GNE_TAG_TRANSHIP_BUSSTOP_PARKINGAREA },
585 : { "tranship: trainstop->edge", GNE_TAG_TRANSHIP_TRAINSTOP_EDGE },
586 : { "tranship: trainstop->taz", GNE_TAG_TRANSHIP_TRAINSTOP_TAZ },
587 : { "tranship: trainstop->junction", GNE_TAG_TRANSHIP_TRAINSTOP_JUNCTION },
588 : { "tranship: trainstop->busstop", GNE_TAG_TRANSHIP_TRAINSTOP_BUSSTOP },
589 : { "tranship: trainstop->trainstop", GNE_TAG_TRANSHIP_TRAINSTOP_TRAINSTOP },
590 : { "tranship: trainstop->containerstop", GNE_TAG_TRANSHIP_TRAINSTOP_CONTAINERSTOP },
591 : { "tranship: trainstop->chargingstation", GNE_TAG_TRANSHIP_TRAINSTOP_CHARGINGSTATION },
592 : { "tranship: trainstop->parkingarea", GNE_TAG_TRANSHIP_TRAINSTOP_PARKINGAREA },
593 : { "tranship: containerstop->edge", GNE_TAG_TRANSHIP_CONTAINERSTOP_EDGE },
594 : { "tranship: containerstop->taz", GNE_TAG_TRANSHIP_CONTAINERSTOP_TAZ },
595 : { "tranship: containerstop->junction", GNE_TAG_TRANSHIP_CONTAINERSTOP_JUNCTION },
596 : { "tranship: containerstop->busstop", GNE_TAG_TRANSHIP_CONTAINERSTOP_BUSSTOP },
597 : { "tranship: containerstop->trainstop", GNE_TAG_TRANSHIP_CONTAINERSTOP_TRAINSTOP },
598 : { "tranship: containerstop->containerstop", GNE_TAG_TRANSHIP_CONTAINERSTOP_CONTAINERSTOP },
599 : { "tranship: containerstop->chargingstation", GNE_TAG_TRANSHIP_CONTAINERSTOP_CHARGINGSTATION },
600 : { "tranship: containerstop->parkingarea", GNE_TAG_TRANSHIP_CONTAINERSTOP_PARKINGAREA },
601 : { "tranship: chargingstation->edge", GNE_TAG_TRANSHIP_CHARGINGSTATION_EDGE },
602 : { "tranship: chargingstation->taz", GNE_TAG_TRANSHIP_CHARGINGSTATION_TAZ },
603 : { "tranship: chargingstation->junction", GNE_TAG_TRANSHIP_CHARGINGSTATION_JUNCTION },
604 : { "tranship: chargingstation->busstop", GNE_TAG_TRANSHIP_CHARGINGSTATION_BUSSTOP },
605 : { "tranship: chargingstation->trainstop", GNE_TAG_TRANSHIP_CHARGINGSTATION_TRAINSTOP },
606 : { "tranship: chargingstation->containestop", GNE_TAG_TRANSHIP_CHARGINGSTATION_CONTAINERSTOP },
607 : { "tranship: chargingstation->chargingstation", GNE_TAG_TRANSHIP_CHARGINGSTATION_CHARGINGSTATION },
608 : { "tranship: chargingstation->parkingarea", GNE_TAG_TRANSHIP_CHARGINGSTATION_PARKINGAREA },
609 : { "tranship: parkingarea->edge", GNE_TAG_TRANSHIP_PARKINGAREA_EDGE },
610 : { "tranship: parkingarea->taz", GNE_TAG_TRANSHIP_PARKINGAREA_TAZ },
611 : { "tranship: parkingarea->junction", GNE_TAG_TRANSHIP_PARKINGAREA_JUNCTION },
612 : { "tranship: parkingarea->busstop", GNE_TAG_TRANSHIP_PARKINGAREA_BUSSTOP },
613 : { "tranship: parkingarea->trainstop", GNE_TAG_TRANSHIP_PARKINGAREA_TRAINSTOP },
614 : { "tranship: parkingarea->containerstop", GNE_TAG_TRANSHIP_PARKINGAREA_CONTAINERSTOP },
615 : { "tranship: parkingarea->chargingstation", GNE_TAG_TRANSHIP_PARKINGAREA_CHARGINGSTATION },
616 : { "tranship: parkingarea->parkingarea", GNE_TAG_TRANSHIP_PARKINGAREA_PARKINGAREA },
617 : { "tranship: edges", GNE_TAG_TRANSHIP_EDGES },
618 : // GNE Container Stops
619 : { "stopContainer", GNE_TAG_STOPCONTAINER },
620 : { "stopContainer: edge", GNE_TAG_STOPCONTAINER_EDGE },
621 : { "stopContainer: busStop", GNE_TAG_STOPCONTAINER_BUSSTOP },
622 : { "stopContainer: trainStop", GNE_TAG_STOPCONTAINER_TRAINSTOP },
623 : { "stopContainer: containerStop", GNE_TAG_STOPCONTAINER_CONTAINERSTOP },
624 : { "stopContainer: chargingStation", GNE_TAG_STOPCONTAINER_CHARGINGSTATION },
625 : { "stopContainer: parkingArea", GNE_TAG_STOPCONTAINER_PARKINGAREA },
626 : // root file
627 : { "rootFile", SUMO_TAG_ROOTFILE },
628 : // Last element
629 : { "", SUMO_TAG_NOTHING } // -> must be the last one
630 : };
631 :
632 :
633 : SequentialStringBijection::Entry SUMOXMLDefinitions::attrs[] = {
634 : // meta value for attribute enum
635 : { "default", SUMO_ATTR_DEFAULT },
636 : // meandata
637 : { "sampledSeconds", SUMO_ATTR_SAMPLEDSECONDS },
638 : { "density", SUMO_ATTR_DENSITY },
639 : { "laneDensity", SUMO_ATTR_LANEDENSITY },
640 : { "occupancy", SUMO_ATTR_OCCUPANCY },
641 : { "waitingTime", SUMO_ATTR_WAITINGTIME },
642 : { "timeLoss", SUMO_ATTR_TIMELOSS },
643 : { "speed", SUMO_ATTR_SPEED },
644 : { "speedRelative", SUMO_ATTR_SPEEDREL },
645 : { "departed", SUMO_ATTR_DEPARTED },
646 : { "arrived", SUMO_ATTR_ARRIVED },
647 : { "entered", SUMO_ATTR_ENTERED },
648 : { "left", SUMO_ATTR_LEFT },
649 : { "vaporized", SUMO_ATTR_VAPORIZED },
650 : { "teleported", SUMO_ATTR_TELEPORTED },
651 : { "traveltime", SUMO_ATTR_TRAVELTIME },
652 : { "laneChangedFrom", SUMO_ATTR_LANECHANGEDFROM },
653 : { "laneChangedTo", SUMO_ATTR_LANECHANGEDTO },
654 : { "overlapTraveltime", SUMO_ATTR_OVERLAPTRAVELTIME },
655 : { "CO_abs", SUMO_ATTR_CO_ABS },
656 : { "CO2_abs", SUMO_ATTR_CO2_ABS },
657 : { "HC_abs", SUMO_ATTR_HC_ABS },
658 : { "PMx_abs", SUMO_ATTR_PMX_ABS },
659 : { "NOx_abs", SUMO_ATTR_NOX_ABS },
660 : { "fuel_abs", SUMO_ATTR_FUEL_ABS },
661 : { "electricity_abs", SUMO_ATTR_ELECTRICITY_ABS },
662 : { "CO_normed", SUMO_ATTR_CO_NORMED },
663 : { "CO2_normed", SUMO_ATTR_CO2_NORMED },
664 : { "HC_normed", SUMO_ATTR_HC_NORMED },
665 : { "PMx_normed", SUMO_ATTR_PMX_NORMED },
666 : { "NOx_normed", SUMO_ATTR_NOX_NORMED },
667 : { "fuel_normed", SUMO_ATTR_FUEL_NORMED },
668 : { "electricity_normed", SUMO_ATTR_ELECTRICITY_NORMED },
669 : { "CO_perVeh", SUMO_ATTR_CO_PERVEH },
670 : { "CO2_perVeh", SUMO_ATTR_CO2_PERVEH },
671 : { "HC_perVeh", SUMO_ATTR_HC_PERVEH },
672 : { "PMx_perVeh", SUMO_ATTR_PMX_PERVEH },
673 : { "NOx_perVeh", SUMO_ATTR_NOX_PERVEH },
674 : { "fuel_perVeh", SUMO_ATTR_FUEL_PERVEH },
675 : { "electricity_perVeh", SUMO_ATTR_ELECTRICITY_PERVEH },
676 : { "noise", SUMO_ATTR_NOISE },
677 : { "amount", SUMO_ATTR_AMOUNT },
678 : { "averageSpeed", SUMO_ATTR_AVERAGESPEED },
679 : // FCD
680 : { "x", SUMO_ATTR_X },
681 : { "y", SUMO_ATTR_Y },
682 : { "z", SUMO_ATTR_Z },
683 : { "angle", SUMO_ATTR_ANGLE },
684 : { "type", SUMO_ATTR_TYPE },
685 : { "pos", SUMO_ATTR_POSITION },
686 : { "edge", SUMO_ATTR_EDGE },
687 : { "lane", SUMO_ATTR_LANE },
688 : { "slope", SUMO_ATTR_SLOPE },
689 : { "signals", SUMO_ATTR_SIGNALS },
690 : { "acceleration", SUMO_ATTR_ACCELERATION },
691 : { "accelerationLat", SUMO_ATTR_ACCELERATION_LAT },
692 : { "distance", SUMO_ATTR_DISTANCE },
693 : { "leaderID", SUMO_ATTR_LEADER_ID },
694 : { "leaderSpeed", SUMO_ATTR_LEADER_SPEED },
695 : { "leaderGap", SUMO_ATTR_LEADER_GAP },
696 : { "vehicle", SUMO_ATTR_VEHICLE },
697 : { "odometer", SUMO_ATTR_ODOMETER },
698 : { "posLat", SUMO_ATTR_POSITION_LAT },
699 : { "speedLat", SUMO_ATTR_SPEED_LAT },
700 : // only usable with SumoXMLAttrMask
701 : { "arrivalDelay", SUMO_ATTR_ARRIVALDELAY },
702 : // emission-output
703 : { "CO", SUMO_ATTR_CO },
704 : { "CO2", SUMO_ATTR_CO2 },
705 : { "HC", SUMO_ATTR_HC },
706 : { "PMx", SUMO_ATTR_PMX },
707 : { "NOx", SUMO_ATTR_NOX },
708 : { "fuel", SUMO_ATTR_FUEL },
709 : { "electricity", SUMO_ATTR_ELECTRICITY },
710 : { "route", SUMO_ATTR_ROUTE },
711 : { "eclass", SUMO_ATTR_ECLASS },
712 : { "waiting", SUMO_ATTR_WAITING },
713 : // meso-attributes
714 : { "segment", SUMO_ATTR_SEGMENT },
715 : { "queue", SUMO_ATTR_QUEUE },
716 : { "entryTime", SUMO_ATTR_ENTRYTIME },
717 : { "eventTime", SUMO_ATTR_EVENTTIME },
718 : { "blockTime", SUMO_ATTR_BLOCKTIME },
719 : // Edge
720 : { "id", SUMO_ATTR_ID },
721 : { "refId", SUMO_ATTR_REFID },
722 : { "name", SUMO_ATTR_NAME },
723 : { "version", SUMO_ATTR_VERSION },
724 : { "priority", SUMO_ATTR_PRIORITY },
725 : { "numLanes", SUMO_ATTR_NUMLANES },
726 : { "friction", SUMO_ATTR_FRICTION },
727 : { "oneway", SUMO_ATTR_ONEWAY },
728 : { "width", SUMO_ATTR_WIDTH },
729 : { "widthResolution", SUMO_ATTR_WIDTHRESOLUTION },
730 : { "maxWidth", SUMO_ATTR_MAXWIDTH },
731 : { "minWidth", SUMO_ATTR_MINWIDTH },
732 : { "sidewalkWidth", SUMO_ATTR_SIDEWALKWIDTH },
733 : { "bikeLaneWidth", SUMO_ATTR_BIKELANEWIDTH },
734 : { "remove", SUMO_ATTR_REMOVE },
735 : { "length", SUMO_ATTR_LENGTH },
736 : { "bidi", SUMO_ATTR_BIDI },
737 : // Split
738 : { "idBefore", SUMO_ATTR_ID_BEFORE },
739 : { "idAfter", SUMO_ATTR_ID_AFTER },
740 : // Positions
741 : { "center", SUMO_ATTR_CENTER },
742 : { "centerX", SUMO_ATTR_CENTER_X },
743 : { "centerY", SUMO_ATTR_CENTER_Y },
744 : { "centerZ", SUMO_ATTR_CENTER_Z },
745 :
746 : { "key", SUMO_ATTR_KEY },
747 : { "requestSize", SUMO_ATTR_REQUESTSIZE },
748 : { "request", SUMO_ATTR_REQUEST },
749 : { "response", SUMO_ATTR_RESPONSE },
750 : { "programID", SUMO_ATTR_PROGRAMID },
751 : { "phase", SUMO_ATTR_PHASE },
752 : { "offset", SUMO_ATTR_OFFSET },
753 : { "endOffset", SUMO_ATTR_ENDOFFSET },
754 : { "incLanes", SUMO_ATTR_INCLANES },
755 : { "intLanes", SUMO_ATTR_INTLANES },
756 :
757 : { "weight", SUMO_ATTR_WEIGHT },
758 : { "node", SUMO_ATTR_NODE },
759 : { "edges", SUMO_ATTR_EDGES },
760 : // Vehicle
761 : { "depart", SUMO_ATTR_DEPART },
762 : { "departLane", SUMO_ATTR_DEPARTLANE },
763 : { "departPos", SUMO_ATTR_DEPARTPOS },
764 : { "departPosLat", SUMO_ATTR_DEPARTPOS_LAT },
765 : { "departSpeed", SUMO_ATTR_DEPARTSPEED },
766 : { "departEdge", SUMO_ATTR_DEPARTEDGE },
767 : { "arrivalLane", SUMO_ATTR_ARRIVALLANE },
768 : { "arrivalPos", SUMO_ATTR_ARRIVALPOS },
769 : { "arrivalPosLat", SUMO_ATTR_ARRIVALPOS_LAT },
770 : { "arrivalSpeed", SUMO_ATTR_ARRIVALSPEED },
771 : { "arrivalEdge", SUMO_ATTR_ARRIVALEDGE },
772 : { "maxSpeed", SUMO_ATTR_MAXSPEED },
773 : { "desiredMaxSpeed", SUMO_ATTR_DESIRED_MAXSPEED },
774 : { "maxSpeedLat", SUMO_ATTR_MAXSPEED_LAT },
775 : { "latAlignment", SUMO_ATTR_LATALIGNMENT },
776 : { "minGapLat", SUMO_ATTR_MINGAP_LAT },
777 : { "accel", SUMO_ATTR_ACCEL },
778 : { "decel", SUMO_ATTR_DECEL },
779 : { "emergencyDecel", SUMO_ATTR_EMERGENCYDECEL },
780 : { "apparentDecel", SUMO_ATTR_APPARENTDECEL },
781 : { "actionStepLength", SUMO_ATTR_ACTIONSTEPLENGTH },
782 : { "vClass", SUMO_ATTR_VCLASS },
783 : { "vClasses", SUMO_ATTR_VCLASSES },
784 : { "exceptions", SUMO_ATTR_EXCEPTIONS },
785 : { "repno", SUMO_ATTR_REPNUMBER },
786 : { "speedFactor", SUMO_ATTR_SPEEDFACTOR },
787 : { "speedDev", SUMO_ATTR_SPEEDDEV },
788 : { "laneChangeModel", SUMO_ATTR_LANE_CHANGE_MODEL },
789 : { "carFollowModel", SUMO_ATTR_CAR_FOLLOW_MODEL },
790 : { "minGap", SUMO_ATTR_MINGAP },
791 : { "collisionMinGapFactor", SUMO_ATTR_COLLISION_MINGAP_FACTOR },
792 : { "boardingDuration", SUMO_ATTR_BOARDING_DURATION },
793 : { "loadingDuration", SUMO_ATTR_LOADING_DURATION },
794 : { "boardingFactor", SUMO_ATTR_BOARDING_FACTOR },
795 : { "scale", SUMO_ATTR_SCALE },
796 : { "insertionChecks", SUMO_ATTR_INSERTIONCHECKS },
797 : { "timeToTeleport", SUMO_ATTR_TIME_TO_TELEPORT },
798 : { "timeToTeleportBidi", SUMO_ATTR_TIME_TO_TELEPORT_BIDI },
799 : { "speedFactorPremature", SUMO_ATTR_SPEEDFACTOR_PREMATURE },
800 : { "maneuverAngleTimes", SUMO_ATTR_MANEUVER_ANGLE_TIMES },
801 : { "parkingBadges", SUMO_ATTR_PARKING_BADGES },
802 : // MSDevice_ElecHybrid
803 : { "overheadWireChargingPower", SUMO_ATTR_OVERHEADWIRECHARGINGPOWER },
804 : // OverheadWire
805 : { "overheadWireSegment", SUMO_ATTR_OVERHEAD_WIRE_SEGMENT },
806 : { "segments", SUMO_ATTR_OVERHEAD_WIRE_SEGMENTS }, // <- deprecate
807 : { "voltage", SUMO_ATTR_VOLTAGE },
808 : { "voltageSource", SUMO_ATTR_VOLTAGESOURCE },
809 : { "currentLimit", SUMO_ATTR_CURRENTLIMIT },
810 : { "substationId", SUMO_ATTR_SUBSTATIONID },
811 : { "wireResistivity", SUMO_ATTR_OVERHEAD_WIRE_RESISTIVITY },
812 : { "forbiddenInnerLanes", SUMO_ATTR_OVERHEAD_WIRE_FORBIDDEN },
813 : { "clamps", SUMO_ATTR_OVERHEAD_WIRE_CLAMPS }, // <- deprecate
814 : { "idSegmentStartClamp", SUMO_ATTR_OVERHEAD_WIRE_CLAMP_START }, // <- deprecate
815 : { "idSegmentEndClamp", SUMO_ATTR_OVERHEAD_WIRE_CLAMP_END }, // <- deprecate
816 : { "wireClampStart", SUMO_ATTR_OVERHEAD_WIRECLAMP_START },
817 : { "wireClampEnd", SUMO_ATTR_OVERHEAD_WIRECLAMP_END },
818 : { "wireClampLaneStart", SUMO_ATTR_OVERHEAD_WIRECLAMP_LANESTART },
819 : { "wireClampLaneEnd", SUMO_ATTR_OVERHEAD_WIRECLAMP_LANEEND },
820 : // Charging Station
821 : { "power", SUMO_ATTR_CHARGINGPOWER },
822 : { "efficiency", SUMO_ATTR_EFFICIENCY },
823 : { "chargeInTransit", SUMO_ATTR_CHARGEINTRANSIT },
824 : { "chargeDelay", SUMO_ATTR_CHARGEDELAY},
825 : { "chargeType", SUMO_ATTR_CHARGETYPE},
826 : // MSDevice_Battery
827 : { "actualBatteryCapacity", SUMO_ATTR_ACTUALBATTERYCAPACITY },
828 : { "chargeLevel", SUMO_ATTR_CHARGELEVEL },
829 : { "maximumBatteryCapacity", SUMO_ATTR_MAXIMUMBATTERYCAPACITY },
830 : { "maximumChargeRate", SUMO_ATTR_MAXIMUMCHARGERATE },
831 : { "chargeLevelTable", SUMO_ATTR_CHARGELEVELTABLE },
832 : { "chargeCurveTable", SUMO_ATTR_CHARGECURVETABLE },
833 : { "maximumPower", SUMO_ATTR_MAXIMUMPOWER },
834 : { "vehicleMass", SUMO_ATTR_VEHICLEMASS },
835 : { "rotatingMass", SUMO_ATTR_ROTATINGMASS },
836 : { "frontSurfaceArea", SUMO_ATTR_FRONTSURFACEAREA },
837 : { "airDragCoefficient", SUMO_ATTR_AIRDRAGCOEFFICIENT },
838 : { "internalMomentOfInertia", SUMO_ATTR_INTERNALMOMENTOFINERTIA },
839 : { "radialDragCoefficient", SUMO_ATTR_RADIALDRAGCOEFFICIENT },
840 : { "rollDragCoefficient", SUMO_ATTR_ROLLDRAGCOEFFICIENT },
841 : { "constantPowerIntake", SUMO_ATTR_CONSTANTPOWERINTAKE },
842 : { "propulsionEfficiency", SUMO_ATTR_PROPULSIONEFFICIENCY },
843 : { "recuperationEfficiency", SUMO_ATTR_RECUPERATIONEFFICIENCY },
844 : { "recuperationEfficiencyByDecel", SUMO_ATTR_RECUPERATIONEFFICIENCY_BY_DECELERATION },
845 : { "stoppingTreshold", SUMO_ATTR_STOPPINGTHRESHOLD },
846 : // MSDevice_Tripinfo
847 : { "waitingCount", SUMO_ATTR_WAITINGCOUNT },
848 : { "stopTime", SUMO_ATTR_STOPTIME },
849 :
850 : // MSElecHybridExport
851 : { "overheadWireId", SUMO_ATTR_OVERHEADWIREID },
852 : { "tractionSubstationId", SUMO_ATTR_TRACTIONSUBSTATIONID },
853 : { "current", SUMO_ATTR_CURRENTFROMOVERHEADWIRE },
854 : { "circuitVoltage", SUMO_ATTR_VOLTAGEOFOVERHEADWIRE },
855 : { "alphaCircuitSolver", SUMO_ATTR_ALPHACIRCUITSOLVER },
856 : { "recuperationEnabled", SUMO_ATTR_RECUPERATIONENABLE },
857 : // MSBatteryExport
858 : { "energyConsumed", SUMO_ATTR_ENERGYCONSUMED },
859 : { "totalEnergyConsumed", SUMO_ATTR_TOTALENERGYCONSUMED },
860 : { "totalEnergyRegenerated", SUMO_ATTR_TOTALENERGYREGENERATED },
861 : { "chargingStationId", SUMO_ATTR_CHARGINGSTATIONID },
862 : { "energyCharged", SUMO_ATTR_ENERGYCHARGED },
863 : { "energyChargedInTransit", SUMO_ATTR_ENERGYCHARGEDINTRANSIT },
864 : { "energyChargedStopped", SUMO_ATTR_ENERGYCHARGEDSTOPPED },
865 : { "posOnLane", SUMO_ATTR_POSONLANE },
866 : { "timeStopped", SUMO_ATTR_TIMESTOPPED },
867 : // MMPEVEM
868 : { "wheelRadius", SUMO_ATTR_WHEELRADIUS },
869 : { "maximumTorque", SUMO_ATTR_MAXIMUMTORQUE },
870 : { "maximumSpeed", SUMO_ATTR_MAXIMUMSPEED },
871 : { "gearEfficiency", SUMO_ATTR_GEAREFFICIENCY },
872 : { "gearRatio", SUMO_ATTR_GEARRATIO },
873 : { "maximumRecuperationTorque", SUMO_ATTR_MAXIMUMRECUPERATIONTORQUE },
874 : { "maximumRecuperationPower", SUMO_ATTR_MAXIMUMRECUPERATIONPOWER },
875 : { "internalBatteryResistance", SUMO_ATTR_INTERNALBATTERYRESISTANCE },
876 : { "nominalBatteryVoltage", SUMO_ATTR_NOMINALBATTERYVOLTAGE },
877 : { "powerLossMap", SUMO_ATTR_POWERLOSSMAP },
878 : // ChargingStation output
879 : { "chargingStatus", SUMO_ATTR_CHARGING_STATUS },
880 : { "totalEnergyCharged", SUMO_ATTR_TOTALENERGYCHARGED },
881 : { "chargingSteps", SUMO_ATTR_CHARGINGSTEPS },
882 : { "totalEnergyChargedIntoVehicle", SUMO_ATTR_TOTALENERGYCHARGED_VEHICLE },
883 : { "chargingBegin", SUMO_ATTR_CHARGINGBEGIN },
884 : { "chargingEnd", SUMO_ATTR_CHARGINGEND },
885 : { "partialCharge", SUMO_ATTR_PARTIALCHARGE },
886 : { "minPower", SUMO_ATTR_MINPOWER },
887 : { "minCharge", SUMO_ATTR_MINCHARGE },
888 : { "maxCharge", SUMO_ATTR_MAXCHARGE },
889 : { "minEfficiency", SUMO_ATTR_MINEFFICIENCY },
890 : { "maxEfficiency", SUMO_ATTR_MAXEFFICIENCY },
891 :
892 : // general emission / consumption
893 : { "shutOffStopDuration", SUMO_ATTR_SHUT_OFF_STOP },
894 : { "shutOffAutoDuration", SUMO_ATTR_SHUT_OFF_AUTO },
895 : { "loading", SUMO_ATTR_LOADING },
896 :
897 : /// @name carFollow model attributes
898 : { "sigma", SUMO_ATTR_SIGMA },
899 : { "sigmaStep", SUMO_ATTR_SIGMA_STEP },
900 : { "startupDelay", SUMO_ATTR_STARTUP_DELAY },
901 : { "tau", SUMO_ATTR_TAU },
902 : { "tmp1", SUMO_ATTR_TMP1 },
903 : { "tmp2", SUMO_ATTR_TMP2 },
904 : { "tmp3", SUMO_ATTR_TMP3 },
905 : { "tmp4", SUMO_ATTR_TMP4 },
906 : { "tmp5", SUMO_ATTR_TMP5 },
907 :
908 : { "vehdynamics", SUMO_ATTR_CF_EIDM_USEVEHDYNAMICS },
909 : { "tpreview", SUMO_ATTR_CF_EIDM_T_LOOK_AHEAD },
910 : { "tPersDrive", SUMO_ATTR_CF_EIDM_T_PERSISTENCE_DRIVE },
911 : { "treaction", SUMO_ATTR_CF_EIDM_T_REACTION },
912 : { "tPersEstimate", SUMO_ATTR_CF_EIDM_T_PERSISTENCE_ESTIMATE },
913 : { "ccoolness", SUMO_ATTR_CF_EIDM_C_COOLNESS },
914 : { "sigmaleader", SUMO_ATTR_CF_EIDM_SIG_LEADER },
915 : { "sigmagap", SUMO_ATTR_CF_EIDM_SIG_GAP },
916 : { "sigmaerror", SUMO_ATTR_CF_EIDM_SIG_ERROR },
917 : { "jerkmax", SUMO_ATTR_CF_EIDM_JERK_MAX },
918 : { "epsilonacc", SUMO_ATTR_CF_EIDM_EPSILON_ACC },
919 : { "taccmax", SUMO_ATTR_CF_EIDM_T_ACC_MAX },
920 : { "Mflatness", SUMO_ATTR_CF_EIDM_M_FLATNESS },
921 : { "Mbegin", SUMO_ATTR_CF_EIDM_M_BEGIN },
922 : { "maxvehpreview", SUMO_ATTR_CF_EIDM_MAX_VEH_PREVIEW },
923 :
924 : { "speedControlGain", SUMO_ATTR_SC_GAIN },
925 : { "gapClosingControlGainSpeed", SUMO_ATTR_GCC_GAIN_SPEED },
926 : { "gapClosingControlGainSpace", SUMO_ATTR_GCC_GAIN_SPACE },
927 : { "gapControlGainSpeed", SUMO_ATTR_GC_GAIN_SPEED },
928 : { "gapControlGainSpace", SUMO_ATTR_GC_GAIN_SPACE },
929 : { "collisionAvoidanceGainSpeed", SUMO_ATTR_CA_GAIN_SPEED },
930 : { "collisionAvoidanceGainSpace", SUMO_ATTR_CA_GAIN_SPACE },
931 : { "collisionAvoidanceOverride", SUMO_ATTR_CA_OVERRIDE },
932 :
933 : { "speedControlGainCACC", SUMO_ATTR_SC_GAIN_CACC },
934 : { "gapClosingControlGainGap", SUMO_ATTR_GCC_GAIN_GAP_CACC },
935 : { "gapClosingControlGainGapDot", SUMO_ATTR_GCC_GAIN_GAP_DOT_CACC },
936 : { "gapControlGainGap", SUMO_ATTR_GC_GAIN_GAP_CACC },
937 : { "gapControlGainGapDot", SUMO_ATTR_GC_GAIN_GAP_DOT_CACC },
938 : { "collisionAvoidanceGainGap", SUMO_ATTR_CA_GAIN_GAP_CACC },
939 : { "collisionAvoidanceGainGapDot", SUMO_ATTR_CA_GAIN_GAP_DOT_CACC },
940 : { "tauCACCToACC", SUMO_ATTR_HEADWAY_TIME_CACC_TO_ACC },
941 : { "speedControlMinGap", SUMO_ATTR_SC_MIN_GAP },
942 : { "applyDriverState", SUMO_ATTR_APPLYDRIVERSTATE },
943 :
944 : { "trainType", SUMO_ATTR_TRAIN_TYPE },
945 : { "speedTable", SUMO_ATTR_SPEED_TABLE },
946 : { "tractionTable", SUMO_ATTR_TRACTION_TABLE },
947 : { "resistanceTable", SUMO_ATTR_RESISTANCE_TABLE },
948 : { "massFactor", SUMO_ATTR_MASSFACTOR },
949 : { "maxPower", SUMO_ATTR_MAXPOWER },
950 : { "maxTraction", SUMO_ATTR_MAXTRACTION },
951 : { "resCoef_constant", SUMO_ATTR_RESISTANCE_COEFFICIENT_CONSTANT },
952 : { "resCoef_linear", SUMO_ATTR_RESISTANCE_COEFFICIENT_LINEAR },
953 : { "resCoef_quadratic", SUMO_ATTR_RESISTANCE_COEFFICIENT_QUADRATIC },
954 : /// @}
955 :
956 : /// @name Lane changing model attributes
957 : /// @{
958 : { "lcStrategic", SUMO_ATTR_LCA_STRATEGIC_PARAM },
959 : { "lcCooperative", SUMO_ATTR_LCA_COOPERATIVE_PARAM },
960 : { "lcSpeedGain", SUMO_ATTR_LCA_SPEEDGAIN_PARAM },
961 : { "lcKeepRight", SUMO_ATTR_LCA_KEEPRIGHT_PARAM },
962 : { "lcSublane", SUMO_ATTR_LCA_SUBLANE_PARAM },
963 : { "lcOpposite", SUMO_ATTR_LCA_OPPOSITE_PARAM },
964 : { "lcPushy", SUMO_ATTR_LCA_PUSHY },
965 : { "lcPushyGap", SUMO_ATTR_LCA_PUSHYGAP },
966 : { "lcAssertive", SUMO_ATTR_LCA_ASSERTIVE },
967 : { "lcImpatience", SUMO_ATTR_LCA_IMPATIENCE },
968 : { "lcTimeToImpatience", SUMO_ATTR_LCA_TIME_TO_IMPATIENCE },
969 : { "lcAccelLat", SUMO_ATTR_LCA_ACCEL_LAT },
970 : { "lcTurnAlignmentDistance", SUMO_ATTR_LCA_TURN_ALIGNMENT_DISTANCE },
971 : { "lcOvertakeRight", SUMO_ATTR_LCA_OVERTAKE_RIGHT },
972 : { "lcLookaheadLeft", SUMO_ATTR_LCA_LOOKAHEADLEFT },
973 : { "lcSpeedGainRight", SUMO_ATTR_LCA_SPEEDGAINRIGHT },
974 : { "lcSpeedGainLookahead", SUMO_ATTR_LCA_SPEEDGAIN_LOOKAHEAD },
975 : { "lcCooperativeRoundabout", SUMO_ATTR_LCA_COOPERATIVE_ROUNDABOUT },
976 : { "lcCooperativeSpeed", SUMO_ATTR_LCA_COOPERATIVE_SPEED },
977 : { "lcMaxSpeedLatStanding", SUMO_ATTR_LCA_MAXSPEEDLATSTANDING },
978 : { "lcMaxSpeedLatFactor", SUMO_ATTR_LCA_MAXSPEEDLATFACTOR },
979 : { "lcMaxDistLatStanding", SUMO_ATTR_LCA_MAXDISTLATSTANDING },
980 : { "lcLaneDiscipline", SUMO_ATTR_LCA_LANE_DISCIPLINE },
981 : { "lcSigma", SUMO_ATTR_LCA_SIGMA },
982 : { "lcKeepRightAcceptanceTime", SUMO_ATTR_LCA_KEEPRIGHT_ACCEPTANCE_TIME },
983 : { "lcOvertakeDeltaSpeedFactor", SUMO_ATTR_LCA_OVERTAKE_DELTASPEED_FACTOR },
984 : { "lcContRight", SUMO_ATTR_LCA_CONTRIGHT },
985 : { "lcExperimental1", SUMO_ATTR_LCA_EXPERIMENTAL1 },
986 : /// @}
987 :
988 : /// @name junction model attributes
989 : /// @{
990 : { "jmCrossingGap", SUMO_ATTR_JM_CROSSING_GAP },
991 : { "jmDriveAfterYellowTime", SUMO_ATTR_JM_DRIVE_AFTER_YELLOW_TIME },
992 : { "jmDriveAfterRedTime", SUMO_ATTR_JM_DRIVE_AFTER_RED_TIME },
993 : { "jmDriveRedSpeed", SUMO_ATTR_JM_DRIVE_RED_SPEED },
994 : { "jmIgnoreKeepClearTime", SUMO_ATTR_JM_IGNORE_KEEPCLEAR_TIME },
995 : { "jmIgnoreFoeSpeed", SUMO_ATTR_JM_IGNORE_FOE_SPEED },
996 : { "jmIgnoreFoeProb", SUMO_ATTR_JM_IGNORE_FOE_PROB },
997 : { "jmIgnoreJunctionFoeProb", SUMO_ATTR_JM_IGNORE_JUNCTION_FOE_PROB },
998 : { "jmSigmaMinor", SUMO_ATTR_JM_SIGMA_MINOR },
999 : { "jmStoplineGap", SUMO_ATTR_JM_STOPLINE_GAP },
1000 : { "jmStoplineGapMinor", SUMO_ATTR_JM_STOPLINE_GAP_MINOR },
1001 : { "jmStoplineCrossingGap", SUMO_ATTR_JM_STOPLINE_CROSSING_GAP },
1002 : { "jmTimegapMinor", SUMO_ATTR_JM_TIMEGAP_MINOR },
1003 : { "jmExtraGap", SUMO_ATTR_JM_EXTRA_GAP },
1004 : { "jmAdvance", SUMO_ATTR_JM_ADVANCE },
1005 : { "jmStopSignWait", SUMO_ATTR_JM_STOPSIGN_WAIT },
1006 : { "jmAllwayStopWait", SUMO_ATTR_JM_ALLWAYSTOP_WAIT },
1007 : { "junctionModel.ignoreIDs", SUMO_ATTR_JM_IGNORE_IDS },
1008 : { "junctionModel.ignoreTypes", SUMO_ATTR_JM_IGNORE_TYPES },
1009 : { "carFollowModel.ignoreIDs", SUMO_ATTR_CF_IGNORE_IDS },
1010 : { "carFollowModel.ignoreTypes", SUMO_ATTR_CF_IGNORE_TYPES },
1011 : /// @}
1012 : { "flexArrival", SUMO_ATTR_FLEX_ARRIVAL },
1013 :
1014 : { "last", SUMO_ATTR_LAST },
1015 : { "cost", SUMO_ATTR_COST },
1016 : { "costs", SUMO_ATTR_COSTS },
1017 : { "savings", SUMO_ATTR_SAVINGS },
1018 : { "exitTimes", SUMO_ATTR_EXITTIMES },
1019 : { "probability", SUMO_ATTR_PROB },
1020 : { "replacedAtTime", SUMO_ATTR_REPLACED_AT_TIME },
1021 : { "replacedOnIndex", SUMO_ATTR_REPLACED_ON_INDEX },
1022 : { "count", SUMO_ATTR_COUNT },
1023 : { "probabilities", SUMO_ATTR_PROBS },
1024 : { "routes", SUMO_ATTR_ROUTES },
1025 : { "vTypes", SUMO_ATTR_VTYPES },
1026 : { "nextEdges", SUMO_ATTR_NEXT_EDGES },
1027 : { "deterministic", SUMO_ATTR_DETERMINISTIC },
1028 :
1029 : { "lanes", SUMO_ATTR_LANES },
1030 : { "from", SUMO_ATTR_FROM },
1031 : { "to", SUMO_ATTR_TO },
1032 : { "fromLonLat", SUMO_ATTR_FROMLONLAT },
1033 : { "toLonLat", SUMO_ATTR_TOLONLAT },
1034 : { "fromXY", SUMO_ATTR_FROMXY },
1035 : { "toXY", SUMO_ATTR_TOXY },
1036 : { "fromJunction", SUMO_ATTR_FROM_JUNCTION },
1037 : { "toJunction", SUMO_ATTR_TO_JUNCTION },
1038 : { "period", SUMO_ATTR_PERIOD },
1039 : { "repeat", SUMO_ATTR_REPEAT },
1040 : { "cycleTime", SUMO_ATTR_CYCLETIME },
1041 : { "fromTaz", SUMO_ATTR_FROM_TAZ },
1042 : { "toTaz", SUMO_ATTR_TO_TAZ },
1043 : { "reroute", SUMO_ATTR_REROUTE },
1044 : { "personCapacity", SUMO_ATTR_PERSON_CAPACITY },
1045 : { "containerCapacity", SUMO_ATTR_CONTAINER_CAPACITY },
1046 : { "parkingLength", SUMO_ATTR_PARKING_LENGTH },
1047 : { "personNumber", SUMO_ATTR_PERSON_NUMBER },
1048 : { "containerNumber", SUMO_ATTR_CONTAINER_NUMBER },
1049 : { "modes", SUMO_ATTR_MODES },
1050 : { "walkFactor", SUMO_ATTR_WALKFACTOR },
1051 :
1052 : { "function", SUMO_ATTR_FUNCTION },
1053 : { "freq", SUMO_ATTR_FREQUENCY },
1054 : { "style", SUMO_ATTR_STYLE },
1055 : { "file", SUMO_ATTR_FILE },
1056 : { "local", SUMO_ATTR_LOCAL },
1057 : { "number", SUMO_ATTR_NUMBER },
1058 : { "duration", SUMO_ATTR_DURATION },
1059 : { "until", SUMO_ATTR_UNTIL },
1060 : { "arrival", SUMO_ATTR_ARRIVAL },
1061 : { "extension", SUMO_ATTR_EXTENSION },
1062 : { "started", SUMO_ATTR_STARTED },
1063 : { "ended", SUMO_ATTR_ENDED },
1064 : { "routeProbe", SUMO_ATTR_ROUTEPROBE },
1065 : { "crossingEdges", SUMO_ATTR_CROSSING_EDGES },
1066 : // Traffic light & Nodes
1067 : { "time", SUMO_ATTR_TIME },
1068 : { "begin", SUMO_ATTR_BEGIN },
1069 : { "end", SUMO_ATTR_END },
1070 : { "tl", SUMO_ATTR_TLID },
1071 : { "tlType", SUMO_ATTR_TLTYPE },
1072 : { "tlLayout", SUMO_ATTR_TLLAYOUT },
1073 : { "linkIndex", SUMO_ATTR_TLLINKINDEX },
1074 : { "linkIndex2", SUMO_ATTR_TLLINKINDEX2 },
1075 : { "shape", SUMO_ATTR_SHAPE },
1076 : { "outlineShape", SUMO_ATTR_OUTLINESHAPE },
1077 : { "spreadType", SUMO_ATTR_SPREADTYPE },
1078 : { "radius", SUMO_ATTR_RADIUS },
1079 : { "customShape", SUMO_ATTR_CUSTOMSHAPE },
1080 : { "keepClear", SUMO_ATTR_KEEP_CLEAR },
1081 : { "indirect", SUMO_ATTR_INDIRECT },
1082 : { "rightOfWay", SUMO_ATTR_RIGHT_OF_WAY },
1083 : { "fringe", SUMO_ATTR_FRINGE },
1084 : { "color", SUMO_ATTR_COLOR },
1085 : { "dir", SUMO_ATTR_DIR },
1086 : { "state", SUMO_ATTR_STATE },
1087 : { "lcState", SUMO_ATTR_LCSTATE },
1088 : { "icon", SUMO_ATTR_ICON },
1089 : { "layer", SUMO_ATTR_LAYER },
1090 : { "fill", SUMO_ATTR_FILL },
1091 : { "lineWidth", SUMO_ATTR_LINEWIDTH },
1092 : { "prefix", SUMO_ATTR_PREFIX },
1093 : { "discard", SUMO_ATTR_DISCARD },
1094 :
1095 : { "fromLane", SUMO_ATTR_FROM_LANE },
1096 : { "toLane", SUMO_ATTR_TO_LANE },
1097 : { "dest", SUMO_ATTR_DEST },
1098 : { "source", SUMO_ATTR_SOURCE },
1099 : { "via", SUMO_ATTR_VIA },
1100 : { "viaLonLat", SUMO_ATTR_VIALONLAT },
1101 : { "viaXY", SUMO_ATTR_VIAXY },
1102 : { "viaJunctions", SUMO_ATTR_VIAJUNCTIONS },
1103 : { "nodes", SUMO_ATTR_NODES },
1104 : { "visibility", SUMO_ATTR_VISIBILITY_DISTANCE },
1105 :
1106 : { "minDur", SUMO_ATTR_MINDURATION },
1107 : { "maxDur", SUMO_ATTR_MAXDURATION },
1108 : { "earliestEnd", SUMO_ATTR_EARLIEST_END },
1109 : { "latestEnd", SUMO_ATTR_LATEST_END },
1110 : { "earlyTarget", SUMO_ATTR_EARLY_TARGET },
1111 : { "finalTarget", SUMO_ATTR_FINAL_TARGET },
1112 : { "check", SUMO_ATTR_CHECK },
1113 : { "nArgs", SUMO_ATTR_NARGS },
1114 : { "vehext", SUMO_ATTR_VEHICLEEXTENSION },
1115 : { "yellow", SUMO_ATTR_YELLOW },
1116 : { "red", SUMO_ATTR_RED },
1117 : { "next", SUMO_ATTR_NEXT },
1118 : { "foes", SUMO_ATTR_FOES },
1119 : { "constraints", SUMO_ATTR_CONSTRAINTS },
1120 : { "rail", SUMO_ATTR_RAIL },
1121 : { "detectors", SUMO_ATTR_DETECTORS },
1122 : { "conditions", SUMO_ATTR_CONDITIONS },
1123 : { "saveDetectors", SUMO_ATTR_SAVE_DETECTORS },
1124 : { "saveConditions", SUMO_ATTR_SAVE_CONDITIONS },
1125 :
1126 : // E2 detector
1127 : { "cont", SUMO_ATTR_CONT },
1128 : { "contPos", SUMO_ATTR_CONTPOS },
1129 : { "timeThreshold", SUMO_ATTR_HALTING_TIME_THRESHOLD },
1130 : { "speedThreshold", SUMO_ATTR_HALTING_SPEED_THRESHOLD },
1131 : { "jamThreshold", SUMO_ATTR_JAM_DIST_THRESHOLD },
1132 : { "show", SUMO_ATTR_SHOW_DETECTOR },
1133 : // E3 detector
1134 : { "openEntry", SUMO_ATTR_OPEN_ENTRY },
1135 : { "expectArrival", SUMO_ATTR_EXPECT_ARRIVAL },
1136 :
1137 : { "wautID", SUMO_ATTR_WAUT_ID },
1138 : { "junctionID", SUMO_ATTR_JUNCTION_ID },
1139 : { "procedure", SUMO_ATTR_PROCEDURE },
1140 : { "synchron", SUMO_ATTR_SYNCHRON },
1141 : { "refTime", SUMO_ATTR_REF_TIME },
1142 : { "startProg", SUMO_ATTR_START_PROG },
1143 : { "off", SUMO_ATTR_OFF },
1144 : { "friendlyPos", SUMO_ATTR_FRIENDLY_POS },
1145 : { "splitByType", SUMO_ATTR_SPLIT_VTYPE },
1146 : { "uncontrolled", SUMO_ATTR_UNCONTROLLED },
1147 : { "pass", SUMO_ATTR_PASS },
1148 : { "busStop", SUMO_ATTR_BUS_STOP },
1149 : { "trainStop", SUMO_ATTR_TRAIN_STOP },
1150 : { "containerStop", SUMO_ATTR_CONTAINER_STOP },
1151 : { "parkingArea", SUMO_ATTR_PARKING_AREA },
1152 : { "roadsideCapacity", SUMO_ATTR_ROADSIDE_CAPACITY },
1153 : { "acceptedBadges", SUMO_ATTR_ACCEPTED_BADGES },
1154 : { "onRoad", SUMO_ATTR_ONROAD },
1155 : { "chargingStation", SUMO_ATTR_CHARGING_STATION },
1156 : { "group", SUMO_ATTR_GROUP },
1157 : { "line", SUMO_ATTR_LINE },
1158 : { "lines", SUMO_ATTR_LINES },
1159 : { "tripId", SUMO_ATTR_TRIP_ID },
1160 : { "split", SUMO_ATTR_SPLIT },
1161 : { "join", SUMO_ATTR_JOIN },
1162 : { "intended", SUMO_ATTR_INTENDED },
1163 : { "onDemand", SUMO_ATTR_ONDEMAND },
1164 : { "jump", SUMO_ATTR_JUMP },
1165 : { "usedEnded", SUMO_ATTR_USED_ENDED },
1166 : { "collision", SUMO_ATTR_COLLISION },
1167 : { "value", SUMO_ATTR_VALUE },
1168 : { "prohibitor", SUMO_ATTR_PROHIBITOR },
1169 : { "prohibited", SUMO_ATTR_PROHIBITED },
1170 : { "allow", SUMO_ATTR_ALLOW },
1171 : { "disallow", SUMO_ATTR_DISALLOW },
1172 : { "prefer", SUMO_ATTR_PREFER },
1173 : { "changeLeft", SUMO_ATTR_CHANGE_LEFT },
1174 : { "changeRight", SUMO_ATTR_CHANGE_RIGHT },
1175 : { "controlledInner", SUMO_ATTR_CONTROLLED_INNER },
1176 : { "vehsPerHour", SUMO_ATTR_VEHSPERHOUR },
1177 : { "personsPerHour", SUMO_ATTR_PERSONSPERHOUR },
1178 : { "containersPerHour", SUMO_ATTR_CONTAINERSPERHOUR },
1179 : { "perHour", SUMO_ATTR_PERHOUR },
1180 : { "done", SUMO_ATTR_DONE },
1181 : { "output", SUMO_ATTR_OUTPUT },
1182 : { "height", SUMO_ATTR_HEIGHT },
1183 : { "guiShape", SUMO_ATTR_GUISHAPE },
1184 : { "osgFile", SUMO_ATTR_OSGFILE },
1185 : { "imgFile", SUMO_ATTR_IMGFILE },
1186 : { "relativePath", SUMO_ATTR_RELATIVEPATH },
1187 : { "emissionClass", SUMO_ATTR_EMISSIONCLASS },
1188 : { "mass", SUMO_ATTR_MASS },
1189 : { "impatience", SUMO_ATTR_IMPATIENCE },
1190 : { "startPos", SUMO_ATTR_STARTPOS },
1191 : { "endPos", SUMO_ATTR_ENDPOS },
1192 : { "triggered", SUMO_ATTR_TRIGGERED },
1193 : { "containerTriggered", SUMO_ATTR_CONTAINER_TRIGGERED },
1194 : { "parking", SUMO_ATTR_PARKING },
1195 : { "expected", SUMO_ATTR_EXPECTED },
1196 : { "permitted", SUMO_ATTR_PERMITTED },
1197 : { "expectedContainers", SUMO_ATTR_EXPECTED_CONTAINERS },
1198 : { "index", SUMO_ATTR_INDEX },
1199 :
1200 : { "entering", SUMO_ATTR_ENTERING },
1201 : { "excludeEmpty", SUMO_ATTR_EXCLUDE_EMPTY },
1202 : { "withInternal", SUMO_ATTR_WITH_INTERNAL },
1203 : { "trackVehicles", SUMO_ATTR_TRACK_VEHICLES },
1204 : { "detectPersons", SUMO_ATTR_DETECT_PERSONS },
1205 : { "maxTraveltime", SUMO_ATTR_MAX_TRAVELTIME },
1206 : { "minSamples", SUMO_ATTR_MIN_SAMPLES },
1207 : { "writeAttributes", SUMO_ATTR_WRITE_ATTRIBUTES },
1208 : { "edgesFile", SUMO_ATTR_EDGESFILE },
1209 : { "aggregate", SUMO_ATTR_AGGREGATE },
1210 : { "numEdges", SUMO_ATTR_NUMEDGES },
1211 :
1212 : { "lon", SUMO_ATTR_LON },
1213 : { "lat", SUMO_ATTR_LAT },
1214 : { "action", SUMO_ATTR_ACTION },
1215 : { "geo", SUMO_ATTR_GEO },
1216 : { "geoShape", SUMO_ATTR_GEOSHAPE },
1217 : { "k", SUMO_ATTR_K },
1218 : { "v", SUMO_ATTR_V },
1219 : { "ref", SUMO_ATTR_REF },
1220 : { "href", SUMO_ATTR_HREF },
1221 : { "zoom", SUMO_ATTR_ZOOM },
1222 : { "interpolated", SUMO_ATTR_INTERPOLATED },
1223 : { "threshold", SUMO_ATTR_THRESHOLD },
1224 :
1225 : { "netOffset", SUMO_ATTR_NET_OFFSET },
1226 : { "convBoundary", SUMO_ATTR_CONV_BOUNDARY },
1227 : { "origBoundary", SUMO_ATTR_ORIG_BOUNDARY },
1228 : { "projParameter", SUMO_ATTR_ORIG_PROJ },
1229 :
1230 : { "tauLast", SUMO_ATTR_CF_PWAGNER2009_TAULAST },
1231 : { "apProb", SUMO_ATTR_CF_PWAGNER2009_APPROB },
1232 : { "delta", SUMO_ATTR_CF_IDM_DELTA },
1233 : { "stepping", SUMO_ATTR_CF_IDM_STEPPING },
1234 : { "adaptFactor", SUMO_ATTR_CF_IDMM_ADAPT_FACTOR },
1235 : { "adaptTime", SUMO_ATTR_CF_IDMM_ADAPT_TIME },
1236 : { "phi", SUMO_ATTR_CF_KERNER_PHI },
1237 :
1238 : { "security", SUMO_ATTR_CF_WIEDEMANN_SECURITY },
1239 : { "estimation", SUMO_ATTR_CF_WIEDEMANN_ESTIMATION },
1240 : { "cc1", SUMO_ATTR_CF_W99_CC1 },
1241 : { "cc2", SUMO_ATTR_CF_W99_CC2 },
1242 : { "cc3", SUMO_ATTR_CF_W99_CC3 },
1243 : { "cc4", SUMO_ATTR_CF_W99_CC4 },
1244 : { "cc5", SUMO_ATTR_CF_W99_CC5 },
1245 : { "cc6", SUMO_ATTR_CF_W99_CC6 },
1246 : { "cc7", SUMO_ATTR_CF_W99_CC7 },
1247 : { "cc8", SUMO_ATTR_CF_W99_CC8 },
1248 : { "cc9", SUMO_ATTR_CF_W99_CC9 },
1249 :
1250 : { "ccDecel", SUMO_ATTR_CF_CC_CCDECEL },
1251 : { "constSpacing", SUMO_ATTR_CF_CC_CONSTSPACING },
1252 : { "kp", SUMO_ATTR_CF_CC_KP },
1253 : { "lambda", SUMO_ATTR_CF_CC_LAMBDA },
1254 : { "c1", SUMO_ATTR_CF_CC_C1 },
1255 : { "xi", SUMO_ATTR_CF_CC_XI },
1256 : { "omegaN", SUMO_ATTR_CF_CC_OMEGAN },
1257 : { "tauEngine", SUMO_ATTR_CF_CC_TAU },
1258 : { "lanesCount", SUMO_ATTR_CF_CC_LANES_COUNT },
1259 : { "ccAccel", SUMO_ATTR_CF_CC_CCACCEL },
1260 : { "ploegKp", SUMO_ATTR_CF_CC_PLOEG_KP },
1261 : { "ploegKd", SUMO_ATTR_CF_CC_PLOEG_KD },
1262 : { "ploegH", SUMO_ATTR_CF_CC_PLOEG_H },
1263 : { "flatbedKa", SUMO_ATTR_CF_CC_FLATBED_KA },
1264 : { "flatbedKv", SUMO_ATTR_CF_CC_FLATBED_KV },
1265 : { "flatbedKp", SUMO_ATTR_CF_CC_FLATBED_KP },
1266 : { "flatbedD", SUMO_ATTR_CF_CC_FLATBED_D },
1267 : { "flatbedH", SUMO_ATTR_CF_CC_FLATBED_H },
1268 :
1269 : { "generateWalks", SUMO_ATTR_GENERATE_WALKS },
1270 : { "actType", SUMO_ATTR_ACTTYPE },
1271 : { "junctionCornerDetail", SUMO_ATTR_CORNERDETAIL },
1272 : { "junctionLinkDetail", SUMO_ATTR_LINKDETAIL },
1273 : { "rectangularLaneCut", SUMO_ATTR_RECTANGULAR_LANE_CUT },
1274 : { "walkingareas", SUMO_ATTR_WALKINGAREAS },
1275 : { "lefthand", SUMO_ATTR_LEFTHAND },
1276 : { "limitTurnSpeed", SUMO_ATTR_LIMIT_TURN_SPEED },
1277 : { "checkLaneFoesAll", SUMO_ATTR_CHECKLANEFOES_ALL },
1278 : { "checkLaneFoesRoundabout", SUMO_ATTR_CHECKLANEFOES_ROUNDABOUT },
1279 : { "tlsIgnoreInternalJunctionJam", SUMO_ATTR_TLS_IGNORE_INTERNAL_JUNCTION_JAM },
1280 : { "avoidOverlap", SUMO_ATTR_AVOID_OVERLAP },
1281 : { "junctionHigherSpeed", SUMO_ATTR_HIGHER_SPEED },
1282 : { "internalJunctionsVehicleWidth", SUMO_ATTR_INTERNAL_JUNCTIONS_VEHICLE_WIDTH },
1283 : { "junctionsMinimalShape", SUMO_ATTR_JUNCTIONS_MINIMAL_SHAPE },
1284 : { "junctionsEndpointShape", SUMO_ATTR_JUNCTIONS_ENDPOINT_SHAPE },
1285 :
1286 : { "actorConfig", SUMO_ATTR_ACTORCONFIG },
1287 : { "startTime", SUMO_ATTR_STARTTIME },
1288 : { "vehicleClass", SUMO_ATTR_VEHICLECLASS },
1289 : { "origin", SUMO_ATTR_ORIGIN },
1290 : { "destination", SUMO_ATTR_DESTINATION },
1291 : { "visible", SUMO_ATTR_VISIBLE },
1292 : { "limit", SUMO_ATTR_LIMIT },
1293 : { "active", SUMO_ATTR_ACTIVE },
1294 : { "arrivalTime", SUMO_ATTR_ARRIVALTIME },
1295 : { "arrivalTimeBraking", SUMO_ATTR_ARRIVALTIMEBRAKING },
1296 : { "arrivalSpeedBraking", SUMO_ATTR_ARRIVALSPEEDBRAKING },
1297 : { "optional", SUMO_ATTR_OPTIONAL },
1298 : { "vehicles", SUMO_ATTR_VEHICLES },
1299 :
1300 : #ifndef WIN32
1301 : { "commandPosix", SUMO_ATTR_COMMAND },
1302 : #else
1303 : { "commandWindows", SUMO_ATTR_COMMAND },
1304 : #endif
1305 :
1306 : // ActivityGen statistics file
1307 : { "inhabitants", AGEN_ATTR_INHABITANTS },
1308 : { "households", AGEN_ATTR_HOUSEHOLDS },
1309 : { "childrenAgeLimit", AGEN_ATTR_CHILDREN },
1310 : { "retirementAgeLimit", AGEN_ATTR_RETIREMENT },
1311 : { "carRate", AGEN_ATTR_CARS },
1312 : { "unemploymentRate", AGEN_ATTR_UNEMPLOYEMENT },
1313 : { "laborDemand", AGEN_ATTR_LABORDEMAND },
1314 : { "footDistanceLimit", AGEN_ATTR_MAX_FOOT_DIST },
1315 : { "incomingTraffic", AGEN_ATTR_IN_TRAFFIC },
1316 : { "incoming", AGEN_ATTR_INCOMING },
1317 : { "outgoingTraffic", AGEN_ATTR_OUT_TRAFFIC },
1318 : { "outgoing", AGEN_ATTR_OUTGOING },
1319 : { "population", AGEN_ATTR_POPULATION },
1320 : { "workPosition", AGEN_ATTR_OUT_WORKPOSITION },
1321 : { "hour", AGEN_ATTR_HOUR },
1322 : { "proportion", AGEN_ATTR_PROP },
1323 : { "capacity", AGEN_ATTR_CAPACITY },
1324 : { "opening", AGEN_ATTR_OPENING },
1325 : { "closing", AGEN_ATTR_CLOSING },
1326 : { "maxTripDuration", AGEN_ATTR_MAX_TRIP_DURATION },
1327 : { "rate", AGEN_ATTR_RATE },
1328 : { "beginAge", AGEN_ATTR_BEGINAGE },
1329 : { "endAge", AGEN_ATTR_ENDAGE },
1330 : { "peopleNbr", AGEN_ATTR_PEOPLENBR },
1331 : { "carPreference", AGEN_ATTR_CARPREF },
1332 : { "meanTimePerKmInCity", AGEN_ATTR_CITYSPEED },
1333 : { "freeTimeActivityRate", AGEN_ATTR_FREETIMERATE },
1334 : { "uniformRandomTraffic", AGEN_ATTR_UNI_RAND_TRAFFIC },
1335 : { "departureVariation", AGEN_ATTR_DEP_VARIATION },
1336 :
1337 : // SUMOConfig files
1338 : { "config-file", SUMO_ATTR_CONFIGFILE },
1339 : { "net-file", SUMO_ATTR_NETFILE },
1340 : { "additional-files", SUMO_ATTR_ADDITIONALFILES },
1341 : { "route-files", SUMO_ATTR_ROUTEFILES },
1342 : { "data-files", SUMO_ATTR_DATAFILES },
1343 : { "meandata-files", SUMO_ATTR_MEANDATAFILES },
1344 :
1345 : // Netedit attributes
1346 : { "selected", GNE_ATTR_SELECTED },
1347 : { "modificationStatusNotForPrinting", GNE_ATTR_MODIFICATION_STATUS },
1348 : { "shapeStart", GNE_ATTR_SHAPE_START },
1349 : { "shapeEnd", GNE_ATTR_SHAPE_END },
1350 : { "isBidi", GNE_ATTR_BIDIR },
1351 : { "closedShape", GNE_ATTR_CLOSE_SHAPE },
1352 : { "parentItem", GNE_ATTR_PARENT },
1353 : { "dataSet", GNE_ATTR_DATASET },
1354 : { "genericParameter", GNE_ATTR_PARAMETERS },
1355 : { "flowParameter", GNE_ATTR_FLOWPARAMETERS },
1356 : { "defaultVTypeModified", GNE_ATTR_DEFAULT_VTYPE_MODIFIED },
1357 : { "centerAfterCreation", GNE_ATTR_CENTER_AFTER_CREATION },
1358 : { "opposite", GNE_ATTR_OPPOSITE },
1359 : { "shiftLaneIndex", GNE_ATTR_SHIFTLANEINDEX },
1360 : { "stopOffset", GNE_ATTR_STOPOFFSET },
1361 : { "stopOException", GNE_ATTR_STOPOEXCEPTION },
1362 : { "routeDist.", GNE_ATTR_ROUTE_DISTRIBUTION },
1363 : { "typeDist.", GNE_ATTR_VTYPE_DISTRIBUTION },
1364 : { "poisson", GNE_ATTR_POISSON },
1365 : { "stopIndex", GNE_ATTR_STOPINDEX },
1366 : { "pathStopIndex", GNE_ATTR_PATHSTOPINDEX },
1367 : { "additionalChildren", GNE_ATTR_ADDITIONALCHILDREN },
1368 : { "planGeometryStartPos", GNE_ATTR_PLAN_GEOMETRY_STARTPOS },
1369 : { "planGeometryEndPos", GNE_ATTR_PLAN_GEOMETRY_ENDPOS },
1370 : { "fromLaneID", GNE_ATTR_FROM_LANEID },
1371 : { "toLaneID", GNE_ATTR_TO_LANEID },
1372 : { "tazCentroid", GNE_ATTR_TAZ_CENTROID },
1373 : // mapped to additional elements on writing
1374 : { "fromBusStop", GNE_ATTR_FROM_BUSSTOP },
1375 : { "fromTrainStop", GNE_ATTR_FROM_TRAINSTOP },
1376 : { "fromContainerStop", GNE_ATTR_FROM_CONTAINERSTOP },
1377 : { "fromChargingStation", GNE_ATTR_FROM_CHARGINGSTATION },
1378 : { "fromParkingArea", GNE_ATTR_FROM_PARKINGAREA },
1379 : { "fromRoute", GNE_ATTR_FROM_ROUTE },
1380 : { "isRoundabout", GNE_ATTR_IS_ROUNDABOUT },
1381 :
1382 : { "carriageLength", SUMO_ATTR_CARRIAGE_LENGTH },
1383 : { "locomotiveLength", SUMO_ATTR_LOCOMOTIVE_LENGTH },
1384 : { "carriageGap", SUMO_ATTR_CARRIAGE_GAP },
1385 : { "carriageDoors", SUMO_ATTR_CARRIAGE_DOORS },
1386 :
1387 : { "targetLanes", SUMO_ATTR_TARGETLANE },
1388 : { "crossing", SUMO_ATTR_CROSSING },
1389 :
1390 : { "xmlns:xsi", SUMO_ATTR_XMLNS },
1391 : { "xsi:noNamespaceSchemaLocation", SUMO_ATTR_SCHEMA_LOCATION },
1392 :
1393 : //@name RNG state saving attributes
1394 : // @{
1395 : { "routeHandler", SUMO_ATTR_RNG_ROUTEHANDLER },
1396 : { "insertionControl", SUMO_ATTR_RNG_INSERTIONCONTROL },
1397 : { "device", SUMO_ATTR_RNG_DEVICE },
1398 : { "device.btreceiver", SUMO_ATTR_RNG_DEVICE_BT },
1399 : { "device.toc", SUMO_ATTR_RNG_DEVICE_TOC },
1400 : { "driverState", SUMO_ATTR_RNG_DRIVERSTATE },
1401 : // @}
1402 :
1403 : //@name meso edge type attributes
1404 : // @{
1405 : { "tauff", SUMO_ATTR_MESO_TAUFF },
1406 : { "taufj", SUMO_ATTR_MESO_TAUFJ },
1407 : { "taujf", SUMO_ATTR_MESO_TAUJF },
1408 : { "taujj", SUMO_ATTR_MESO_TAUJJ },
1409 : { "junctionControl", SUMO_ATTR_MESO_JUNCTION_CONTROL },
1410 : { "tlsPenalty", SUMO_ATTR_MESO_TLS_PENALTY },
1411 : { "tlsFlowPenalty", SUMO_ATTR_MESO_TLS_FLOW_PENALTY },
1412 : { "minorPenalty", SUMO_ATTR_MESO_MINOR_PENALTY },
1413 : { "overtaking", SUMO_ATTR_MESO_OVERTAKING },
1414 : // @}
1415 :
1416 : // Other
1417 : { "", SUMO_ATTR_NOTHING } //< must be the last one
1418 : };
1419 :
1420 :
1421 : const std::string SUMO_PARAM_ORIGID("origId");
1422 :
1423 :
1424 : StringBijection<SumoXMLNodeType>::Entry SUMOXMLDefinitions::sumoNodeTypeValues[] = {
1425 : {"traffic_light", SumoXMLNodeType::TRAFFIC_LIGHT},
1426 : {"traffic_light_unregulated", SumoXMLNodeType::TRAFFIC_LIGHT_NOJUNCTION},
1427 : {"traffic_light_right_on_red", SumoXMLNodeType::TRAFFIC_LIGHT_RIGHT_ON_RED},
1428 : {"rail_signal", SumoXMLNodeType::RAIL_SIGNAL},
1429 : {"rail_crossing", SumoXMLNodeType::RAIL_CROSSING},
1430 : {"priority", SumoXMLNodeType::PRIORITY},
1431 : {"priority_stop", SumoXMLNodeType::PRIORITY_STOP},
1432 : {"right_before_left", SumoXMLNodeType::RIGHT_BEFORE_LEFT},
1433 : {"left_before_right", SumoXMLNodeType::LEFT_BEFORE_RIGHT},
1434 : {"allway_stop", SumoXMLNodeType::ALLWAY_STOP},
1435 : {"zipper", SumoXMLNodeType::ZIPPER},
1436 : {"district", SumoXMLNodeType::DISTRICT},
1437 : {"unregulated", SumoXMLNodeType::NOJUNCTION},
1438 : {"internal", SumoXMLNodeType::INTERNAL},
1439 : {"dead_end", SumoXMLNodeType::DEAD_END},
1440 : {"DEAD_END", SumoXMLNodeType::DEAD_END_DEPRECATED},
1441 : {"unknown", SumoXMLNodeType::UNKNOWN} //< must be the last one
1442 : };
1443 :
1444 :
1445 : StringBijection<SumoXMLEdgeFunc>::Entry SUMOXMLDefinitions::sumoEdgeFuncValues[] = {
1446 : {"unknown", SumoXMLEdgeFunc::UNKNOWN},
1447 : {"normal", SumoXMLEdgeFunc::NORMAL},
1448 : {"connector", SumoXMLEdgeFunc::CONNECTOR},
1449 : {"crossing", SumoXMLEdgeFunc::CROSSING},
1450 : {"walkingarea", SumoXMLEdgeFunc::WALKINGAREA},
1451 : {"internal", SumoXMLEdgeFunc::INTERNAL} //< must be the last one
1452 : };
1453 :
1454 :
1455 : StringBijection<LaneSpreadFunction>::Entry SUMOXMLDefinitions::laneSpreadFunctionValues[] = {
1456 : {"right", LaneSpreadFunction::RIGHT }, // default: geometry is left edge border, lanes flare to the right
1457 : {"roadCenter", LaneSpreadFunction::ROADCENTER }, // geometry is center of the bidirectional road
1458 : {"center", LaneSpreadFunction::CENTER } // geometry is center of the edge (must be the last one)
1459 : };
1460 :
1461 : StringBijection<ParkingType>::Entry SUMOXMLDefinitions::parkingTypeValues[] = {
1462 : {"0", ParkingType::ONROAD }, // default: park on the street
1463 : {"1", ParkingType::OFFROAD }, // parking off the street
1464 : {"opportunistic", ParkingType::OPPORTUNISTIC } // park of the street if there is an opportunity for it
1465 : };
1466 :
1467 : StringBijection<RightOfWay>::Entry SUMOXMLDefinitions::rightOfWayValuesInitializer[] = {
1468 : {"edgePriority", RightOfWay::EDGEPRIORITY }, // use only edge priority values
1469 : {"mixedPriority", RightOfWay::MIXEDPRIORITY }, // use the default behavior but encode this explicitly (only needed for overriding the NEMA fallback behavior)
1470 : {"allwayStop", RightOfWay::ALLWAYSTOP }, // only used for setting the fall-back behavior of TLS-off
1471 : {"default", RightOfWay::DEFAULT } // default (must be the last one)
1472 : };
1473 :
1474 : StringBijection<FringeType>::Entry SUMOXMLDefinitions::fringeTypeValuesInitializer[] = {
1475 : {"outer", FringeType::OUTER },
1476 : {"inner", FringeType::INNER },
1477 : {"default", FringeType::DEFAULT } // default (must be the last one)
1478 : };
1479 :
1480 : StringBijection<PersonMode>::Entry SUMOXMLDefinitions::personModeValuesInitializer[] = {
1481 : {"none", PersonMode::NONE},
1482 : {"walkForward", PersonMode::WALK_FORWARD},
1483 : {"walkBackward", PersonMode::WALK_BACKWARD},
1484 : {"walk", PersonMode::WALK},
1485 : {"bicycle", PersonMode::BICYCLE },
1486 : {"car", PersonMode::CAR },
1487 : {"taxi", PersonMode::TAXI },
1488 : {"public", PersonMode::PUBLIC} // (must be the last one)
1489 : };
1490 :
1491 : StringBijection<LinkState>::Entry SUMOXMLDefinitions::linkStateValues[] = {
1492 : { "G", LINKSTATE_TL_GREEN_MAJOR },
1493 : { "g", LINKSTATE_TL_GREEN_MINOR },
1494 : { "r", LINKSTATE_TL_RED },
1495 : { "u", LINKSTATE_TL_REDYELLOW },
1496 : { "Y", LINKSTATE_TL_YELLOW_MAJOR },
1497 : { "y", LINKSTATE_TL_YELLOW_MINOR },
1498 : { "o", LINKSTATE_TL_OFF_BLINKING },
1499 : { "O", LINKSTATE_TL_OFF_NOSIGNAL },
1500 : { "M", LINKSTATE_MAJOR },
1501 : { "m", LINKSTATE_MINOR },
1502 : { "=", LINKSTATE_EQUAL },
1503 : { "s", LINKSTATE_STOP },
1504 : { "w", LINKSTATE_ALLWAY_STOP },
1505 : { "Z", LINKSTATE_ZIPPER },
1506 : { "-", LINKSTATE_DEADEND } //< must be the last one
1507 : };
1508 :
1509 : const char SUMOXMLDefinitions::AllowedTLS_linkStatesInitializer[] = {
1510 : LINKSTATE_TL_GREEN_MAJOR,
1511 : LINKSTATE_TL_GREEN_MINOR,
1512 : LINKSTATE_STOP, // used for SumoXMLNodeType::TRAFFIC_LIGHT_RIGHT_ON_RED
1513 : LINKSTATE_TL_RED,
1514 : LINKSTATE_TL_REDYELLOW,
1515 : LINKSTATE_TL_YELLOW_MAJOR,
1516 : LINKSTATE_TL_YELLOW_MINOR,
1517 : LINKSTATE_TL_OFF_BLINKING,
1518 : LINKSTATE_TL_OFF_NOSIGNAL
1519 : };
1520 : const std::string SUMOXMLDefinitions::ALLOWED_TLS_LINKSTATES(AllowedTLS_linkStatesInitializer, 9);
1521 :
1522 : StringBijection<LinkDirection>::Entry SUMOXMLDefinitions::linkDirectionValues[] = {
1523 : { "s", LinkDirection::STRAIGHT },
1524 : { "t", LinkDirection::TURN },
1525 : { "T", LinkDirection::TURN_LEFTHAND },
1526 : { "l", LinkDirection::LEFT },
1527 : { "r", LinkDirection::RIGHT },
1528 : { "L", LinkDirection::PARTLEFT },
1529 : { "R", LinkDirection::PARTRIGHT },
1530 : { "invalid", LinkDirection::NODIR } //< must be the last one
1531 : };
1532 :
1533 :
1534 : StringBijection<TrafficLightType>::Entry SUMOXMLDefinitions::trafficLightTypesValues[] = {
1535 : { "static", TrafficLightType::STATIC },
1536 : { "railSignal", TrafficLightType::RAIL_SIGNAL },
1537 : { "railCrossing", TrafficLightType::RAIL_CROSSING },
1538 : { "actuated", TrafficLightType::ACTUATED },
1539 : { "NEMA", TrafficLightType::NEMA },
1540 : { "delay_based", TrafficLightType::DELAYBASED },
1541 : { "sotl_phase", TrafficLightType::SOTL_PHASE },
1542 : { "sotl_platoon", TrafficLightType::SOTL_PLATOON },
1543 : { "sotl_request", TrafficLightType::SOTL_REQUEST },
1544 : { "sotl_wave", TrafficLightType::SOTL_WAVE },
1545 : { "sotl_marching", TrafficLightType::SOTL_MARCHING },
1546 : { "swarm", TrafficLightType::SWARM_BASED },
1547 : { "deterministic", TrafficLightType::HILVL_DETERMINISTIC },
1548 : { "off", TrafficLightType::OFF },
1549 : { "<invalid>", TrafficLightType::INVALID } //< must be the last one
1550 : };
1551 :
1552 :
1553 : StringBijection<TrafficLightLayout>::Entry SUMOXMLDefinitions::trafficLightLayoutValues[] = {
1554 : { "opposites", TrafficLightLayout::OPPOSITES },
1555 : { "incoming", TrafficLightLayout::INCOMING },
1556 : { "alternateOneWay", TrafficLightLayout::ALTERNATE_ONEWAY },
1557 : { "default", TrafficLightLayout::DEFAULT } //< must be the last one
1558 : };
1559 :
1560 : StringBijection<InsertionCheck>::Entry SUMOXMLDefinitions::insertionCheckValues[] = {
1561 : { "none", InsertionCheck::NONE },
1562 : { "collision", InsertionCheck::COLLISION },
1563 : { "leaderGap", InsertionCheck::LEADER_GAP },
1564 : { "followerGap", InsertionCheck::FOLLOWER_GAP },
1565 : { "junction", InsertionCheck::JUNCTION },
1566 : { "stop", InsertionCheck::STOP },
1567 : { "arrivalSpeed", InsertionCheck::ARRIVAL_SPEED },
1568 : { "oncomingTrain", InsertionCheck::ONCOMING_TRAIN },
1569 : { "speedLimit", InsertionCheck::SPEED_LIMIT },
1570 : { "pedestrian", InsertionCheck::PEDESTRIAN },
1571 : { "bidi", InsertionCheck::BIDI },
1572 : { "laneChange", InsertionCheck::LANECHANGE },
1573 : { "all", InsertionCheck::ALL } //< must be the last one
1574 : };
1575 :
1576 : StringBijection<LaneChangeModel>::Entry SUMOXMLDefinitions::laneChangeModelValues[] = {
1577 : { "DK2008", LaneChangeModel::DK2008 },
1578 : { "LC2013", LaneChangeModel::LC2013 },
1579 : { "LC2013_CC", LaneChangeModel::LC2013_CC },
1580 : { "SL2015", LaneChangeModel::SL2015 },
1581 : { "default", LaneChangeModel::DEFAULT } //< must be the last one
1582 : };
1583 :
1584 : StringBijection<SumoXMLTag>::Entry SUMOXMLDefinitions::carFollowModelValues[] = {
1585 : { "IDM", SUMO_TAG_CF_IDM },
1586 : { "IDMM", SUMO_TAG_CF_IDMM },
1587 : { "Krauss", SUMO_TAG_CF_KRAUSS },
1588 : { "KraussPS", SUMO_TAG_CF_KRAUSS_PLUS_SLOPE },
1589 : { "KraussOrig1", SUMO_TAG_CF_KRAUSS_ORIG1 },
1590 : { "KraussX", SUMO_TAG_CF_KRAUSSX }, // experimental extensions to the Krauss model
1591 : { "EIDM", SUMO_TAG_CF_EIDM },
1592 : { "SmartSK", SUMO_TAG_CF_SMART_SK },
1593 : { "Daniel1", SUMO_TAG_CF_DANIEL1 },
1594 : { "PWagner2009", SUMO_TAG_CF_PWAGNER2009 },
1595 : { "BKerner", SUMO_TAG_CF_BKERNER },
1596 : { "Rail", SUMO_TAG_CF_RAIL },
1597 : { "CC", SUMO_TAG_CF_CC },
1598 : { "ACC", SUMO_TAG_CF_ACC },
1599 : { "CACC", SUMO_TAG_CF_CACC },
1600 : { "W99", SUMO_TAG_CF_W99 },
1601 : { "Wiedemann", SUMO_TAG_CF_WIEDEMANN } //< must be the last one
1602 : };
1603 :
1604 : StringBijection<LaneChangeAction>::Entry SUMOXMLDefinitions::laneChangeActionValues[] = {
1605 : { "stay", LCA_STAY },
1606 : { "left", LCA_LEFT },
1607 : { "right", LCA_RIGHT },
1608 : { "strategic", LCA_STRATEGIC },
1609 : { "cooperative", LCA_COOPERATIVE },
1610 : { "speedGain", LCA_SPEEDGAIN },
1611 : { "keepRight", LCA_KEEPRIGHT },
1612 : { "sublane", LCA_SUBLANE },
1613 : { "traci", LCA_TRACI },
1614 : { "urgent", LCA_URGENT },
1615 : { "overlapping", LCA_OVERLAPPING },
1616 : { "blocked", LCA_BLOCKED },
1617 : { "amBL", LCA_AMBLOCKINGLEADER },
1618 : { "amBF", LCA_AMBLOCKINGFOLLOWER },
1619 : { "amBB", LCA_AMBACKBLOCKER },
1620 : { "amBBS", LCA_AMBACKBLOCKER_STANDING },
1621 : { "MR", LCA_MRIGHT },
1622 : { "ML", LCA_MLEFT },
1623 :
1624 : { "unknown", LCA_UNKNOWN } //< must be the last one
1625 : };
1626 :
1627 : StringBijection<TrainType>::Entry SUMOXMLDefinitions::trainTypeValues[] = {
1628 : { "custom", TrainType::CUSTOM },
1629 : { "NGT400", TrainType::NGT400 },
1630 : { "NGT400_16", TrainType::NGT400_16 },
1631 : { "RB425", TrainType::RB425 },
1632 : { "RB628", TrainType::RB628 },
1633 : { "ICE1", TrainType::ICE1 },
1634 : { "REDosto7", TrainType::REDOSTO7 },
1635 : { "Freight", TrainType::FREIGHT },
1636 : { "ICE3", TrainType::ICE3 },
1637 : { "MireoPlusB", TrainType::MIREOPLUSB },
1638 : { "MireoPlusH", TrainType::MIREOPLUSH }
1639 : };
1640 :
1641 : StringBijection<POIIcon>::Entry SUMOXMLDefinitions::POIIconValues[] = {
1642 : {"pin", POIIcon::PIN},
1643 : {"tree", POIIcon::NATURE},
1644 : {"hotel", POIIcon::HOTEL},
1645 : {"fuel", POIIcon::FUEL},
1646 : {"charging_station", POIIcon::CHARGING_STATION},
1647 : {"", POIIcon::NONE} //< must be the last one
1648 : };
1649 :
1650 : SequentialStringBijection SUMOXMLDefinitions::Tags(
1651 : SUMOXMLDefinitions::tags, SUMO_TAG_NOTHING);
1652 :
1653 : SequentialStringBijection SUMOXMLDefinitions::Attrs(
1654 : SUMOXMLDefinitions::attrs, SUMO_ATTR_NOTHING);
1655 :
1656 : StringBijection<SumoXMLNodeType> SUMOXMLDefinitions::NodeTypes(
1657 : SUMOXMLDefinitions::sumoNodeTypeValues, SumoXMLNodeType::UNKNOWN);
1658 :
1659 : StringBijection<SumoXMLEdgeFunc> SUMOXMLDefinitions::EdgeFunctions(
1660 : SUMOXMLDefinitions::sumoEdgeFuncValues, SumoXMLEdgeFunc::INTERNAL);
1661 :
1662 : StringBijection<LaneSpreadFunction> SUMOXMLDefinitions::LaneSpreadFunctions(
1663 : SUMOXMLDefinitions::laneSpreadFunctionValues, LaneSpreadFunction::CENTER);
1664 :
1665 : StringBijection<ParkingType> SUMOXMLDefinitions::ParkingTypes(
1666 : SUMOXMLDefinitions::parkingTypeValues, ParkingType::OPPORTUNISTIC);
1667 :
1668 : StringBijection<RightOfWay> SUMOXMLDefinitions::RightOfWayValues(
1669 : SUMOXMLDefinitions::rightOfWayValuesInitializer, RightOfWay::DEFAULT);
1670 :
1671 : StringBijection<FringeType> SUMOXMLDefinitions::FringeTypeValues(
1672 : SUMOXMLDefinitions::fringeTypeValuesInitializer, FringeType::DEFAULT);
1673 :
1674 : StringBijection<PersonMode> SUMOXMLDefinitions::PersonModeValues(
1675 : SUMOXMLDefinitions::personModeValuesInitializer, PersonMode::PUBLIC);
1676 :
1677 : StringBijection<LinkState> SUMOXMLDefinitions::LinkStates(
1678 : SUMOXMLDefinitions::linkStateValues, LINKSTATE_DEADEND);
1679 :
1680 : StringBijection<LinkDirection> SUMOXMLDefinitions::LinkDirections(
1681 : SUMOXMLDefinitions::linkDirectionValues, LinkDirection::NODIR);
1682 :
1683 : StringBijection<TrafficLightType> SUMOXMLDefinitions::TrafficLightTypes(
1684 : SUMOXMLDefinitions::trafficLightTypesValues, TrafficLightType::INVALID);
1685 :
1686 : StringBijection<TrafficLightLayout> SUMOXMLDefinitions::TrafficLightLayouts(
1687 : SUMOXMLDefinitions::trafficLightLayoutValues, TrafficLightLayout::DEFAULT);
1688 :
1689 : StringBijection<InsertionCheck> SUMOXMLDefinitions::InsertionChecks(
1690 : SUMOXMLDefinitions::insertionCheckValues, InsertionCheck::ALL);
1691 :
1692 : StringBijection<LaneChangeModel> SUMOXMLDefinitions::LaneChangeModels(
1693 : SUMOXMLDefinitions::laneChangeModelValues, LaneChangeModel::DEFAULT);
1694 :
1695 : StringBijection<SumoXMLTag> SUMOXMLDefinitions::CarFollowModels(
1696 : SUMOXMLDefinitions::carFollowModelValues, SUMO_TAG_CF_WIEDEMANN);
1697 :
1698 : StringBijection<LaneChangeAction> SUMOXMLDefinitions::LaneChangeActions(
1699 : SUMOXMLDefinitions::laneChangeActionValues, LCA_UNKNOWN);
1700 :
1701 : StringBijection<TrainType> SUMOXMLDefinitions::TrainTypes(
1702 : SUMOXMLDefinitions::trainTypeValues, TrainType::MIREOPLUSH);
1703 :
1704 : StringBijection<POIIcon> SUMOXMLDefinitions::POIIcons(
1705 : SUMOXMLDefinitions::POIIconValues, POIIcon::NONE, false);
1706 :
1707 :
1708 : std::string
1709 1366063 : SUMOXMLDefinitions::getJunctionIDFromInternalEdge(const std::string internalEdge) {
1710 : assert(internalEdge[0] == ':');
1711 1366063 : return internalEdge.substr(1, internalEdge.rfind('_') - 1);
1712 : }
1713 :
1714 :
1715 : std::string
1716 17120865 : SUMOXMLDefinitions::getEdgeIDFromLane(const std::string laneID) {
1717 17120865 : return laneID.substr(0, laneID.rfind('_'));
1718 : }
1719 :
1720 : int
1721 17636 : SUMOXMLDefinitions::getIndexFromLane(const std::string laneID) {
1722 35272 : return StringUtils::toInt(laneID.substr(laneID.rfind('_') + 1));
1723 : }
1724 :
1725 :
1726 : bool
1727 172366 : SUMOXMLDefinitions::isValidNetID(const std::string& value) {
1728 344732 : return (value.size() > 0) && value.find_first_of(" \t\n\r|\\'\";,<>&") == std::string::npos && value[0] != ':';
1729 : }
1730 :
1731 :
1732 : bool
1733 580962 : SUMOXMLDefinitions::isValidVehicleID(const std::string& value) {
1734 1161916 : return (value.size() > 0) && value.find_first_of(" \t\n\r|\\'\";,<>&") == std::string::npos;
1735 : }
1736 :
1737 :
1738 : bool
1739 11948 : SUMOXMLDefinitions::isValidTypeID(const std::string& value) {
1740 23896 : return (value.size() > 0) && value.find_first_of(" \t\n\r|\\'\";,<>&") == std::string::npos;
1741 : }
1742 :
1743 : bool
1744 0 : SUMOXMLDefinitions::isValidAdditionalID(const std::string& value) {
1745 0 : return (value.size() > 0) && value.find_first_of(" \t\n\r|\\'\";,<>&") == std::string::npos;
1746 : }
1747 :
1748 : bool
1749 0 : SUMOXMLDefinitions::isValidDetectorID(const std::string& value) {
1750 : // special case: ' ' allowed
1751 0 : return (value.size() > 0) && value.find_first_of("\t\n\r|\\'\";,<>&") == std::string::npos;
1752 : }
1753 :
1754 : bool
1755 1467 : SUMOXMLDefinitions::isValidAttribute(const std::string& value) {
1756 1467 : return value.find_first_of("\t\n\r&|\\'\"<>") == std::string::npos;
1757 : }
1758 :
1759 :
1760 : bool
1761 0 : SUMOXMLDefinitions::isValidFilename(const std::string& value) {
1762 0 : return (value.find_first_of("\t\n\r@$%^&|{}*'\";<>") == std::string::npos);
1763 : }
1764 :
1765 :
1766 : bool
1767 0 : SUMOXMLDefinitions::isValidListOfNetIDs(const std::string& value) {
1768 0 : const std::vector<std::string>& typeIDs = StringTokenizer(value).getVector();
1769 0 : if (typeIDs.empty()) {
1770 : return false;
1771 : } else {
1772 : // check that gives IDs are valid
1773 0 : for (auto i : typeIDs) {
1774 0 : if (!SUMOXMLDefinitions::isValidNetID(i)) {
1775 : return false;
1776 : }
1777 : }
1778 0 : return true;
1779 : }
1780 0 : }
1781 :
1782 :
1783 : bool
1784 0 : SUMOXMLDefinitions::isValidListOfTypeID(const std::string& value) {
1785 0 : return isValidListOfTypeID(StringTokenizer(value).getVector());
1786 : }
1787 :
1788 :
1789 : bool
1790 0 : SUMOXMLDefinitions::isValidListOfTypeID(const std::vector<std::string>& typeIDs) {
1791 0 : if (typeIDs.empty()) {
1792 : return false;
1793 : } else {
1794 : // check that gives IDs are valid
1795 0 : for (const auto& typeID : typeIDs) {
1796 0 : if (!SUMOXMLDefinitions::isValidTypeID(typeID)) {
1797 : return false;
1798 : }
1799 : }
1800 : return true;
1801 : }
1802 : }
1803 :
1804 :
1805 : bool
1806 1467 : SUMOXMLDefinitions::isValidParameterKey(const std::string& value) {
1807 : // Generic parameters keys cannot be empty
1808 1467 : if (value.empty()) {
1809 : return false;
1810 : } else {
1811 1467 : return isValidAttribute(value);
1812 : }
1813 : }
1814 :
1815 :
1816 : std::string
1817 1326 : SUMOXMLDefinitions::makeValidID(const std::string& value) {
1818 1326 : if (value.empty()) {
1819 0 : return "_";
1820 : }
1821 : std::string result(value);
1822 1326 : if (result[0] == ':') {
1823 0 : result[0] = '_';
1824 : }
1825 19890 : for (const char c : " \t\n\r|\\'\";,<>&") {
1826 : std::replace(result.begin(), result.end(), c, '_');
1827 : }
1828 1326 : return result;
1829 : }
1830 :
1831 :
1832 : /****************************************************************************/
|