Natuurbrandkaart: risico van vandaag, hittepunten en verbrande natuur
Eén kaart van Nederland per veiligheidsregio met de fase van de brandweer, het brandgevaar voor vandaag en de komende dagen (EFFIS), de hittepunten die satellieten deze week zagen (zonder fabrieken) en de natuur die dit jaar is afgebrand, met de droogte van het KNMI ernaast.
geef_project("natuurbrand-kaart")geef_bron("natuurbrandrisico")geef_bron("effis")geef_bron("nasa-firms")
Ik heb het project, de geteste aanroepen en de valkuilen. Ik bouw een kaart met Natuurbrandrisico (brandweer), EFFIS bosbranden (Copernicus), NASA FIRMS (branden) en KNMI daggegevens van het weer. Zo kan het eruitzien:
Dit bouw je zelf. Kopieer de prompt naar Claude, ChatGPT of Cursor, met de MCP-server aan, of volg de stappen hieronder.
- Elburg421 ha29-04
- Cranendonck126 ha30-04
- Venray89 ha04-08
- Oirschot27 ha30-04
- Oldebroek25 ha25-08
- Wassenaar5 ha05-08
Brandgevaar
laagvandaag en ma 19 okt (FWI)
Hittepunten 7 d
54in NL, 53 bij een vaste warmtebron
Neerslagtekort
245 mmDeelen, sinds 1 apr · 2018: 288
Dit is een mockup, geen werkende versie, met de fase per regio van brandweer.nl, het brandgevaar van EFFIS, de VIIRS-hittepunten en het neerslagtekort van KNMI Deelen uit onze proefdraai van 16 oktober 2026, en de verbrande gebieden van EFFIS (stand 17 oktober 2026). De MCP-server zet je aan met het adres op Voor AI.
Voor wie
Boswachters en terreinbeheerders, veiligheidsregio's en gemeenten die een eigen overzicht willen, journalisten die na een heidebrand snel willen zien hoe groot hij was, en wie op een droge dag wil weten of de Veluwe of de Peel rood kleurt.
Wat je krijgt
Een kaart (Leaflet of MapLibre) met de 25 veiligheidsregio's van PDOK, gekleurd naar de fase van brandweer.nl, met daaroverheen de EFFIS-laag brandgevaar voor de gekozen dag, de VIIRS-hittepunten van de laatste zeven dagen en de omtrekken van de verbrande gebieden. Plus een tabel per regio en een droogtemeter.
Proefdraai op 16 oktober 2026: alle regio's stonden in fase 1, behalve Zaanstreek-Waterland ("Onbekend"). Het brandgevaar (Fire Weather Index) was overal "laag" (onder 11,2), voor vandaag en ook voor 19 oktober; vanaf 20 oktober gaf de dienst nog geen kaart. Ter vergelijking: op 12 augustus 2026 was het grootste deel van Nederland "hoog" of "zeer hoog", met een stukje "extreem" in Limburg. VIIRS zag in zeven dagen 4.404 hittepunten in Europa, waarvan 54 in Nederland; 53 daarvan lagen binnen 1 km van een vaste warmtebron uit 2025 (vooral het staalbedrijf bij IJmuiden). EFFIS bracht in 2026 negen verbrande gebieden in kaart, samen 693 hectare, de grootste bij Elburg (29 april, 421 ha, helemaal in Natura 2000). Die brand viel aan het eind van de langste droge periode van 2026 in Deelen: 20 dagen op rij met minder dan 1 mm, tot en met 1 mei. Het neerslagtekort in Deelen was van 1 april tot en met 14 oktober 245 mm (2018: 288 mm, 2022: 224 mm op dezelfde datum).
Verbrande natuur in Nederland die EFFIS in kaart bracht: 330 hectare in 2025, 80% meer dan in 2018
Verbrande natuur in Nederland die EFFIS in kaart bracht, 2018 – 2025, in hectare. Het hoogste punt was 2020 (822).
Zo zou je kunnen starten7 stappen
- 1
Lees de fase per veiligheidsregio
De brandweer heeft geen API. Op brandweer.nl/natuurbrandrisico staat onder 'Alle locaties & huidige fase' per regio een blokje met naam en fase (Fase 1, Fase 2 of Onbekend). robots.txt staat lezen toe, met Crawl-delay 10: één keer per dag lezen is genoeg, en bewaar het zelf, want er is geen geschiedenis. De kaart op de site haalt ook een JSON met een kleur per regiocode (VR01 tot VR25) op; die codes zijn dezelfde als bij CBS en PDOK, maar je krijgt kleuren (#dd9933 bij fase 1, #B0C4DE bij onbekend), geen fasenummers. Namen verschillen soms van het CBS ('Hollands Midden' tegen 'Hollands-Midden', 'Zuid-Limburg' tegen 'Limburg-Zuid'): vergelijk op alleen letters.
https://www.brandweer.nl/natuurbrandrisico/
<legend class="strong red">Alle locaties & huidige fase</legend> <div class="facetwp-template risk-list" data-name="risks"> <div class="risk"> Fryslân <div class="risk-phase"> Fase 1 </div> ... 25 regio's: ('Fryslân', 'Fase 1'), ('Utrecht', 'Fase 1'), ... ('Zaanstreek-Waterland', 'Onbekend'), ... ('Twente', 'Fase 1') - 2
Haal de vlakken van de veiligheidsregio's
PDOK publiceert de CBS-gebiedsindelingen als WFS. De laag veiligheidsregio_gegeneraliseerd geeft de 25 regio's met statcode (VR01 tot VR25) en naam, 750 kB als GeoJSON in lengte- en breedtegraad. Met deze vlakken kleur je de kaart, en met een punt-in-vlak-test koppel je hittepunten en verbrande gebieden aan een regio. Kies het jaar van de indeling (hier 2025) en zet het erbij.
https://service.pdok.nl/cbs/gebiedsindelingen/2025/wfs/v1_0?service=WFS&version=2.0.0&request=GetFeature&typeNames=gebiedsindelingen:veiligheidsregio_gegeneraliseerd&outputFormat=application/json&srsName=EPSG:4326
HTTP 200, 748.151 bytes, 25 features (MultiPolygon) {'statcode': 'VR01', 'jrstatcode': '2025VR01', 'statnaam': 'Groningen', 'rubriek': 'veiligheidsregio', 'id': 1} ('VR11', 'Zaanstreek-Waterland'), ('VR14', 'Gooi en Vechtstreek'), ('VR16', 'Hollands-Midden'), ('VR24', 'Limburg-Zuid') - 3
Brandgevaar voor vandaag en de komende dagen (EFFIS)
De EFFIS-kaartdienst (WMS 1.1.1, geen sleutel, geen robots.txt) heeft de laag mf010.fwi: de Canadese Fire Weather Index, berekend uit de weersverwachting. Geef altijd time= mee: zonder valt de laag terug op 1 januari 2021. De verwachting liep op 16 oktober tot en met 19 oktober; voor 20 oktober kwam er een leeg, doorzichtig plaatje terug, ook met HTTP 200. De laag is niet bevraagbaar (queryable=0), dus de waarde lees je uit de kleur. De klassen staan in de legenda (GetLegendGraphic): Low < 11,2, Moderate 11,2 tot 21,3, High 21,3 tot 38, Very High 38 tot 50, Extreme 50 tot 70, Very Extreme > 70. Let op: dit is het brandgevaar volgens het weer, niet de fase van de brandweer.
https://maps.effis.emergency.copernicus.eu/effis?service=WMS&version=1.1.1&request=GetMap&layers=mf010.fwi&styles=&srs=EPSG:4326&bbox=3.2,50.7,7.3,53.6&width=410&height=290&format=image/png&transparent=true&time=2026-08-12
2026-10-14 [((156, 255, 192), 89300)] alles Low 2026-10-16 [((156, 255, 192), 89300)] alles Low 2026-10-20 [] leeg plaatje, nog geen verwachting 2026-08-12 [((217, 112, 16), 46900), ((230, 172, 0), 32400), ((205, 226, 78), 6400), ((173, 6, 14), 3600)] = Very High, High, Moderate, Extreme <Layer queryable="0" opaque="0" cascaded="0"><Name>mf010.fwi</Name> ... <Extent name="time" default="2021-01-01" nearestValue="0">2018-01-01/2099-12-31</Extent> - 4
Verbrande natuur met omtrek (EFFIS)
De REST-API van EFFIS geeft voor Nederland alle in kaart gebrachte verbrande gebieden sinds 2003, in één antwoord (53 gebieden, 194 kB, next is null). Per gebied: firedate (met +02:00), area_ha, commune en province (namen, geen codes), centroid, bbox, de omtrek als MultiPolygon in shape, de landbedekking in procenten en percna2k (aandeel in Natura 2000). Teken shape op de kaart en koppel centroid aan een veiligheidsregio. Het zijn vooral de grotere branden: per jaar 2003 1, 2011 1, 2014 1, 2015 1, 2018 3, 2019 1, 2020 2, 2022 15, 2023 2, 2024 2, 2025 15 en 2026 9.
https://api.effis.emergency.copernicus.eu/rest/2/burntareas/current/?country=NL
{"count": 53, "next": null, "results": [ ... {"id": 438857, "centroid": {"type": "Point", "coordinates": [5.866599251185119, 52.37698879575639]}, "bbox": [5.845090845339057, 52.36675178251562, 5.887158589036566, 52.386277550008856], "shape": {"type": "MultiPolygon", "coordinates": [[[[5.863966188551401, 52.38581500645767, ...]]]]}, "country": "NL", "countryful": "Nederland", "province": "Veluwe", "commune": "Elburg", "firedate": "2026-04-29T09:42:00+02:00", "area_ha": 421, "conifer": "1.19047619", "othernatlc": "98.80952381", "percna2k": "100.00000000", "lastupdate": "2026-04-30T12:40:32.993585+02:00", "lastfiredate": null, "noneu": false} - 5
Hittepunten van de laatste dagen (NASA FIRMS)
FIRMS zet open CSV-bestanden per werelddeel klaar, zonder sleutel: de VIIRS-detecties (375 m) van de laatste 24 uur en 7 dagen. Het Europa-bestand van 7 dagen was 356 kB met 4.404 detecties. Er is geen landkolom: filter zelf met de vlakken uit stap 2 (een rechthoek om Nederland pakt ook Duisburg en Gent mee). In deze bestanden staat geen kolom type, dus je ziet niet of een hittepunt een fabriek is. Tijden (acq_date, acq_time) zijn UTC. confidence is hier low, nominal of high. Wil je een eigen gebied, een andere satelliet of een datum in het verleden, gebruik dan de Area API met een gratis MAP_KEY (aanvragen met je e-mailadres op firms.modaps.eosdis.nasa.gov/api/map_key; 5.000 transacties per 10 minuten, maximaal 5 dagen per aanroep). Zonder geldige sleutel krijg je HTTP 400 'Invalid MAP_KEY.'
https://firms.modaps.eosdis.nasa.gov/data/active_fire/suomi-npp-viirs-c2/csv/SUOMI_VIIRS_C2_Europe_7d.csv
latitude,longitude,bright_ti4,scan,track,acq_date,acq_time,satellite,confidence,version,bright_ti5,frp,daynight 52.49662,4.61254,308.18,0.45,0.47,2026-10-10,0245,N,nominal,2.0NRT,280.99,2.02,N 52.49261,4.60978,331.44,0.45,0.47,2026-10-10,0245,N,nominal,2.0NRT,285.02,2.02,N 52.49102,4.61598,305.58,0.45,0.47,2026-10-10,0245,N,nominal,2.0NRT,283.52,2.02,N ... eu7d.csv 4404 detecties, 2026-10-09 tot 2026-10-16
- 6
Haal fabrieken en fakkels eruit met het jaarbestand
Het jaarbestand per land (open, ongeveer 250 kB voor Nederland) heeft wel een kolom type: 0 = vermoedelijke vegetatiebrand, 2 = andere vaste warmtebron op land (fabrieken, fakkels), 3 = op zee. In 2025 waren 2.511 van de 3.260 detecties in Nederland type 2 (77%), 708 type 0 en 41 type 3. Gebruik de type-2-punten van vorig jaar als masker: een nieuw hittepunt binnen 1 km daarvan is waarschijnlijk een fabriek. Zo bleef er van de 54 Nederlandse detecties in de week tot 16 oktober 2026 één over. Het bestand voor het lopende jaar bestaat nog niet (HTTP 404). Houd je aan Crawl-delay 1 uit robots.txt.
https://firms.modaps.eosdis.nasa.gov/data/country/viirs-snpp/2025/viirs-snpp_2025_Netherlands.csv
latitude,longitude,bright_ti4,scan,track,acq_date,acq_time,satellite,instrument,confidence,version,bright_ti5,frp,daynight,type 52.48415,4.59752,311.68,0.61,0.53,2025-01-02,0246,N,VIIRS,n,2,275.77,3.98,N,2 52.49296,4.61101,329.99,0.58,0.7,2025-01-02,1055,N,VIIRS,n,2,277.1,3.55,D,2 ... 3260 Counter({'2': 2511, '0': 708, '3': 41}) type 0 per maand: juni 180, mei 167, april 86, juli 71, augustus 69, maart 38, september 35 ... - 7
Droogte: neerslagtekort en droge dagen (KNMI)
Brandgevaar volgt op droogte. KNMI daggegevens geeft per station de neerslag (RH) en de verdamping volgens Makkink (EV24), allebei in tienden van een mm; RH -1 betekent minder dan 0,05 mm (tel als 0). Het neerslagtekort is de som van verdamping min neerslag sinds 1 april. Voor de Veluwe is station 275 Deelen een goede keuze, voor de Peel 375 Volkel of 370 Eindhoven. Tel ook de langste reeks dagen met minder dan 1 mm: in Deelen 20 dagen tot en met 1 mei 2026, net na de brand bij Elburg. De nieuwste dag is meestal eergisteren.
curl -X POST "https://www.daggegevens.knmi.nl/klimatologie/daggegevens" \ -d 'stns=275&vars=RH:EV24&start=20260401&end=20261016&fmt=json'
[{"station_code": 275, "date": "2026-04-01T00:00:00.000Z", "RH": 0, "EV24": 24}, {"station_code": 275, "date": "2026-04-02T00:00:00.000Z", "RH": 6, "EV24": 6}, ... {"station_code": 275, "date": "2026-10-13T00:00:00.000Z", "RH": 45, "EV24": 5}, {"station_code": 275, "date": "2026-10-14T00:00:00.000Z", "RH": 0, "EV24": 16}] 197 dagen; neerslagtekort 245.2 mm; langst droog (<1mm) 20 dagen, eindigend 2026-05-01
Hoe de bronnen samenkomen
- Natuurbrandrisico (brandweer)EFFIS bosbranden (Copernicus)via
veiligheidsregio (VR01 tot VR25) en datum; EFFIS-gebieden via hun centroid in het regiovlakDe fase van de brandweer is een besluit van mensen, de Fire Weather Index een berekening uit het weer. Leg ze per regio en per dag naast elkaar, en daarna de verbrande gebieden: ging een grote brand vooraf aan fase 2, en kleurde de FWI toen al rood? Bewaar de fase dagelijks zelf, want brandweer.nl heeft geen archief.
- NASA FIRMS (branden)EFFIS bosbranden (Copernicus)via
datum en plaats (hittepunt binnen de omtrek van een verbrand gebied)FIRMS ziet de brand terwijl hij woedt, EFFIS meet daarna het verbrande oppervlak. Hittepunten binnen een EFFIS-omtrek laten zien hoe de brand zich verplaatste.
- KNMI daggegevens van het weerNatuurbrandrisico (brandweer)via
datum; KNMI-station in of bij de veiligheidsregio (Deelen 275 voor Gelderland-Midden en Noord- en Oost-Gelderland)Het neerslagtekort en het aantal droge dagen op rij verklaren waarom een regio naar fase 2 gaat. Toon ze naast de fase.
- EFFIS bosbranden (Copernicus)Natura 2000-gebiedenvia
omtrek (shape) tegen de Natura 2000-vlakken van PDOKEFFIS geeft het aandeel in Natura 2000 al (percna2k); met de PDOK-vlakken zie je welk gebied het was, bijvoorbeeld de Veluwe bij Elburg.
Laat AI het bouwen
Plak deze prompt in Claude, ChatGPT, Cursor of Lovable. Hij noemt de echte endpoints, de koppelsleutels en de valkuilen, zodat de assistent meteen werkende code schrijft. Controleer de uitkomst altijd met de bron zelf.
Bouw een natuurbrandkaart van Nederland als webpagina (MapLibre of Leaflet) met een kleine backend die één keer per dag data ophaalt en bewaart. Geen sleutels nodig. Lagen en bronnen: 1. Veiligheidsregio's als vlakken: PDOK WFS https://service.pdok.nl/cbs/gebiedsindelingen/2025/wfs/v1_0?service=WFS&version=2.0.0&request=GetFeature&typeNames=gebiedsindelingen:veiligheidsregio_gegeneraliseerd&outputFormat=application/json&srsName=EPSG:4326 (25 features, statcode VR01 tot VR25, statnaam). 2. Fase per regio: brandweer.nl heeft geen API. Lees https://www.brandweer.nl/natuurbrandrisico/ en haal per regio naam en fase uit <div class="risk">NAAM<div class="risk-phase">FASE</div>. Waarden: 'Fase 1', 'Fase 2', 'Onbekend' (onbekend is géén fase 1). Koppel aan PDOK op naam, vergeleken op alleen letters (Hollands Midden = Hollands-Midden, Zuid-Limburg = Limburg-Zuid). Hooguit één keer per dag lezen (robots.txt: Crawl-delay 10) en zelf bewaren: er is geen geschiedenis. 3. Brandgevaar: EFFIS WMS https://maps.effis.emergency.copernicus.eu/effis, versie 1.1.1, laag mf010.fwi, srs EPSG:4326 (bbox lon,lat) of EPSG:3857 voor webkaarten, format image/png, transparent=true, en ALTIJD time=JJJJ-MM-DD (zonder time krijg je 2021-01-01). De verwachting loopt ongeveer drie dagen vooruit; daarna komt een leeg plaatje met HTTP 200. Legenda via request=GetLegendGraphic&layer=mf010.fwi: Low <11,2, Moderate 11,2-21,3, High 21,3-38, Very High 38-50, Extreme 50-70, Very Extreme >70. Maak een dagschuif (vandaag tot en met +3). 4. Verbrande gebieden: https://api.effis.emergency.copernicus.eu/rest/2/burntareas/current/?country=NL geeft JSON met count, next en results (firedate met tijdzone, area_ha, commune, province, centroid, shape als MultiPolygon, percna2k). Volg next tot null. Teken shape, popup met datum, hectare, gemeente en % Natura 2000. 5. Hittepunten: open CSV https://firms.modaps.eosdis.nasa.gov/data/active_fire/suomi-npp-viirs-c2/csv/SUOMI_VIIRS_C2_Europe_7d.csv (ook _24h). Kolommen latitude, longitude, acq_date, acq_time (UTC), confidence (low/nominal/high), frp (MW), daynight. Geen landkolom: filter met punt-in-vlak op de veiligheidsregio's. Geen typekolom: haal fabrieken eruit met het jaarbestand van vorig jaar https://firms.modaps.eosdis.nasa.gov/data/country/viirs-snpp/2025/viirs-snpp_2025_Netherlands.csv (kolom type: 0 vegetatiebrand, 2 vaste warmtebron, 3 zee); markeer een hittepunt binnen 1 km van een type-2-punt als 'waarschijnlijk industrie' (grijs) in plaats van het weg te gooien. Crawl-delay 1 tussen aanroepen. 6. Droogte: KNMI daggegevens POST https://www.daggegevens.knmi.nl/klimatologie/daggegevens met stns=275&vars=RH:EV24&start=JJJJ0401&end=JJJJMMDD&fmt=json. RH en EV24 in tienden van mm; RH -1 = minder dan 0,05 mm. Neerslagtekort = som(EV24 - RH) sinds 1 april. Toon ook het aantal dagen sinds de laatste dag met 1 mm of meer. Valkuilen: de fase (mensenbesluit) en de FWI (weerberekening) zijn verschillende dingen, toon ze apart. Een hittepunt is één pixel van 375 m op één overkomst, geen brand en geen oppervlak; tel nooit 'aantal branden' uit hittepunten. EFFIS mist veel kleine heidebranden en had vóór 2018 maar vier Nederlandse gebieden: geen volledige brandstatistiek. Tijden: FIRMS in UTC, EFFIS met +02:00 of +01:00, KNMI datum 00:00 UTC. Eerlijke User-Agent in elke aanroep. Uitkomst: kaart met regio's in de kleur van hun fase (fase 2 oranje, onbekend grijs), FWI-laag met schuif, verbrande gebieden met omtrek, hittepunten (rood) en industrie (grijs), een paneel per regio met fase, meest voorkomende FWI-klasse, hittepunten deze week en hectares verbrand dit jaar, en een droogtemeter met het neerslagtekort tegen 2018 en 2022 op dezelfde datum.
Probeer het zelf
De kern van het project in een klein script. Nodig: Python 3.10+, requests en Pillow. Getest op 2026-10-16; hieronder de echte uitvoer van die proefdraai.
# Natuurbrand-kaart, de data erachter: per veiligheidsregio de fase van de brandweer, het brandgevaar (EFFIS Fire
# Weather Index), hittepunten van de laatste 7 dagen (NASA FIRMS, zonder fabrieken), verbrande natuur dit jaar (EFFIS)
# en de droogte (KNMI). Geen sleutels nodig. Vereist: Python 3.10+, requests en Pillow.
import csv, io, math, re, time
from datetime import date, timedelta
import requests
from PIL import Image
UA = {"User-Agent": "mijn-project/1.0 (+jij@voorbeeld.nl)"}
get = lambda url, **kw: requests.get(url, headers=UA, timeout=120, **kw)
# 1. Veiligheidsregio's als vlakken (PDOK, CBS-indeling 2025), in lengte- en breedtegraad.
vr = get("https://service.pdok.nl/cbs/gebiedsindelingen/2025/wfs/v1_0", params={
"service": "WFS", "version": "2.0.0", "request": "GetFeature", "outputFormat": "application/json",
"typeNames": "gebiedsindelingen:veiligheidsregio_gegeneraliseerd", "srsName": "EPSG:4326"}).json()["features"]
def binnen(lon, lat, ringen): # punt-in-veelhoek (ray casting), alleen buitenringen
ok = False
for ring in ringen:
for (x1, y1), (x2, y2) in zip(ring, ring[1:]):
if (y1 > lat) != (y2 > lat) and lon < x1 + (lat - y1) * (x2 - x1) / (y2 - y1):
ok = not ok
return ok
regios = {}
for f in vr:
ringen = [p[0] for p in f["geometry"]["coordinates"]] # MultiPolygon
xs = [x for r in ringen for x, _ in r]; ys = [y for r in ringen for _, y in r]
regios[f["properties"]["statcode"]] = {"naam": f["properties"]["statnaam"], "ringen": ringen,
"bbox": (min(xs), min(ys), max(xs), max(ys)), "fwi": [], "hitte": 0, "ha": 0}
def regio_van(lon, lat):
for code, r in regios.items():
x0, y0, x1, y1 = r["bbox"]
if x0 <= lon <= x1 and y0 <= lat <= y1 and binnen(lon, lat, r["ringen"]):
return code
# 2. Fase per regio van brandweer.nl (geen API: de pagina lezen; namen gelijktrekken op alleen letters).
sleutel = lambda s: re.sub(r"[^a-z]", "", s.lower().replace("â", "a")).replace("limburgzuid", "zuidlimburg")
html = get("https://www.brandweer.nl/natuurbrandrisico/").text
fase = {sleutel(n): f for n, f in re.findall(r'<div class="risk">\s*([^<]+?)\s*<div class="risk-phase">\s*([^<]+?)\s*</div>', html)}
# 3. Brandgevaar: EFFIS Fire Weather Index als PNG, kleur per klasse uit de legenda (GetLegendGraphic).
KLASSE = {(156, 255, 192): "laag", (205, 226, 78): "matig", (230, 172, 0): "hoog", (217, 112, 16): "zeer hoog",
(173, 6, 14): "extreem", (75, 0, 32): "zeer extreem"}
B = (3.2, 50.7, 7.3, 53.6); W, H = 82, 58 # 0,05 graad per pixel; het FWI-raster is grover
vandaag = date.today()
png = get("https://maps.effis.emergency.copernicus.eu/effis", params={
"service": "WMS", "version": "1.1.1", "request": "GetMap", "layers": "mf010.fwi", "styles": "", "srs": "EPSG:4326",
"bbox": ",".join(map(str, B)), "width": W, "height": H, "format": "image/png", "transparent": "true",
"time": vandaag.isoformat()}).content # zonder time krijg je 1 januari 2021!
im = Image.open(io.BytesIO(png)).convert("RGBA")
for j in range(H):
for i in range(W):
r, g, b, a = im.getpixel((i, j))
lon, lat = B[0] + (i + .5) * (B[2] - B[0]) / W, B[3] - (j + .5) * (B[3] - B[1]) / H
if a and (code := regio_van(lon, lat)):
regios[code]["fwi"].append(KLASSE.get((r, g, b), "?"))
# 4. Hittepunten: VIIRS laatste 7 dagen (Europa, open bestand) minus vaste warmtebronnen uit het jaarbestand 2025.
vorig = csv.DictReader(io.StringIO(get(f"https://firms.modaps.eosdis.nasa.gov/data/country/viirs-snpp/{vandaag.year - 1}/viirs-snpp_{vandaag.year - 1}_Netherlands.csv").text))
vast = [(float(x["longitude"]), float(x["latitude"])) for x in vorig if x["type"] == "2"] # fabrieken, fakkels
time.sleep(1) # robots.txt van FIRMS: Crawl-delay 1
nrt = list(csv.DictReader(io.StringIO(get("https://firms.modaps.eosdis.nasa.gov/data/active_fire/suomi-npp-viirs-c2/csv/SUOMI_VIIRS_C2_Europe_7d.csv").text)))
km = lambda a, b: 111.2 * math.hypot((a[0] - b[0]) * math.cos(math.radians(a[1])), a[1] - b[1])
in_nl = fabriek = 0
for x in nrt:
p = (float(x["longitude"]), float(x["latitude"]))
if not (B[0] <= p[0] <= B[2] and B[1] <= p[1] <= B[3]) or not (code := regio_van(*p)):
continue
in_nl += 1
if any(km(p, v) < 1 for v in vast):
fabriek += 1
else:
regios[code]["hitte"] += 1
# 5. Verbrande natuur dit jaar (EFFIS, alle gebieden in Nederland sinds 2003).
ba = get("https://api.effis.emergency.copernicus.eu/rest/2/burntareas/current/?country=NL").json()["results"]
dit_jaar = [g for g in ba if g["firedate"].startswith(str(vandaag.year))]
for g in dit_jaar:
lon, lat = g["centroid"]["coordinates"]
if code := regio_van(lon, lat):
regios[code]["ha"] += float(g["area_ha"])
# 6. Droogte op de Veluwe: KNMI Deelen (275), neerslagtekort sinds 1 april = som(verdamping EV24 - neerslag RH).
def tekort(jaar, tot):
d = requests.post("https://www.daggegevens.knmi.nl/klimatologie/daggegevens", headers=UA, timeout=120, data={
"stns": "275", "vars": "RH:EV24", "start": f"{jaar}0401", "end": f"{jaar}{tot}", "fmt": "json"}).json()
return sum((x["EV24"] or 0) - max(x["RH"] or 0, 0) for x in d) / 10, d[-1]["date"][:10]
nu, laatste = tekort(vandaag.year, f"{vandaag:%m%d}")
print(f"Natuurbrand-overzicht {vandaag:%d-%m-%Y}\n")
print(f"{'veiligheidsregio':28} {'fase':9} {'brandgevaar':13} {'hittepunten 7d':>14} {'verbrand ' + str(vandaag.year):>14}")
for code, r in regios.items():
meest = max(set(r["fwi"]), key=r["fwi"].count) if r["fwi"] else "geen data"
print(f"{r['naam']:28} {fase.get(sleutel(r['naam']), '?'):9} {meest:13} {r['hitte']:14} {r['ha']:11.0f} ha")
print(f"\nVIIRS 7 dagen: {len(nrt)} detecties in Europa, {in_nl} in Nederland, waarvan {fabriek} bij een vaste warmtebron uit {vandaag.year - 1}")
print(f"EFFIS {vandaag.year}: {len(dit_jaar)} verbrande gebieden, {sum(float(g['area_ha']) for g in dit_jaar):.0f} ha")
print(f"Neerslagtekort Deelen 1 april t/m {laatste}: {nu:.0f} mm", end="")
for j in (2018, 2022):
print(f"; {j} op dezelfde datum: {tekort(j, laatste[5:].replace('-', ''))[0]:.0f} mm", end="")
print()
Natuurbrand-overzicht 16-10-2026 veiligheidsregio fase brandgevaar hittepunten 7d verbrand 2026 Groningen Fase 1 laag 0 0 ha Fryslân Fase 1 laag 0 0 ha Drenthe Fase 1 laag 0 0 ha IJsselland Fase 1 laag 0 0 ha Twente Fase 1 laag 0 0 ha Noord- en Oost-Gelderland Fase 1 laag 0 446 ha Gelderland-Midden Fase 1 laag 0 0 ha Gelderland-Zuid Fase 1 laag 0 0 ha Utrecht Fase 1 laag 0 0 ha Noord-Holland-Noord Fase 1 laag 0 0 ha Zaanstreek-Waterland Onbekend laag 0 0 ha Kennemerland Fase 1 laag 1 0 ha Amsterdam-Amstelland Fase 1 laag 0 0 ha Gooi en Vechtstreek Fase 1 laag 0 0 ha Haaglanden Fase 1 laag 0 5 ha Hollands-Midden Fase 1 laag 0 0 ha Rotterdam-Rijnmond Fase 1 laag 0 0 ha Zuid-Holland-Zuid Fase 1 laag 0 0 ha Zeeland Fase 1 laag 0 0 ha Midden- en West-Brabant Fase 1 laag 0 0 ha Brabant-Noord Fase 1 laag 0 0 ha Brabant-Zuidoost Fase 1 laag 0 153 ha Limburg-Noord Fase 1 laag 0 89 ha Limburg-Zuid Fase 1 laag 0 0 ha Flevoland Fase 1 laag 0 0 ha VIIRS 7 dagen: 4404 detecties in Europa, 54 in Nederland, waarvan 53 bij een vaste warmtebron uit 2025 EFFIS 2026: 9 verbrande gebieden, 693 ha Neerslagtekort Deelen 1 april t/m 2026-10-14: 245 mm; 2018 op dezelfde datum: 288 mm; 2022 op dezelfde datum: 224 mm
Waar het misgaat
- Zonder time= geeft de EFFIS-kaartdienst stilletjes de kaart van 1 januari 2021 (de standaardwaarde in GetCapabilities), en voor een dag na de verwachting een leeg plaatje met HTTP 200. Geef altijd een datum mee en controleer of het plaatje niet leeg is.
- De meeste hittepunten in Nederland zijn geen natuurbrand. In 2025 was 77% van de VIIRS-detecties een vaste warmtebron (type 2), vooral rond IJmuiden; in de week tot 16 oktober 2026 waren het er 53 van de 54. De open 24-uurs- en 7-dagenbestanden hebben geen kolom type: maak zelf een masker uit het jaarbestand. Ook dat masker is niet perfect: één punt op 2,7 km van een bekende bron bij IJmuiden bleef staan.
- Een rechthoek om Nederland is niet Nederland. In de rechthoek 3,2 tot 7,25 O en 50,75 tot 53,7 N vielen in één etmaal hittepunten bij Duisburg (6,7 O) en Gent (3,8 O). Filter met de vlakken van de veiligheidsregio's (punt-in-vlak), niet met een bbox.
- Fase, brandgevaar, hittepunt en verbrand gebied zijn vier verschillende dingen. De fase is een besluit van de brandweer, de FWI een berekening uit het weer, een hittepunt een pixel van 375 m op één overkomst en een EFFIS-gebied een gemeten oppervlak. Tel nooit 'aantal branden' uit hittepunten, en noem EFFIS geen volledige statistiek: kleine heidebranden ontbreken en vóór 2018 staan er maar vier Nederlandse gebieden in.
- brandweer.nl is een webpagina, geen API: als de HTML verandert, breekt je lezer. Controleer dat je 25 regio's vindt, tel 'Onbekend' niet als fase 1, lees hooguit één keer per dag (Crawl-delay 10) en bewaar het zelf. De kleuren-JSON van de site is niet gedocumenteerd.
- Tijdzones lopen door elkaar: FIRMS acq_time in UTC (0245 is 04:45 Nederlandse zomertijd), EFFIS firedate met +02:00, KNMI-datums als 00:00 UTC. Reken alles om voordat je een hittepunt aan een dag of een droge periode koppelt.
Verder bouwen
- Archief opbouwen: bewaar elke dag de fase per regio, de FWI-klasse per regio en de hittepunten. Na een zomer kun je laten zien hoeveel dagen elke regio in fase 2 stond en of de FWI eerder rood kleurde dan de brandweer opschaalde.
- Alert voor je eigen bos of heide: stuur een bericht als er een hittepunt binnen 5 km van een Natura 2000-gebied valt dat niet bij een bekende industriële bron ligt, of als de FWI voor jouw regio in de komende drie dagen naar High of hoger gaat.
- Brandjaren vergelijken: tel per jaar de type-0-detecties uit de jaarbestanden (2012 tot nu) naast de EFFIS-hectares en het neerslagtekort op 1 augustus. Was 2022 met 15 EFFIS-gebieden ook het droogste jaar?
- Wat brandde er: leg de EFFIS-omtrek op ESA WorldCover of de Natura 2000-vlakken van PDOK en toon per brand hoeveel heide, bos of gras er verloren ging.
Meer met deze data
De grootste natuurbranden in Nederland volgens EFFIS: het meest Deurne, april 2020 (649 hectare), dan Elburg, april 2026 en Ede, april 2014
De grootste natuurbranden in Nederland volgens EFFIS, 2003–2026, in hectare. Totaal: 3.049; de grootste 12 van 53 categorieën staan in de grafiek. Deurne, april 2020 is 21% van het totaal. Alle 53 gebieden die EFFIS sinds 2003 in Nederland in kaart bracht, samen 3.049 hectare. Gemeente zoals EFFIS die noemt. Kleine branden ontbreken.
Satellietdetecties van vermoedelijke vegetatiebranden in Nederland: 708 detecties in 2025, 7% meer dan in 2012
Satellietdetecties van vermoedelijke vegetatiebranden in Nederland, 2012 – 2025, in detecties. Het hoogste punt was 2019 (741).
Satellietdetecties van vermoedelijke vegetatiebranden in Nederland per maand: het meest juni (1.312 detecties), dan april en augustus
Satellietdetecties van vermoedelijke vegetatiebranden in Nederland per maand, 2012–2025, in detecties. Totaal: 8.241; de grootste 12 van 12 categorieën staan in de grafiek. Juni is 16% van het totaal. Alle jaren 2012 tot en met 2025 samen. Een detectie is één beeldpunt van 375 meter waar de satelliet een warmtebron zag; één brand kan veel detecties geven.
De bronnen4
BNatuurbrandrisico (brandweer)
De brandweer geeft per veiligheidsregio aan hoe groot het risico op een natuurbrand is: fase 1 (normaal, iedereen is voorbereid) of fase 2 (het is al langere tijd droog, een brand kan zich snel en onvoorspelbaar ontwikkelen). Op brandweer.nl staat alleen de stand van vandaag, zonder geschiedenis en zonder gedocumenteerde API. Wij lezen de pagina elke dag en bewaren de uitkomst, zodat er vanaf 16 oktober 2026 een reeks ontstaat.

EFFIS bosbranden (Copernicus)
Het European Forest Fire Information System brengt branden in natuurgebieden in kaart uit satellietbeelden (MODIS, VIIRS en Sentinel-2). Per verbrand gebied: datum, oppervlak in hectare, gemeente, de omtrek als vlak, wat er groeide en welk deel in Natura 2000 ligt. Voor Nederland 53 gebieden sinds 2003, waarvan de grootste bij Deurne (april 2020, 649 hectare) en Elburg (april 2026, 421 hectare). Daarnaast een open kaartdienst met het brandgevaar voor de komende dagen (Fire Weather Index) en de hittepunten van vandaag.

NASA FIRMS (branden)
Hittebronnen die satellieten binnen drie uur na de overkomst melden. In Nederland vooral heide- en duinbranden en industrie.

KNMI daggegevens van het weerUitgewerkt
Dagwaarden van ruim vijftig weerstations: temperatuur, neerslag, zon en wind. De reeks van De Bilt begint in 1901.
Meer om te bouwen
Aardbevingentracker: elke beving op de kaart, met gemeente en woningenKaart
Alert als de rivier bij jou te hoog of te laag staatAlert
Buurtmonitor veiligheid: overlast en misdrijven per buurtDashboard
Klimaatrisico-check voor een adresTool
Luchtkwaliteit-alert voor je eigen straatAlert
Natuur in je buurt: welke soorten zijn er gezien en hoe groen is het?App