Wetter-Analyse in Dekaden ("WADE")

Was kann "WADE"?

Dieses kleine Werkzeug kann Wetter-Rohdaten wie Temperatur, Sonnenschein oder Niederschlag von verschiedenen Quellen importieren und verarbeiten. Die zeitliche Aufteilung der Analyse liegt dabei in Dekaden, also jeweils 10 Tage. Das macht drei pro Monat und konsequenterweise 36 pro Jahr. Die Ausgabe erfolgt dabei nach verschiedenen Kriterien als Grafik oder Textdatei. Möglich sind Jahresrückblicke, Rekorde und das Zählen von Tagen, die bestimmte Schwellwerte (z.B. wärmer als x Grad) erreichen. Ein Klimamittel, falls man vergleichen möchte, wird automatisch mit errechnet.

Was brauche ich um "WADE" auszuführen?

Wozu der Texteditor?

Viele Einstellungen befinden sich in einer Konfigurationsdatei. Keine Sorge, das ist nicht kompliziert, denn du wirst nur wenig anpassen mögen. Dazu zählt das Einrichten eines Ordners, wo die Rohdaten zwischengespeichert werden und welche Daten du im Diagramm für den Jahresvergleich heranziehen möchtest. Zum Beispiel Temperatur, Sonnenschein, Luftdruck oder Niederschlag.

Vektorgrafik? Was ist das denn? Browser, kenne ich...

In wenigen Sätzen: Grafiken oder Bilder sind üblicherweise gerastert. Das bedeutet ihnen liegt ein feste Anzahl an Bildpunkten und Abstand deren zu Grunde, z.B. die Megapixel bei einer Digitalkamera oder Bildschirmen. Jedes Pixel hat dabei eine Farbe. Möchte ich ein Kreis haben oder ein Rechteck muß ich entsprechend der Form die Pixel einfärben. Bei einer Vektorgrafik gebe ich nur den Ort und den Radius an. Welche Pixel nun genau verwendet werden, muß mich nicht kümmern. Da Diagramme aus Primitiven (Vielecke, Kreise und Linien) bestehen, ist das "Zeichnen" einfacher und PHP benötigt keine dafür Erweiterung im Gegensatz zur Rastergrafik.

Ein alltägliches Anzeigeprogramm für Vektorgrafiken ist dein Internet-Browser. Alles, was nicht älter als ein oder zwei Jahre ist, sollte das von sich aus können. Eine Kompatiblitätsliste der Browser für das verwendete Vektorformat findet sich bei Wikipedia.

Welche Roh-Daten kann ich einlesen?

Zur Zeit nur die öffentlichen Datensätze des Deutschen Wetterdienstes im KL2000-Format. Auf deren Internetseite sind die unter "Klima + Umwelt → Klimadaten → Online Frei" zu finden. Dort dann "Klimadaten Deutschland → Messstationen → Termin- und Tageswerte". Ein paar Stationen sind in "WADE" bereits vorkonfiguriert.

Wie richte ich nun alles ein?

So, du hast das ZIP-Archiv von "WADE" in einen Ordner entpackt und liest gerade diese wundervolle Anleitung? Gut. Richte PHP ein, bewaffne dich mit der oben genannten Konsole/Terminal/Eingabeaufforderung und einem Texteditor. Vielleicht magst du noch ein erfrischendes Getränk holen und das Telefon aushängen, damit du nicht gestört wirst :)

Zuerst "WADE". Der Einfachheit halber solltest du diese Software in ein eigenen Ordner deiner persönlichen Dateien kopieren (oder auf einen externen Datenträger wie ein USB-Stick oder Netzwerk-Laufwerk). Unter Windows sind dies die "Eigenen Dateien", MacOS X und Linux nennen das üblicherweise "Persönlicher Ordner". Dort finden sich dann auch Unterordner wie "Dokumente", "Bilder" oder "Musik". Wo du "WADE" hinkopierst überlasse ich vertrauensvoll dir. Merke dir jedoch den Pfad/Ordner! Dieser steht im Dateimanager ("Explorer/Finder/Nautilus/Dolphin" etc.) in der Adresszeile. Windows nennt ihn, je nach Betriebssystem-Version etwas abweichend, "c:\Dokumente und Einstellungen\[deinname]\Eigene Dateien". Statt "DuE" heißt es ab Vista "Users" oder "Benutzer". Linux und MacOS X legen persönliche Dateien in "/home/[deinname]" ab. "deinname" ist dabei dein Benutzername mit dem du dich am Betriebssystem anmeldest.

Jetzt wird PHP eingerichtet. Unter Windows installierst du dies mit einem Installationspaket global oder lokal über ebenfalls angebotene ZIP-Pakete. Ich empfehle dir letzteres, wenn du keine andere PHP-Software einsetzt. In dem Fall lädst du das ZIP herunter (ob "thread-safe" oder nicht ist hier egal) und entpackst die "php.exe", die "php5.dll" ("php5ts.dll" bei "thread-safe") sowie die "php-ini.dist" in den "WADE"-Ordner. Benenne letzteres in "php.ini" um. Das war es dann schon. Bei MaxOS X oder Linux rate ich zu den fertigen Paketen bzw. was die Paketverwaltung deiner Distribution hergibt (siehe oben). PHP selber aus den Quellen zu übersetzen ("kompilieren") ist natürlich möglich, aber nicht ganz einfach und hier schlicht unnötig.

So, Konsole/Eingabeaufforderung/Terminal offen? Sehr gut. Für hauptberufliche Mausschubser (nicht böse gemeint :) kommt nun das schwierigste. Wechsele in den "WADE"-Ordner, indem du einen Befehl eingibst und mit der Eingabetaste bestätigst. Dies geht mit "cd". Zwei Beispiele:

cd "c:\Users\[deinname]\Eigene Dateien\Dekaden-Analyse" cd /home/[deinname]/Dokumente/Dekaden-Analyse
Am Anfang der Kommandozeile sollte der Pfad nun erscheinen. Mit einem "dir" unter Windows oder "ls" bei MacOS X und Linux sollten dir alle "WADE"-Dateien aufgelistet werden. Schauen wir nun nach, ob du "WADE" nun nach folgendem Musterbefehl zum Laufen bekommst. Hier ein paar Beispiele:
php dekaden_analyse.php php.exe dekaden_analyse.php c:\programme\php\php.exe dekaden_analyse.php /usr/local/php5/bin/php dekaden_analyse.php

Wenn die Sache rund läuft, meldet sich "WADE" mit einem Hilfetext auf dem Bildschirm. Dieser gibt einen ersten Überblick über die Funktionen und die Informationen, die du angeben mußt. Im oberen Bereich findest du aufgelistet, welche Umgebung vorgefunden wurde: PHP-Version und Pfadangaben. In deinem Texteditor kannst du nun die Konfigurationsdatei von "WADE" öffnen. Sie liegt im entsprechenden Ordner und heißt "wade.konfiguration.php".

So, nun Butter bei die Fische...

Stationen auflisten (--liste)

(...)/dekaden_analyse.php --liste

Nun, diese Option ist weitesgehend selbsterklärend. Alle in der Konfigurationsdatei aufgelisteten Wetterstationen, werden hier mit ihren Daten angezeigt. Ganz links in Sternchen ist der interne Name, den du bei allen Aktionen entsprechend angeben mußt. Welche Rohdateien bereits im lokalen Zwischenspeicher vorliegen, wird ebenfalls angezeigt. Zusätzlich zu ihrem Datum und Dateigröße. Die Stationen selber lassen sich in der Konfigurationsdatei verwalten. Dafür benötigst du den oben erwähnten Texteditor. Der Unterpunkt "daten" beherbergt dort die Stationen.

Rohdaten importieren (--import)

(...)/dekaden_analyse.php --import --station=[Name]

Dies holt die eingestellten Rohdateien vom entsprechenden Ort, im Internet oder lokale Festplatte, und importiert sie in den Zwischenspeicher. Dabei werden die Daten auf formale Korrektheit geprüft. Möchtest du neuere Daten haben, dann importiere erneut. Idealerweise werden nur neue Daten abgefragt, um das Übertragungsvolumen gering zu halten und natürlich so Aktualisierungen zu beschleunigen.

Jahresrückblick erstellen (--export)

(...)/dekaden_analyse.php --export --station=[Name] --jahr=[Jahr] --vergleich=[Jahre] --typ=[Typ]

Erstellt die Vektorgrafik mit den geforderten Datenreihen. Diese legst du in der Konfigurationsdatei unter dem Punkt "grafik" fest. Den Ort, wo diese abgelegt werden sollen, kannst du vorher jedoch anpassen. Standardmäßig liegt dies im "export"-Unterordner von "WADE". Als jahr gibst du logischweise das auszuwertende Jahr vierstellig (z.B. 1990) an. Der vergleich berechnet ein Mittelwert aus beliebig vielen Jahren mit dem das ausgewählte Jahr verglichen wird. Das kann ein einzelnes Jahr sein, aber auch mehrere und so ein Klimamittel darstellen (z.B. 1961-1990). Drei verschiedene typ[en] gibt es zur Auswahl. Standardmäßig wird die "abweichung" vom errechneten Klimamittel ermittelt. "mittel" berechnet die Mittelwerte der Vergleichsjahre - ergo das klassische "Klimamittel". Und schließlich noch "absolut", welches die Werte aus dem gewählten Jahr auswertet. Die fertige Grafik kannst du dir dann anschauen.

Rangliste erstellen (--hitliste)

(...)/dekaden_analyse.php --hitliste --station=[Name] --vergleich=[Jahre] --typ=[Typ]

Mit vergleich gibst du hier die auszuwertenden Jahre an. Dies kann ein einzelnes sein oder mehrere als Zeitspanne. Dabei wird ein Report verfasst und im entsprechenden "report"-Unterordner von "WADE" abgelegt. Der typ gibt das Format dessen an. Über die Konfiguration kannst du die Bedingungen anpassen, welche Dekaden eines Jahres ausgewertet werden sollen. Dazu welcher Datensatz wie Temperatur oder Niederschlag und wieviele Jahre mit den höchsten oder den niedrigsten Werten aufgelistet werden sollen.

Dekadenrekorde ermitteln (--rekorde)

(...)/dekaden_analyse.php --rekorde --station=[Name] --vergleich=[Jahre] --typ=[Typ]

Mit vergleich gibst du hier die auszuwertenden Jahre an. Dies kann ein einzelnes sein oder mehrere als Zeitspanne. Dabei wird ein Report verfasst und im entsprechenden "report"-Unterordner von "WADE" abgelegt. Der typ gibt das Format dessen an. Berechnet werden aktuell die drei Temperaturangaben (max, mittel und min) mit jeweils den höchsten und niedrigsten Wert in einer Dekade. Dabei gibt es zwei Zusammenfassungen: Einmal für die gesamte Dekade und ein anderes mal ein einzelner Tag in der jeweiligen Dekade. So kann zum Beispiel eine 3. Aprildekade im Jahr xy die wärmste gewesen sein, aber in einem anderen Jahr gab es den absolut wärmsten Tag der Dekade. Welches du davon auswerten möchtest, wird ebenfalls in der Konfigurationsdatei im Punkt "rekorde" festgelegt.

Tage mit erfüllter Bedingung zählen (--wieselflink)

(...)/dekaden_analyse.php --wieselflink --station=[Name] --vergleich=[Jahre] --bedingung=[Bedingung] --typ=[Typ]

Diese Funktion zählt wieselflink die Tage, welche im geforderten Zeitraum, eine bestimmte Bedingung erfüllen, z.B. Höchstwerte höher oder gleich 25 Grad haben. Die bedingung legt dies, z.B. mittels "temperatur_max >= 25" oder "niederschlag > 0", fest. Mit vergleich gibst du hier die auszuwertenden Jahre an. Dies kann ein einzelnes sein oder mehrere als Zeitspanne. Dabei wird ein Report verfasst und im entsprechenden "report"-Unterordner von "WADE" abgelegt. Der typ gibt das Format dessen an. Standardmäßig werden alle Monate untersucht und aufgelistet. Möchtest du nur bestimmte auswerten, wird ebenfalls in der Konfigurationsdatei im Punkt "wieselflink" festgelegt.

Probleme, Fragen und weiteres...

Wie passe ich die Konfiguration am Besten an?
Ich empfehle dir eine "benutzerdefinierte Konfiguration" zu verwenden. So bleiben deine Änderungen beim Aktualisieren auf eine neue "WADE"-Version erhalten. Das Programm besitzt den --konfiguration-Schalter, um eine solche Datei bei jedem Aufruf zu laden. Das kann natürlich jedesmal eine andere sein, wenn du magst. So lassen sich zum Beispiel schnell verschiedene Export-Einstellungen hinterlegen. Eine solche Konfigurationsdatei kannst du ganz normal im "WADE"-Ordner anlegen und mit dem Texteditor anpassen. Sie haben die Dateiendung ".ini" und drei Beispieldateien sind bereits im Paket enthalten.

Die vorhandenen Schlüssel in "wade.konfiguration.php" kannst du so ändern oder entfernen. Ein Beispiel: Du möchtest die Breite der Diagrammbalken ändern. In der Konfigurationsdatei findest du verschiedene Ebenen, welche mit Tabulatoren eingerückt sind. Unter der ersten Ebene "grafik" findest du den Schlüssel "diagramm_balken_breite" mit dem Wert "4". Das bedeutet 4 Pixel Breite. In einer eigenen .ini-Datei schreibst du dann "grafik.diagramm_balken_breite = 6", wenn du 6 Pixel Breite möchtest. Die Einrücktiefe der Ebenen wird hier mit einem Punkt getrennt. Vorhandene Schlüssel werden mit einem "(unset)" entfernt, beispielhaft auch in zwei der mitgelieferten .ini-Dateien.
Gibt es keine grafische Oberfläche?
Zur Zeit nicht. Da benötige ich Hilfe, da ich mich damit nicht auskenne. Sie müßte natürlich unabhängig vom verwendeten Betriebssystem sein (für die Experten: In Java, Qt, GTK, .NET, wxWidgets oder ähnlich). Dies ändert jedoch nichts daran, daß PHP benötigt wird. Eventuell läßt es die Lizenz aber zu, daß man den Interpreter fest mit der GUI vertreibt.
Mein älterer Internet-Browser kann die Vektorgrafik nicht darstellen
Wenn du nicht auf eine neuere Version aktualisieren kannst oder magst, bleibt noch die Möglichkeit einen zweiten parallel zu installieren. Von einigen der verbreiteten gibt es auch sogenannte "Portable Versionen", die nicht installiert werden müssen. Sie laufen, nachdem sie auf Festplatte oder ein USB-Stick kopiert wurden und hinterlassen keine Spuren im Betriebssystem.
Ich kann die Rohdaten nicht vom Internetserver einlesen
Prüfe deine Internetverbindung. Schaue in die "WADE"-Konfigurationsdatei und versuche eine der Rohdateien über deinen Browser herunterzuladen. Wenn du sie so von Hand einsammelst, speichert du sie auf Festplatte und gibst den Pfad diese Dateien in der Konfiguration an. Leider ist dies bei häufigerem Herunterladen störend und aufwendig - sollte aber idealerweise auch nicht nötig sein. In manchen Netzwerken dürfen Computer nicht direkt auf das Internet zugreifen. Dafür mußt du mit einem Vermittler, sogenannte Proxies, "sprechen". In einem Unternehmen dürfte dein System-Administrator der Ansprechpartner sein. In Heimnetzwerken kommen diese seltener vor und im Zweifel ist dies dein Revier.
Fatal error: Allowed memory size of xxxxxxxx bytes exhausted
Du verwendest eine sehr große Datenbasis und PHP darf zur Analyse nicht genug Hauptspeicher anfordern. Die Begrenzung liegt in diesem Fall jedoch bei PHP selber und kann von dir erhöht werden. Finde zuerst deine PHP-Konfigurationdatei heraus. Dazu kannst du [Pfad zu PHP] --ini aufrufen und in der Zeile "Loaded Configuration File" nachsehen. Klappt dies nicht suche nach dem Dateinamen "php.ini" auf deiner "C-Partition" unter Windows oder in "/etc" unter Linux sowie MacOS X. Bei der lokalen Installation unter Windows liegt die "php.ini" im WADE-Ordner. Diese Datei mußt du im Texteditor öffnen und nach der Zeile "memory_limit" suchen. Mit "128M" liegst du gut im Rennen. Zum Ändern der Datei können Administrator-Rechte erforderlich sein.