SUMO - Simulation of Urban MObility
|
00001 /****************************************************************************/ 00009 // ------------------- 00010 /****************************************************************************/ 00011 // SUMO, Simulation of Urban MObility; see http://sumo.sourceforge.net/ 00012 // Copyright (C) 2001-2012 DLR (http://www.dlr.de/) and contributors 00013 /****************************************************************************/ 00014 // 00015 // This file is part of SUMO. 00016 // SUMO is free software: you can redistribute it and/or modify 00017 // it under the terms of the GNU General Public License as published by 00018 // the Free Software Foundation, either version 3 of the License, or 00019 // (at your option) any later version. 00020 // 00021 /****************************************************************************/ 00022 00023 00024 // =========================================================================== 00025 // included modules 00026 // =========================================================================== 00027 #ifdef _MSC_VER 00028 #include <windows_config.h> 00029 #else 00030 #include <config.h> 00031 #endif 00032 00033 00034 #include <string> 00035 #include <fstream> 00036 #include <utils/common/StringUtils.h> 00037 #include <utils/common/TplConvert.h> 00038 #include <utils/common/MsgHandler.h> 00039 #include <utils/options/OptionsCont.h> 00040 #include <netbuild/NBNetBuilder.h> 00041 #include "NIImporter_Vissim.h" 00042 #include "typeloader/NIVissimSingleTypeParser_Simdauer.h" 00043 #include "typeloader/NIVissimSingleTypeParser_Startuhrzeit.h" 00044 #include "typeloader/NIVissimSingleTypeParser_DynUml.h" 00045 #include "typeloader/NIVissimSingleTypeParser_Streckendefinition.h" 00046 #include "typeloader/NIVissimSingleTypeParser_Verbindungsdefinition.h" 00047 #include "typeloader/NIVissimSingleTypeParser_Richtungsentscheidungsdefinition.h" 00048 #include "typeloader/NIVissimSingleTypeParser_Routenentscheidungsdefinition.h" 00049 #include "typeloader/NIVissimSingleTypeParser_VWunschentscheidungsdefinition.h" 00050 #include "typeloader/NIVissimSingleTypeParser_Langsamfahrbereichdefinition.h" 00051 #include "typeloader/NIVissimSingleTypeParser_Zuflussdefinition.h" 00052 #include "typeloader/NIVissimSingleTypeParser_Fahrzeugtypdefinition.h" 00053 #include "typeloader/NIVissimSingleTypeParser_Fahrzeugklassendefinition.h" 00054 #include "typeloader/NIVissimSingleTypeParser_Verkehrszusammensetzungsdefinition.h" 00055 #include "typeloader/NIVissimSingleTypeParser_Geschwindigkeitsverteilungsdefinition.h" 00056 #include "typeloader/NIVissimSingleTypeParser_Laengenverteilungsdefinition.h" 00057 #include "typeloader/NIVissimSingleTypeParser_Zeitenverteilungsdefinition.h" 00058 #include "typeloader/NIVissimSingleTypeParser_Querverkehrsstoerungsdefinition.h" 00059 #include "typeloader/NIVissimSingleTypeParser_Lichtsignalanlagendefinition.h" 00060 #include "typeloader/NIVissimSingleTypeParser_Signalgruppendefinition.h" 00061 #include "typeloader/NIVissimSingleTypeParser_Stopschilddefinition.h" 00062 #include "typeloader/NIVissimSingleTypeParser_Knotendefinition.h" 00063 #include "typeloader/NIVissimSingleTypeParser_Signalgeberdefinition.h" 00064 #include "typeloader/NIVissimSingleTypeParser_Detektordefinition.h" 00065 #include "typeloader/NIVissimSingleTypeParser_Liniendefinition.h" 00066 #include "typeloader/NIVissimSingleTypeParser_Haltestellendefinition.h" 00067 #include "typeloader/NIVissimSingleTypeParser_Reisezeitmessungsdefinition.h" 00068 #include "typeloader/NIVissimSingleTypeParser_Querschnittsmessungsdefinition.h" 00069 #include "typeloader/NIVissimSingleTypeParser_Messungsdefinition.h" 00070 #include "typeloader/NIVissimSingleTypeParser_Verlustzeitmessungsdefinition.h" 00071 #include "typeloader/NIVissimSingleTypeParser_Stauzaehlerdefinition.h" 00072 #include "typeloader/NIVissimSingleTypeParser_Richtungspfeildefinition.h" 00073 #include "typeloader/NIVissimSingleTypeParser_Parkplatzdefinition.h" 00074 #include "typeloader/NIVissimSingleTypeParser_Fahrverhaltendefinition.h" 00075 #include "typeloader/NIVissimSingleTypeParser_Streckentypdefinition.h" 00076 #include "typeloader/NIVissimSingleTypeParser_Kennungszeile.h" 00077 #include "typeloader/NIVissimSingleTypeParser_Fensterdefinition.h" 00078 #include "typeloader/NIVissimSingleTypeParser_Auswertungsdefinition.h" 00079 #include "typeloader/NIVissimSingleTypeParser_Zusammensetzungsdefinition.h" 00080 #include "typeloader/NIVissimSingleTypeParser_Startzufallszahl.h" 00081 #include "typeloader/NIVissimSingleTypeParser_SimRate.h" 00082 #include "typeloader/NIVissimSingleTypeParser_Zeitschrittfaktor.h" 00083 #include "typeloader/NIVissimSingleTypeParser_Linksverkehr.h" 00084 #include "typeloader/NIVissimSingleTypeParser_Stauparameterdefinition.h" 00085 #include "typeloader/NIVissimSingleTypeParser_Gelbverhaltendefinition.h" 00086 #include "typeloader/NIVissimSingleTypeParser_LSAKopplungsdefinition.h" 00087 #include "typeloader/NIVissimSingleTypeParser_Gefahrwarnungsdefinition.h" 00088 #include "typeloader/NIVissimSingleTypeParser_TEAPACDefinition.h" 00089 #include "typeloader/NIVissimSingleTypeParser_Netzobjektdefinition.h" 00090 #include "typeloader/NIVissimSingleTypeParser_Fahrtverlaufdateien.h" 00091 #include "typeloader/NIVissimSingleTypeParser_Emission.h" 00092 #include "typeloader/NIVissimSingleTypeParser_Einheitendefinition.h" 00093 #include "typeloader/NIVissimSingleTypeParser__XVerteilungsdefinition.h" 00094 #include "typeloader/NIVissimSingleTypeParser__XKurvedefinition.h" 00095 #include "typeloader/NIVissimSingleTypeParser_Kantensperrung.h" 00096 #include "typeloader/NIVissimSingleTypeParser_Rautedefinition.h" 00097 00098 00099 #include "tempstructs/NIVissimTL.h" 00100 #include "tempstructs/NIVissimClosures.h" 00101 #include "tempstructs/NIVissimSource.h" 00102 #include "tempstructs/NIVissimTrafficDescription.h" 00103 #include "tempstructs/NIVissimVehTypeClass.h" 00104 #include "tempstructs/NIVissimConnection.h" 00105 #include "tempstructs/NIVissimDisturbance.h" 00106 #include "tempstructs/NIVissimConnectionCluster.h" 00107 #include "tempstructs/NIVissimNodeDef.h" 00108 #include "tempstructs/NIVissimEdge.h" 00109 #include "tempstructs/NIVissimDistrictConnection.h" 00110 #include "tempstructs/NIVissimVehicleType.h" 00111 00112 #include <netbuild/NBEdgeCont.h> // !!! only for debugging purposes 00113 00114 #ifdef CHECK_MEMORY_LEAKS 00115 #include <foreign/nvwa/debug_new.h> 00116 #endif // CHECK_MEMORY_LEAKS 00117 00118 00119 // =========================================================================== 00120 // method definitions 00121 // =========================================================================== 00122 // --------------------------------------------------------------------------- 00123 // static methods (interface in this case) 00124 // --------------------------------------------------------------------------- 00125 void 00126 NIImporter_Vissim::loadNetwork(const OptionsCont& oc, NBNetBuilder& nb) { 00127 if (!oc.isSet("vissim-file")) { 00128 return; 00129 } 00130 // load the visum network 00131 NIImporter_Vissim loader(nb, oc.getString("vissim-file")); 00132 loader.load(oc); 00133 } 00134 00135 00136 /* ------------------------------------------------------------------------- 00137 * NIImporter_Vissim::VissimSingleTypeParser-methods 00138 * ----------------------------------------------------------------------- */ 00139 NIImporter_Vissim::VissimSingleTypeParser::VissimSingleTypeParser(NIImporter_Vissim& parent) 00140 : myVissimParent(parent) {} 00141 00142 00143 NIImporter_Vissim::VissimSingleTypeParser::~VissimSingleTypeParser() {} 00144 00145 00146 std::string 00147 NIImporter_Vissim::VissimSingleTypeParser::myRead(std::istream& from) { 00148 std::string tmp; 00149 from >> tmp; 00150 return StringUtils::to_lower_case(tmp); 00151 } 00152 00153 00154 00155 std::string 00156 NIImporter_Vissim::VissimSingleTypeParser::readEndSecure(std::istream& from, 00157 const std::string& excl) { 00158 std::string myExcl = StringUtils::to_lower_case(excl); 00159 std::string tmp = myRead(from); 00160 if (tmp == "") { 00161 return "DATAEND"; 00162 } 00163 if (tmp != myExcl 00164 && 00165 (tmp.substr(0, 2) == "--" || !myVissimParent.admitContinue(tmp)) 00166 ) { 00167 return "DATAEND"; 00168 } 00169 return StringUtils::to_lower_case(tmp); 00170 } 00171 00172 00173 std::string 00174 NIImporter_Vissim::VissimSingleTypeParser::readEndSecure(std::istream& from, 00175 const std::vector<std::string> &excl) { 00176 std::vector<std::string> myExcl; 00177 std::vector<std::string>::const_iterator i; 00178 for (i = excl.begin(); i != excl.end(); i++) { 00179 std::string mes = StringUtils::to_lower_case(*i); 00180 myExcl.push_back(mes); 00181 } 00182 std::string tmp = myRead(from); 00183 if (tmp == "") { 00184 return "DATAEND"; 00185 } 00186 00187 bool equals = false; 00188 for (i = myExcl.begin(); i != myExcl.end() && !equals; i++) { 00189 if ((*i) == tmp) { 00190 equals = true; 00191 } 00192 } 00193 if (!equals 00194 && 00195 (tmp.substr(0, 2) == "--" || !myVissimParent.admitContinue(tmp)) 00196 ) { 00197 return "DATAEND"; 00198 } 00199 return StringUtils::to_lower_case(tmp); 00200 } 00201 00202 00203 std::string 00204 NIImporter_Vissim::VissimSingleTypeParser::overrideOptionalLabel(std::istream& from, 00205 const std::string& tag) { 00206 std::string tmp; 00207 if (tag == "") { 00208 tmp = myRead(from); 00209 } else { 00210 tmp = tag; 00211 } 00212 if (tmp == "beschriftung") { 00213 tmp = myRead(from); 00214 if (tmp == "keine") { 00215 from >> tmp; 00216 } 00217 tmp = myRead(from); 00218 tmp = myRead(from); 00219 } 00220 return tmp; 00221 } 00222 00223 00224 Position 00225 NIImporter_Vissim::VissimSingleTypeParser::getPosition(std::istream& from) { 00226 SUMOReal x, y; 00227 from >> x; // type-checking is missing! 00228 from >> y; // type-checking is missing! 00229 return Position(x, y); 00230 } 00231 00232 00233 std::vector<int> 00234 NIImporter_Vissim::VissimSingleTypeParser::parseAssignedVehicleTypes( 00235 std::istream& from, const std::string& next) { 00236 std::string tmp = readEndSecure(from); 00237 std::vector<int> ret; 00238 if (tmp == "alle") { 00239 ret.push_back(-1); 00240 return ret; 00241 } 00242 while (tmp != "DATAEND" && tmp != next) { 00243 ret.push_back(TplConvert<char>::_2int(tmp.c_str())); 00244 tmp = readEndSecure(from); 00245 } 00246 return ret; 00247 } 00248 00249 00250 NIVissimExtendedEdgePoint 00251 NIImporter_Vissim::VissimSingleTypeParser::readExtEdgePointDef( 00252 std::istream& from) { 00253 std::string tag; 00254 from >> tag; // "Strecke" 00255 int edgeid; 00256 from >> edgeid; // type-checking is missing! 00257 from >> tag; // "Spuren" 00258 std::vector<int> lanes; 00259 while (tag != "bei") { 00260 tag = readEndSecure(from); 00261 if (tag != "bei") { 00262 int lane = TplConvert<char>::_2int(tag.c_str()); 00263 lanes.push_back(lane - 1); 00264 } 00265 } 00266 SUMOReal position; 00267 from >> position; 00268 std::vector<int> dummy; 00269 return NIVissimExtendedEdgePoint(edgeid, lanes, position, dummy); 00270 } 00271 00272 00273 std::string 00274 NIImporter_Vissim::VissimSingleTypeParser::readName(std::istream& from) { 00275 std::string name; 00276 from >> name; 00277 if (name[0] == '"') { 00278 while (name[name.length() - 1] != '"') { 00279 std::string tmp; 00280 from >> tmp; 00281 name = name + " " + tmp; 00282 } 00283 name = name.substr(1, name.length() - 2); 00284 } 00285 return StringUtils::convertUmlaute(name); 00286 } 00287 00288 00289 void 00290 NIImporter_Vissim::VissimSingleTypeParser::readUntil(std::istream& from, 00291 const std::string& name) { 00292 std::string tag; 00293 while (tag != name) { 00294 tag = myRead(from); 00295 } 00296 } 00297 00298 bool 00299 NIImporter_Vissim::VissimSingleTypeParser::skipOverreading(std::istream& from, 00300 const std::string& name) { 00301 std::string tag; 00302 while (tag != name) { 00303 tag = myRead(from); 00304 } 00305 while (tag != "DATAEND") { 00306 tag = readEndSecure(from); 00307 } 00308 return true; 00309 } 00310 00311 00312 00313 /* ------------------------------------------------------------------------- 00314 * NIImporter_Vissim-methods 00315 * ----------------------------------------------------------------------- */ 00316 NIImporter_Vissim::NIImporter_Vissim(NBNetBuilder& nb, const std::string& file) 00317 : myNetBuilder(nb) { 00318 UNUSED_PARAMETER(file); 00319 insertKnownElements(); 00320 buildParsers(); 00321 myColorMap["blau"] = RGBColor((SUMOReal) .3, (SUMOReal) 0.3, (SUMOReal) 1); 00322 myColorMap["gelb"] = RGBColor(1, 1, 0); 00323 myColorMap["grau"] = RGBColor((SUMOReal) .5, (SUMOReal) 0.5, (SUMOReal) .5); 00324 myColorMap["lila"] = RGBColor(1, 0, 1); 00325 myColorMap["gruen"] = RGBColor(0, 1, 0); 00326 myColorMap["rot"] = RGBColor(1, 0, 0); 00327 myColorMap["schwarz"] = RGBColor(0, 0, 0); 00328 myColorMap["tuerkis"] = RGBColor(0, 1, 1); 00329 myColorMap["weiss"] = RGBColor(1, 1, 1); 00330 myColorMap["keine"] = RGBColor(1, 1, 1); 00331 } 00332 00333 00334 00335 00336 NIImporter_Vissim::~NIImporter_Vissim() { 00337 NIVissimAbstractEdge::clearDict(); 00338 NIVissimClosures::clearDict(); 00339 NIVissimDistrictConnection::clearDict(); 00340 NIVissimDisturbance::clearDict(); 00341 NIVissimNodeCluster::clearDict(); 00342 NIVissimNodeDef::clearDict(); 00343 NIVissimSource::clearDict(); 00344 NIVissimTL::clearDict(); 00345 NIVissimTL::NIVissimTLSignal::clearDict(); 00346 NIVissimTL::NIVissimTLSignalGroup::clearDict(); 00347 NIVissimTrafficDescription::clearDict(); 00348 NIVissimVehTypeClass::clearDict(); 00349 NIVissimVehicleType::clearDict(); 00350 NIVissimConnectionCluster::clearDict(); 00351 NIVissimEdge::clearDict(); 00352 NIVissimAbstractEdge::clearDict(); 00353 NIVissimConnection::clearDict(); 00354 for (ToParserMap::iterator i = myParsers.begin(); i != myParsers.end(); i++) { 00355 delete(*i).second; 00356 } 00357 } 00358 00359 00360 void 00361 NIImporter_Vissim::load(const OptionsCont& options) { 00362 // load file contents 00363 // try to open the file 00364 std::ifstream strm(options.getString("vissim-file").c_str()); 00365 if (!strm.good()) { 00366 WRITE_ERROR("The vissim-file '" + options.getString("vissim-file") + "' was not found."); 00367 return; 00368 } 00369 if (!readContents(strm)) { 00370 return; 00371 } 00372 postLoadBuild(options.getFloat("vissim.join-distance")); 00373 } 00374 00375 00376 bool 00377 NIImporter_Vissim::admitContinue(const std::string& tag) { 00378 ToElemIDMap::const_iterator i = myKnownElements.find(tag); 00379 if (i == myKnownElements.end()) { 00380 return true; 00381 } 00382 myLastSecure = tag; 00383 return false; 00384 } 00385 00386 00387 bool 00388 NIImporter_Vissim::readContents(std::istream& strm) { 00389 // read contents 00390 bool ok = true; 00391 while (strm.good() && ok) { 00392 std::string tag; 00393 if (myLastSecure != "") { 00394 tag = myLastSecure; 00395 } else { 00396 strm >> tag; 00397 } 00398 myLastSecure = ""; 00399 bool parsed = false; 00400 while (!parsed && strm.good() && ok) { 00401 ToElemIDMap::iterator i = myKnownElements.find(StringUtils::to_lower_case(tag)); 00402 if (i != myKnownElements.end()) { 00403 ToParserMap::iterator j = myParsers.find((*i).second); 00404 if (j != myParsers.end()) { 00405 VissimSingleTypeParser* parser = (*j).second; 00406 ok = parser->parse(strm); 00407 parsed = true; 00408 } 00409 } 00410 if (!parsed) { 00411 std::string line; 00412 std::streamoff pos; 00413 do { 00414 pos = strm.tellg(); 00415 getline(strm, line); 00416 } while (strm.good() && (line == "" || line[0] == ' ' || line[0] == '-')); 00417 if (!strm.good()) { 00418 return true; 00419 } 00420 strm.seekg(pos); 00421 strm >> tag; 00422 } 00423 } 00424 } 00425 return ok; 00426 } 00427 00428 00429 void 00430 NIImporter_Vissim::postLoadBuild(SUMOReal offset) { 00431 // close the loading process 00432 NIVissimBoundedClusterObject::closeLoading(); 00433 NIVissimConnection::dict_assignToEdges(); 00434 NIVissimDisturbance::dict_SetDisturbances(); 00435 // build district->connections map 00436 NIVissimDistrictConnection::dict_BuildDistrictConnections(); 00437 // build clusters around nodes 00438 // NIVissimNodeDef::buildNodeClusters(); 00439 // build node clusters around traffic lights 00440 // NIVissimTL::buildNodeClusters(); 00441 00442 // when connections or disturbances are left, build nodes around them 00443 00444 // try to assign connection clusters to nodes 00445 // only left connections will be processed in 00446 // buildConnectionClusters & join 00447 //30.4. brauchen wir noch! NIVissimNodeDef::dict_assignConnectionsToNodes(); 00448 00449 // build clusters of connections with the same direction and a similar position along the streets 00450 NIVissimEdge::buildConnectionClusters(); 00451 // check whether further nodes (connection clusters by now) must be added 00452 NIVissimDistrictConnection::dict_CheckEdgeEnds(); 00453 00454 // join clusters when overlapping (different streets are possible) 00455 NIVissimEdge::dict_checkEdges2Join(); 00456 NIVissimConnectionCluster::joinBySameEdges(offset); 00457 // NIVissimConnectionCluster::joinByDisturbances(offset); 00458 00459 // NIVissimConnectionCluster::addTLs(offset); 00460 00461 // build nodes from clusters 00462 NIVissimNodeCluster::setCurrentVirtID(NIVissimNodeDef::getMaxID()); 00463 NIVissimConnectionCluster::buildNodeClusters(); 00464 00465 // NIVissimNodeCluster::dict_recheckEdgeChanges(); 00466 00467 NIVissimNodeCluster::buildNBNodes(myNetBuilder.getNodeCont()); 00468 NIVissimDistrictConnection::dict_BuildDistrictNodes( 00469 myNetBuilder.getDistrictCont(), myNetBuilder.getNodeCont()); 00470 NIVissimEdge::dict_propagateSpeeds(); 00471 NIVissimEdge::dict_buildNBEdges(myNetBuilder.getDistrictCont(), 00472 myNetBuilder.getNodeCont(), myNetBuilder.getEdgeCont(), 00473 offset); 00474 if (OptionsCont::getOptions().getBool("vissim.report-unset-speeds")) { 00475 NIVissimEdge::reportUnsetSpeeds(); 00476 } 00477 NIVissimDistrictConnection::dict_BuildDistricts(myNetBuilder.getDistrictCont(), 00478 myNetBuilder.getEdgeCont(), myNetBuilder.getNodeCont()); 00479 NIVissimConnection::dict_buildNBEdgeConnections(myNetBuilder.getEdgeCont()); 00480 NIVissimNodeCluster::dict_addDisturbances(myNetBuilder.getDistrictCont(), 00481 myNetBuilder.getNodeCont(), myNetBuilder.getEdgeCont()); 00482 NIVissimTL::dict_SetSignals(myNetBuilder.getTLLogicCont(), 00483 myNetBuilder.getEdgeCont()); 00484 00485 } 00486 00487 00488 void 00489 NIImporter_Vissim::insertKnownElements() { 00490 myKnownElements["kennung"] = VE_Kennungszeile; 00491 myKnownElements["zufallszahl"] = VE_Startzufallszahl; 00492 myKnownElements["simulationsdauer"] = VE_Simdauer; 00493 myKnownElements["startuhrzeit"] = VE_Startuhrzeit; 00494 myKnownElements["simulationsrate"] = VE_SimRate; 00495 myKnownElements["zeitschritt"] = VE_Zeitschrittfaktor; 00496 myKnownElements["linksverkehr"] = VE_Linksverkehr; 00497 myKnownElements["dynuml"] = VE_DynUml; 00498 myKnownElements["stau"] = VE_Stauparameterdefinition; 00499 myKnownElements["gelbverhalten"] = VE_Gelbverhaltendefinition; 00500 myKnownElements["strecke"] = VE_Streckendefinition; 00501 myKnownElements["verbindung"] = VE_Verbindungsdefinition; 00502 myKnownElements["richtungsentscheidung"] = VE_Richtungsentscheidungsdefinition; 00503 myKnownElements["routenentscheidung"] = VE_Routenentscheidungsdefinition; 00504 myKnownElements["vwunschentscheidung"] = VE_VWunschentscheidungsdefinition; 00505 myKnownElements["langsamfahrbereich"] = VE_Langsamfahrbereichdefinition; 00506 myKnownElements["zufluss"] = VE_Zuflussdefinition; 00507 myKnownElements["fahrzeugtyp"] = VE_Fahrzeugtypdefinition; 00508 myKnownElements["fahrzeugklasse"] = VE_Fahrzeugklassendefinition; 00509 myKnownElements["zusammensetzung"] = VE_Verkehrszusammensetzungsdefinition; 00510 myKnownElements["vwunsch"] = VE_Geschwindigkeitsverteilungsdefinition; 00511 myKnownElements["laengen"] = VE_Laengenverteilungsdefinition; 00512 myKnownElements["zeiten"] = VE_Zeitenverteilungsdefinition; 00513 myKnownElements["baujahre"] = VE_Baujahrverteilungsdefinition; 00514 myKnownElements["leistungen"] = VE_Laufleistungsverteilungsdefinition; 00515 myKnownElements["massen"] = VE_Massenverteilungsdefinition; 00516 myKnownElements["leistungen"] = VE_Leistungsverteilungsdefinition; 00517 myKnownElements["maxbeschleunigung"] = VE_Maxbeschleunigungskurvedefinition; 00518 myKnownElements["wunschbeschleunigung"] = VE_Wunschbeschleunigungskurvedefinition; 00519 myKnownElements["maxverzoegerung"] = VE_Maxverzoegerungskurvedefinition; 00520 myKnownElements["wunschverzoegerung"] = VE_Wunschverzoegerungskurvedefinition; 00521 myKnownElements["querverkehrsstoerung"] = VE_Querverkehrsstoerungsdefinition; 00522 myKnownElements["lsa"] = VE_Lichtsignalanlagendefinition; 00523 myKnownElements["signalgruppe"] = VE_Signalgruppendefinition; 00524 myKnownElements["signalgeber"] = VE_Signalgeberdefinition; 00525 myKnownElements["lsakopplung"] = VE_LSAKopplungdefinition; 00526 myKnownElements["detektor"] = VE_Detektorendefinition; 00527 myKnownElements["haltestelle"] = VE_Haltestellendefinition; 00528 myKnownElements["linie"] = VE_Liniendefinition; 00529 myKnownElements["stopschild"] = VE_Stopschilddefinition; 00530 myKnownElements["messung"] = VE_Messungsdefinition; 00531 myKnownElements["reisezeit"] = VE_Reisezeitmessungsdefinition; 00532 myKnownElements["verlustzeit"] = VE_Verlustzeitmessungsdefinition; 00533 myKnownElements["querschnittsmessung"] = VE_Querschnittsmessungsdefinition; 00534 myKnownElements["stauzaehler"] = VE_Stauzaehlerdefinition; 00535 myKnownElements["auswertung"] = VE_Auswertungsdefinition; 00536 myKnownElements["fenster"] = VE_Fensterdefinition; 00537 myKnownElements["motiv"] = VE_Gefahrenwarnsystemdefinition; 00538 myKnownElements["parkplatz"] = VE_Parkplatzdefinition; 00539 myKnownElements["knoten"] = VE_Knotendefinition; 00540 myKnownElements["teapac"] = VE_TEAPACdefinition; 00541 myKnownElements["netzobjekt"] = VE_Netzobjektdefinition; 00542 myKnownElements["richtungspfeil"] = VE_Richtungspfeildefinition; 00543 myKnownElements["raute"] = VE_Rautedefinition; 00544 myKnownElements["fahrverhalten"] = VE_Fahrverhaltendefinition; 00545 myKnownElements["fahrtverlaufdateien"] = VE_Fahrtverlaufdateien; 00546 myKnownElements["emission"] = VE_Emission; 00547 myKnownElements["einheit"] = VE_Einheitendefinition; 00548 myKnownElements["streckentyp"] = VE_Streckentypdefinition; 00549 myKnownElements["kantensperrung"] = VE_Kantensperrung; 00550 myKnownElements["kante"] = VE_Kantensperrung; 00551 00552 00553 myKnownElements["advance"] = VE_DUMMY; 00554 myKnownElements["temperatur"] = VE_DUMMY; 00555 00556 } 00557 00558 00559 00560 void 00561 NIImporter_Vissim::buildParsers() { 00562 myParsers[VE_Simdauer] = 00563 new NIVissimSingleTypeParser_Simdauer(*this); 00564 myParsers[VE_Startuhrzeit] = 00565 new NIVissimSingleTypeParser_Startuhrzeit(*this); 00566 myParsers[VE_DynUml] = 00567 new NIVissimSingleTypeParser_DynUml(*this); 00568 myParsers[VE_Streckendefinition] = 00569 new NIVissimSingleTypeParser_Streckendefinition(*this); 00570 myParsers[VE_Verbindungsdefinition] = 00571 new NIVissimSingleTypeParser_Verbindungsdefinition(*this); 00572 myParsers[VE_Richtungsentscheidungsdefinition] = 00573 new NIVissimSingleTypeParser_Richtungsentscheidungsdefinition(*this); 00574 myParsers[VE_Routenentscheidungsdefinition] = 00575 new NIVissimSingleTypeParser_Routenentscheidungsdefinition(*this); 00576 myParsers[VE_VWunschentscheidungsdefinition] = 00577 new NIVissimSingleTypeParser_VWunschentscheidungsdefinition(*this); 00578 myParsers[VE_Langsamfahrbereichdefinition] = 00579 new NIVissimSingleTypeParser_Langsamfahrbereichdefinition(*this); 00580 myParsers[VE_Zuflussdefinition] = 00581 new NIVissimSingleTypeParser_Zuflussdefinition(*this); 00582 myParsers[VE_Fahrzeugtypdefinition] = 00583 new NIVissimSingleTypeParser_Fahrzeugtypdefinition(*this, myColorMap); 00584 myParsers[VE_Fahrzeugklassendefinition] = 00585 new NIVissimSingleTypeParser_Fahrzeugklassendefinition(*this, myColorMap); 00586 myParsers[VE_Geschwindigkeitsverteilungsdefinition] = 00587 new NIVissimSingleTypeParser_Geschwindigkeitsverteilungsdefinition(*this); 00588 myParsers[VE_Laengenverteilungsdefinition] = 00589 new NIVissimSingleTypeParser_Laengenverteilungsdefinition(*this); 00590 myParsers[VE_Zeitenverteilungsdefinition] = 00591 new NIVissimSingleTypeParser_Zeitenverteilungsdefinition(*this); 00592 myParsers[VE_Querverkehrsstoerungsdefinition] = 00593 new NIVissimSingleTypeParser_Querverkehrsstoerungsdefinition(*this); 00594 myParsers[VE_Lichtsignalanlagendefinition] = 00595 new NIVissimSingleTypeParser_Lichtsignalanlagendefinition(*this); 00596 myParsers[VE_Signalgruppendefinition] = 00597 new NIVissimSingleTypeParser_Signalgruppendefinition(*this); 00598 myParsers[VE_Stopschilddefinition] = 00599 new NIVissimSingleTypeParser_Stopschilddefinition(*this); 00600 myParsers[VE_Knotendefinition] = 00601 new NIVissimSingleTypeParser_Knotendefinition(*this); 00602 myParsers[VE_Signalgeberdefinition] = 00603 new NIVissimSingleTypeParser_Signalgeberdefinition(*this); 00604 myParsers[VE_Detektorendefinition] = 00605 new NIVissimSingleTypeParser_Detektordefinition(*this); 00606 myParsers[VE_Haltestellendefinition] = 00607 new NIVissimSingleTypeParser_Haltestellendefinition(*this); 00608 myParsers[VE_Liniendefinition] = 00609 new NIVissimSingleTypeParser_Liniendefinition(*this); 00610 myParsers[VE_Reisezeitmessungsdefinition] = 00611 new NIVissimSingleTypeParser_Reisezeitmessungsdefinition(*this); 00612 myParsers[VE_Querschnittsmessungsdefinition] = 00613 new NIVissimSingleTypeParser_Querschnittsmessungsdefinition(*this); 00614 myParsers[VE_Messungsdefinition] = 00615 new NIVissimSingleTypeParser_Messungsdefinition(*this); 00616 myParsers[VE_Verlustzeitmessungsdefinition] = 00617 new NIVissimSingleTypeParser_Verlustzeitmessungsdefinition(*this); 00618 myParsers[VE_Stauzaehlerdefinition] = 00619 new NIVissimSingleTypeParser_Stauzaehlerdefinition(*this); 00620 myParsers[VE_Rautedefinition] = 00621 new NIVissimSingleTypeParser_Rautedefinition(*this); 00622 myParsers[VE_Richtungspfeildefinition] = 00623 new NIVissimSingleTypeParser_Richtungspfeildefinition(*this); 00624 myParsers[VE_Parkplatzdefinition] = 00625 new NIVissimSingleTypeParser_Parkplatzdefinition(*this); 00626 myParsers[VE_Fahrverhaltendefinition] = 00627 new NIVissimSingleTypeParser_Fahrverhaltendefinition(*this); 00628 myParsers[VE_Streckentypdefinition] = 00629 new NIVissimSingleTypeParser_Streckentypdefinition(*this); 00630 myParsers[VE_Kennungszeile] = 00631 new NIVissimSingleTypeParser_Kennungszeile(*this); 00632 myParsers[VE_Fensterdefinition] = 00633 new NIVissimSingleTypeParser_Fensterdefinition(*this); 00634 myParsers[VE_Auswertungsdefinition] = 00635 new NIVissimSingleTypeParser_Auswertungsdefinition(*this); 00636 myParsers[VE_Verkehrszusammensetzungsdefinition] = 00637 new NIVissimSingleTypeParser_Zusammensetzungsdefinition(*this); 00638 myParsers[VE_Kantensperrung] = 00639 new NIVissimSingleTypeParser_Kantensperrung(*this); 00640 00641 myParsers[VE_Startzufallszahl] = 00642 new NIVissimSingleTypeParser_Startzufallszahl(*this); 00643 myParsers[VE_SimRate] = 00644 new NIVissimSingleTypeParser_SimRate(*this); 00645 myParsers[VE_Zeitschrittfaktor] = 00646 new NIVissimSingleTypeParser_Zeitschrittfaktor(*this); 00647 myParsers[VE_Linksverkehr] = 00648 new NIVissimSingleTypeParser_Linksverkehr(*this); 00649 myParsers[VE_Stauparameterdefinition] = 00650 new NIVissimSingleTypeParser_Stauparameterdefinition(*this); 00651 myParsers[VE_Gelbverhaltendefinition] = 00652 new NIVissimSingleTypeParser_Gelbverhaltendefinition(*this); 00653 myParsers[VE_LSAKopplungdefinition] = 00654 new NIVissimSingleTypeParser_LSAKopplungsdefinition(*this); 00655 myParsers[VE_Gefahrenwarnsystemdefinition] = 00656 new NIVissimSingleTypeParser_Gefahrwarnungsdefinition(*this); 00657 myParsers[VE_TEAPACdefinition] = 00658 new NIVissimSingleTypeParser_TEAPACDefinition(*this); 00659 myParsers[VE_Netzobjektdefinition] = 00660 new NIVissimSingleTypeParser_Netzobjektdefinition(*this); 00661 myParsers[VE_Fahrtverlaufdateien] = 00662 new NIVissimSingleTypeParser_Fahrtverlaufdateien(*this); 00663 myParsers[VE_Emission] = 00664 new NIVissimSingleTypeParser_Emission(*this); 00665 myParsers[VE_Einheitendefinition] = 00666 new NIVissimSingleTypeParser_Einheitendefinition(*this); 00667 myParsers[VE_Baujahrverteilungsdefinition] = 00668 new NIVissimSingleTypeParser__XVerteilungsdefinition(*this); 00669 myParsers[VE_Laufleistungsverteilungsdefinition] = 00670 new NIVissimSingleTypeParser__XVerteilungsdefinition(*this); 00671 myParsers[VE_Massenverteilungsdefinition] = 00672 new NIVissimSingleTypeParser__XVerteilungsdefinition(*this); 00673 myParsers[VE_Leistungsverteilungsdefinition] = 00674 new NIVissimSingleTypeParser__XVerteilungsdefinition(*this); 00675 myParsers[VE_Maxbeschleunigungskurvedefinition] = 00676 new NIVissimSingleTypeParser__XKurvedefinition(*this); 00677 myParsers[VE_Wunschbeschleunigungskurvedefinition] = 00678 new NIVissimSingleTypeParser__XKurvedefinition(*this); 00679 myParsers[VE_Maxverzoegerungskurvedefinition] = 00680 new NIVissimSingleTypeParser__XKurvedefinition(*this); 00681 myParsers[VE_Wunschverzoegerungskurvedefinition] = 00682 new NIVissimSingleTypeParser__XKurvedefinition(*this); 00683 00684 } 00685 00686 00687 00688 /****************************************************************************/ 00689