Sääkartta lämpötilakontuurein ja responsiivisena SVG:nä

Ilmatieteen laitoksen avointa dataa on saatavilla myös GRIB-muodossa. GRIB on binäärimuotoinen, standardisoitu, pakattu ja meteorologisen säädatan välitykseen käytetty tiedostoformaatti. GRIB-datapaketit voivat olla huomattavan suuria johtuen suuresta datan määrästä. GRIB-data on hilamuotoista, eli datalla on resoluutio, esim. 7km x 7km. GRIB-datasta voidaan kuitenkin sopivin menetelmin hakea interpoloitua dataa pisteeseen.

Olen aiemmassa artikkelissa kuvannut, mitä ohjelmia voi Linux-ympäristöön asentaa, jotta GRIB-tiedostoja voidaan koneellisesti lukea ja käsitellä. Ohjelmat ovat open sourcea ja vapaasti käytettävissä myös kaupallisiin sovelluksiin. Pythonin pygrib-kirjasto on erinomainen apu, ja sitä sekä matplotlibin pyplotia hyödyntäen olenkin saanut kehitettyä alla olevan Suomi-neidon lämpötilakontuurein SVG-muotoisena esityksenä. Gaussian-suodattimella (SciPy) sain dataa hieman hienosäädettyä ja kontuureiden rajoja pehmennettyä. Värit määritin -30 Celsius-asteesta +30 Celsius-asteeseen 5 asteen välein siten, että nolla ja sitä pienemmät ovat sinisen sävyillä ja nollan yläpuoliset lämpötilat punertavilla sävyillä.

Suomi-neito hyödyntää Ilmatieteen laitoksen Hirlam-säämallin GRIB-muotoista dataa. Ikävä kyllä animoidut sääsymbolit toimivat oikein vain Chromessa. Sääsymbolit kopioin täältä. Sittemmin huomasin, että toimivammat symbolit löytyisi täältä. Ikävä kyllä kumpikaan setti ei ole meteorologisesti täydellinen, enkä ole jaksanut alkaa itsekään niitä säätämään. Lämpötilaruudut kuvaavat pistesijaintien lämpötiloja numeerisesti. Kartta päivittyy uuteen kerran tunnissa. Uutta dataa haetaan Ilmatieteen laitoksen rajapinnasta neljä kertaa vuorokaudessa.

Samalla tulin kehittääkseni pythonilla (ja php:llä) GRIB_APIa hyödyntäen yksinkertaisen sääapin sääarvojen helppoa koordinaattikyselyä varten. Sääapia ei ole optimoitu, joten se on hidas ja kömpelö, eikä sitä kannata sellaisenaan käyttää, kuin testaukseen. Sääapi lukee suoraan kerran tunnissa ladattua GRIB-tiedostoa. Sääapia käytän Suomi-neidossa pistesijaintien arvojen lukemiseen. Esimerkkikysely 2 metrin lämpötilalle (vastauksena lämpötila Kelvineinä 42 tunnin ennusteena tunnin aikaresoluutiolla)

http://46.101.210.193/api.php?x=64&y=25&p=2t

Lisää tietoa sääapista:
http://46.101.210.193/api.php

Suomi-neito koostuu itse asiassa suorakaiteen muotoisesta kontuurilayerista sekä sen päälle asetetusta läpinäkyvästä svg-maskista. Kuvassa on siis turhaa dataa Suomen rajojen ulkopuolella, mutta en heti keksinyt, miten svg-kuvaa voisi optimoida tuolta osin. Pistesijaintien svg-sääsymbolit ja -lämpötilaruudut asetetaan lopuksi php:llä sopiviin koordinaatteihin jo luotuun svg-kuvaan.

SVG:n toimintaa ja responsiivisuutta voi testata osoitteessa http://46.101.210.193 (Huom. animoidut sääsymbolit eivät toimi oikein kuin Chromessa)

 

Julkaistu kohteessa Uncategorized

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*