SUMO - Simulation of Urban MObility

NIImporter_Vissim.cpp

Go to the documentation of this file.
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 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines