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