# Sadetutka Helsinki — lähteet, käyttö ja rajat

Päivitetty 22.10.2026. Oma superdupersää.-visualisointi. Tutkakuvat ovat havaintoja, eivät sade-ennusteita. Kartan värit kuvaavat tutkaheijastuvuutta dBZ-yksikössä, eivät millimetrejä tunnissa. Harmaa tarkoittaa puuttuvaa tutkamittausta; läpinäkyvä alue tarkoittaa alle 8 dBZ:n signaalia, ei lupausta kaikkien sateiden puuttumisesta.

## Käyttö

Avaa sadetutka sivun alaosasta. Animaatio toistuu automaattisesti. Aikajanan vetäminen pysäyttää toiston; irrottaminen jatkaa valitusta ruudusta. Käyttäjän erikseen valitsema Tauko säilyy. Vähennetyn liikkeen käyttöjärjestelmäasetus aloittaa taukotilassa.

Uusin havainto vie uusimpaan ladattuun ruutuun. Jos sen lataaminen epäonnistui, painikkeessa lukee Uusin ladattu. Valitun kuvan päivämäärä ja kellonaika ovat aina näkyvissä. Kellonajat ovat Europe/Helsinki-ajassa; syksyn toistuvissa kellonajoissa näkyy UTC-siirtymä. Puuttuvien ruutujen yli siirrytään ilman keksittyjä välikuvia.

Mobiilissa kartan siirtäminen avataan Liikuta karttaa -painikkeella. Valmis palauttaa normaalin sivuvierityksen. Zoomauspainikkeet toimivat myös ilman siirtotilaa. Tietokoneella hiirellä voi liikuttaa karttaa; sivun hiirirulla ei zoomaa vahingossa karttaa. Helsinki-painike palauttaa oletusrajauksen.

Lämpötilat ovat FMI:n viimeisimpiä asemamittauksia omilla aikaleimoillaan. Ne eivät muutu tutka-animaation mukana eikä niitä väitetä samanaikaisiksi kelatun tutkahavainnon kanssa. Yli 40 minuuttia vanhat lämpötilat poistetaan.

## Tutkadata ja marraskuun 2026 muutos

FMI:n WFS-palvelu tutkittiin ensisijaisesti. `fmi::radar::composite::dbz` palautti tarkistuksessa GeoTIFF-viitteitä vanhaan `Radar:suomi_dbz_eureffin`-tasoon. FMI ilmoittaa vanhojen tasojen poistuvan marraskuussa 2026. Tuotantototeutus käyttää tämän vuoksi FMI:n virallista AWS Open Data -GeoTIFF-jakelua ja uutta tuotetta:

`YYYY/MM/DD/finrad/YYYYMMDDHHMM_finland_cappi_600_dbzh_finrad_qc.tif`

Kyseessä on laaduntarkistettu Suomen yhdistelmä, PCAPPI 600 m, DBZH. Tuotteen todellinen saatavuus ja tiedostomuoto tarkistettiin 22.10.2026. Tuotantokoodi ei kutsu WMS-palvelua eikä Testbed-verkkosivua.

- Lähde: Ilmatieteen laitos, CC BY 4.0. Muutokset: Helsingin seudun rajaus, uudelleenprojektio ja oma väriskaala.
- GeoTIFF: EPSG:3067, 250 m pikselit, 8-bittinen DBZH. Muunnos `dBZ = 0,5 × raakapikseli − 32`. Puuttuva arvo 255; alle 8 dBZ läpinäkyvä.
- Rasterin todellinen koordinaatisto ja rajat luetaan tiedostosta. Tuntematon koordinaatisto, bittisyvyys tai puuttuvan tiedon tunniste aiheuttaa virheen, ei arvattua kohdistusta.
- Selaimen erillinen Web Worker lukee vain Helsingin rajauksen GeoTIFF-ikkunan ja piirtää sen Web Mercator -kuvaksi. Cloudflare ei pura GeoTIFFiä, laske projektiota eikä tuota PNG-kuvia.
- 13 viimeisintä ruutua, tavallisesti 60 minuuttia historiaa. Enintään 90 minuuttia vanhat ruudut hyväksytään, joten häiriötilanteessa historia voi olla lyhyempi tai sisältää aukkoja.
- Yli 20 minuutin viive merkitään. Yli 90 minuutin ikäiset ruudut poistetaan näkymästä. Päivityshäiriö näkyy erikseen.

Viralliset lähteet:
- https://en.ilmatieteenlaitos.fi/open-data-manual-radar-data
- https://en.ilmatieteenlaitos.fi/radar-data-on-aws-s3
- https://www.ilmatieteenlaitos.fi/avoin-data-saatutkat
- https://en.ilmatieteenlaitos.fi/open-data-manual-view-services
- https://en.ilmatieteenlaitos.fi/open-data-licence

## Lämpötilat

FMI WFS `fmi::observations::weather::simple`, parametri `t2m`, kiinteä rajaus 24.6,60.1–25.3,60.4. Käytetään aitoja asemakoordinaatteja ja uusinta enintään 40 minuuttia vanhaa arvoa kustakin pisteestä. Ei interpolointia. Tarkistuksen 22.10.2026 vastauksessa oli viisi mittauspistettä. Asemien saatavuus voi muuttua; lähteestä puuttuvaa lämpötilaa ei korvata nollalla.

## Kartta ja nimet

Leaflet 1.9.4, geotiff.js 2.1.3 ja proj4 2.19.10 on rakennettu pakettiin. Kolmannen osapuolen JavaScriptiä ei ladata CDN:stä. Lisenssit: `/radar/THIRD-PARTY-LICENSES.txt`.

Karttapohja: © OpenStreetMap contributors, ODbL. Näkyvät karttatiilet ladataan suoraan `tile.openstreetmap.org`-palvelusta vain tutkan avaamisen jälkeen. Ei tiilien massalatausta, offline-arkistoa eikä useiden zoomaustasojen ennakkolatausta. Selaimen normaalia HTTP-välimuistia kunnioitetaan ja viittaava sivusto lähetetään tile-palvelulle. Karttapohjan värisävyjä on muutettu CSS:llä tummaa teemaa varten. OSMF:n palvelu on maksuton ja best effort; saatavuudelle ei ole takuuta. Pyyntö sisältää tavallisen IP-osoitteen ja viittaavan sivuston, kuten verkkokartoissa yleensä.

- https://www.openstreetmap.org/copyright
- https://operations.osmfoundation.org/policies/tiles/
- https://leafletjs.com/reference

Nimet ovat alueiden sijaintiankkureita, eivät hallinnollisia rajoja. WGS84-koordinaatit tarkistettiin paikkatietolähteistä. GeoNames, CC BY 4.0; Kalasataman ankkuri on alueen koordinaatti Wikipediassa/Wikidatassa.

| Nimi | Leveysaste | Pituusaste |
|---|---:|---:|
| Kamppi | 60.1676034 | 24.9303818 |
| Pasila | 60.1989712 | 24.9321842 |
| Malmi | 60.2517123 | 25.0113568 |
| Kalasatama | 60.1847900 | 24.9805070 |
| Itäkeskus | 60.2101455 | 25.0814438 |
| Maunula | 60.2287323 | 24.9308109 |
| Kulosaari | 60.1857205 | 25.0051604 |

- https://www.geonames.org/advanced-search.html?q=Helsinki/Finland&startRow=50
- https://www.geonames.org/advanced-search.html?q=Helsinki/Finland&startRow=100
- https://www.geonames.org/advanced-search.html?country=FI&q=Helsinki&startRow=250
- https://en.wikipedia.org/wiki/Kalasatama
- https://www.geonames.org/about.html

## Yhteinen välimuisti, kulutus ja maksuttomuus

Käyttöönotto käyttää nykyistä `DB`-sidosta. Uusia Cloudflare-palveluja, salaisuuksia, ympäristömuuttujia tai ajastuksia ei tarvita. Kaksi erillistä taulua, `radar_cache` ja `radar_budget`, luodaan nykyiseen tietokantaan automaattisesti ensimmäisellä tutkakutsulla. Ennusteiden tauluja, laskureita tai dataa ei muuteta. Forecaa ei käytetä tutkassa.

- Palvelinpuolen D1-välimuisti on yhteinen kaikille kävijöille, myös eri palvelininstansseille.
- Saatavuuslista päivittyy enintään 5 minuutin välein, lämpötilat 10 minuutin välein ja tutkakehys vain kerran kutakin aikaleimaa kohti välimuistin voimassaoloaikana.
- Atominen 30 sekunnin varaus estää päällekkäiset upstream-haut. Virheen jälkeen on 5 minuutin pysyvä yritystauko. Varausajan ylittänyt omistaja ei saa kirjoittaa myöhäistä tulosta.
- Kaikilla tutkan FMI/AWS-yrityksillä on oma pysyvä kova raja: edellisen ja nykyisen UTC-päivän yhteissumma enintään 1 800 yritystä. Epäonnistumisetkin lasketaan; raja ei nollaudu sivua päivittämällä eikä ZIPin uudelleenjulkaisulla. Tämä on tarkoituksella tiukempi kuin pelkkä vuorokausiraja.
- Jatkuvassa käytössä odotusarvo on noin 288 saatavuuslistaa + 288 uutta ruutua + enintään 144 lämpötilahakua vuorokaudessa. Ensimmäinen avaus voi lisäksi hakea 13 historiaruutua. Ilman tutkan avaamista ei tehdä taustahakuja.
- Kun kova raja tai D1/Workers-kiintiö täyttyy, uusia upstream-hakuja ei ohitustietä tehdä. Sallittu aiemmin ladattu historia tai saatavuusilmoitus jää näkyviin aikaleimoineen.
- Tutkalla ei ole paikkahakua, vapaata URL-proxya, käyttäjän aikaparametreja tai koko maailman datan latausta. Kartan siirtäminen tai aikajanan kelaaminen ei hae FMI-dataa.
- GeoTIFF-koko on rajattu 1 000 000 tavuun, jotta Base64-esitys mahtuu D1:n 2 000 000 tavun rivirajaan. Liian suuri tai muuttunut tiedosto jätetään puuttuvaksi, ei käsitellä rajoittamatta.
- Luettu 22.10.2026: 244 saatavilla ollutta ruutua olivat noin 281–485 kB, keskimäärin 359 kB. Testattu ruutu oli 404 343 tavua. Tyypillinen 13 ruudun alkulataus on noin 6–8 MB Base64-siirtona; kelaus ei siirrä niitä uudelleen. Selaimen muistissa on enintään 13 rajattua kuvaruutua.
- Ruudun välimuisti elää kaksi tuntia. Vanhat rivit poistetaan seuraavan saatavuuslistan päivityksen yhteydessä. Tavallinen tallennustarve on kymmeniä megatavuja, ei kasvava kuva-arkisto.

Cloudflare Free: 100 000 dynaamista Worker/Pages Functions -pyyntöä vuorokaudessa, 10 ms CPU-aikaa pyynnölle ja 128 MB muistia. D1: 5 miljoonaa luettua ja 100 000 kirjoitettua riviä vuorokaudessa, 500 MB tietokantaa kohti ja 5 GB tiliä kohti. Kiintiöt ovat tilikohtaisia ja voivat kulua muissakin sovelluksissa. Free-kiintiön täyttyminen aiheuttaa virheen; sovellus ei aktivoi maksullista tilausta. R2:ta, Durable Objectsia, Workers Paidia, Cronia tai ulkopuolista maksullista karttapakettia ei oteta käyttöön.

- https://developers.cloudflare.com/workers/platform/limits/
- https://developers.cloudflare.com/workers/platform/pricing/
- https://developers.cloudflare.com/d1/platform/limits/
- https://developers.cloudflare.com/d1/platform/pricing/

## Varmennus ja rajat

- Oikea FMI:n uusi GeoTIFF ladattiin, sen EPSG:3067-koordinaatisto, 250 m resoluutio, skaala ja puuttuvan tiedon tunniste luettiin tiedostosta.
- Riippumaton vertailu PROJ/pyprojlla ja Pillow/libtiffillä: 153 pikseliä vastasi selaimen rasterointia.
- Node-testit kattavat yhteisen välimuistin, samanaikaiset kävijät, pysyvän hakurajan, virheiden yritystauon, puuttuvat/vanhentuneet ruudut, lämpötilapisteet, toiston ja raahaamisen tilalogiikan, silmukan, syksyn kellonsiirron sekä nimilabelien törmäysten välttämisen 320/360/390 px laskentaleveyksillä.
- Selainvarmennus tehtiin tallennetuilla aidoilla FMI-ruuduilla. Näkymät 320, 360 ja 390 px eivät aiheuttaneet vaakavieritystä. Viisi ensisijaista kaupunginosanimeä näkyi ilman keskinäisiä päällekkäisyyksiä. Kartan hiiriveto, zoomaus ja Helsinki-palautus toimivat. Aikajanan hiirivedon jälkeen toisto jatkui; erikseen valittu tauko säilyi myös näppäimistöllä kelatessa. Lämpötilakerros näytti oman mittausajan erillään valitusta tutka-ajasta.
- Paikallinen oikea Cloudflare workerd + D1 testattiin tyhjästä tietokannasta. Testissä viisi peräkkäistä saman kuvan lukua ei lisännyt upstream-hakuja ja 1 800 yrityksen raja pysäytti uuden haun.
- Paikalliset workerd-testin seinäkelloajat: kylmä saatavuuslista noin 86 ms, kylmä ruutu 56 ms ja lämmin ruutu noin 30 ms sisältäen paikalliset D1/RPC-viiveet. Ne eivät ole Cloudflaren CPU-aikamittauksia.
- Ensimmäinen GeoTIFFin selainkäsittely Node-ajossa noin 343 ms. Se suoritetaan käyttäjän laitteen erillisessä Workerissa, ei Cloudflaren 10 ms CPU-budjetissa. Android-laite voi olla hitaampi.
- Hyväksyttyyn ennustepakettiin verrattuna 232 ennusteen ja ulkoasun tiedostoa säilyi tavuittain samoina. Ennustesivun HTML:ään lisättiin vain uusi tutkaosio ja sen omat latausviittaukset. Yksityistä Sites-kehitysversiota ei muutettu.
- Julkaisua ei tehty. Todellista Cloudflare Free -tuotannon CPU-aikaa tai fyysisen Androidin kosketustoimintoja ei ole varmennettu tässä ympäristössä. Näistä ei anneta takuita paikallisen testin perusteella.

## Päivittäminen Cloudflaren hallintapaneelissa

1. Workers & Pages → nykyinen `saa-kaverit` Pages-projekti.
2. Deployments → Create a new deployment.
3. Valitse Production ja raahaa uusi valmis ZIP.
4. Save and Deploy.
5. Avaa sivu ja alhaalta Sadetutka Helsinki → Avaa tutka.

Nykyinen `DB`-sidonta ja Foreca-asetukset säilyvät. Älä luo uusia maksullisia palveluita tai vaihda tilin maksutonta tilausta. Ensimmäisellä avauksella historiakuvien lataaminen voi kestää hetken. Tutkan saatavuushäiriö ei muuta ennusteintegraatioita.
