WEERKALENDER
weerkalender.nl
English App Store →

Hoe de buienverwachting werkt

Laatst bijgewerkt: 10 september 2026

De meeste weerapps kopen hun regenverwachting in. Helder rekent hem zelf, op een eigen server: de KNMI-radar komt binnen, we bepalen waar de buien heen gaan, rekenen twintig varianten door voor de onzekerheid, en mengen dat geleidelijk over naar een weermodel — zodat er één doorlopende verwachting tot 24 uur vooruit uitkomt in plaats van een breuk na twee uur.

Deze pagina legt uit hoe dat werkt en laat zien wat we tot nu toe meten, ook waar het minder goed uitpakt. Onderaan staat het scorebord waarop veertien bronnen elk uur tegen de gemeten werkelijkheid worden afgezet — de onze erbij.

Waarom Nederland. De engine draait op het radarcomposiet van het KNMI en op hun model UWC-W, dus de nowcast dekt Nederland met een rand eromheen. Daarbuiten valt de app terug op wereldwijde bronnen — NEXRAD en NOAA HRRR in Noord-Amerika, ECMWF elders. De methode hieronder is niet Nederlands; de datalicentie wel.

De keten

1. De radar

Elke vijf minuten haalt onze server het radarcomposiet van het KNMI op: de beelden van de radars in Den Helder en Herwijnen, samengevoegd tot één kaart van Nederland en de omgeving op een raster van een kilometer. Dat is een meting, geen verwachting — het is wat er op dit moment uit de lucht valt. We bewaren de beelden drie weken, want zonder verleden kun je niets verifiëren.

2. Waar gaat de bui heen

Uit de laatste zes radarbeelden lezen we de beweging af met optical flow, dezelfde techniek waarmee videosoftware bepaalt hoe pixels tussen twee beeldjes verschuiven. Dat levert een verplaatsingsveld: voor elk stukje kaart een pijl die zegt hoe hard en welke kant op. Vervolgens schuiven we het jongste beeld langs die pijlen vooruit (semi-Lagrangiaanse extrapolatie). Voor het eerste half uur lijkt dat verrassend goed te werken: buien houden hun vorm langer dan je zou denken.

3. Hoe zeker is dat

Eén doorgeschoven beeld doet alsof de toekomst vaststaat, en dat is niet zo. Daarom rekenen we met pySTEPS twintig varianten door — een ensemble. De truc van STEPS is dat het de neerslag in schaalniveaus opdeelt: grote regengebieden blijven uren herkenbaar, kleine buienkernen leven maar een half uur. Elk ensemblelid krijgt ruis die dat gedrag nabootst, dus de twintig leden lopen precies zo uit elkaar als echte buien dat doen. Uit die waaier komt niet alleen "hoeveel millimeter", maar ook "hoe groot is de kans dat het bij jou nat wordt".

4. Verder dan twee uur

Na een uur of twee is van het radarbeeld niets bruikbaars meer over: buien ontstaan en verdwijnen, en dat ziet extrapolatie niet aankomen. Daarvoor is een weermodel nodig dat de atmosfeer doorrekent. Wij gebruiken UWC-W, het HARMONIE-model van het KNMI op 2 kilometer, dat elk uur een nieuwe run publiceert.

De overgang gaat geleidelijk, niet met een schakelaar: het eerste kwartier telt alleen de radar, na een uur is het half om half, na vier uur is het puur het model. En omdat een model alleen uursommen geeft, schuiven we die velden mee langs hetzelfde bewegingsveld en mengen we tussen de uren — anders zie je een modelbui elk heel uur een stukje verspringen in plaats van soepel overtrekken.

5. Wat eruit komt

Elke run levert 64 stappen tot 24 uur vooruit: per vijf minuten voor het eerste kwartier tot twee uur, daarna per kwartier, daarna per uur. Van elke stap bewaren we het veld, de onzekerheidsband en een kaartplaatje. De app haalt daar de buienstrip, de buiengrafiek, de 8- en 24-uurskaart en het buienalarm uit.

En zo ziet dat eruit

Hieronder speelt de verwachting van dit moment af: het laatste uur gemeten radar, daarna acht uur vooruit. Het beeld ververst elke vijf minuten, dus wat je hier ziet is nooit ouder dan dat.

laden… het laatste uur en de komende acht

Waar het draait. Een enkele server bij Hetzner in Neurenberg (4 kernen, 8 GB). Python met pySTEPS en eccodes; een run duurt ongeveer twee minuten en gebruikt een gigabyte. Elke vijf minuten opnieuw, dag en nacht. De resultaten gaan via Redis naar de API, en de app praat alleen met die API. Er is geen team en geen datacenter: dit is één persoon met een hobbyserver.

Het scorebord

Een verwachting die je niet nameet is een mening. Daarom meten we onszelf, elk kwartier, op twaalf plaatsen verspreid over Nederland. De waarheid is wat de KNMI-radar daar daadwerkelijk heeft gemeten. Elk uur leggen we vast wat veertien bronnen voor de komende 1 tot 24 uur beloofden, en later vergelijken we belofte met meting.

Regen, één uur vooruit

BronGem. fout (mm)Nat of droog goed
Helder — ensemble0,23865%
Helder — blend met UWC-W0,25563%
KNMI-nowcast0,27462%
Helder — alleen radar0,28361%
KNMI UWC-W0,24260%
KNMI HARMONIE0,28159%
OpenWeatherMap0,32158%
Google Weather0,26157%
Apple Weather0,28455%
MET Norway0,22754%
Google — minuutreeks0,21747%
ECMWF0,27247%
ECMWF AIFS0,27839%

Stand over de laatste 72 uur, 828 vergelijkingen per bron, 12 plaatsen. Groen = beste van alle bronnen.

Zo lezen wij dit, met de nodige slagen om de arm. Op de vraag gaat het regenen lijkt ons ensemble het op dit moment goed te doen: het staat over deze periode bovenaan, iets boven de nowcast van het KNMI zelf. Op de vraag hoeveel millimeter zitten MET Norway en Google's minuutreeks er dichter bij. We denken dat dat past bij hoe een ensemble werkt: door twintig varianten te middelen worden de pieken vlakker, wat de kans-vraag scherper lijkt te maken en de hoeveelheid-vraag stroever. Daar valt vermoedelijk nog wat te halen.

Belangrijk voorbehoud. Dit gaat over 72 uur en twaalf plaatsen. Dat is genoeg om te zien of iets werkt, maar veel te weinig om te zeggen wie "de beste" is: één regenachtige week met de juiste soort buien kan de volgorde omgooien. We publiceren de stand omdat we vinden dat je een verwachting hoort na te meten, niet omdat we denken dat de zaak beslist is. Kom over een maand nog eens kijken.

De ensemble-cijfers zelf: een CRPS van 0,204 tegenover een gemiddelde fout van 0,238 voor het ensemblegemiddelde. Dat het eerste getal lager is, wijst erop dat de kansverdeling meer waard is dan het losse getal — de waaier lijkt dus echt iets toe te voegen. De Brier-score voor "wordt het nat" komt uit op 0,085, waar 0,25 gokken zou zijn.

Temperatuur, zes uur vooruit

BronGem. fout (°C)Structureel
Google Weather0,71+0,07
MET Norway0,80+0,16
Apple Weather0,81+0,43
ECMWF0,85+0,01
ECMWF AIFS0,93−0,04
KNMI UWC-W1,09+0,60
KNMI HARMONIE1,10+0,58
OpenWeatherMap1,34+0,69

Waarheid: de tienminutenmetingen van de KNMI-stations.

Hier komen we er slechter uit. Helder toont voor Nederland de temperatuur van HARMONIE, en dat model lijkt in deze periode structureel ruim een halve graad te warm te zitten ten opzichte van de stations; Google en Apple doen het beter. Dat zetten we hier neer omdat het is wat we meten. Het staat op de lijst: we hebben elke tien minuten de echte temperatuur op dezelfde plek, dus we denken dat verschil uitdovend van de komende uren af te kunnen trekken.

Bronnen

Alles open data of open source, netjes vermeld in de app onder Instellingen → Bronnen.