# Climate Impact Atlas (Klimaateffectatlas)

National maps of what climate change does to the Netherlands: perceived temperature, drought, groundwater, subsidence, water depth in a flood and in extreme rain. Often for today and for 2050, 2085 or 2100. There is also a neighbourhood dashboard with figures per neighbourhood. Available as map layers (WMS), vector data (WFS) and download.

- Publisher: Klimaateffectatlas (Stichting Climate Adaptation Services)
- Area: Netherlands · Finest detail: neighbourhood or raster cell
- Period: huidig klimaat en scenario's voor 2050, 2085 en 2100 · Refreshed: quarterly
- Access: Open · Licence: CC BY 4.0 (bronvermelding "Klimaateffectatlas, 2026")
- Join keys: buurtcode (BU), gemeentecode (GM)
- Status: ok (2026-08-20) · 185 kaartlagen; nieuwste: nl_stroombanen_70mm_1h_v20260820
- URL: https://www.klimaateffectatlas.nl

## What can you do with it?
- **The hottest neighbourhoods in your city.** The GevoelstemperatuurBuurt_2022 layer gives an average perceived temperature (PET) per neighbourhood. Sort your municipality's neighbourhoods and see which are hottest.
- **How green is a neighbourhood?.** The neighbourhood dashboard has the share of green, stone and water per neighbourhood, and tree canopy cover at three moments (measured with AHN3, AHN4 and AHN5). That shows whether a neighbourhood is getting greener or greyer.
- **Heat and income.** Join perceived temperature per neighbourhood to income and age from the CBS neighbourhood figures. Do vulnerable people live in hot neighbourhoods more often?
- **How deep would the water get?.** The maximum flood depth maps exist for five probabilities, from high to extremely low. Count per municipality how many homes are in areas with more than a metre of water.

## How to process it
1. **Choose a map layer.** On 15 October 2026 the WMS had 185 map layers. The names are technical (droogtestress_huidig, kans_grondwateroverlast_2050hoog); the map viewer on the website shows which layer belongs to which map story.
   `https://cas.cloud.sogelink.com/public/data/org/gws/YWFMLMWERURF/kea_public/wms?service=WMS&request=GetCapabilities`
2. **Vector data per neighbourhood via WFS.** 68 layers are also available as WFS, such as the neighbourhood layers. With propertyName you leave out the geometry; the response stays small.
   `https://cas.cloud.sogelink.com/public/data/org/gws/YWFMLMWERURF/kea_public/wfs?request=GetFeature&service=WFS&version=2.0.0&typeNames=kea_public:GevoelstemperatuurBuurt_2022&outputFormat=application/json&count=3&propertyName=buurtcode,buurtnaam,gemeentena,PET_gem`
3. **Filter by municipality.** The server is GeoServer and supports cql_filter. Utrecht returned 111 neighbourhoods.
   `https://cas.cloud.sogelink.com/public/data/org/gws/YWFMLMWERURF/kea_public/wfs?request=GetFeature&service=WFS&version=2.0.0&typeNames=kea_public:GevoelstemperatuurBuurt_2022&outputFormat=application/json&propertyName=buurtcode,buurtnaam,PET_gem&cql_filter=gemeentena='Utrecht'`
4. **Downloading rasters.** For the raster files themselves you fill in a form on the site (name, organisation, email, purpose). You then receive a download link by email.

## Interesting combinations
- Do older people and low-income households live in the hottest neighbourhoods? → [cbs-kwb](https://www.opendataindex.nl/en/bron/cbs-kwb.md) via buurtcode (BU). Join on neighbourhood code. Check which year the boundaries are from; the neighbourhood dashboard gives codes from 2020 to 2024.
- Your own map of heat per neighbourhood → [pdok-wijkenbuurten](https://www.opendataindex.nl/en/bron/pdok-wijkenbuurten.md) via buurtcode (BU). Fetch the figures without geometry and attach them to the boundaries of the same year. Much lighter than the geometry from the atlas WFS.

## Similar sources
- [Atlas Leefomgeving](https://www.atlasleefomgeving.nl): Broader (air, noise, greenery, water), with maps from RIVM. Less depth on climate.
- [LIWO, basisinformatie overstromingen (Rijkswaterstaat)](https://basisinformatie-overstromingen.nl): Flood scenarios per dike breach instead of one national picture.
- [era5](https://www.opendataindex.nl/en/bron/era5.md): Raw climate data (temperature, rainfall) per hour. The atlas shows the effects, ERA5 the causes.

## What to watch out for
- **Models, not measurements.** The maps are calculations for a scenario or a standard day. They show where the risk is higher, not what happened on a given day.
- **Maps disappear and return under a new name.** The site's log lists the Urban heat island map as removed in August 2026, while the hitteeiland layer was still in the WMS on 15 October 2026. Check the log to see which map is current.
- **Download only via a form.** Raster files come by email after a form with your details. For scripts, WMS and WFS are the only direct route.
- **Attribution required.** The data is under CC BY 4.0. The atlas asks you to credit: 'Klimaateffectatlas, 2026'.

## API (OGC WFS 2.0.0)

- Base: https://cas.cloud.sogelink.com/public/data/org/gws/YWFMLMWERURF/kea_public/wfs
- Access: No key. Fees: NONE; access constraints: NONE. (from the description)
- Formats: application/gml+xml; version=3.2, GML2, KML, SHAPE-ZIP, application/geo+json, application/geopackage+sqlite3, application/json, application/vnd.google-earth.kml xml, application/vnd.google-earth.kml+xml, application/vnd.ogc.fg+json, application/x-gpkg, csv, excel, excel2007, geopackage, geopkg, gml3, gml32, gpkg, json, text/csv, text/xml; subtype=gml/2.1.2, text/xml; subtype=gml/3.1.1, text/xml; subtype=gml/3.2
- Size: 14574 features in kea_public:GevoelstemperatuurBuurt_2022 (tested)
- Filtering: OGC Filter Encoding (FES 2.0); PropertyIsLessThan, PropertyIsGreaterThan, PropertyIsLessThanOrEqualTo, PropertyIsGreaterThanOrEqualTo, PropertyIsEqualTo, PropertyIsNotEqualTo, PropertyIsLike, PropertyIsBetween, PropertyIsNull, PropertyIsNil, Disjoint, Equals, DWithin, Beyond, Intersects, Touches, Crosses, Within, Contains, Overlaps, BBOX, After, Before, Begins, BegunBy, TContains, During, TEquals, TOverlaps, Meets, OverlappedBy, MetBy, EndedBy

### Endpoints
- `GET ?request=GetCapabilities`: service description
- `GET ?request=DescribeFeatureType`: fields of a layer (XSD)
- `GET ?request=GetFeature`: the features themselves, with geometry
- `GET ?request=GetPropertyValue`: only the values of one field
- `GET ?request=ListStoredQueries`: stored queries
- `GET ?request=DescribeStoredQueries`: stored query details
- `GET ?request=CreateStoredQuery`: CreateStoredQuery
- `GET ?request=DropStoredQuery`: DropStoredQuery

### Parameters
- `typeNames`: which layer: kea_public:Afstand_tot_koelte, kea_public:BD_buurtdashboard_20260312, kea_public:Gebiedsindeling_BRS, kea_public:GevoelstemperatuurBuurt_2012, kea_public:GevoelstemperatuurBuurt_2022, kea_public:Oppervlaktewaterverzilting_05m_ZSS_1000m3_Rijn, kea_public:Oppervlaktewaterverzilting_05m_ZSS_2000m3_Rijn, kea_public:Oppervlaktewaterverzilting_05m_ZSS_500m3_Rijn, kea_public:Oppervlaktewaterverzilting_0m_ZSS_1000m3_Rijn, kea_public:Oppervlaktewaterverzilting_0m_ZSS_2000m3_Rijn, kea_public:Oppervlaktewaterverzilting_0m_ZSS_500m3_Rijn, kea_public:Oppervlaktewaterverzilting_1m_ZSS_1000m3_Rijn, kea_public:Oppervlaktewaterverzilting_1m_ZSS_2000m3_Rijn, kea_public:Oppervlaktewaterverzilting_1m_ZSS_500m3_Rijn, kea_public:Oppervlaktewaterverzilting_3mZSS_500m3_Rijn, kea_public:Oppervlaktewaterverzilting_3m_ZSS_1000m3_Rijn, kea_public:Oppervlaktewaterverzilting_3m_ZSS_2000m3_Rijn, kea_public:Provinciegrenzen, kea_public:RMK_30percBKB_AHN3, kea_public:RMK_30percBKB_AHN4, kea_public:RMK_30percBKB_AHN5, kea_public:RMK_BebouwdeKomGrenzen, kea_public:RMK_BuurtAggregaties, kea_public:RMK_LVR_AHN3, kea_public:RMK_LVR_AHN4, kea_public:RMK_LVR_AHN5, kea_public:Schaduw op gebouwen, kea_public:SchaduwOpGebouwen_VerkoelingBinnen, kea_public:Toenamehoogtedijkenenduinenbijnormbij1mzeespiegelstijging, kea_public:Toenamehoogtedijkenenduinenbijnormbij3mzeespiegelstijging, kea_public:totaalkaartklimaatbuffers, kea_public:Verandering_doorspoelwatervraag_05m_ZSS, kea_public:Verandering_doorspoelwatervraag_1m_ZSS, kea_public:Verandering_doorspoelwatervraag_3m_ZSS, kea_public:Veranderingwaterstandbijnormbij1mzeespiegelstijging, kea_public:Veranderingwaterstandbijnormbij3mzeespiegelstijging, kea_public:Waterschapsgrenzen, kea_public:werkregiogrenzen14012022, kea_public:wijktypen_buurten, kea_public:bkns_subklasse_2023_dreigingen_kansen, kea_public:bknsn_hoofdklasse, kea_public:bknsn_subklasse, kea_public:droge_verdiepingen_extreem_kleine_kans_20251120, kea_public:droogtegevoeligheidgrondwaterafhankelijkenatuur, kea_public:kans_grondwateroverlast_2050hoog, kea_public:nl_bereikbaarheid_geen_dreiging_v20260813, kea_public:nl_bereikbaarheid_grootschalige_extreme_neerslag_v20260813, kea_public:nl_bodemdaling_ondiep_v20260623, kea_public:nl_bodemdaling_totaal_v20260623, kea_public:nl_broze_gezondheid_buurt_v20260722, kea_public:nl_fcab_omgevingsscore_wateroverlast_v20260806, kea_public:nl_percentage_huurwoningen_buurt_v20260722, kea_public:nl_sociaal_economische_status_buurt_v20260722, kea_public:nl_sterk_eenzaam_buurt_v20260722, kea_public:nl_stroombanen_70mm_1h_v20260820, kea_public:opwarming_oppervlaktewater_2050hoog, kea_public:opwarming_oppervlaktewater_huidig, kea_public:risicopaalrot_2050hoog, kea_public:risicopaalrot_2050laag, kea_public:risicopaalrot_huidig, kea_public:risicoverschilzetting_2050hoog, kea_public:risicoverschilzetting_2050laag, kea_public:stijging_waterstanden_2050hoog, kea_public:tekort_opvwater_extreem_2050hoog, kea_public:tekort_opvwater_extreem_huidig, kea_public:tekort_opvwater_gem_2050hoog, kea_public:tekort_opvwater_gem_huidig, kea_public:wijktypen_PC6 (from the description)
- `outputFormat`: e.g. application/json for GeoJSON (from the description)
- `srsName`: projection, e.g. EPSG:4326 for web maps (default EPSG:28992, RD) (from the description)
- `count / startIndex`: paging (from the description)
- `filter`: FES XML filter on fields or geometry (from the description)
- `bbox`: box in the chosen projection (platform)

### Fields (14)
`fid_1` double, `buurtcode` string, `buurtnaam` string, `wijkcode` string, `gemeenteco` string, `gemeentena` string, `jrstatcode` string, `jaar` long, `_count` double, `_sum` double, `_mean` double, `PET_gem` int, `RIVMClass` int, `geometry` geometrie

### Limits and pitfalls
- At most 100,000 features per request (CountDefault). (from the description)
- Paging supported: count and startIndex (ImplementsResultPaging). (from the description)
- Some layers are rasters converted to polygons and have millions of features (Afstand_tot_koelte: 6,275,235 on 15 Oct 2026). Never request them in one go; count first with resultType=hits. (tested)
- Layer names with a date (…_v20260813, …_20260128) change on update; old versions sometimes remain next to the new ones. Read GetCapabilities first and pick the newest. (tested)
- With propertyName without the geometry field, GeoServer leaves out the geometry (geometry: null). Three neighbourhoods are then less than 1 KB. (tested)
- Field names are truncated (gemeentena, gemeenteco). The layer is called _2022, but the field jaar is 2024 and jrstatcode starts with 2024BU: check which neighbourhood boundaries you join to. (tested)

### Example
```
https://cas.cloud.sogelink.com/public/data/org/gws/YWFMLMWERURF/kea_public/wfs?request=GetFeature&service=WFS&version=2.0.0&typeNames=kea_public:GevoelstemperatuurBuurt_2022&outputFormat=application/json&count=3&propertyName=buurtcode,buurtnaam,gemeentena,PET_gem
```

## How to fetch it

### curl
```bash
curl "https://cas.cloud.sogelink.com/public/data/org/gws/YWFMLMWERURF/kea_public/wfs?request=GetFeature&service=WFS&version=2.0.0&typeNames=kea_public:GevoelstemperatuurBuurt_2022&outputFormat=application/json&count=3&propertyName=buurtcode,buurtnaam,gemeentena,PET_gem"
```

### python
```python
import requests

r = requests.get("https://cas.cloud.sogelink.com/public/data/org/gws/YWFMLMWERURF/kea_public/wfs", params={
    "request": "GetFeature", "service": "WFS", "version": "2.0.0",
    "typeNames": "kea_public:GevoelstemperatuurBuurt_2022", "outputFormat": "application/json",
    "propertyName": "buurtcode,buurtnaam,PET_gem", "cql_filter": "gemeentena='Utrecht'"})
buurten = sorted((f["properties"] for f in r.json()["features"]), key=lambda p: -p["PET_gem"])
for b in buurten[:5]:
    print(b["buurtnaam"], b["PET_gem"])
```

## What you can build with it
- [Climate risk check for an address](https://www.opendataindex.nl/en/bouwen/klimaatrisico-adres.md): Type a postcode and house number and get one report on how the building fares on heat, flooding from rain, flooding from rivers and sea, drought and foundation problems, using the Klimaateffectatlas maps, the AHN elevation model, the BAG and real groundwater measurements from the BRO.


## What is in it: 189 map layers

All layers from the Climate Impact Atlas WMS and WFS, fetched every night. The service has no folders of its own; the grouping below follows the layer names. A date in the name is the version, and the older version is sometimes still listed.

- Kinds: kaartlaag 189
- Last changed: 2026-10-16 (4 in the past 30 days)
- With an API call on the dataset page: 189
- Search: https://www.opendataindex.nl/api/catalogus/klimaateffectatlas?q=… or the MCP function zoek_datasets with herkomst=klimaateffectatlas
- Every row has its own page: https://www.opendataindex.nl/en/dataset/klimaateffectatlas/<key>

### Folders
- Bereikbaarheid (2)
- Bodemdaling en funderingen (12)
- Bomen en groen (RMK, BGV) (15)
- Buurten en bewoners (7)
- Droogte en verzilting (46)
- Grenzen en indelingen (4)
- Hitte (22)
- Natuurbrand (2)
- Overige lagen (8)
- Overstroming (52)
- Wateroverlast (13)
- Wind (6)

## Examples with real figures (2)

For each example the finding, the reference date and the call that fetches exactly these figures.

- **Modelled feels-like temperature (PET) from the heat map: highest in Schiermonnikoog (47.7 °C), lowest in Zeist (38.8 °C)** (2022). Table kea_public:GevoelstemperatuurBuurt_2022. [Example](https://www.opendataindex.nl/en/voorbeeld/klimaateffectatlas-gevoelstemperatuur-gemeenten)
  - `https://cas.cloud.sogelink.com/public/data/org/gws/YWFMLMWERURF/kea_public/wfs?request=GetFeature&service=WFS&version=2.0.0&typeNames=kea_public:GevoelstemperatuurBuurt_2022&outputFormat=csv&propertyName=buurtcode,gemeenteco,gemeentena,_count,_mean`
- **Modelled feels-like temperature in Utrecht: mostly extreme heat stress in the built-up city, cooler near greenery and water** (2022). Table gevoelstemperatuur_2022. [Example](https://www.opendataindex.nl/en/voorbeeld/klimaateffectatlas-hitte-utrecht)
  - `https://cas.cloud.sogelink.com/public/data/org/gws/YWFMLMWERURF/kea_public/wms?service=WMS&version=1.3.0&request=GetMap&layers=gevoelstemperatuur_2022&styles=&crs=EPSG:28992&bbox=131000,451000,141000,461000&width=800&height=800&format=image/png`
