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 2001-2010 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")) {
00125         return;
00126     }
00127     // load the visum network
00128     NIImporter_Vissim loader(nb, oc.getString("vissim"));
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 Position2D
00222 NIImporter_Vissim::VissimSingleTypeParser::getPosition2D(std::istream &from) {
00223     SUMOReal x, y;
00224     from >> x; // type-checking is missing!
00225     from >> y; // type-checking is missing!
00226     return Position2D(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     insertKnownElements();
00316     buildParsers();
00317     myColorMap["blau"] = RGBColor((SUMOReal) .3, (SUMOReal) 0.3, (SUMOReal) 1);
00318     myColorMap["gelb"] = RGBColor(1, 1, 0);
00319     myColorMap["grau"] = RGBColor((SUMOReal) .5, (SUMOReal) 0.5, (SUMOReal) .5);
00320     myColorMap["lila"] = RGBColor(1, 0, 1);
00321     myColorMap["gruen"] = RGBColor(0, 1, 0);
00322     myColorMap["rot"] = RGBColor(1, 0, 0);
00323     myColorMap["schwarz"] = RGBColor(0, 0, 0);
00324     myColorMap["tuerkis"] = RGBColor(0, 1, 1);
00325     myColorMap["weiss"] = RGBColor(1, 1, 1);
00326     myColorMap["keine"] = RGBColor(1, 1, 1);
00327 }
00328 
00329 
00330 
00331 
00332 NIImporter_Vissim::~NIImporter_Vissim() {
00333     NIVissimAbstractEdge::clearDict();
00334     NIVissimClosures::clearDict();
00335     NIVissimDistrictConnection::clearDict();
00336     NIVissimDisturbance::clearDict();
00337     NIVissimNodeCluster::clearDict();
00338     NIVissimNodeDef::clearDict();
00339     NIVissimSource::clearDict();
00340     NIVissimTL::clearDict();
00341     NIVissimTL::NIVissimTLSignal::clearDict();
00342     NIVissimTL::NIVissimTLSignalGroup::clearDict();
00343     NIVissimTrafficDescription::clearDict();
00344     NIVissimVehTypeClass::clearDict();
00345     NIVissimVehicleType::clearDict();
00346     NIVissimConnectionCluster::clearDict();
00347     NIVissimEdge::clearDict();
00348     NIVissimAbstractEdge::clearDict();
00349     NIVissimConnection::clearDict();
00350     for (ToParserMap::iterator i=myParsers.begin(); i!=myParsers.end(); i++) {
00351         delete(*i).second;
00352     }
00353 }
00354 
00355 
00356 void
00357 NIImporter_Vissim::load(const OptionsCont &options) {
00358     // load file contents
00359     // try to open the file
00360     std::ifstream strm(options.getString("vissim").c_str());
00361     if (!strm.good()) {
00362         MsgHandler::getErrorInstance()->inform("The vissim-file '" + options.getString("vissim") + "' was not found.");
00363         return;
00364     }
00365     if (!readContents(strm)) {
00366         return;
00367     }
00368     postLoadBuild(options.getFloat("vissim.offset"));
00369 }
00370 
00371 
00372 bool
00373 NIImporter_Vissim::admitContinue(const std::string &tag) {
00374     ToElemIDMap::const_iterator i=myKnownElements.find(tag);
00375     if (i==myKnownElements.end()) {
00376         return true;
00377     }
00378     myLastSecure = tag;
00379     return false;
00380 }
00381 
00382 
00383 bool
00384 NIImporter_Vissim::readContents(std::istream &strm) {
00385     // read contents
00386     bool ok = true;
00387     while (strm.good()&&ok) {
00388         std::string tag;
00389         if (myLastSecure!="") {
00390             tag = myLastSecure;
00391         } else {
00392             strm >> tag;
00393         }
00394         myLastSecure = "";
00395         bool parsed = false;
00396         while (!parsed&&strm.good()&&ok) {
00397             ToElemIDMap::iterator i=myKnownElements.find(StringUtils::to_lower_case(tag));
00398             if (i!=myKnownElements.end()) {
00399                 ToParserMap::iterator j=myParsers.find((*i).second);
00400                 if (j!=myParsers.end()) {
00401                     VissimSingleTypeParser *parser = (*j).second;
00402                     ok = parser->parse(strm);
00403                     parsed = true;
00404                 }
00405             }
00406             if (!parsed) {
00407                 std::string line;
00408                 size_t pos;
00409                 do {
00410                     pos = strm.tellg();
00411                     getline(strm, line);
00412                 } while (strm.good()&&(line==""||line[0]==' '||line[0]=='-'));
00413                 if (!strm.good()) {
00414                     return true;
00415                 }
00416                 strm.seekg(pos);
00417                 strm >> tag;
00418             }
00419         }
00420     }
00421     return ok;
00422 }
00423 
00424 
00425 void
00426 NIImporter_Vissim::postLoadBuild(SUMOReal offset) {
00427     // close the loading process
00428     NIVissimBoundedClusterObject::closeLoading();
00429     NIVissimConnection::dict_assignToEdges();
00430     NIVissimDisturbance::dict_SetDisturbances();
00431     // build district->connections map
00432     NIVissimDistrictConnection::dict_BuildDistrictConnections();
00433     // build clusters around nodes
00434 //    NIVissimNodeDef::buildNodeClusters();
00435     // build node clusters around traffic lights
00436 //    NIVissimTL::buildNodeClusters();
00437 
00438     // when connections or disturbances are left, build nodes around them
00439 
00440     // try to assign connection clusters to nodes
00441     //  only left connections will be processed in
00442     //   buildConnectionClusters & join
00443 //30.4. brauchen wir noch!    NIVissimNodeDef::dict_assignConnectionsToNodes();
00444 
00445     // build clusters of connections with the same direction and a similar position along the streets
00446     NIVissimEdge::buildConnectionClusters();
00447     // check whether further nodes (connection clusters by now) must be added
00448     NIVissimDistrictConnection::dict_CheckEdgeEnds();
00449 
00450     // join clusters when overlapping (different streets are possible)
00451     NIVissimEdge::dict_checkEdges2Join();
00452     NIVissimConnectionCluster::joinBySameEdges(offset);
00453 //    NIVissimConnectionCluster::joinByDisturbances(offset);
00454 
00455 //    NIVissimConnectionCluster::addTLs(offset);
00456 
00457     // build nodes from clusters
00458     NIVissimNodeCluster::setCurrentVirtID(NIVissimNodeDef::getMaxID());
00459     NIVissimConnectionCluster::buildNodeClusters();
00460 
00461 //    NIVissimNodeCluster::dict_recheckEdgeChanges();
00462 
00463     NIVissimNodeCluster::buildNBNodes(myNetBuilder.getNodeCont());
00464     NIVissimDistrictConnection::dict_BuildDistrictNodes(
00465         myNetBuilder.getDistrictCont(), myNetBuilder.getNodeCont());
00466     NIVissimEdge::dict_propagateSpeeds();
00467     NIVissimEdge::dict_buildNBEdges(myNetBuilder.getDistrictCont(),
00468                                     myNetBuilder.getNodeCont(), myNetBuilder.getEdgeCont(),
00469                                     offset);
00470     if (OptionsCont::getOptions().getBool("vissim.report-unset-speeds")) {
00471         NIVissimEdge::reportUnsetSpeeds();
00472     }
00473     NIVissimDistrictConnection::dict_BuildDistricts(myNetBuilder.getDistrictCont(),
00474             myNetBuilder.getEdgeCont(), myNetBuilder.getNodeCont());
00475     NIVissimConnection::dict_buildNBEdgeConnections(myNetBuilder.getEdgeCont());
00476     NIVissimNodeCluster::dict_addDisturbances(myNetBuilder.getDistrictCont(),
00477             myNetBuilder.getNodeCont(), myNetBuilder.getEdgeCont());
00478     NIVissimTL::dict_SetSignals(myNetBuilder.getTLLogicCont(),
00479                                 myNetBuilder.getEdgeCont());
00480 
00481 }
00482 
00483 
00484 void
00485 NIImporter_Vissim::insertKnownElements() {
00486     myKnownElements["kennung"] = VE_Kennungszeile;
00487     myKnownElements["zufallszahl"] = VE_Startzufallszahl;
00488     myKnownElements["simulationsdauer"] = VE_Simdauer;
00489     myKnownElements["startuhrzeit"] = VE_Startuhrzeit;
00490     myKnownElements["simulationsrate"] = VE_SimRate;
00491     myKnownElements["zeitschritt"] = VE_Zeitschrittfaktor;
00492     myKnownElements["linksverkehr"] = VE_Linksverkehr;
00493     myKnownElements["dynuml"] = VE_DynUml;
00494     myKnownElements["stau"] = VE_Stauparameterdefinition;
00495     myKnownElements["gelbverhalten"] = VE_Gelbverhaltendefinition;
00496     myKnownElements["strecke"] = VE_Streckendefinition;
00497     myKnownElements["verbindung"] = VE_Verbindungsdefinition;
00498     myKnownElements["richtungsentscheidung"] = VE_Richtungsentscheidungsdefinition;
00499     myKnownElements["routenentscheidung"] = VE_Routenentscheidungsdefinition;
00500     myKnownElements["vwunschentscheidung"] = VE_VWunschentscheidungsdefinition;
00501     myKnownElements["langsamfahrbereich"] = VE_Langsamfahrbereichdefinition;
00502     myKnownElements["zufluss"] = VE_Zuflussdefinition;
00503     myKnownElements["fahrzeugtyp"] = VE_Fahrzeugtypdefinition;
00504     myKnownElements["fahrzeugklasse"] = VE_Fahrzeugklassendefinition;
00505     myKnownElements["zusammensetzung"] = VE_Verkehrszusammensetzungsdefinition;
00506     myKnownElements["vwunsch"] = VE_Geschwindigkeitsverteilungsdefinition;
00507     myKnownElements["laengen"] = VE_Laengenverteilungsdefinition;
00508     myKnownElements["zeiten"] = VE_Zeitenverteilungsdefinition;
00509     myKnownElements["baujahre"] = VE_Baujahrverteilungsdefinition;
00510     myKnownElements["leistungen"] = VE_Laufleistungsverteilungsdefinition;
00511     myKnownElements["massen"] = VE_Massenverteilungsdefinition;
00512     myKnownElements["leistungen"] = VE_Leistungsverteilungsdefinition;
00513     myKnownElements["maxbeschleunigung"] = VE_Maxbeschleunigungskurvedefinition;
00514     myKnownElements["wunschbeschleunigung"] = VE_Wunschbeschleunigungskurvedefinition;
00515     myKnownElements["maxverzoegerung"] = VE_Maxverzoegerungskurvedefinition;
00516     myKnownElements["wunschverzoegerung"] = VE_Wunschverzoegerungskurvedefinition;
00517     myKnownElements["querverkehrsstoerung"] = VE_Querverkehrsstoerungsdefinition;
00518     myKnownElements["lsa"] = VE_Lichtsignalanlagendefinition;
00519     myKnownElements["signalgruppe"] = VE_Signalgruppendefinition;
00520     myKnownElements["signalgeber"] = VE_Signalgeberdefinition;
00521     myKnownElements["lsakopplung"] = VE_LSAKopplungdefinition;
00522     myKnownElements["detektor"] = VE_Detektorendefinition;
00523     myKnownElements["haltestelle"] = VE_Haltestellendefinition;
00524     myKnownElements["linie"] = VE_Liniendefinition;
00525     myKnownElements["stopschild"] = VE_Stopschilddefinition;
00526     myKnownElements["messung"] = VE_Messungsdefinition;
00527     myKnownElements["reisezeit"] = VE_Reisezeitmessungsdefinition;
00528     myKnownElements["verlustzeit"] = VE_Verlustzeitmessungsdefinition;
00529     myKnownElements["querschnittsmessung"] = VE_Querschnittsmessungsdefinition;
00530     myKnownElements["stauzaehler"] = VE_Stauzaehlerdefinition;
00531     myKnownElements["auswertung"] = VE_Auswertungsdefinition;
00532     myKnownElements["fenster"] = VE_Fensterdefinition;
00533     myKnownElements["motiv"] = VE_Gefahrenwarnsystemdefinition;
00534     myKnownElements["parkplatz"] = VE_Parkplatzdefinition;
00535     myKnownElements["knoten"] = VE_Knotendefinition;
00536     myKnownElements["teapac"] = VE_TEAPACdefinition;
00537     myKnownElements["netzobjekt"] = VE_Netzobjektdefinition;
00538     myKnownElements["richtungspfeil"] = VE_Richtungspfeildefinition;
00539     myKnownElements["raute"] = VE_Rautedefinition;
00540     myKnownElements["fahrverhalten"] = VE_Fahrverhaltendefinition;
00541     myKnownElements["fahrtverlaufdateien"] = VE_Fahrtverlaufdateien;
00542     myKnownElements["emission"] = VE_Emission;
00543     myKnownElements["einheit"] = VE_Einheitendefinition;
00544     myKnownElements["streckentyp"] = VE_Streckentypdefinition;
00545     myKnownElements["kantensperrung"] = VE_Kantensperrung;
00546     myKnownElements["kante"] = VE_Kantensperrung;
00547 
00548 
00549     myKnownElements["advance"] = VE_DUMMY;
00550     myKnownElements["temperatur"] = VE_DUMMY;
00551 
00552 }
00553 
00554 
00555 
00556 void
00557 NIImporter_Vissim::buildParsers() {
00558     myParsers[VE_Simdauer] =
00559         new NIVissimSingleTypeParser_Simdauer(*this);
00560     myParsers[VE_Startuhrzeit] =
00561         new NIVissimSingleTypeParser_Startuhrzeit(*this);
00562     myParsers[VE_DynUml] =
00563         new NIVissimSingleTypeParser_DynUml(*this);
00564     myParsers[VE_Streckendefinition] =
00565         new NIVissimSingleTypeParser_Streckendefinition(*this);
00566     myParsers[VE_Verbindungsdefinition] =
00567         new NIVissimSingleTypeParser_Verbindungsdefinition(*this);
00568     myParsers[VE_Richtungsentscheidungsdefinition] =
00569         new NIVissimSingleTypeParser_Richtungsentscheidungsdefinition(*this);
00570     myParsers[VE_Routenentscheidungsdefinition] =
00571         new NIVissimSingleTypeParser_Routenentscheidungsdefinition(*this);
00572     myParsers[VE_VWunschentscheidungsdefinition] =
00573         new NIVissimSingleTypeParser_VWunschentscheidungsdefinition(*this);
00574     myParsers[VE_Langsamfahrbereichdefinition] =
00575         new NIVissimSingleTypeParser_Langsamfahrbereichdefinition(*this);
00576     myParsers[VE_Zuflussdefinition] =
00577         new NIVissimSingleTypeParser_Zuflussdefinition(*this);
00578     myParsers[VE_Fahrzeugtypdefinition] =
00579         new NIVissimSingleTypeParser_Fahrzeugtypdefinition(*this, myColorMap);
00580     myParsers[VE_Fahrzeugklassendefinition] =
00581         new NIVissimSingleTypeParser_Fahrzeugklassendefinition(*this, myColorMap);
00582     myParsers[VE_Geschwindigkeitsverteilungsdefinition] =
00583         new NIVissimSingleTypeParser_Geschwindigkeitsverteilungsdefinition(*this);
00584     myParsers[VE_Laengenverteilungsdefinition] =
00585         new NIVissimSingleTypeParser_Laengenverteilungsdefinition(*this);
00586     myParsers[VE_Zeitenverteilungsdefinition] =
00587         new NIVissimSingleTypeParser_Zeitenverteilungsdefinition(*this);
00588     myParsers[VE_Querverkehrsstoerungsdefinition] =
00589         new NIVissimSingleTypeParser_Querverkehrsstoerungsdefinition(*this);
00590     myParsers[VE_Lichtsignalanlagendefinition] =
00591         new NIVissimSingleTypeParser_Lichtsignalanlagendefinition(*this);
00592     myParsers[VE_Signalgruppendefinition] =
00593         new NIVissimSingleTypeParser_Signalgruppendefinition(*this);
00594     myParsers[VE_Stopschilddefinition] =
00595         new NIVissimSingleTypeParser_Stopschilddefinition(*this);
00596     myParsers[VE_Knotendefinition] =
00597         new NIVissimSingleTypeParser_Knotendefinition(*this);
00598     myParsers[VE_Signalgeberdefinition] =
00599         new NIVissimSingleTypeParser_Signalgeberdefinition(*this);
00600     myParsers[VE_Detektorendefinition] =
00601         new NIVissimSingleTypeParser_Detektordefinition(*this);
00602     myParsers[VE_Haltestellendefinition] =
00603         new NIVissimSingleTypeParser_Haltestellendefinition(*this);
00604     myParsers[VE_Liniendefinition] =
00605         new NIVissimSingleTypeParser_Liniendefinition(*this);
00606     myParsers[VE_Reisezeitmessungsdefinition] =
00607         new NIVissimSingleTypeParser_Reisezeitmessungsdefinition(*this);
00608     myParsers[VE_Querschnittsmessungsdefinition] =
00609         new NIVissimSingleTypeParser_Querschnittsmessungsdefinition(*this);
00610     myParsers[VE_Messungsdefinition] =
00611         new NIVissimSingleTypeParser_Messungsdefinition(*this);
00612     myParsers[VE_Verlustzeitmessungsdefinition] =
00613         new NIVissimSingleTypeParser_Verlustzeitmessungsdefinition(*this);
00614     myParsers[VE_Stauzaehlerdefinition] =
00615         new NIVissimSingleTypeParser_Stauzaehlerdefinition(*this);
00616     myParsers[VE_Rautedefinition] =
00617         new NIVissimSingleTypeParser_Rautedefinition(*this);
00618     myParsers[VE_Richtungspfeildefinition] =
00619         new NIVissimSingleTypeParser_Richtungspfeildefinition(*this);
00620     myParsers[VE_Parkplatzdefinition] =
00621         new NIVissimSingleTypeParser_Parkplatzdefinition(*this);
00622     myParsers[VE_Fahrverhaltendefinition] =
00623         new NIVissimSingleTypeParser_Fahrverhaltendefinition(*this);
00624     myParsers[VE_Streckentypdefinition] =
00625         new NIVissimSingleTypeParser_Streckentypdefinition(*this);
00626     myParsers[VE_Kennungszeile] =
00627         new NIVissimSingleTypeParser_Kennungszeile(*this);
00628     myParsers[VE_Fensterdefinition] =
00629         new NIVissimSingleTypeParser_Fensterdefinition(*this);
00630     myParsers[VE_Auswertungsdefinition] =
00631         new NIVissimSingleTypeParser_Auswertungsdefinition(*this);
00632     myParsers[VE_Verkehrszusammensetzungsdefinition] =
00633         new NIVissimSingleTypeParser_Zusammensetzungsdefinition(*this);
00634     myParsers[VE_Kantensperrung] =
00635         new NIVissimSingleTypeParser_Kantensperrung(*this);
00636 
00637     myParsers[VE_Startzufallszahl] =
00638         new NIVissimSingleTypeParser_Startzufallszahl(*this);
00639     myParsers[VE_SimRate] =
00640         new NIVissimSingleTypeParser_SimRate(*this);
00641     myParsers[VE_Zeitschrittfaktor] =
00642         new NIVissimSingleTypeParser_Zeitschrittfaktor(*this);
00643     myParsers[VE_Linksverkehr] =
00644         new NIVissimSingleTypeParser_Linksverkehr(*this);
00645     myParsers[VE_Stauparameterdefinition] =
00646         new NIVissimSingleTypeParser_Stauparameterdefinition(*this);
00647     myParsers[VE_Gelbverhaltendefinition] =
00648         new NIVissimSingleTypeParser_Gelbverhaltendefinition(*this);
00649     myParsers[VE_LSAKopplungdefinition] =
00650         new NIVissimSingleTypeParser_LSAKopplungsdefinition(*this);
00651     myParsers[VE_Gefahrenwarnsystemdefinition] =
00652         new NIVissimSingleTypeParser_Gefahrwarnungsdefinition(*this);
00653     myParsers[VE_TEAPACdefinition] =
00654         new NIVissimSingleTypeParser_TEAPACDefinition(*this);
00655     myParsers[VE_Netzobjektdefinition] =
00656         new NIVissimSingleTypeParser_Netzobjektdefinition(*this);
00657     myParsers[VE_Fahrtverlaufdateien] =
00658         new NIVissimSingleTypeParser_Fahrtverlaufdateien(*this);
00659     myParsers[VE_Emission] =
00660         new NIVissimSingleTypeParser_Emission(*this);
00661     myParsers[VE_Einheitendefinition] =
00662         new NIVissimSingleTypeParser_Einheitendefinition(*this);
00663     myParsers[VE_Baujahrverteilungsdefinition] =
00664         new NIVissimSingleTypeParser__XVerteilungsdefinition(*this);
00665     myParsers[VE_Laufleistungsverteilungsdefinition] =
00666         new NIVissimSingleTypeParser__XVerteilungsdefinition(*this);
00667     myParsers[VE_Massenverteilungsdefinition] =
00668         new NIVissimSingleTypeParser__XVerteilungsdefinition(*this);
00669     myParsers[VE_Leistungsverteilungsdefinition] =
00670         new NIVissimSingleTypeParser__XVerteilungsdefinition(*this);
00671     myParsers[VE_Maxbeschleunigungskurvedefinition] =
00672         new NIVissimSingleTypeParser__XKurvedefinition(*this);
00673     myParsers[VE_Wunschbeschleunigungskurvedefinition] =
00674         new NIVissimSingleTypeParser__XKurvedefinition(*this);
00675     myParsers[VE_Maxverzoegerungskurvedefinition] =
00676         new NIVissimSingleTypeParser__XKurvedefinition(*this);
00677     myParsers[VE_Wunschverzoegerungskurvedefinition] =
00678         new NIVissimSingleTypeParser__XKurvedefinition(*this);
00679 
00680 }
00681 
00682 
00683 
00684 /****************************************************************************/
00685 

Generated on Wed May 5 00:06:34 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6