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