Garmisch-Partenkirchen, Oktober 2002 Ilka Kuerbis, email
Fuzzy-Logic Filter fuer das Global Atmosphere Watch Projekt Entwicklung von datenbankgestuetzten Filterfunktionen zur Kennzeichnung der Luftmassen-Einfluesse in den Messreihen der Globalstation Zugspitze Dokumentation fuer das Datenbank-Tool mit Implementierung der Filterfunktionen 1. Datenbankkonzept 2. Menuestruktur des Software-Tools 2.1 Fuzzifizierung 2.2 Fuzzy-Inferenz 2.2 Defuzzifizierung 3. Namenskonventionen 4. Hinweise 1. Datenbankkonzept Auf der CD-ROM befindet sich die sogenannte Database mit den zwei Datenbankdateien dbData.mdb und dbFilter.mdb. Die Datenbankdateien sind in der englischsprachigen Programmversion von Microsoft Access 2000 erstellt und damit auch in anderen Sprachversionen lauffaehig sowie zu dem Programm aufwaertskompatibel. Fuer den internen Datenaustausch gilt als einzige Voraussetzung, dass beide Datenbankdateien in einem Verzeichnis liegen muessen. Das Konzept wird ueber zwei Datenbanken realisiert, die untereinander ueber einen internen Datenzugriff verfuegen. Die Archivierung der an der Station ermittelten sowie darueber hinaus relevanten Daten erfolgt in der Datenbank dbData. Die Auswertung mit der Filteranwendung erfolgt in der Datenbank dbFilter. Das Ergebnis der Filteranwendung als Data-Flag der zu kennzeichnenden Datensaetze wird in die dbData zur Archivierung zurueckgespielt. Die Datenbank dbData enthaelt alle zu archivierenden Daten der Spurengas-Messungen sowie der Rueckwaertstrajektorien und die Emissions-Inventar-Daten, wobei der Datenimport ueber die Standard-Funktion einer Anfuege-Abfrage erfolgt. Die Daten sind in Tabellen abgelegt und ueber eine Beschreibung in der Tabellenansicht der Datenbankoberflaeche naeher erlaeutert. In der Entwurfsansicht der Datenbankoberflaeche sind die Datenformate sowie Datenbeschreibungen aufgelistet wie beispielsweise die physikalische Einheit von Messdaten oder die gewaehlte Kennzeichnung fuer Datenausfaelle. In die Datenbank dbFilter ist das Software-Tool fuer die Filter implementiert, das eine vollstaendige Durchfuehrung mit den drei Teilprozessen der Fuzzifizierung, Fuzzy-Inferenz und Defuzzifizierung beinhaltet. Die Realisierung der Filterfunktionen erfolgt vollstaendig ueber SQL-Anweisungen, die in programmierte VBA-Funktionen abgelegt sind. Darueber hinaus ist der Quellcode fuer die in der Datenbank abgelegten kommentierten Funktionen, SQL-Anweisungen und Prozeduren einsehbar, nachvollziehbar sowie ggf. flexibel anzupassen. Fuer die Berechnungen sind groesstenteils mehrere Rechenvorgaenge erforderlich, die neben SQL-Anweisungen zum Teil aber auch VBA spezifische Sprachelemente fuer Schleifendurchlaeufe, Variablenuebergaben und Auslagerungen von Zwischenergebnissen in temporaere Tabellen enthalten. Ein Berechnungsschritt erfolgt in einer sogenannten Prozedur, die wiederum nach dem Aufbau der Menueleiste inhaltlich in Module zusammengefasst sind. Ein Modul enthaelt neben dem Quellcode fuer die zugehoerigen Prozeduren mit den Berechnungsschritten fuer die Teilprozesse von Fuzzy-Logic auch die uebergeordnete Prozedur zur Steuerung des Programmablaufs sowie Dialogfenster. Die Filteranwendung erfolgt ueber die zu den Standard-Menueleisten zusaetzlich eingefuegte Menueleiste Fuzzy-Logic Filter, die ohne Aufruf der einzelnen VBA-Module mit SQL-Anweisungen eine menuegesteuerte Abarbeitung ermoeglicht. Nach Auswahl eines Menuepunktes wird zu Anfang ein Dialogfenster erzeugt, dass eine kurze Beschreibung der Berechnung mit der dafuer erforderlichen Berechnungszeit ausgibt und die Option zum Start oder zum Abbruch anbietet. Nach Beendigung der Berechnung wird im Dialogfenster die Ergebnistabelle namentlich angezeigt und anschliessend automatisch geoeffnet. Zusaetzlich wird ein Speichervorgang ausgeloest und im Datenbankfenster das Datum der Modifikation fuer die Tabelle aktualisiert. Zum Teil werden sehr grosse Datenmengen in temporaere Tabellen geschrieben, so dass die Datenbank zur physikalischen Speicherfreigabe komprimiert werden muss. Da dies ein wichtiger Punkt der Datenbankpflege ist, wird nach umfangreichen Berechnungen zusaetzlich ein Dialogfenster mit der Empfehlung einer Komprimierung angezeigt. Dieses Standard-Tool einer Access-Datenbank ist zusaetzlich im Menuepunkt Database der Menueleiste Fuzzy-Logic Filter aufgefuehrt und lautet je nach Sprachversion Compact and Repair Database. 2. Menuestruktur des Software-Tools Die Realisierung der Filterfunktionen als Datenbank implementiertes Tool erfolgt in der Database dbFilter ueber das Menue Fuzzy-Logic Filter, dessen Struktur nachfolgend mit Nennung der jeweiligen Prozeduren und zugehoerigen Tabellen vorgestellt wird. Das Datenbank-Tool beinhaltet eine vollstaendige Durchfuehrung der aufgefuehrten Menuepunkte, die nach dem Fuzzy-Logic-Strukturschema in der Reihenfolge Fuzzifizierung, Fuzzy-Inferenz und Defuzzifizierung erfolgen muss. In den Menues selbst ist wiederum die Reihenfolge zu beachten, da bestimmte Berechnungen Ergebnisse voraussetzen, wie beispielsweise die Perzentile der Messgroessen Voraussetzung fuer die Ermittlung der zugehoerigen Fuzzy-Inputs sind. Erfolgt nur eine sequentielle Berechnung durch Auswahl eines Menuepunktes, so werden stets die in der Datenbank vorhandenen Daten zugrunde gelegt. Die vollstaendige Abarbeitung der Menuepunkte ist nur dann erforderlich, wenn eine Aktualisierung bzw. Ergaenzung der Datentabellen der luftchemischen Messgroessen oder der Trajektoriendaten in der Datenbank dbData vorliegt. 2.1 Fuzzifizierung Im Menue Fuzzifizierung erfolgt die Ermittlung der Fuzzy-Inputs fuer die Filterparameter der Abstrakten Groesse A (Messgroesse) und B (Trajektorienverlauf). Die Fuzzifizierung der Abstrakten Groesse A Messgroesse wird ueber die Menuepunkte > Fuzzifizierung > Percentile sowie > Fuzzy-Input durch Menueauswahl fuer die mit den Filtern angesprochenen Messgroessen durchgefuehrt. Als Ergebnis wird eine Tabelle fuer die ausgewaehlte Messgroesse erzeugt. Fuer die Verwendung ausschliesslich aktueller Daten ist aus der Datenbank dbData die Tabelle mit den Stationsdaten data_tdtaStationData zu importieren bzw. zu aktualisieren. Die zum Menuepunkt > Fuzzifizierung > DataTable > Import/Update gehoerigen Prozeduren sind im VBA-Modul proc_basFuzA_ImDrop zusammengefasst. Das VBA-Modul menue_FuzAMessgroesse enthaelt die zum Menue > Fuzzifizierung > A - Messgroesse gehoerigen Dialogfelder und uebergibt durch Auswahl einer Messgroesse die entsprechende Messgroesse als Variable an die allgemeingueltigen Prozeduren zur Berechnung der Gleitenden Perzentile und der Fuzzy-Inputs. Die Berechnung der zentrierten gleitenden 10%, 50%, 90%-Perzentile mit einer 90-taegigen Zeitspanne und einer Mindestdatenverfuegbarkeit von 70% fuer eine luftchemische Messgroesse ist die Grundlage fuer die Zugehoerigkeitsfunktionen zu den formulierten Fuzzy-Sets. Fuer die Relative Feuchte erfolgt eine abweichende Berechnung der Perzentile mit der Zeitspanne von Januar bis Maerz und Oktober bis Dezember als Jahreswert. Die zugehoerigen Prozeduren sind im VBA-Modul proc_basFuzA_MovPer und geben das Zwischenergebnis in der Tabelle tmp_tqryAMovPer[Messgroesse] aus. Die Berechnung der Fuzzy-Inputs fuer die Messgroessen erfolgt ueber die Prozeduren des VBA-Moduls proc_basFuzA_Fuzzy-Input. Die hierfuer erforderlichen Zugehoerigkeitsfunktionen sind als allgemeingueltige Funktionen im VBA-Modul func_basFuzzyFunction definiert. Die erzeugte Ergebnistabelle calc_FuzInputA_[Messgroesse] enthaelt neben Datum, Uhrzeit, Messwert und gleitenden Perzentilen, die Zugehoerigkeitsgrade zu den drei formulierten Fuzzy-Sets low, medium, high. Die Fuzzifizierung der Abstrakten Groesse B Trajektorienverlauf erfordert zunaechst eine Aufbereitung der verwendeten Daten vom Emissions-Inventar und den Rueckwaertstrajektorien und ergibt sich aus den Berechnungen der beiden Filterparameter-Kriterien der Abstrakten Groesse C Konzentrationsaenderung und D Aufenthaltshoehe. Im Menueunterpunkt > Emission-Inventar erfolgt die Aufbereitung des Emissions-Grids, im Menueunterpunkt > Trajectorie die Aufbereitung der Rueckwaertstrajektorien sowie die Verbindung zu dem Emissions-Grid. Beide Berechnungen sind Grundlage fuer die Fuzzifizierung des Teilkriteriums C Konzentrationsaenderung, die im Menueunterpunkt > Fuzzy-Inputs erfolgt. Dort wird auch die Ermittlung der Fuzzy-Inputs fuer das zweite Filterparameter-Kriterium D Aufenthaltshoehe durchgefuehrt. Die Steuerung der zugehoerigen Prozeduren ueber die Menueauswahl werden im VBA-Modul menue_FuzBTrajectorie verwaltet. Im Menuepunkt > Emissions-Inventar erfolgt die Gittertransformation von COARSE-Grid und EMEP-Grid unter Verwendung der zur Verfuegung stehenden Emissions-Inventare der Datenbank dbData, die hierfuer temporaer importiert werden. Die jeweiligen Prozeduren sind im VBA-Modul proc_basBCGridTransCoarse bzw. proc_basBCGridTransEmep zusammengefasst, die Tabellen lauten tmp_tqryCEmCoarseTrans bzw. tmp_tqryCEmEmepTrans. Die Grid-Kombination erfolgt prioritaer durch das hochaufloesende COARSE2-Grid mit Ergaenzung durch Daten des EMEP50-Grid in den Randbereichen und fuer Wasserflaechen, das zugehoerige VBA-Modul heisst proc_basBCGridComp, die Ergebnistabelle heisst tmp_tqryCEmCompTrans. Im Menuepunkt > Trajectorie > Distanz-Berechnung erfolgt fuer jede Trajektorienverlauf-Stunde die Berechnung der Entfernung zur Station, die entlang eines Trajektorienverlaufs von Punkt zu Punkt angenaehert wird und in der Tabelle tmp_tqryCTrajDistance ausgegeben wird. Hierfuer wird die allgemeingueltig geschriebene Funktion func_basTrajDistance im VBA-Modul proc_basBCTrajDistance verwendet, die darueberhinaus generell fuer die Distanz-Berechnung zwischen zwei Punkten in geographischer Gradangabe verwendbar ist. Die Verbindung zwischen dem kombinierten Emissions-Inventar COARSE/EMEP-Grid mit den Lagekoordinaten der Rueckwaertstrajektorien erfolgt im Menuepunkt > Trajectorie > Relation Emission-Grid und steht im VBA-Modulproc_basBCTrajEmis. Die Ermittlung einer moeglichen Konzentrationsaenderung in Bezug zur Station wird mit den Prozeduren im VBA-Modul proc_basBCTrajEmisCo ueber den Menuepunkt > Trajectorie > Konzentrations-Aenderung durchgefuehrt. Die Berechnung beinhaltet die Umrechnung der zeitlichen Aufloesung des Emissions-Inventars auf einen stuendlichen Trajektorien-Aufenthalt sowie die durch den Transportund den zeitlichen Abbau bedingte Minderung, die mit dem beschriebenen Gauss-Ansatz unter Verwendung der Trajektoriendaten zu Hoehe, Entfernung zur Station und Angabe der zeitlichen Rueckverfolgung beruecksichtigt wird. Die ermittelte Konzentrationsaenderung bezieht sich auf die verwendete Einheit der Messgroessen in ppbv und wird in der Tabelle calc_tqryCDTrajEmisCo ausgegeben. Die Ermittlung der Fuzzy-Inputs fuer das Kriterium Konzentrationsaenderung im Menue > Fuzzy-Input > C - Konzentrations-Aenderung erfolgt mit den Zugehoerigkeitsfunktionen fuer zwei Fuzzy-Sets, die, wie fuer die Messgroessen, im VBA-Modul func_basFuzzyFunction aufgefuehrt sind. Im VBA-Modul proc_basFuzB_Fuzzy-InputC wird auf die Funktion zugegriffen und die zugehoerigen Eckpunkte aus Nachweisgrenze und Differenz aus den bereits vorliegenden Berechnungen zu 90%- und 50%-Perzentilen ausgelesen. Als Ergebnis wird die Tabelle calc_tqryCDTrajEmisCo um zwei Spalten fuer die Zugehoerigkeitsgrade der Abstrakten Groesse C Konzentrationsaenderung ergaenzt. Die Fuzzifizierung des zweiten Teilkriterium D - Aufenthaltshoehe im Menue > Fuzzy-Input > D - Aufenthaltshoehe beinhaltet die Aufstellung der Zugehoerigkeitsfunktion fuer zwei Fuzzy-Sets, die auf den zugrunde gelegten minimalen und maximalen Hoehen der Grundschicht basiert. Die Daten der jahres- sowie tageszeitlich variierenden Hoehen sind in der Tabelle data_tdtaBLayer festgelegt, die aus der Datenbank dbData temporaer fuer die Berechnung importiert wird. Die zugehoerigen Prozeduren sind VBA-Modul proc_basFuzB_Fuzzy-InputD aufgelistet. Die Ausgabe der Fuzzy-Inputs erfolgt wiederum durch Ergaenzung der entsprechenden Spalten in der erwaehnten Tabelle. Im Menuepunkt > Fuzzy-Input > B - Trajektorienverlauf erfolgt zunaechst die Zusammenfuehrung der beiden Teilkriterien C und D durch Ergaenzung der bereits aufgefuehrten Tabelle. Das additive Aufsammeln von Emissionen und die Zusammenfassung der Trajektorienverlauf-Stunden zu einem Trajektorienverlauf erfolgt ueber die Prozeduren im VBA-Modul proc_basFuzB_Fuzzy-InputB. Die ermittelten Fuzzy-Inputs zu den zwei definierten Mengen Trajektorienverlauf mit einer moeglichen Konzentrationsaenderung in Hoehe der Nachweisgrenze{BL_nonPeak} bzw. in Hoehe einer Stoerung in der Kohlenmonoxid-Messreihe{BL_Peak} werden in die Tabelle calc_FuzInputB geschrieben. 2.2 Fuzzy-Inferenz Die ermittelten Fuzzy-Inputs fuer die Abstrakte Groesse A Messgroesse mit den Tabellen calc_FuzInputA_[Messgroesse] sowie fuer die Abstrakte Groesse B Trajektorienverlauf mit der Tabelle calc_FuzInputB stellen die Grundlage fuer das unscharfe Schliessen der Fuzzy-Inferenz dar. In die formulierten Implikationen der Filterregeln gehen die Fuzzy-Inputs als Praemisse ein und werden ueber den beschriebenen Fuzzy-Kompensations-Operator zu der Konklusion X eines Luftmassen-Einflusses ausgewertet. Die Verbindung der mit einer Implikation angesprochenen Groessen entspricht einer einfachen 1:1-Relation der entsprechenden Tabellen calc_FuzInputA_[Messgroesse] ueber Datum und Uhrzeit. Das Auftreten einer bestimmten Auspraegung zu einer hohen oder niedrigen Konzentration wird zeitgleich von den Filterparametern gefordert, entspricht also einem bestimmten Halbstunden-Datensatz. Mit Verwendung von Trajektoriendaten in der Filterregel 2 fuer Luftmassen-Einfluss infolge synoptisch bedingter Transportprozesse besitzt die Information einer moeglichen Konzentrationsaenderung eines Trajektorienverlaufs aufgrund der zweimal taeglich verfuegbaren Terminrechnungen eine zeitliche niedrige Aufloesung. Die Fuzzy-Inferenz ist fuer die drei formulierten Filterregeln durchzufuehren. Die Ergebnisse der Filterregel 1 fuer Luftmassen-Einfluss infolge lokal induzierter Vertikaltransporte werden in der Tabelle calc_FuzInfOutputX_1 ausgegeben, die der Filtereregel 2 fuer Luftmassen-Einfluss infolge synoptisch bedingter Transporte in Tabelle calc_FuzInfOutputX_2 und die Ergebnisse der Filterregel 3 fuer Luftmassen-Einfluss infolge Intrusion in Tabelle calc_FuzInfOutputX_3. Neben der eindeutigen Datensatzkennung ueber Datum und Uhrzeit enthaelt die Tabelle die durch die Implikation angesprochenen Messgroessen mit Angabe von Messwert und Fuzzy-Input sowie den daraus resultierenden Fuzzy-Output. Der Fuzzy-Output ist das Ergebnis der Inferenz und liefert den Zugehoerigkeitsgrad zu dem formulierten Fuzzy-Set der Konklusion X Luftmassen-Einfluss. Die Ermittlung folgt aus der Verknuepfung der Fuzzy-Inputs nach der Methode des gewaehlten Fuzzy-Operators, die zugehoerigen Prozeduren der Fuzzy-Inferenz fuer die drei Filterregeln sind in den VBA-Modulen proc_basInfOutputX_1, proc_basInfOutputX_2, proc_basInfOutputX_3 formuliert. 2.3 Defuzzifizieung In der Defuzzifizierung erfolgt die Kennzeichnung der Datensaetze mit einem Data-Flag fuer einen Luftmassen-Einfluss. Nach der Methode des Maximum-of-Mean wird fuer die formulierten Implikationen der maximale Fuzzy-Output bestimmt und nach der festgelegten Mindestanforderung eines Zugehoerigkeitsgrades von 0,5 in die binaere Grundmenge {0, 1} eingeteilt. Die Tabelle calc_DataFlag enthaelt neben Datum und Uhrzeit die ermittelten Fuzzy-Outputs der drei formulierten Filterregeln. Diese Tabelle ist das Ergebnis der Filteranwendung und wird fuer die Archivierung in die Datenbank dbData zurueckgespielt. In der Datenspalte qcpDataFlag wird ein Datensatz mit 1 gekennzeichnet, wenn eine Filterregel einen Zugehoerigkeitsgrad fuer den Fuzzy-Output von mindestens 0,5 besitzt. Zusaetzlich wird ueber die Datenspalte qcpFilter die Abkuerzung des Filters genannt, der zur Kennzeichnung gefuehrt hat. Der Datensatz ist somit fuer die Station als nicht repraesentativ zu deklarieren und bleibt im Rahmen der Ausweisung repraesentativer Daten unberuecksichtigt. Die Weiterfuehrung des zusaetzlichen Informationsgehaltes der graduellen Bewertung eines Luftmassen-Einflusses erfolgt ueber die Datenspalte qcpGrad mit Gradangabe fuer den Fuzzy-Output. Ein Data-Flag von 0 entspricht der Aussage, dass die Messdaten repraesentativ fuer die Station sind, da kein Luftmassen-Einfluss ueber die Filterregeln ermittelt wird, der Zugehoerigkeitsgrad des Fuzzy-Outputs ist dann ebenfalls 0. Die Kennung -999 erfolgt fuer Datensaetze, die aufgrund Datenausfalls eines oder mehrer Filterparameter eine Filteranwendung nicht ermoeglichen, der Fuzzy-Output ist ebenfalls -999. In der Datenspalte qcpFilter wird der Filter genannt, fuer den die Anwendung nicht moeglich war. Ist fuer mehr als einen Filter eine Anwendung nicht durchfuehrbar, so erfolgt eine Mehrfachnennung der Filter ohne Anwendung. Die Durchfuehrung der Defuzzifizierung mit Data-Flag fuer die Datensaetze erfolgt ueber den Menuepunkt > Defuzzifizierung > DataFlag, die Tabelle calc_DataFlag wird hierfuer inhaltlich geloescht und dann auf Basis der zugrundeliegenden Daten neu berechnet und wiederum ausgegeben. 3. Namenskonventionen Die einheitliche Benennung von Datenbank- und Programmobjekten dient der Strukturierung des Datenbank-Tools fuer Anwender und Entwickler. Die Struktur der Benennung basiert auf der anerkannten und verbreiteten Methode Hungarian. Der Stil beruht auf der Aufteilung eines Namens in mehrere sprechende Teile. Neben der Klassifizierung auf Level 1 nach Abfragenund Tabellen, ist fuer komplexere Anwendungen eine Verfeinerung mittels derzweiten Stufe Level 2 vorzunehmen. Die Benennung der Objekte erfolgt nach dem Stil: [Praefix]_Klasse[Basisname]_[Erweiterungen] Der Basisname einer Tabelle ergibt sich aus Abkuerzungen des Tabelleninhalts und erfolgt nach dem Prinzip, dass bei einer optionalen alphabetischem Sortierung der Tabellen eine entsprechende inhaltliche Sortierung vorliegt. Daneben ist ueber die Datenbankoberflaeche eine verbale Beschreibung der Tabelle direkt sichtbar. Fuer Tabellen erfolgt eine Differenzierung ueber die drei Praefixe data_, tmp_ und calc_. Das Praefix tmp_ steht fuer temporaere, innerhalb von Modulen waehrend des Prozedurablaufs erstellte Tabellen mit Zwischenergebnissen und calc_ fuer Tabellen mit Berechnung, die bedeutende Ergebnisse eines Abschnitts der Fuzzifizierung enthalten, zum Teil die Basis der weiteren Filteranwendung darstellen und aufgrund der moduluebergreifenden Funktion mit ihrer Tabellenstruktur nicht geloescht werden duerfen. Datentabellen, die durch Datenimport als Input in die Datenbank eingehen, sind ueber das Praefix data_ gekennzeichnet. Die Klasse dient der Klassifizierung der Datenbankobjekte. Im vorliegenden Projekt erfolgen Berechnungen als Tabellenerstellungsabfragen ueber Prozeduren oder direkt als speicherextensive Loesung einer Datenmanipulation ueber die Update-Funktion, so dass lediglich drei Typen unterschieden werden. Die Klasse tbl steht fuer Datentabellen, tqry fuer ueber Abfragen erstellte Tabellen mit anderer Tabellenbasis und die themenspezifische Klasse Fuz fuer die Kennzeichnung von prozedurerstellten Tabellen innerhalb der Fuzzy-Logic Methodik. Erweiterungen mit Durchnumerierungen werden lediglich bei prozedurintern erstellten Tabellen verwendet. Die Spalten einer Tabelle als Feldnamen sind ueber die Tabellenstruktur mit zugehoerigem Datentyp auch inhaltlich beschrieben. Das Praefix id kennzeichnet Feldnamen mit der Funktion der eindeutigen Identifizierung, dt allgemeine Datenfelder, qcp sind ueber Prozeduren berechnete Felder sowie die themenspezifischen Feldnamen-Praefixe FI fuer Fuzzy-Input und FO fuer Fuzzy-Output. Die Verwaltung der Prozeduren erfolgt in der Datenbank ueber die sogenannten Module, die nach den drei Praefixen func_ fuer anwendungsuebergreifende Funktionen, menue_ fuer Prozeduren der Menuesteuerung und proc_ fuer die ereignisorientierte Prozeduren der Filter-Berechnungen unterteilt sind. 4. Hinweise Bei der Installation der Dateien von CD-ROM auf einen Rechner ist je nach Systemeinstellung die Dateieigenschaft Schreibgeschuetzt zu deaktivieren. Eine weitergehende Datennutzung der Daten bedarf dem Einverstaendnis der zustaendigen Institutionen: Luftchemie, Meteorologie: Umweltbundesamt, Berlin, Deutscher Wetterdienst, MohP Rueckwaertstrajektorien: Deutscher Wetterdienst, MohP Emissions-Inventar Coarse2Grid: IER, Universitaet Stuttgart