Opět jsem po čase nahlédl do kódu svého meteorologického prográmku Metaris, který z databáze serveru NOAA METAR čte meteorologická data ze světových letišť. Brněnské letiště má identifikaci LKTB a právě pro LKTB každou hodinou Metaris sbírá data již od listopadu 2005.

V nové verzi přibyl především nový plugin WINDCOMPAS a přepracovaný plugin interface, který budu používat ve všech svých projektech včetně tohoto blogu. WINDCOMPAS přidává do hlavního grafu větrné směrové růžice nebo spíše polygony s určením směru větrů a procentuálně vyjádřené váhy daného směru. WINDCOMPAS se používá pro směrovou růžici zvoleného měsíce, aktuální den (i když prohlížíme data pro jiný měsíc) a od prosince 2006 také dlouhodobý průměr pro daný měsíc - dnes tedy pro tentýž měsíc, ale rok starý. Prohlížíme-li tedy data pro měsíc leden 2007, poslední WINDCOMPAS načte data pro měsíc leden 2006.

Metaris 0.5
Kompletní plot/graf Metaris 0.5 s pluginy WINDCOMPAS a  TEMPHISTOGRAM.

U každého polárního grafu WINDCOMPAS je také informace o procentuální míře CALM případů - tedy bezvětří. WINDCOMPAS můžete zkonfrontovat s textovou statistikou pod hlavním grafem, kde na pravo od průměrné rychlosti větru v daném měsíci vidíte i zkratku směru větru s nejčetnějším výskytem v daném měsíci. Pokud je nejčastějším směrem směr proměnlivý, tedy neurčitelný, napíše se "+".

Složitá legenda

Již nyní se v hlavním grafu vypisuje okolo 11 statistických proměnných. Legendou jsou popsány trajektorie pro teplotu, tlak, rosný bod, absolutní teploty aj. Z dalšíchzobrazovaných proměnných:

LegendaV horní části se nám zobrazuje mezidenní změna průměrných teplot vzduchu. Šipka určuje, zda-li se mezi dvěma dny průměrná teplota vzduchu zvýšila nebo snížila, případně pokud se nezměnila (pokud je rozdíl teplot rovný nebo menší než 0.5 stupňů Celsia). Číselný údaj představuje absolutní honotu této změny.

 LegendaObsah hlavního grafu s vektory představuje časovou měsíční osu. Na ose x se nacházejí dny vybraného měsíce, na ose y pak teplota resp. tlak (poměr mezi stupnicí pro teplotu a tlak se nachází u legendy pro tlak pod hlavním grafem). Tyto trajektorie si můžete vybrat v nastavovacím formuláři a vytvořit si tak graf dle vlastního gusta.

LegendaDolní graf určuje některé další aritmetické průměry. V horním řádku se nachází průměrná denní hodnota relativní vlhkosti vzduchu. Dny s průměrnou relativní vlhkostí vzduchu nad 80% jsou označeny modře, suché dny pak oranžově. "Modré" dny jsou zpravidla deštivě či s mlhou; je tedy zataženo. "Oranžové" dny jsou suché, pravděpodobně přechází tlaková výše, je polojasno či jasno. V každém případě určitě neprší. Druhý řádek se věnuje nejčastějšímu typu  oblačnosti během dne. Oblačnost může být buď malá, střední nebo velká. To odpovídá anglickým zkratkám L,M,F (Light, Middle, Full).  Číselný údaj pak představuje počet hodin tohoto nejčastějšího typu. Údaj L16 pak tedy znamená: "Během dne převládalo pěkné počasí. Nízká oblačnost trvala 16 hodin". Na třetím řádku se nachází "semafor" určující kvalitu dat pro zvolený den. Pokud semafor svítí zeleně, data jsou velmi kvalitní a relevantní. Čím více se blíží barva semaforu tmavě červenému odstínu, tím více výpadků během dne nastalo (ne vždy se podaří zaznamenat všech 24 údajů během dne, protože data z databáze NOAA METAR nejsou vždy stoprocentně aktualizované každou hodinu). Závěrečný řádek představuje den v měsíci a barvou označený víkend.

METARIS je plně objektový PHP5 systém s velmi snadnou implemetací  rozšiřujících pluginů, které lze stoprocentně nastavit v konfiguračním souboru bez nutnosti zásahu do kódu.

Ukázka pro programátory:

$this->implementPlugin("plugin.php",$pluginname,$setup);


Metoda hlavní třídy implementPlugin volá nejdříve callback třídu Plugin ve skriptu plugin.php s parametry $pluginname, což je jméno pluginu a zároveň třídy pluginu a $setup, který obsahuje vícedimenzionální  asociativní pole s kompletním nastavením celé aplikace.

Ukázka v akci:


private function loadPlugin($plugin){
    $nastaveni = &$this->setup[$plugin];
    $nastaveni["year"]=$this->datetime["y"];
    $nastaveni["month"]=$this->datetime["m"];
    $nastaveni["day"]=$this->datetime["d"];
    $this->implementPlugin("plugin.php",$plugin,$nastaveni);
}


Metoda loadPlugin přidá časové údaje pro plugin a změněný konfigurační registr $this->setup[] pošle společně se jménem pluginu skriptu plugin.php, který vše zpracuje a vloží do hlavního plotu/grafu na pozici "float:left" vygenerovaný graf, tedy obrázek.

Vlastní programování celého geometrického prostoru, které je celkem zdlouhavé a dostávám se občas až nad rámec povolené alokované paměti skriptu na tomto hostingu (pipni.cz), mě vede k myšlence celý prográmek přepsat do interaktivní animace Flash s kvalitním antialiasingem a obecně více možnostmi než práce s grafickou knihovnou GD2. Snad tedy ve verzi 1.0.

Metaris 0.5 - domácí stránka