303,525 datasets indexed1,419 publishers
Open Data IndexThe index of open data about the Netherlands
Sources›Housing and land

Actueel Hoogtebestand Nederland (AHN, national elevation model)

The elevation map of the Netherlands, measured by laser from an aircraft: at least ten measurements per square metre. There are two maps. The terrain model (DTM) is the bare ground. The surface model (DSM) is everything on it, including buildings and trees. Via PDOK as a map layer (WMS), as a raster API (WCS) and as a download.

Housing and landClimate and environmentOpenMap layerDownloadNetherlands · 0.5 metre
Up to date · updated in April 2023 · checked 17:23
ahn.nl
Screenshot of ahn.nl

The relief of the hills around Valkenburg, from the Actueel Hoogtebestand Nederland

Ground level (DTM, 0.5 metre) from PDOK's AHN map service. According to the service's legend, yellow is low (20 to 35 metres above NAP), going through orange (40 to 90 metres) to red-orange (above 100 metres): the light ribbon is the Geul valley, the darker areas are the plateaus. The image comes straight from the service, so you see what the source delivers before downloading anything.

Source: AHN via PDOK (WMS) · opgehaald 25 oktober 2026Open the table Single block

What you can build with it2

What can you do with it?4 ideas

Getting started

How high is your street?

Request the elevation at one point from the terrain model. You get metres relative to NAP. Line up a set of addresses and you see which neighbourhood lies below sea level.

Getting started

Measuring buildings without a tape

Subtract the ground from the surface (DSM minus DTM). What remains is the height of buildings, trees and bridges.

Advanced

How much of the neighbourhood lies below NAP?

Clip the terrain model to the neighbourhood boundaries and count the share of cells below 0 metres per neighbourhood. Leave out buildings and water, they have no value in the DTM.

Advanced

Is the ground sinking?

Compare two versions of the AHN at the same spot, for example in the peat meadow area. Note: since AHN5 the model is calculated differently, so preferably compare the new 1 by 1 kilometre tiles, which were re-derived for all versions.

How to process it4 steps

  1. Elevation at one point

    A WMS GetFeatureInfo on the dtm_05m layer returns the elevation in metres relative to NAP as JSON (value_list). Use RD coordinates. With a very small bbox (2 by 2 metres) we got an empty response; with 200 by 200 metres and the click in the centre it works.

    https://service.pdok.nl/rws/ahn/wms/v1_0?service=WMS&version=1.3.0&request=GetFeatureInfo&layers=dtm_05m&query_layers=dtm_05m&styles=&crs=EPSG:28992&bbox=121300,487300,121500,487500&width=200&height=200&i=100&j=100&info_format=application/json
  2. A small piece of raster

    WCS GetCoverage cuts out a rectangle. 20 by 20 metres gives a GeoTIFF of 40 by 40 cells (float32, just over 3 KB). Choose dtm_05m or dsm_05m.

    https://service.pdok.nl/rws/ahn/wcs/v1_0?service=WCS&version=2.0.1&request=GetCoverage&coverageId=dtm_05m&subset=x(121390,121410)&subset=y(487390,487410)&format=image/tiff
  3. Large areas as map tiles

    For more than a few hundred metres, download map tiles. PDOK's ATOM feed lists 1,373 tiles of 5 by 6.25 km as Cloud Optimized GeoTIFF; the largest are over 500 MB. Look up the tile number first with the kaartbladindex layer.

    https://service.pdok.nl/rws/actueel-hoogtebestand-nederland/atom/dtm_05m.xml
  4. Drop the empty cells

    Cells without a measurement have the value 3.4 × 10³⁸ (the largest float32 number). In our test patch in the Oude Kerk area (Amsterdam) that was 813 of the 1,600 cells. Remove them before calculating averages.

Interesting combinations

Similar sources

  • 3DBAG (TU Delft en 3DGI) not in the index yet

    All buildings in 3D, derived from the BAG and the AHN. Easier if you only need building heights. CC BY 4.0.

  • Copernicus DEM not in the index yet

    Global surface model at 30 or 90 metres. Coarse, but consistent across borders.

  • Climate Impact Atlas (Klimaateffectatlas)

    Uses the AHN to calculate flood depth and waterlogging. Ready-made maps instead of raw elevation.

What to watch out for

  • PDOK still has AHN4

    The PDOK services contain AHN4, collected from 2020 to 2022 (ATOM feed updated 12 April 2023). The first part of AHN6 (north-east Netherlands, 2025) has been on ahn.nl since 13 October 2025, with its own WMS, WMTS and WCS services.

  • Holes in the terrain model

    Under buildings and on water the DTM has no value. If you need a continuous surface, fill the gaps yourself or use the DSM.

  • Versions are not directly comparable

    Up to AHN4 the DTM was a weighted average, and so was the DSM. Since AHN5 the DTM is an unweighted average and the DSM the highest point; since AHN6 without power lines and pylons. Differences between versions may therefore partly come from the method.

  • Licence differs per version

    AHN4 via PDOK is CC0. For AHN5 and AHN6 the publisher requires attribution (AHN6: CC BY 4.0).

  • Really big

    The whole country at 0.5 metres is 540,000 by 625,000 cells. Work with small extracts or tiles, never the whole country at once.

APIOGC WMS 1.3.0 + WCS 2.0.1 (PDOK) · read 16 Oct 2026

StandardOGC WMS 1.3.0 + WCS 2.0.1 (PDOK)docs
Access no key

No key or account needed tested

Size1,373

DTM 0.5 m map tiles (5 × 6.25 km, Cloud Optimized GeoTIFF) in the ATOM feed; the grid is 540,000 × 625,000 cells tested

Formats

GeoTIFF (float32)pngjpegjson (GetFeatureInfo)COG (download)

Base URL

https://service.pdok.nl/rws/ahn

Endpoints 7

  • GET/wms/v1_0?service=WMS&request=GetCapabilitiesLayers dtm_05m (terrain), dsm_05m (surface) and kaartbladindex; 9 projections (incl. EPSG:28992, 3857, 4326).
  • GET/wms/v1_0?service=WMS&version=1.3.0&request=GetMap&layers=dtm_05m&styles=&crs=EPSG:28992&bbox=…&width=…&height=…&format=image/pngMap image (coloured elevation) of a rectangle.
  • GET/wms/v1_0?service=WMS&version=1.3.0&request=GetFeatureInfo&layers=dtm_05m&query_layers=dtm_05m&crs=EPSG:28992&bbox=…&width=200&height=200&i=100&j=100&info_format=application/jsonElevation at one point in metres relative to NAP (properties.value_list).
  • GET/wcs/v1_0?service=WCS&request=GetCapabilities&version=2.0.1Coverages dtm_05m and dsm_05m; formats image/tiff, png, jpeg.
  • GET/wcs/v1_0?service=WCS&version=2.0.1&request=DescribeCoverage&coverageId=dtm_05mExtent (RD 10000,306250 to 280000,618750) and grid (540,000 × 625,000 cells of 0.5 m).
  • GET/wcs/v1_0?service=WCS&version=2.0.1&request=GetCoverage&coverageId=dtm_05m&subset=x(…)&subset=y(…)&format=image/tiffRaw elevation values as GeoTIFF (float32) for a rectangle in RD.
  • GEThttps://service.pdok.nl/rws/actueel-hoogtebestand-nederland/atom/dtm_05m.xmlATOM feed with 1,373 map tiles (COG) and kaartbladindex.json (1.1 MB); also dsm_05m.xml.

The APIs of this source 1 · from the provider's documentation from the description

AHN6 en oudere versies via ahn.nl (Ellipsis Drive)

ahn.nl publishes every AHN version (AHN2 to AHN6) as WMS, WMTS and WCS at Ellipsis Drive, plus a tile index as WFS and OGC API Features. AHN6 DTM: 231a4c66-9de9-4f41-91af-e4e991df9160, AHN6 DSM: 22f5740b-1276-42e0-9d2d-dd2a9745e928. The WMS layer is named after an id, projections are EPSG:3857 and 28992. GetFeatureInfo with info_format=text/xml returned 'Gray:6.99399' in central Groningen. AHN6 is CC BY 4.0.

https://api.ellipsis-drive.com/v3/ogc
  • GET/wms/231a4c66-9de9-4f41-91af-e4e991df9160?request=getCapabilitiesWMS van AHN6 DTM 0,5 m (laagnaam en projecties)
  • GET/wms/231a4c66-9de9-4f41-91af-e4e991df9160?service=WMS&version=1.3.0&request=GetFeatureInfo&layers={laag-id}&query_layers={laag-id}&crs=EPSG:28992&bbox=…&width=200&height=200&i=100&j=100&info_format=text/xmlHoogte op een punt (antwoord als platte tekst 'Gray:<waarde>')
  • GET/wcs/231a4c66-9de9-4f41-91af-e4e991df9160?request=getCapabilities&version=1.1.1WCS 1.1.1 van AHN6 DTM
  • GET/wfs/0820faae-5240-499b-8486-cf406433cf71?request=getCapabilitiesKaartbladindex AHN6 als WFS (ook /features/… als OGC API)

Filtering tested

No query language: you pick a layer, a rectangle (bbox or subset) and optionally a pixel.

Parameters 6

layers / coverageIddtm_05m = terrain (bare ground), dsm_05m = surface (with buildings and trees); WMS also has kaartbladindex.tested
crs / bboxWMS: crs=EPSG:28992 with bbox=xmin,ymin,xmax,ymax in metres (RD). Also EPSG:3857, 4326, 4258, 25831, 25832, 3034, 3035, CRS:84.tested
i, j, width, heightGetFeatureInfo: the pixel within the image whose value you want. 200×200 px over 200×200 m with i=j=100 gives the centre.tested
info_formatapplication/json (GeoJSON with value_list), application/vnd.ogc.gml, text/xml …tested
subsetWCS: pass twice, subset=x(121390,121410)&subset=y(487390,487410), in RD metres.tested
formatWCS: image/tiff returns float32 values in metres; png and jpeg are images only.tested

Fields in the GetFeatureInfo response 3

NameTypeMeaning
value_listString · mHoogte in meters t.o.v. NAP, als tekst ('1.353800058')
geometry.coordinatesPointMiddelpunt van de cel waaruit de waarde komt (RD)
bboxarrayZelfde punt als rechthoek

Limits and pitfalls

  • No key and no documented limit. Keep WCS cut-outs small (20 × 20 m = 3.4 KB); for large areas download the map tiles (up to over 500 MB per tile). tested
  • PDOK has AHN4 (collected 2020–2022, ATOM updated 12 April 2023). Newer versions (AHN5, the first part of AHN6) are only on ahn.nl, via Ellipsis Drive (see components). tested
  • With a very small bbox (2 × 2 m, 4 × 4 px) GetFeatureInfo returned an empty list; 200 × 200 m at 200 px with i=j=100 works. experience
  • Cells without a measurement (buildings and water in the DTM) have the value 3.4028235e38 in the GeoTIFF. In 20 × 20 m of central Amsterdam that was 813 of 1,600 cells. Filter them out. experience
  • There is no WFS and no WMTS at service.pdok.nl/rws/ahn (404). The tile index is a WMS layer and a JSON file in the ATOM feed. tested
  • The same address also works as service.pdok.nl/rws/actueel-hoogtebestand-nederland/…; the ATOM feed is only under that long name. experience

Try it HTTP 200 · 394 ms · 16 Oct

https://service.pdok.nl/rws/ahn/wms/v1_0?service=WMS&version=1.3.0&request=GetFeatureInfo&layers=dtm_05m&query_layers=dtm_05m&styles=&crs=EPSG:28992&bbox=121300,487300,121500,487500&width=200&height=200&i=100&j=100&info_format=application/json
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "bbox": [
        121398.75,
        487402.25
      ],
      "geometry": {
        "type": "Point",
        "coordinates": "…"
      },
      "properties": {
        "value_list": "1.353800058"
      }
    }
  ],
  "crs": {
    "properties": {
      "name": "urn:ogc:def:crs:EPSG::28992"
    },
    "type": "name"
  }
}

Shortened response, saved at harvest time. Click the URL for the real, current response.

Read from WMS capabilities: layers dtm_05m, dsm_05m, kaartbladindex · WCS capabilities: coverages, formats, projections · Extent and grid of dtm_05m · ATOM feed with the downloads (map tiles) · ahn.nl data room: all AHN versions with their WMS/WMTS/WCS at Ellipsis Drive. Labels: from the description stated in what the api itself publishes. tested from our own small call. platform applies to every api on this platform, per its documentation. experience learned while building open data index.

How to fetch it

curl "https://service.pdok.nl/rws/ahn/wms/v1_0?service=WMS&version=1.3.0&request=GetFeatureInfo&layers=dtm_05m&query_layers=dtm_05m&styles=&crs=EPSG:28992&bbox=121300,487300,121500,487500&width=200&height=200&i=100&j=100&info_format=application/json"

More from Het Waterschapshuis in our index

77 datasets in Nationaal Georegister, GBIF, datasets uit en over Nederland. These changed most recently.

All about Het Waterschapshuis

More in this topic

See how this page is built
bron: ahn
blokken: []
secties:
  - ideeen
  - verwerken
  - koppelingen
  - vergelijkbaar
  - beperkingen
  - code
cache:
  tag: bron:ahn
  ververs: na statuscheck, als de bron nieuwer is
statuscheck:
  methode: datum in de ATOM-feed van de PDOK-dienst (AHN4)
  verwacht: elke paar jaar

Source: content/bronnen/ahn.yaml · Markdown