Kirjoittaja Aihe: Mistä saa ryystettyä reaaliaikaisen lämpötilatiedon? [RATKAISTU]  (Luettu 18468 kertaa)

anonyymi_007

  • Käyttäjä
  • Viestejä: 3
    • Profiili
Eipä ilmatieteenlaitos tätä ole tehnyt mitenkään helposti lähestyttäväksi.
Moni haluais varmaan simppeliä JSONia eikä XML overhead oksennusta.

Tämä https://ilmatieteenlaitos.fi/observation-data?station=1234567 on hyvä löytö. Tämä ei taida olla mikään virallinen API?
Tosin, ois kiva tietää mistä löytyis lisää parametreja, esim. anna vain viimeisin havainto (tosin se viimeisen epoch aika näkyy tossa JSONin alussa). Täytyypä veronmaksajana ja omistajana ;-) kysyä ilmatieteenlaitokselta.

Sitten tossa EPOCH/Unix aikastampissa on liikaa nollia perässä "1556616000000" ->"1556616000".

Onko joku käyttänyt tätä: https://ilmatieteenlaitos.fi/observation-data?station=1234567 jo vuosia? toimii luotettavasti?

nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Eipä ilmatieteenlaitos tätä ole tehnyt mitenkään helposti lähestyttäväksi.
Moni haluais varmaan simppeliä JSONia eikä XML overhead oksennusta.

WFS on paras yleinen standardi säähavaintojen ja -ennusteiden välittämiseen, ja sen vakioformaatti on XML. Periaatteessa WFS 2.0 voisi tarjota myös JSON-dataa, mutta sitä ei nähtävästi ole toteutettu FMI:n palvelussa.

Tämä https://ilmatieteenlaitos.fi/observation-data?station=1234567 on hyvä löytö. Tämä ei taida olla mikään virallinen API?

Se on FMI:n nettisivua ja varmaankin myös mobiilisovelluksia varten suunniteltu rajapinta. Ei varsinaisesti tarkoitettu avoimen datan lähteeksi, joten saattaa muuttua varoittamatta.


Tosin, ois kiva tietää mistä löytyis lisää parametreja, esim. anna vain viimeisin havainto (tosin se viimeisen epoch aika näkyy tossa JSONin alussa). Täytyypä
veronmaksajana ja omistajana ;-) kysyä ilmatieteenlaitokselta.

Tuskinpa saat muuta vastausta kuin että avoimen datan rajapinta on dokumentoitu ja vapaasti käytettävissä.

Voit tutkia, miten FMI:n sivusto käyttää JSON-rajapintaa eri sivuilla, mutta voi olla niinkin, ettei sieltä saa pelkkää viimeistä havaintoa ulos.


Sitten tossa EPOCH/Unix aikastampissa on liikaa nollia perässä "1556616000000" ->"1556616000".

Se on JavaScript-tyyliin epoch-aikaleima millisekunteina, ja palvelee hyvin rajapinnan tarkoitusta. Jaa luku tuhannella, jos tarvitsee muuntaa sekunneiksi. :)


Onko joku käyttänyt tätä: https://ilmatieteenlaitos.fi/observation-data?station=1234567 jo vuosia? toimii luotettavasti?

No ainakin reilut pari vuotta on nähtävästi toiminut tuon osoitteen kautta. Luulisi olevan suhteellisen luotettava, kun virallinen nettisivu käyttää kyseistä rajapintaa.

anonyymi_007

  • Käyttäjä
  • Viestejä: 3
    • Profiili
Huh, menipä tovi C#:lla. En halunnut käyttää indexejä. Sain ratkaistua tuon anonymous type listalla. Joku tietty voi tähänkin keksiä miten tuon saa rutistettua ilman tuota välioperaatiota -> tai siis tungettua kaiken yhdelle riville. Kun tuossa elementissä on kivasti 2 arvoa, saa ne ulos näppärästi First ja Last propertyillä.

Noh, jos tästä on jollekkin apuja:
Koodia: [Valitse]

                    JObject jsonObj = JObject.Parse(json);
                    // "latestObservationTime" -> 1557340800000
                    var latestEpochTimeStamp = jsonObj.SelectToken("latestObservationTime").Value<double>();
                    //"t2m" -> [[1557335400000,8.7],[1557335400000,8.6] ....]
                    var t2ms = jsonObj.SelectToken("t2m").Select(a => new { UnixTime = (double)a.First, Temperature = (float)a.Last });
                    var temperature = t2ms.FirstOrDefault(b => b.UnixTime == latestEpochTimeStamp).Temperature;
                    // "Humidity" -> -> [[1557335400000,8.7],[1557335400000,8.7] ....]
                    var humis = jsonObj.SelectToken("Humidity").Select(a => new { UnixTime = (double)a.First, Humidity = (int)a.Last });
                    var humidity = humis.FirstOrDefault(b => b.UnixTime == latestEpochTimeStamp).Humidity;

Roberto

  • Käyttäjä
  • Viestejä: 174
    • Profiili
Tarvitsin nopeasti tämän hetken tietoja Vantaalta ja muokkasin tällaisen.
Käyttää gxmessage ohjelmaa.
Laitoin myös otsikot näkymään suomeksi foreca.py tiedostossa.
"null" on muodossa "- "
Koodia: [Valitse]
python3 ./foreca.py http://www.foreca.fi/Finland/Vantaa >/tmp/Vantaa.txt && \
tulos=$(awk 'NR >= 1 && NR <= 13' /tmp/Vantaa.txt >/tmp/Vantaa2.txt ) && \
gxmessage -center -title "Helsinki-Vantaa säätila" -timeout 60 -font "Monospace 10" -buttons "Valmis":1 \
-geometry 420x320 -file /tmp/Vantaa2.txt --wrap
« Viimeksi muokattu: 09.05.19 - klo:05.55 kirjoittanut Roberto »
Dell OptiPlex 7470 (All in One), i5-9500T (6) @ 4,400GHz, 32 GiB DDR4, Samsung 970 EVO Plus (M.2 2280) 500 Gt
Dell OptiPlex 7440 (All in One), i5-6500  (4) @ 3.600GHz, 16 GiB DDR4, Samsung 970 EVO Plus (M.2 2280) 500 Gt
Jäähyllä olevat: Amiga 500, C64