1
Ohjelmointi, palvelimet ja muu edistyneempi käyttö / Vs: Mistä saa ryystettyä reaaliaikaisen lämpötilatiedon? [RATKAISTU]
« : 19.01.19 - klo:14.25 »
Tässä vielä yksi esimerkki, miten hankkia viimeisin lämpötila (yms.) Ilmatieteen laitokselta JSON- tai XML-muodossa (1/2019):
JSONista saa poimittua viimeisimmän lämpötilan helposti esimerkiksi JavaScriptillä:
- Hae paikallissää (esim. Olari): https://ilmatieteenlaitos.fi/saa/espoo/olari. Kohdassa "Paikalliset säähavainnot" näkyy lähin sääasema (esim. "Espoo Tapiola")
- Hae kyseisen sääaseman FMISID: https://ilmatieteenlaitos.fi/havaintoasemat (esim. 874863)
- "Viimeisin" lämpötila XML-muodossa (vaihda URLiin fmisid): http://opendata.fmi.fi/wfs?service=WFS&version=2.0.0&request=getFeature&storedquery_id=fmi::observations::weather::simple&fmisid=874863¶meters=t2m&starttime=-60&endtime=now×tep=30
- "Viimeisin" tarkoittaa paria edellistä tasa- tai puolituntista. En heti keksinyt, miten saisi viimeisimmän mittauksen. Todennäköisesti ei toimi, jos uusin lukema on yli tunnin vanha.
- storedquery_id=fmi::observations::weather::simple ---> lisätietoa täällä: https://en.ilmatieteenlaitos.fi/open-data-manual-fmi-wfs-services ja täällä: https://ilmatieteenlaitos.fi/latauspalvelun-pikaohje
- parameters=t2m ---> tarkoittaa lämpötilaa. Jätä parameters kokonaan pois, niin tulee muutakin.
- starttime & endtime ---> ovat normaalisti ISO 8601 -muodossa (UTC-aikaa), esim. 2019-01-10T07:05:57Z
- Paikalliset säähavainnot JSON-muodossa (kuten nm sanoi tuolla edellä: https://forum.ubuntu-fi.org/index.php?topic=51838.msg397059#msg397059):
- https://ilmatieteenlaitos.fi/observation-data?station=874863 (vaihda FMISID=station)
- Lämpötila: hae "t2m"
JSONista saa poimittua viimeisimmän lämpötilan helposti esimerkiksi JavaScriptillä:
Koodia: [Valitse]
// https://ilmatieteenlaitos.fi/observation-data?station=874863 -----> httpContent
var jsonData = JSON.parse(httpContent);
var temperatureArray = jsonData.t2m;
var lastTemperature = temperatureArray[temperatureArray.length-1]; // [epochtime, value]
var lastTemperatureValue = lastTemperature[1];