00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifdef _MSC_VER
00025 #include <windows_config.h>
00026 #else
00027 #include <config.h>
00028 #endif
00029
00030 #include <utils/xml/GenericSAXHandler.h>
00031 #include "SUMOXMLDefinitions.h"
00032 #include <utils/common/SUMOVehicleClass.h>
00033
00034 #ifdef CHECK_MEMORY_LEAKS
00035 #include <foreign/nvwa/debug_new.h>
00036 #endif // CHECK_MEMORY_LEAKS
00037
00038
00039
00040
00041
00042 GenericSAXHandler::Tag sumotags[] = {
00043 { "edge", SUMO_TAG_EDGE },
00044 { "lane", SUMO_TAG_LANE },
00045 { "poi", SUMO_TAG_POI },
00046 { "poly", SUMO_TAG_POLY },
00047 { "junction", SUMO_TAG_JUNCTION },
00048 { "detector", SUMO_TAG_DETECTOR },
00049 { "e1-detector", SUMO_TAG_E1DETECTOR },
00050 { "e2-detector", SUMO_TAG_E2DETECTOR },
00051 { "e3-detector", SUMO_TAG_E3DETECTOR },
00052 { "meandata-edge", SUMO_TAG_MEANDATA_EDGE },
00053 { "meandata-lane", SUMO_TAG_MEANDATA_LANE },
00054
00055 #ifdef _MESSAGES
00056 { "msgemitter", SUMO_TAG_MSG_EMITTER },
00057 { "e4-detector", SUMO_TAG_MSG },
00058 #endif
00059 { "det_entry", SUMO_TAG_DET_ENTRY },
00060 { "det_exit", SUMO_TAG_DET_EXIT },
00061 { "variableSpeedSign",SUMO_TAG_VSS },
00062 { "emitter", SUMO_TAG_EMITTER },
00063 { "calibrator", SUMO_TAG_CALIBRATOR },
00064 { "rerouter", SUMO_TAG_REROUTER },
00065 { "busStop", SUMO_TAG_BUS_STOP },
00066 { "vtypeprobe", SUMO_TAG_VTYPEPROBE },
00067 { "routeprobe", SUMO_TAG_ROUTEPROBE },
00068 { "vehicle", SUMO_TAG_VEHICLE },
00069 { "vtype", SUMO_TAG_VTYPE },
00070 { "cfmodel", SUMO_TAG_CFMODEL },
00071 { "route", SUMO_TAG_ROUTE },
00072 { "succ", SUMO_TAG_SUCC },
00073 { "succlane", SUMO_TAG_SUCCLANE },
00074 { "key", SUMO_TAG_KEY },
00075 { "requestsize", SUMO_TAG_REQUESTSIZE },
00076 { "lanenumber", SUMO_TAG_LANENUMBER },
00077 { "logicitem", SUMO_TAG_LOGICITEM },
00078 { "row-logic", SUMO_TAG_ROWLOGIC },
00079 { "source", SUMO_TAG_SOURCE },
00080 { "district", SUMO_TAG_DISTRICT },
00081 { "dsource", SUMO_TAG_DSOURCE },
00082 { "dsink", SUMO_TAG_DSINK },
00083 { "tl-logic", SUMO_TAG_TLLOGIC },
00084 { "offset", SUMO_TAG_OFFSET },
00085 { "phase", SUMO_TAG_PHASE },
00086 { "tripdef", SUMO_TAG_TRIPDEF },
00087 { "flow", SUMO_TAG_FLOW },
00088 { "subkey", SUMO_TAG_SUBKEY },
00089 { "trigger", SUMO_TAG_TRIGGER },
00090 { "step", SUMO_TAG_STEP },
00091 { "interval", SUMO_TAG_INTERVAL },
00092 { "shape", SUMO_TAG_SHAPE },
00093 { "timed_event", SUMO_TAG_TIMEDEVENT },
00094 { "inclanes", SUMO_TAG_INCOMING_LANES },
00095 { "intlanes", SUMO_TAG_INTERNAL_LANES },
00096 { "fromedge", SUMO_TAG_FROMEDGE },
00097 { "toedge", SUMO_TAG_TOEDGE },
00098 { "sink", SUMO_TAG_SINK },
00099 { "supplementary-weights", SUMO_TAG_SUPPLEMENTARY_WEIGHTS },
00100 { "param", SUMO_TAG_PARAM },
00101 { "WAUT", SUMO_TAG_WAUT },
00102 { "wautSwitch", SUMO_TAG_WAUT_SWITCH },
00103 { "wautJunction", SUMO_TAG_WAUT_JUNCTION },
00104 { "net-offset", SUMO_TAG_NET_OFFSET },
00105 { "conv-boundary", SUMO_TAG_CONV_BOUNDARY },
00106 { "orig-boundary", SUMO_TAG_ORIG_BOUNDARY },
00107 { "orig-proj", SUMO_TAG_ORIG_PROJ },
00108 { "routedistelem", SUMO_TAG_ROUTEDISTELEM },
00109 { "vtypedistelem", SUMO_TAG_VTYPEDISTELEM },
00110 { "emit", SUMO_TAG_EMIT },
00111 { "reset", SUMO_TAG_RESET },
00112 { "stop", SUMO_TAG_STOP },
00113 { "dest_prob_reroute", SUMO_TAG_DEST_PROB_REROUTE },
00114 { "closing_reroute", SUMO_TAG_CLOSING_REROUTE },
00115 { "route_prob_reroute", SUMO_TAG_ROUTE_PROB_REROUTE },
00116 { "polytype", SUMO_TAG_POLYTYPE },
00117 { "connection", SUMO_TAG_CONNECTION },
00118 { "prohibition", SUMO_TAG_PROHIBITION },
00119 { "split", SUMO_TAG_SPLIT },
00120 { "node", SUMO_TAG_NODE },
00121 { "type", SUMO_TAG_TYPE },
00122 { "detector_definition", SUMO_TAG_DETECTOR_DEFINITION },
00123 { "routeDistribution", SUMO_TAG_ROUTE_DISTRIBUTION },
00124 { "vtypeDistribution", SUMO_TAG_VTYPE_DISTRIBUTION },
00125 { "vaporizer", SUMO_TAG_VAPORIZER },
00126
00127 { "way", SUMO_TAG_WAY },
00128 { "nd", SUMO_TAG_ND },
00129 { "tag", SUMO_TAG_TAG },
00130
00131 { "decal", SUMO_TAG_VIEWSETTINGS_DECAL },
00132 { "scheme", SUMO_TAG_VIEWSETTINGS_SCHEME },
00133 { "opengl", SUMO_TAG_VIEWSETTINGS_OPENGL },
00134 { "background", SUMO_TAG_VIEWSETTINGS_BACKGROUND },
00135 { "edges", SUMO_TAG_VIEWSETTINGS_EDGES },
00136 { "nlcC", SUMO_TAG_VIEWSETTINGS_EDGE_COLOR_ITEM },
00137 { "vehicles", SUMO_TAG_VIEWSETTINGS_VEHICLES },
00138 { "nvcC", SUMO_TAG_VIEWSETTINGS_VEHICLE_COLOR_ITEM },
00139 { "junctions", SUMO_TAG_VIEWSETTINGS_JUNCTIONS },
00140 { "additionals", SUMO_TAG_VIEWSETTINGS_ADDITIONALS },
00141 { "pois", SUMO_TAG_VIEWSETTINGS_POIS },
00142 { "legend", SUMO_TAG_VIEWSETTINGS_LEGEND },
00143 { "include", SUMO_TAG_INCLUDE },
00144 { "xi:include", SUMO_TAG_INCLUDE },
00145 { "delay", SUMO_TAG_DELAY },
00146 { "viewport", SUMO_TAG_VIEWPORT },
00147 { "snapshot", SUMO_TAG_SNAPSHOT },
00148 { "location", SUMO_TAG_LOCATION },
00149 { "colorScheme", SUMO_TAG_COLORSCHEME },
00150 { "entry", SUMO_TAG_ENTRY },
00151
00152 { CF_MODEL_KRAUSS_STR, SUMO_TAG_CF_KRAUSS },
00153 { CF_MODEL_KRAUSS_ORIG1_STR, SUMO_TAG_CF_KRAUSS_ORIG1 },
00154 { CF_MODEL_IDM_STR, SUMO_TAG_CF_IDM },
00155 { CF_MODEL_PWAGNER2009_STR, SUMO_TAG_CF_PWAGNER2009 },
00156 { CF_MODEL_BKERNER_STR, SUMO_TAG_CF_BKERNER },
00157
00158 { "header", SUMO_TAG_OPENDRIVE_HEADER },
00159 { "road", SUMO_TAG_OPENDRIVE_ROAD },
00160 { "predecessor", SUMO_TAG_OPENDRIVE_PREDECESSOR },
00161 { "successor", SUMO_TAG_OPENDRIVE_SUCCESSOR },
00162 { "geometry", SUMO_TAG_OPENDRIVE_GEOMETRY },
00163 { "line", SUMO_TAG_OPENDRIVE_LINE },
00164 { "spiral", SUMO_TAG_OPENDRIVE_SPIRAL },
00165 { "arc", SUMO_TAG_OPENDRIVE_ARC },
00166 { "poly3", SUMO_TAG_OPENDRIVE_POLY3 },
00167 { "laneSection", SUMO_TAG_OPENDRIVE_LANESECTION },
00168 { "left", SUMO_TAG_OPENDRIVE_LEFT },
00169 { "center", SUMO_TAG_OPENDRIVE_CENTER },
00170 { "right", SUMO_TAG_OPENDRIVE_RIGHT },
00171 { "lane", SUMO_TAG_OPENDRIVE_LANE },
00172
00173 { "person", SUMO_TAG_PERSON },
00174 { "ride", SUMO_TAG_RIDE },
00175 { "walk", SUMO_TAG_WALK },
00176
00177 { "", SUMO_TAG_NOTHING }
00178 };
00179
00180
00181 GenericSAXHandler::Attr sumoattrs[] = {
00182 { "id", SUMO_ATTR_ID },
00183 { "refid", SUMO_ATTR_REFID },
00184 { "name", SUMO_ATTR_NAME },
00185 { "type", SUMO_ATTR_TYPE },
00186 { "priority", SUMO_ATTR_PRIORITY },
00187 { "nolanes", SUMO_ATTR_NOLANES },
00188 { "speed", SUMO_ATTR_SPEED },
00189
00190 { "length", SUMO_ATTR_LENGTH },
00191 { "fromnode", SUMO_ATTR_FROMNODE },
00192 { "tonode", SUMO_ATTR_TONODE },
00193 { "xfrom", SUMO_ATTR_XFROM },
00194 { "yfrom", SUMO_ATTR_YFROM },
00195 { "xto", SUMO_ATTR_XTO },
00196 { "yto", SUMO_ATTR_YTO },
00197
00198 { "x", SUMO_ATTR_X },
00199 { "y", SUMO_ATTR_Y },
00200
00201 { "key", SUMO_ATTR_KEY },
00202 { "requestSize", SUMO_ATTR_REQUESTSIZE },
00203 { "laneNumber", SUMO_ATTR_LANENUMBER },
00204 { "request", SUMO_ATTR_REQUEST },
00205 { "response", SUMO_ATTR_RESPONSE },
00206 { "programID", SUMO_ATTR_PROGRAMID },
00207 { "offset", SUMO_ATTR_OFFSET },
00208 { "incLanes", SUMO_ATTR_INCLANES },
00209 { "intLanes", SUMO_ATTR_INTLANES },
00210
00211 { "weight", SUMO_ATTR_WEIGHT },
00212 { "edge", SUMO_ATTR_EDGE },
00213 { "edges", SUMO_ATTR_EDGES },
00214
00215 { "depart", SUMO_ATTR_DEPART },
00216 { "departlane", SUMO_ATTR_DEPARTLANE },
00217 { "departpos", SUMO_ATTR_DEPARTPOS },
00218 { "departspeed", SUMO_ATTR_DEPARTSPEED },
00219 { "arrivallane", SUMO_ATTR_ARRIVALLANE },
00220 { "arrivalpos", SUMO_ATTR_ARRIVALPOS },
00221 { "arrivalspeed", SUMO_ATTR_ARRIVALSPEED },
00222 { "route", SUMO_ATTR_ROUTE },
00223 { "maxspeed", SUMO_ATTR_MAXSPEED },
00224 { "accel", SUMO_ATTR_ACCEL },
00225 { "decel", SUMO_ATTR_DECEL },
00226 { "vclass", SUMO_ATTR_VCLASS },
00227 { "repno", SUMO_ATTR_REPNUMBER },
00228 { "speedFactor", SUMO_ATTR_SPEEDFACTOR },
00229 { "speedDev", SUMO_ATTR_SPEEDDEV },
00230 { "laneChangeModel", SUMO_ATTR_LANE_CHANGE_MODEL },
00231
00232 { "carFollowModel", SUMO_ATTR_CAR_FOLLOW_MODEL },
00233 { "sigma", SUMO_ATTR_SIGMA },
00234 { "tau", SUMO_ATTR_TAU },
00235 { "timeHeadWay", SUMO_ATTR_TIME_HEADWAY_GAP },
00236 { "mingap", SUMO_ATTR_MINIMUM_DISTANCE },
00237
00238 { "last", SUMO_ATTR_LAST },
00239 { "cost", SUMO_ATTR_COST },
00240 { "probability", SUMO_ATTR_PROB },
00241 { "routes", SUMO_ATTR_ROUTES },
00242 { "vtypes", SUMO_ATTR_VTYPES },
00243
00244 { "lane", SUMO_ATTR_LANE },
00245 { "lanes", SUMO_ATTR_LANES },
00246 { "from", SUMO_ATTR_FROM },
00247 { "to", SUMO_ATTR_TO },
00248 { "period", SUMO_ATTR_PERIOD },
00249 { "fromtaz", SUMO_ATTR_FROM_TAZ },
00250 { "totaz", SUMO_ATTR_TO_TAZ },
00251
00252 { "function", SUMO_ATTR_FUNCTION },
00253 { "pos", SUMO_ATTR_POSITION },
00254 { "freq", SUMO_ATTR_FREQUENCY },
00255 { "style", SUMO_ATTR_STYLE },
00256 { "file", SUMO_ATTR_FILE },
00257 { "junction", SUMO_ATTR_JUNCTION },
00258 { "yield", SUMO_ATTR_YIELD },
00259 { "no", SUMO_ATTR_NO },
00260 { "phase", SUMO_ATTR_PHASE },
00261 { "brake", SUMO_ATTR_BRAKE },
00262 { "yellow", SUMO_ATTR_YELLOW },
00263 { "duration", SUMO_ATTR_DURATION },
00264 { "until", SUMO_ATTR_UNTIL },
00265
00266 { "objecttype", SUMO_ATTR_OBJECTTYPE },
00267 { "attr", SUMO_ATTR_ATTR },
00268 { "objectid", SUMO_ATTR_OBJECTID },
00269 { "time", SUMO_ATTR_TIME },
00270 { "begin", SUMO_ATTR_BEGIN },
00271 { "end", SUMO_ATTR_END },
00272 { "tl", SUMO_ATTR_TLID },
00273 { "linkno", SUMO_ATTR_TLLINKNO },
00274 { "shape", SUMO_ATTR_SHAPE },
00275 { "spread_type", SUMO_ATTR_SPREADFUNC },
00276 { "color", SUMO_ATTR_COLOR },
00277 { "dir", SUMO_ATTR_DIR },
00278 { "state", SUMO_ATTR_STATE },
00279 { "layer", SUMO_ATTR_LAYER },
00280 { "fill", SUMO_ATTR_FILL },
00281 { "prefix", SUMO_ATTR_PREFIX },
00282 { "discard", SUMO_ATTR_DISCARD },
00283
00284 { "dest", SUMO_ATTR_DEST },
00285 { "source", SUMO_ATTR_SOURCE },
00286 { "via", SUMO_ATTR_VIA },
00287 { "int_end", SUMO_ATTR_INTERNALEND },
00288
00289 #ifdef _MESSAGES
00290 { "msg", SUMO_ATTR_MSG },
00291 { "emit_msg", SUMO_ATTR_EVENTS },
00292 { "reverse", SUMO_ATTR_REVERSE },
00293 { "table", SUMO_ATTR_TABLE },
00294 { "xy", SUMO_ATTR_XY },
00295 { "step", SUMO_ATTR_STEP },
00296 #endif
00297 { "min_dur", SUMO_ATTR_MINDURATION },
00298 { "max_dur", SUMO_ATTR_MAXDURATION },
00299 { "foes", SUMO_ATTR_FOES },
00300 { "measures", SUMO_ATTR_MEASURES },
00301
00302 { "cont", SUMO_ATTR_CONT },
00303 { "time_treshold", SUMO_ATTR_HALTING_TIME_THRESHOLD },
00304 { "speed_treshold", SUMO_ATTR_HALTING_SPEED_THRESHOLD },
00305 { "jam_treshold", SUMO_ATTR_JAM_DIST_THRESHOLD },
00306 { "keep_for", SUMO_ATTR_DELETE_DATA_AFTER_SECONDS },
00307 { "det_offset", SUMO_ATTR_DET_OFFSET },
00308
00309 { "wautID", SUMO_ATTR_WAUT_ID },
00310 { "junctionID", SUMO_ATTR_JUNCTION_ID },
00311 { "procedure", SUMO_ATTR_PROCEDURE },
00312 { "synchron", SUMO_ATTR_SYNCHRON },
00313 { "refTime", SUMO_ATTR_REF_TIME },
00314 { "startProg", SUMO_ATTR_START_PROG },
00315 { "off", SUMO_ATTR_OFF },
00316 { "friendly_pos", SUMO_ATTR_FRIENDLY_POS },
00317 { "uncontrolled", SUMO_ATTR_UNCONTROLLED },
00318 { "pass", SUMO_ATTR_PASS },
00319 { "forceLength", SUMO_ATTR_FORCE_LENGTH },
00320 { "bus_stop", SUMO_ATTR_BUS_STOP },
00321 { "line", SUMO_ATTR_LINE },
00322 { "lines", SUMO_ATTR_LINES },
00323 { "vclasses", SUMO_ATTR_VCLASSES },
00324 { "value", SUMO_ATTR_VALUE },
00325 { "prohibitor", SUMO_ATTR_PROHIBITOR },
00326 { "prohibited", SUMO_ATTR_PROHIBITED },
00327 { "allow", SUMO_ATTR_ALLOW },
00328 { "disallow", SUMO_ATTR_DISALLOW },
00329 { "prefer", SUMO_ATTR_PREFER },
00330 { "controlled_inner", SUMO_ATTR_CONTROLLED_INNER },
00331 { "vehsPerHour", SUMO_ATTR_VEHSPERHOUR },
00332 { "output", SUMO_ATTR_OUTPUT },
00333 { "guiWidth", SUMO_ATTR_GUIWIDTH },
00334 { "guiOffset", SUMO_ATTR_GUIOFFSET },
00335 { "guiShape", SUMO_ATTR_GUISHAPE },
00336 { "emissionClass", SUMO_ATTR_EMISSIONCLASS },
00337
00338 { "entering", SUMO_ATTR_ENTERING },
00339 { "excludeEmpty", SUMO_ATTR_EXCLUDE_EMPTY },
00340 { "withInternal", SUMO_ATTR_WITH_INTERNAL },
00341 { "trackVehicles", SUMO_ATTR_TRACK_VEHICLES },
00342 { "maxTraveltime", SUMO_ATTR_MAX_TRAVELTIME },
00343 { "minSamples", SUMO_ATTR_MIN_SAMPLES },
00344
00345 { "lon", SUMO_ATTR_LON },
00346 { "lat", SUMO_ATTR_LAT },
00347 { "k", SUMO_ATTR_K },
00348 { "v", SUMO_ATTR_V },
00349 { "ref", SUMO_ATTR_REF },
00350 { "href", SUMO_ATTR_HREF },
00351 { "zoom", SUMO_ATTR_ZOOM },
00352 { "interpolated", SUMO_ATTR_INTERPOLATED },
00353 { "threshold", SUMO_ATTR_THRESHOLD },
00354
00355 { "netOffset", SUMO_ATTR_NET_OFFSET },
00356 { "convBoundary", SUMO_ATTR_CONV_BOUNDARY },
00357 { "origBoundary", SUMO_ATTR_ORIG_BOUNDARY },
00358 { "projParameter", SUMO_ATTR_ORIG_PROJ },
00359
00360 { "timeHeadWay", SUMO_ATTR_CF_IDM_TIMEHEADWAY },
00361 { "minGap", SUMO_ATTR_CF_IDM_MINGAP },
00362
00363 { "phi", SUMO_ATTR_CF_KERNER_PHI },
00364
00365 { "revMajor", SUMO_ATTR_OPENDRIVE_REVMAJOR },
00366 { "revMinor", SUMO_ATTR_OPENDRIVE_REVMINOR },
00367 { "ID", SUMO_ATTR_OPENDRIVE_ID },
00368 { "length", SUMO_ATTR_OPENDRIVE_LENGTH },
00369 { "junction", SUMO_ATTR_OPENDRIVE_JUNCTION },
00370 { "elementType", SUMO_ATTR_OPENDRIVE_ELEMENTTYPE },
00371 { "elementId", SUMO_ATTR_OPENDRIVE_ELEMENTID },
00372 { "contactPoint", SUMO_ATTR_OPENDRIVE_CONTACTPOINT },
00373 { "s", SUMO_ATTR_OPENDRIVE_S },
00374 { "x", SUMO_ATTR_OPENDRIVE_X },
00375 { "y", SUMO_ATTR_OPENDRIVE_Y },
00376 { "hdg", SUMO_ATTR_OPENDRIVE_HDG },
00377 { "curvStart", SUMO_ATTR_OPENDRIVE_CURVSTART },
00378 { "curvEnd", SUMO_ATTR_OPENDRIVE_CURVEND },
00379 { "curvature", SUMO_ATTR_OPENDRIVE_CURVATURE },
00380 { "a", SUMO_ATTR_OPENDRIVE_A },
00381 { "b", SUMO_ATTR_OPENDRIVE_B },
00382 { "c", SUMO_ATTR_OPENDRIVE_C },
00383 { "d", SUMO_ATTR_OPENDRIVE_D },
00384 { "type", SUMO_ATTR_OPENDRIVE_TYPE },
00385 { "level", SUMO_ATTR_OPENDRIVE_LEVEL },
00386
00387 { "generateWalks", SUMO_ATTR_GENERATE_WALKS },
00388
00389 { "", SUMO_ATTR_NOTHING }
00390 };
00391
00392
00393
00394
00395