303.489 datasets geïndexeerd1.419 uitgevers
Open Data IndexDe index van open data over Nederland
Open Data Index›Uitgezochte vraag
Uitgezocht · 3 bronnen · 3 stappen

Hoe schoon is de lucht in mijn straat?

Een meetstation meet één plek, en Luchtmeetnet heeft er 102 voor heel Nederland. Hoe groot het verschil is, zie je in Amsterdam: in de week tot 15 oktober 2026 was stikstofdioxide (NO2) gemiddeld 10,7 microgram per kubieke meter in het Vondelpark en 24,3 aan de Haarlemmerweg. Voor je eigen adres is er de rekenkaart van het RIVM; op de Dam geeft die over 2024 een jaargemiddelde van 20,1. Uurwaarden zijn voorlopig, tijden staan in UTC, en een weekgemiddelde kun je niet zomaar naast een norm voor een jaargemiddelde leggen.

Kort antwoordOp de Dam in Amsterdam: een berekend jaargemiddelde van 20,1 µg/m³ NO2 over 2024 (RIVM). Dat is de helft van de EU-grenswaarde van 40 en twee keer het WHO-advies van 10. Het dichtstbijzijnde station, Oude Schans, mat in de week tot 15 oktober 2026 gemiddeld 14,4.

Stikstofdioxide in Amsterdam: het hoogst langs de grote wegen, het laagst aan de randen van de stad

Het berekende jaargemiddelde NO2 over 2024 uit de kaartdienst van het RIVM, voor een gebied van 16 bij 12 kilometer rond het centrum. Volgens de legenda van de dienst is blauw minder dan 14 microgram per kubieke meter en grijs 14 tot 16; crème en geel 16 tot 20, oranje 20 tot 30 en rood 30 of meer. De oranje en rode lijnen zijn de drukke wegen. Het is een rekenkaart, geen meting: voor een waarde op je eigen adres vraag je de kaart op dat punt op (zie het script).

Bron: RIVM, NO2-kaart 2024 (WMS data.rivm.nl) · opgehaald 25 oktober 2026Open de tabel Los blok

Stap voor stap

  1. 1

    Kijk welk meetstation het dichtst bij is in Luchtmeetnet.

  2. 2

    Voor een jaargemiddelde op je eigen plek: de GCN-kaart van het RIVM.

  3. 3

    Vergelijk met andere Europese steden via de EEA.

Koppelen via coördinaten

Begin met AI

Plak deze prompt in Claude of ChatGPT. Hij noemt de echte endpoints, de koppelsleutel en de valkuilen, zodat de assistent meteen bruikbare code schrijft. Controleer de uitkomst altijd met de bron zelf.

Bouw een webpagina waarop ik een punt op de kaart kies en zie hoe schoon de lucht daar is. Alle diensten hieronder zijn open (geen sleutel, CORS staat open).

1. Jaargemiddelde NO2 op dat punt, uit de RIVM-kaart (WMS GetFeatureInfo):
https://data.rivm.nl/geo/alo/wms?service=WMS&version=1.3.0&request=GetFeatureInfo&layers=rivm_nsl_20260401_gm_NO22024&query_layers=rivm_nsl_20260401_gm_NO22024&styles=&crs=EPSG:4326&bbox=52.3721,4.8915,52.3741,4.8935&width=3&height=3&i=1&j=1&info_format=application/json
De waarde staat in features[0].properties.GRAY_INDEX, in µg/m³, voor het jaar 2024. WMS 1.3.0 met EPSG:4326 wil de bbox als lat,lon (niet lon,lat). Het is een rekenkaart, geen meting.

2. De drie dichtstbijzijnde meetstations van Luchtmeetnet:
- lijst: https://api.luchtmeetnet.nl/open_api/stations?page=1 (5 pagina's, alleen nummer en naam)
- details met coördinaten, type (Traffic, Municipal …) en gemeten stoffen: https://api.luchtmeetnet.nl/open_api/stations/NL49017
- metingen: https://api.luchtmeetnet.nl/open_api/measurements?station_number=NL49017&formula=NO2&start=2026-10-08T00:00:00Z&end=2026-10-15T00:00:00Z
Maximaal één week per verzoek, gepagineerd (pagination.last_page), tijden in UTC, uurwaarden voorlopig. Niet elk station meet elke stof: kijk in components (NO2, PM10, PM25, O3 …). Haal de stationdetails één keer op en bewaar ze; vraag niet bij elk bezoek alle 102 stations op.

Uitkomst: de RIVM-waarde voor het gekozen punt, en per station de afstand, het type (verkeer of achtergrond), het gemiddelde en maximum van de afgelopen week, en een uurgrafiek in Nederlandse tijd. Zet de WHO-advieswaarde (10 µg/m³ als jaargemiddelde) en de EU-grenswaarde (40) erbij, en zeg dat een weekgemiddelde geen jaargemiddelde is.
Als achtergrond kan de kaart zelf: dezelfde WMS met request=GetMap en crs=EPSG:28992.

Probeer het zelf

Een klein script dat de kern van de vraag beantwoordt. Nodig: Python 3.10+ en requests. Getest op 2026-10-15; hieronder de echte uitvoer van die proefdraai.

# Hoe schoon is de lucht in mijn straat? (1) Berekend jaargemiddelde NO2 op je plek (RIVM-kaart, WMS), (2) metingen
# van de afgelopen week op de Luchtmeetnet-stations in je stad, op afstand gesorteerd. Geen sleutel nodig.
import math, requests
from datetime import datetime, timedelta, timezone

API = "https://api.luchtmeetnet.nl/open_api"
UA = {"User-Agent": "opendataindex-voorbeeld/0.2 (+https://opendataindex.nl)"}
STAD, LON, LAT = "Amsterdam", 4.8925, 52.3731   # de Dam; zet hier je eigen coördinaten

def alle_paginas(pad, **params):
    uit, pagina = [], 1
    while True:
        j = requests.get(f"{API}/{pad}", params={**params, "page": pagina}, headers=UA, timeout=60).json()
        uit += j["data"]
        if pagina >= j["pagination"]["last_page"]:
            return uit
        pagina += 1

def km(lon1, lat1, lon2, lat2):   # benadering, goed genoeg binnen een stad
    return 6371 * math.hypot(math.radians(lon2 - lon1) * math.cos(math.radians(lat1)), math.radians(lat2 - lat1))

# 1. Jaargemiddelde op je plek uit de RIVM-kaart (GetFeatureInfo; WMS 1.3.0 met EPSG:4326 = lat,lon-volgorde).
LAAG = "rivm_nsl_20260401_gm_NO22024"   # NO2-kaart over 2024, gepubliceerd 1 april 2026
info = requests.get("https://data.rivm.nl/geo/alo/wms", headers=UA, timeout=60, params={
    "service": "WMS", "version": "1.3.0", "request": "GetFeatureInfo", "layers": LAAG, "query_layers": LAAG,
    "styles": "", "crs": "EPSG:4326", "bbox": f"{LAT - .001},{LON - .001},{LAT + .001},{LON + .001}",
    "width": 3, "height": 3, "i": 1, "j": 1, "info_format": "application/json"}).json()
print(f"Berekend jaargemiddelde NO2 in 2024 op {LAT}, {LON}: {info['features'][0]['properties']['GRAY_INDEX']:.1f} µg/m³\n")

# 2. Stations in je stad (de lijst heeft alleen nummer en naam; details per station apart).
stations = [s for s in alle_paginas("stations") if s["location"].replace(" ", "").startswith(STAD + "-")]
eind = datetime.now(timezone.utc).replace(minute=0, second=0, microsecond=0)
start = eind - timedelta(days=7)   # maximaal één week per verzoek; tijden in UTC

rijen = []
for s in stations:
    d = requests.get(f"{API}/stations/{s['number']}", headers=UA, timeout=60).json()["data"]
    if "NO2" not in d["components"]:
        continue   # niet elk station meet elke stof
    lon, lat = d["geometry"]["coordinates"]
    m = alle_paginas("measurements", station_number=s["number"], formula="NO2",
                     start=start.isoformat().replace("+00:00", "Z"), end=eind.isoformat().replace("+00:00", "Z"))
    w = [x["value"] for x in m if x["value"] is not None]
    if w:
        rijen.append((km(LON, LAT, lon, lat), s["location"], d["type"], sum(w) / len(w), max(w), len(w)))

print(f"NO2 in µg/m³, {start:%d-%m %H:%M} tot {eind:%d-%m %H:%M} UTC (voorlopige uurwaarden)\n")
print(f"{'afstand':>8}  {'station':32} {'soort':12} {'gem.':>5} {'max':>6} {'uren':>5}")
for afstand, naam, soort, gem, mx, n in sorted(rijen):
    print(f"{afstand:6.1f} km  {naam:32} {soort:12} {gem:5.1f} {mx:6.1f} {n:5}")
print("\nTer vergelijking: WHO-advies 10 µg/m³ als jaargemiddelde, EU-grenswaarde 40.")
Uitvoer
Berekend jaargemiddelde NO2 in 2024 op 52.3731, 4.8925: 20.1 µg/m³

NO2 in µg/m³, 08-10 22:00 tot 15-10 22:00 UTC (voorlopige uurwaarden)

 afstand  station                          soort         gem.    max  uren
   0.8 km  Amsterdam-Oude Schans            Municipal     14.4   52.0   168
   1.7 km  Amsterdam-Stadhouderskade        Traffic       18.6   55.8   168
   1.8 km  Amsterdam-Haarlemmerweg          Traffic       24.3   61.2   166
   1.9 km  Amsterdam-Van Diemenstraat       Traffic       19.7   55.7   168
   2.2 km  Amsterdam-Jan van Galenstraat    Traffic       21.3   59.3   168
   2.3 km  Amsterdam-Vondelpark             Municipal     10.7   39.5   168
   3.3 km  Amsterdam-Einsteinweg            Traffic       21.5   62.6   167
   3.9 km  Amsterdam-Nieuwendammerdijk      Municipal     14.4   44.4   162
   6.8 km  Amsterdam-Ookmeer                Municipal     12.6   57.3   167
   8.7 km  Amsterdam -Kantershof            Municipal     11.6   34.2   168

Ter vergelijking: WHO-advies 10 µg/m³ als jaargemiddelde, EU-grenswaarde 40.

De bronnen3

LuchtmeetnetUitgewerkt

RIVM, GGD's en provinciesNederland, meetstation

Metingen van stikstofdioxide, fijnstof en ozon, elk uur, van zo'n honderd meetstations in heel Nederland.

OpenAPIRealtimeKlimaat en milieu
Actueel
bijgewerkt minder dan een uur geleden

Grootschalige concentratiekaarten (GCN)

RIVMNederland, 1 × 1 km

Berekende jaargemiddelden van stikstofdioxide en fijnstof voor heel Nederland, in vakjes van een kilometer. Waar Luchtmeetnet meet, rekent GCN tussen de meetpunten in.

OpenDownloadKaartlaagKlimaat en milieu
Bereikbaar
jaarlijks

EEA luchtkwaliteit

Europees MilieuagentschapEuropa, meetstation

Dezelfde Nederlandse meetstations als Luchtmeetnet, maar naast die van de rest van Europa. Handig om Amsterdam met Antwerpen of Keulen te vergelijken.

OpenDownloadAPIKlimaat en milieu
Bereikbaar
dagelijks

Meer voorbeelden met deze data

Ook in de indexen

Datasets uit data.overheid.nl, het Nationaal Georegister, CBS, Eurostat en de stadsportalen die bij deze vraag passen.

Andere uitgezochte vragen