National LiDAR and DEM Data by Country, Free Elevation Services
Free elevation data from national mapping agencies, country by country, LiDAR DTM and DSM at 0.5 m to 30 m (France, the Netherlands, Spain, the UK, the USA, Canada, Japan and fifty more), viewed in the browser as terrain, no download.
The built-in sources on Terrain and Basemap Sources are worldwide tilesets. This page covers the other half of the library: elevation services published directly by national mapping agencies, at resolutions global tilesets can't match — 0.5 m LiDAR for France and the Netherlands against ~30 m for a global DEM.
Load them from Sources → Terrain → Library, which opens a picker where each dataset is added or removed with one click (or all at once), graded against Mapterhorn and filterable by name, or open any of them directly with a ?terrainSourceA=<id> link. To see where each one has data before loading it, turn on its footprint in Coverage overlays.

Credit where it is due: Mapterhorn
This page only exists because Mapterhorn did the hard part first. It is an open, community-run project that solves the same problem from the other end: rather than talking to each agency's API live, it ingests the world's open elevation data — API endpoints, hundred-thousand-file bulk archives, S3 buckets, national download portals — normalises it, and republishes the result as one global, unified Terrarium raster tileset distributed as PMTiles, with a coverage map and full attribution for every contributing dataset.
Its source catalog is the best inventory of open elevation data anywhere: 153 sources across 32 countries, each with a licence, a resolution and a file list. Working through it makes the shape of the problem obvious — those 153 sources amount to roughly 690,000 individual files, overwhelmingly .tif, .asc and .zip bulk downloads. Only a handful are a single fetchable file, and only a minority of countries expose a live API at all.
That is the division of labour between the two projects. Mapterhorn gives you consistent global terrain with no per-country special cases. The sources below skip the ingest entirely and stream from the agency in real time, which keeps the native resolution — 0.5 m where the agency publishes 0.5 m — at the cost of only working country by country, at whatever speed that government's server manages. Mapterhorn is the sensible default; these are for when you want the sharpest possible data over one country.
The Mapterhorn issue tracking new data sources is also where several of the endpoints below were first discussed.
How these compare to Mapterhorn
| vs Mapterhorn | Count | Sources |
|---|---|---|
| Not in Mapterhorn | 9 | HKG 5 m vs 30 m global · HKG 0.5 m vs 30 m global · HTI 1.5 m vs 30 m global · IDN 8 m vs 30 m global · LTU 1 m vs 30 m global · MEX 15 m vs 30 m global · NPL 1 m vs 30 m global |
| Finer here | 6 | CZE 0.5 m vs 5 m · CZE 2 m vs 5 m · NLD 0.5 m vs 5 m |
| Same as Mapterhorn | 14 | CHE ? m vs 0.5 m · EST 1 m · FRA 0.5 m · GBR 1 m · NOR 1 m · NZL 1 m · URY 30 m vs 30 m global · USA 1 m |
| Finer in Mapterhorn | 11 | CAN 30 m vs 2 m · CHE 10 m vs 0.5 m · ESP 5 m vs 0.5 m · FIN 10 m vs 2 m · FRA 1 m vs 0.5 m · FRO 25 m vs 10 m · ITA 10 m vs 1 m · JPN 5 m vs 1 m |
Only a minority are an actual upgrade. That is worth stating plainly, because it is not obvious why a national agency's own API would ever be coarser than a re-published global tileset — and the reason is that the two get their data by different routes.
Mapterhorn ingests whatever an agency publishes in bulk: multi-terabyte download archives, S3 buckets, hundreds of thousands of tiles. Agencies routinely publish their finest LiDAR that way while exposing only a coarser, cheaper product over a live API — Italy publishes 1 m regional LiDAR for download but serves TINITALY at 10 m; Spain's PNOA LiDAR is 0.5 m in bulk while the IDEE tile service is ~5 m. So Mapterhorn can be finer.
It runs the other way too. The Netherlands' PDOK WCS serves AHN at its native 0.5 m while Mapterhorn ingested the 5 m grid, and Czechia's ČÚZK ImageServer streams DMR 5G at 2 m against 5 m. Not every apparent gain is one, though: Norway's hoydedata.no ImageServer happily resamples to a 0.25 m request grid, but the product behind it is the same 1 m DTM Mapterhorn downloaded, so it is graded at 1 m here. And where an agency publishes no bulk data at all, Mapterhorn has nothing to ingest and falls back to global 30 m, so any working API wins by default.
One caveat on both sides: Mapterhorn's delivered detail is also capped by its tileset's max zoom, whereas these APIs resample to whatever window is asked for.
The datasets
Not in Mapterhorn
Countries Mapterhorn has no national source for, so it falls back to global Copernicus GLO-30 (~30 m). These add coverage that does not otherwise exist.
In Mapterhorn, but finer here
The agency's live API serves a finer grid than the bulk data Mapterhorn ingested.
| ISO A3 | Country | Dataset | View | Coverage | API resolution | Mapterhorn | Bulk download | Licence | Served as | Endpoint |
|---|---|---|---|---|---|---|---|---|---|---|
CZE | Czechia | CUZK DMR 5G 2m - ImageServer raw Float32 | Open Solo ↗ or vs Mapterhorn ↗ | Nationwide | 2 m | 5 m | same | ✅ CC BY 4.0 † | WMS/WCS raw Float32 | ags.cuzk.gov.cz |
NLD | Netherlands | AHN DTM 0.5m - WCS raw Float32 DOI (OpenTopography) | Open Solo ↗ or vs Mapterhorn ↗ | Nationwide | 0.5 m | 5 m | same | ✅ CC0 † | WMS/WCS raw Float32 | service.pdok.nl |
In Mapterhorn at the same resolution
No resolution gain. Worth using only when you want data straight from the agency rather than a re-published tileset.
In Mapterhorn at finer resolution
Mapterhorn ingested higher-resolution bulk data than the agency exposes over its API — for these, Mapterhorn is the better choice.
API resolution is the grid the live service streams (what the viewer renders and what the grading above uses); Bulk download is the finest grid the agency advertises for download, which is what Mapterhorn itself ingests. The sample picker in the app can regrade by either.
Licence is whether Mapterhorn could ingest the dataset under its own rule: an attribution-only open licence with no clause letting the publisher rewrite the terms at will, roughly CC BY (see wipfli's note). ✅ compatible (CC BY, CC0, OGL, Licence Ouverte, public domain and the like); ❌ incompatible, or no licence published. Incompatible rows sit at the bottom of each table; † marks a hover note with the reason. Mapterhorn also keeps the sources it has already turned down in EXCLUDED.md (Lithuania and the Azores for non-commercial terms, Hong Kong for the revocation clause); nothing on that list should be proposed to it again.
56 national datasets, generated at build time from lib/custom-sources.json.
Regional datasets
Some of the best data on this page covers a state or a province rather than a country. These sit below the divider in the Sample picker and are left out of Load all so the default list stays national, but each is one click away there and loads from a ?terrainSourceA=<id> link.
Mapterhorn is its finest source anywhere in the country, which may not be this region: the chevron compares the two. Licence reads as in the national tables: ✅ Mapterhorn-compatible, ❌ not, † hover for the reason. 26 regional datasets. Kept out of Load Sample Sources so the list stays national, but each remains importable with a ?terrainSourceA=<id> link.
Beyond those, a second tier was verified to the same standard but deliberately left out of the library, because a national list is more useful than an exhaustive one. Each is a normal endpoint you can paste into Add Custom Source:
| ISO A3 | Region | Dataset | Resolution | Served as | Endpoint | Notes |
|---|---|---|---|---|---|---|
AUT | Steiermark | GIS Steiermark ALS DGM 1 m (+ DOM) | 1 m | WCS 1.0 (ArcGIS), F32 | gis.stmk.gv.at | COVERAGE=4 is the full model (1 and 2 are hillshades). Dachstein 2994.6 m (true 2995). DSM on ALSHoeheninformation_1m_UTM33N. CC BY 4.0 AT. |
DEU | Baden-Württemberg | LGL DGM1 (INSPIRE WCS) | 1 m | WCS 1.0, F32 | owsproxy.lgl-bw.de | COVERAGE=EL.ElevationGridCoverage, FORMAT=GeoTIFF. Feldberg 1494.3 m (true 1493). GDAL nodata tag wrongly says 0. dl-de/by-2.0. |
DEU | Brandenburg + Berlin | LGB DGM1 | 1 m | WCS 1.0, F32 | isk.geobasis-bb.de | COVERAGE=bb_dgm, FORMAT=image/tiff (GeoTIFF errors). Teufelsberg 120.07 m (true 120.1). Nodata −9999. dl-de/by-2.0. |
DEU | Mecklenburg-Vorpommern | LAiV DGM1 (+ DOM1) | 1 m | WCS 1.0, F32 | www.geodaten-mv.de | COVERAGE=mv_dgm; DSM mv_dom1 on /dienste/dom_wcs. Königsstuhl 123.8 m. No conditions of use, attribution required. |
DEU | Niedersachsen | LGLN DGM1 (+ DOM1) | 1 m | WCS 1.0, F32 | opendata.geoservices.lgln.niedersachsen.de | COVERAGE=ni_dgm1; DSM ni_dom1 on /dom_wcs. Wurmberg 972.07 m (true 971). Outside the Land returns bare 0. CC BY 4.0. |
DEU | Sachsen-Anhalt | LVermGeo DGM1 (INSPIRE WCS) | 1 m | WCS 1.0, F32 | geodatenportal.sachsen-anhalt.de | COVERAGE=1 (literally). Brocken 1141.16 m (true 1141.2). dl-de/by-2.0. |
ITA | Emilia-Romagna | RER DTM 5×5 LiDAR mosaic | 5 m | WCS 1.0, F32 | servizigis.regione.emilia-romagna.it | COVERAGE=DTM5X5_RDN32_RMD. Monte Cimone 2162.5 m (true 2165). The 0.5 m WCS returns degenerate TIFFs. CC BY 4.0. |
ITA | Sardegna | RAS DTM 10 m island-wide (+ 1 m partial) | 10 m / 1 m | WCS 1.0, F32 | webgis.regione.sardegna.it | COVERAGE=raster:DTM_10M_ALTIMETRIA_REV01 covers the whole island (La Marmora 1827.9 m); the 1 m mosaic only covers surveyed corridors. |
ITA | Toscana | GEOscopio DTM 1 m LiDAR (partial) / 10 m / DSM 2021 | 1 m / 10 m | WMS GetMap, F32 | www502.regione.toscana.it | One of the rare WMS servers whose image/tiff is real Float32. LAYERS=rt_morfologia.iddtm.1m.irs (1 m, partial), .iddtm.10m.rt (full), .iddsm2021.1m.rt. Monte Amiata 1730.7 m. |
ARG | Córdoba | IDECOR MDE 5 m (dem_5m_cba_ext) | 5 m | WCS 1.0, Int16 | idecor-ws.mapascordoba.gob.ar | Cerro Champaquí 2787 m (true 2790). Nodata 32767. Also MDE-Ar 30 m and MERIT 90 m clips of the province. |
AUS | Murray–Darling Basin | MDBA 1 m LiDAR DTMs + srtm_1sec_demh_v1 | 1 m / 30 m | ArcGIS ImageServer, F32 | gis.mdba.gov.au | 25 ImageServers; Kosciuszko 2223 m via the SRTM DEM-H one. Needs noData=-9999&noDataInterpretation=esriNoDataMatchAny. |
CAN | New Brunswick | GeoNB LiDAR DEM 1 m (DEM_Raw_MNE_Brut) | 1 m | ArcGIS ImageServer, F32 | geonb.snb.ca | Mount Carleton 815 m (true 820). DSM twin DSM_Raw_MNT_Brut. Pass noData=-9999. |
FIN | Helsinki | City of Helsinki Korkeusmalli 2021 1 m | 1 m | WCS 2.0, F32 | kartta.hel.fi | Needs the __wcs2subset=X,Y,ij rewrite (bare i()/j() scaleSize). Nodata -32767. CC BY 4.0. |
NLD | Zeeland waters | Rijkswaterstaat bodemhoogte_zeeland bathymetry | ~20 m | WCS 2.0, F32 | geo.rijkswaterstaat.nl | Bed level in NAP metres, Westerschelde channel −27 m. Same ij scaleSize rewrite as Helsinki. CC0. |
USA | Kentucky | KyFromAbove 2 ft DTM (Phase 2, Z metres) | 0.6 m | ArcGIS ImageServer, F32 | kyraster.ky.gov | Statewide, finer than 3DEP. Lexington airport 297 m (true 298). |
USA | Vermont | VCGI LiDAR DEM / DSM 0.35 m | 0.35 m | ArcGIS ImageServer, F32 | maps.vcgi.vermont.gov | Finest statewide grid found in the US; first-return DSM twin IMG_VCGI_LIDARDSM_SP_NOCACHE_V1. |
USA | Oregon | DOGAMI DTM / DSM mosaics (Z feet) | 0.9 m | ArcGIS ImageServer, F32 | gis.dogami.oregon.gov | LiDAR footprint only, not the whole state. Values in feet. |
USA | Iowa | ISU lidar_2020_dem / lidar_2020_dsm 1 m | 1 m | ArcGIS ImageServer, F32 | ortho.gis.iastate.edu | Statewide DTM and a draft DSM. |
USA | Connecticut | CT ECO 2023 lidar DEM 2 ft (Z feet) + DSM | 0.6 m | ArcGIS ImageServer, F32 | cteco.uconn.edu | DSM at MaxSurfaceHeight_2023. Values in feet. |
USA | Illinois | ISGS statewide lidar DEM (Z feet) | 0.3 m | ArcGIS ImageServer, F32 | data.isgs.illinois.edu | Per-county DSM services on the same server. Values in feet. |
USA | New York | NYS ITS Latest_DEM 1 m mosaic | 1 m | ArcGIS ImageServer, F32 | elevation.its.ny.gov | Newest / highest-resolution-on-top statewide mosaic. |
USA | North Carolina | NC OneMap DEM03 QL2 (Z feet) | 0.95 m | ArcGIS ImageServer, F32 | services.nconemap.gov | Declared nodata −9999. Values in feet. |
USA | Wisconsin, Ohio, Louisiana, Massachusetts, New Jersey, Alaska | State DEM ImageServers | 0.3–5 m | ArcGIS ImageServer | dnrmaps.wi.gov … | All verified F32 with CORS: WI EN_DEM_from_LiDAR, OH OH_DEM_test (feet), LA 2017_2024_Louisiana_1M_DTM (feet), MA ELEVATION_LIDAR_INT_2013to2021 (Int16), NJ NJ_10ft_DEM (3 m), AK IFSAR_DTM (5 m). None finer than 3DEP. |
Two are worth singling out. Queensland serves a best-available mosaic of 0.5–1 m drone and aircraft LiDAR — ten times finer than the 5 m national grid, and Geoscience Australia publishes no national equivalent at all. And Aguada Fénix is not a mapping agency product: it is the airborne survey that revealed the largest known Maya monumental construction (Inomata et al., Nature 2020), a platform invisible from the ground and unmistakable in a hillshade. That is the case for LiDAR archaeology in one dataset.
Surveyed, not API-usable, possibly useful to Mapterhorn
These countries do publish a national elevation product — often an excellent one — that still cannot be consumed here. Each row is a reproduced failure, not an assumption.
| ISO A3 | Country | Product | Served as | Why it can't be used |
|---|---|---|---|---|
COL | Colombia | IGAC municipal MDT/MDS | 504 ArcGIS ImageServers | Live, CORS-clean, correct metadata — and the pixels are synthetic. Every Ov_i02_L0* overview is corrupt above 10 m/px, and below it the base rasters decode to an 8-value dither oscillating between the service's own minValues and maxValues. Confirmed by reading raw IEEE floats out of the uncompressed TIFF without GDAL. Worth reporting to IGAC. |
ECU | Ecuador | IGM mapabase:igmdtm | Cascaded WMS | Real national DTM including Galápagos, and GetFeatureInfo returns genuine metres (5737.7 m near Chimborazo) — but the layer is cascaded and WMS-only, absent from WCS, and image/geotiff returns 8-bit RGB. One pixel per request, no raster endpoint. SIGTIERRAS' own 3 m LiDAR host resolves but every TCP connect times out. |
PHL | Philippines | DREAM/PhilLiDAR 1 m | GeoServer | lipad-geoserver answers but 502s on every OWS path across repeated retries; the one endpoint that responds proxies a test instance publishing a single vector tile-index layer. No DTM coverage exists to serve. |
ARG | Argentina | IGN ign:mde | WMS | Advertises image/geotiff and has CORS, but returns 3-band 8-bit RGB — a rendered colour ramp. WCS is explicitly disabled. |
BRA | Brazil | IBGE national MDE | Download only | The WCS publishes 14 coverages, none elevation; of 10,646 WMS layers none is a national DEM raster. Distribution is per-state GeoTIFF download. |
CAN | Canada (Quebec) | Forêt ouverte LiDAR 1 m | Per-sheet COGs | The WMS is rendered RGB and its WCS exposes zero coverages. The underlying 1 m COGs are keyless with CORS, but there are 2,630 separate sheets and no mosaic. |
SVN | Slovenia | ARSO Slovenija_DMR 1 m | ArcGIS ImageServer | Now live and the data is flawless — 1 m Float32, Triglav decodes to 2863.2 m against 2864 m true — but CORS is allowlisted to ARSO's own domains, so a browser cannot read it. Would work behind a proxy. |
AND | Andorra | IDE Andorra relleu | WCS 1.0 | An undocumented WCS exists with 17 coverages, but no MDT among them — the relief layer returns 3-band 8-bit RGB shaded relief. |
ALB | Albania | ASIG DSM / DTM 2015 | WMS hillshade | Only Dsm_Hill_Group and Hillshade_2015_group are published; the WCS lists hundreds of coverages but none from the DSM/DTM workspaces. |
BIH | Bosnia & Herzegovina | FGU Digitalni model reljefa 5 m | GeoServer | Every OWS path returns HTTP 401 — login required across all 125 workspaces. |
IRL | Ireland | GSI Open Topographic LiDAR | ArcGIS ImageServer | All nine services are hillshade — bandCount 1, pixelType U8, '_HS_' in every name. The DEM 10 m is an INSPIRE view service derived from contours. |
ISL | Iceland | ÍslandsDEM 2 m / 10 m | GeoServer WCS | The coverage named 'islandsdem_hillshade_10m' is Float32 — so it survives a dtype check — but its values run 0 to 254.6: a hillshade stored as float. The 14.9 GB full DEM is downloadable but sends no CORS. |
LIE | Liechtenstein | DHM25 / swissALTI3D | MapServer WCS | WCS is enabled but the only elevation coverages are relief and hillshade; swissALTI3D coverage is distributed by a fee-based office. |
MDA | Moldova | geodata.gov.md | GeoServer | WCS returns 'Service WCS is disabled'; the sibling portal's WCS contains only stock GeoServer demo coverages. |
MLT | Malta | MSDI EL.ElevationGridCoverage 1 m LiDAR | GeoServer | The INSPIRE elevation layers exist but WCS is disabled, leaving only rendered WMS — and the host sits behind a Cloudflare interstitial that 403s non-browser clients. |
TUR | Türkiye | HGM grid elevation | Paid service | Priced as a product with access by written request; no anonymous endpoint. |
AUS | Australia | Geoscience Australia 5 m DEM | Download portal | No ImageServer exists; the WMS is a MapServer returning rendered RGB. Elvis is a clip-and-ship portal. |
CHE | Switzerland | swissALTI3D / swissSURFACE3D 0.5 m | Per-tile COGs + WMS | Every swisstopo WMS elevation layer is 'reliefschattierung' — hillshade — and the 0.5 m products are only per-tile COGs indexed by STAC. The 10 m swissALTIRegio single COG above is the one live option. |
ITA | Italy (Sardinia) | Regione Sardegna DTM 1 m | GeoServer WCS | Works and is genuine 1 m Float32, but the mosaic only covers surveyed blocks — mostly river corridors and the coast, roughly half the island — so on the map it reads as scattered ribbons of detail with nodata between them. TINITALY covers the island at 10 m. |
CHN | China | Tianditu elevation | WMTS / WCS | Every endpoint requires a registered tk= key. |
DNK | Denmark | Dataforsyningen DHM | WCS | GetCapabilities is open, but GetCoverage returns 403 'User not authorized' — token required at the data step. |
GRC | Greece | Hellenic Cadastre DEM 5 m | Offline / licensed | Never published as INSPIRE Elevation — the national catalog's 147 records contain zero elevation entries. geodata.gov.gr is unreachable. |
HRV | Croatia | DGU DMR | WMS | Advertises image/geotiff but returns a 3-band RGB hillshade, and sends no CORS header. |
JPN | Japan | GSI 標高タイル (1 / 5 / 10 m) | XYZ PNG tiles | GSI's own tiles use a signed-24-bit ×0.01 m packing no raster-dem encoding can express. The Geological Survey of Japan's Terrain-RGB conversion of the same tiles is what is shipped instead. |
DEU | Germany (other Länder) | Bayern, Hessen, Sachsen, Thüringen, Hamburg, S-H, RLP DGM1 | WCS / WMS | Bayern and Sachsen WCS need credentials (401/403); Hessen's WCS 2.0 only accepts its native EPSG:25832 axes; Thüringen serves an RGB hillshade; Hamburg, Schleswig-Holstein and Rheinland-Pfalz have no open WCS. Six Länder do work and are in the regional table. |
AUT | Austria (other Länder) | BEV, Wien, Kärnten, Salzburg, OÖ, Vorarlberg, NÖ | — | BEV's INSPIRE WMS needs registration; the Länder publish hillshade MapServers, RGB WMS or downloads only. Tirol and Steiermark are the two live raw services. |
BEL | Belgium (Wallonia) | WALLONIE_MNT_2021_2022 | MapServer | MapServer only — export returns PNG and the WCSServer answers HTTP 400. Flanders is the live half. |
LUX | Luxembourg | ACT DTM 2024 | GeoServer WCS | The INSPIRE WCS lists zero coverages; the DTM is download-only. |
PRT | Portugal (Azores) | SRAAC DTM 0.5 m and 10 m, LiDAR 15 pt/m² | No service; 8-bit hillshade WCS | The DTM records list no download or service, and their terms limit use to the entity supplied under sale terms. The only open raster is the CC BY 4.0 relief at 0.5 m on wssig4.azores.gov.pt, and its WCS returns Byte hillshade (0 to 254), not heights. LiDAR point clouds sit behind the DGT portal. |
ESP | Spain (Catalonia, Euskadi, Canarias) | ICGC MDT 2 m / 5 m, Euskadi MDT, Grafcan MDT | WCS / WPS | ICGC's WCS only emits ArcGrid; Euskadi lists no MDT coverage; Grafcan is WPS/WMS only. The national IDEE Terrain-RGB covers all three anyway. |
ITA | Italy (other regions) | Trentino, Veneto, Lombardia, Piemonte, FVG, PCN LiDAR 1 m | — | WCS with zero coverages, disabled, unreachable, or download-only; the ministry's PCN 1 m LiDAR WCS returns HTTP 500. |
GBR | United Kingdom (Scotland, N. Ireland) | Scottish Remote Sensing Portal, OpenDataNI LiDAR | GeoServer WMS / S3 COGs / downloads | Scotland's WCS is switched off (every version) and its WMS GeoTIFF is 8-bit; the raw 1 m DTMs are 9 600 per-tile Float32 COGs on S3 (srsp-open-data) with no VRT, so a self-hosted VRT would be the route. Northern Ireland has no national LiDAR DTM: the 2021 coastal survey is a cached tile MapServer, the rest file download only. England (EA WCS) and Wales (national COG) are the live ones. |
AUS | Australia | Geoscience Australia DEM_LiDAR_5m / SRTM 1 s WCS | MapServer WCS 1.0 | Genuine Float32 with CORS, but requestResponseCRSs is EPSG:4326 only — a 3857 BBOX is refused with HTTP 400, and this app only templates Web Mercator windows. |
USA | United States (Minnesota) | MnGeo 0.5 m Gen-2 lidar DEM | 33 COGs + VRT | Float32 COGs with CORS and range support, but in EPSG:6344 and split across 33 files under one VRT — no single reprojectable file. |
CAN | Canada (HRDEM) | NRCan HRDEM mosaic 1–2 m | WCS 1.1.1 / per-tile COGs | Only WCS 1.1.1 is served, which needs GRIDOFFSETS derived from the window; the COGs are per 100 km tile with no mosaic file. MRDEM 30 m is the single-file product and is shipped. |
IND | India | NRSC Bhuvan CartoDEM | GeoServer | WCS is disabled and the WMS carries no raw elevation layer; CartoDEM is download-only via Bhoonidhi. |
HKG | Hong Kong | Lands Department 5 m DTM (2020 LiDAR) | CSDI MapServer / AGOL tiles | The CSDI service is rendered WMS only; the AGOL ImageServer is TilesOnly LERC with no exportImage. |
KOR | South Korea | NGII / VWorld DEM | WMS | Every endpoint requires a key registered to a domain. |
TWN | Taiwan | MOI 20 m DTM | NLSC WMTS | Only hillshade, slope and aspect derivatives are served; the DTM itself is download-only on data.gov.tw. |
CRI | Costa Rica | SNIT IGN MDT | GeoServer | WCS disabled; the WMS exposes only 1:5000 contour vectors. |
GTM | Guatemala | IDEG / PACUNAM LiDAR | GeoServer WCS | The WCS answers with zero coverages; the Maya LiDAR surveys are not published as a service. |
ZAF | South Africa | NGI 5 m / SUDEM | — | No NGI ImageServer or WCS exists; the documented SUDEM WCS host is unreachable and was a hillshade. |
AFR | Africa (RCMRD) | RCMRD country SRTM 30 m ImageServers | ArcGIS ImageServer | Five countries (Uganda, Botswana, Burundi, Comoros, South Sudan) are keyless Float32 with CORS, the rest need a token — and all are the same SRTM/GLO-30 class data Mapterhorn already has, so nothing is gained. |
POL | Poland | GUGiK NMT 1 m | WCS 2.0 | Works and is free — the highest-resolution national DEM found anywhere — but sends no CORS headers at all, so a browser cannot read it. |
PRT | Portugal | DGT MDT 0.5 m / 2 m LiDAR | STAC + OAuth2 | Public STAC index, CC BY 4.0, genuine Float32 — but every asset redirects to Keycloak login, and there is no CORS. The MDT50m WMS 'image/geotiff' is 8-bit RGBA, and the INSPIRE 'ElevationGridCoverage' ATOM is a hypsometric colour ramp (non-monotonic: Torre 1993 m reads darker than Larouco 1527 m). |
SVK | Slovakia | ÚGKK DMR 5 | MapServer only | 52 MapServers and zero ImageServers; every DMR layer is rendered hypsometry. |
SWE | Sweden | Lantmäteriet Markhöjdmodell 1 m | STAC + Basic auth | STAC index is keyless and CORS-enabled, but every raster asset 401s behind a free Geotorget account — while sibling /pub/ paths stay open, so the gating is deliberate. |
Two patterns dominate. Auth at the data step: Portugal and Sweden both publish modern, public STAC catalogs under CC BY 4.0 where the index is open and CORS-enabled but every raster byte sits behind OAuth2 or HTTP Basic. Rendered, not raw: the product is a hillshade or a hypsometric colour ramp, sometimes mislabelled as an elevation coverage.
Beyond the table, a long tail of countries publishes nothing retrievable at all. Across Central Asia, the Caucasus, the western Balkans, the Caribbean, Central America, the Middle East, South-East Asia and the Pacific, the national geoportal is typically a dead host, a single-page app with no service directory, or an ArcGIS estate exposing only rendered MapServer layers. Two small countries need no entry of their own: Monaco is inside France's IGN LiDAR coverage and San Marino inside Italy's TINITALY, so both already work through the sources above.
This is exactly the gap Mapterhorn fills. It ingests several of these under licence — Portugal's 0.5 m and Sweden's 1 m are both in its source catalog — so those countries already render at national resolution in this app through the Mapterhorn tileset, just not by talking to the agency live. Greece is the one case where the data isn't open at all, and falls back to global 30 m.
Not every open-looking product is worth proposing to Mapterhorn, though. It records what it has already declined in EXCLUDED.md: Lithuania's 5 m DTM and the Azores for non-commercial terms, and Hong Kong because the DATA.GOV.HK terms can be revised at any time. This viewer is non-commercial and streams rather than republishes, so Hong Kong's 0.5 m LiDAR DTM and Lithuania's 1 m DTM are in the library above with red licence rows. Neither is a Mapterhorn request. The Azores stay out for a technical reason: no elevation raster is served, only an 8-bit hillshade.
Global and non-DTM
Datasets that are not one country's terrain model: worldwide and polar products, the global model behind every gap, and the surface models of the countries above.
Global and polar datasets
Not every good source belongs to a country. These are worldwide, polar or sea-floor products from research consortia, listed under Global in the sample library:
Two things to know. ArcticDEM and REMA are ellipsoidal: the Polar Geospatial Center publishes heights above the WGS84 ellipsoid, so summits sit tens of metres off their map values and open sea reads +28 m off Greenland. And the two ML terrain models, GEDTM30 and ANADEM, are explained in the next section.
Copernicus GLO-30, the supra-national fallback
Most of the world has no national elevation API at all. What fills that gap is Copernicus GLO-30 — a free, global 30 m DEM from ESA and Airbus, and the single most important dataset on this page: it is the base layer of Mapterhorn, the source behind Digital Earth Africa, and the fallback anywhere a country publishes nothing.
Several organisations re-serve the same GLO-30 pixels in different shapes:
| Provider | Scope | Served as | Endpoint | Status here |
|---|---|---|---|---|
| Digital Earth Africa | Africa + Arabia | WCS 2.1, raw Float32 | ows.digitalearth.africa | Shipped as a sample source |
| Mapterhorn | Worldwide | Terrarium PMTiles | tiles.mapterhorn.com | Built in as the default terrain source |
| OpenTopography | Worldwide | Single global .vrt over COGs | opentopography.s3.sdsc.edu | Not shipped — VRT header is 11.7 MB per read |
| AWS Open Data | Worldwide | Per-1° COGs | copernicus-dem-30m.s3.amazonaws.com | Not usable — bucket sends no CORS header |
ANADEM and GEDTM30 are a newer idea worth understanding, both distributed through OpenTopography. Rather than re-serving GLO-30 unchanged, they apply machine learning to correct it towards bare earth — GLO-30 is a surface model, so over the Amazon it measures the canopy, not the ground, and can sit tens of metres high. ANADEM covers South America; GEDTM30 is global and calibrated against GEDI spaceborne LiDAR. Neither is finer than 30 m — the gain is vertical accuracy under forest, not detail. See OpenTopography's note on ML-derived terrain models and the GEDTM30 discussion.
Digital Earth Africa is the one worth loading directly: it is the only keyless live raw-elevation service covering any African country, and it turns a continent of nothing into a working source. It is not, however, finer than Mapterhorn — it is literally the same GLO-30 data, just fetched live from an API instead of a tileset.
Surface models and heights above ground
Where a country has both, the tables above list its terrain model (DTM, bare earth) and this one its surface model (DSM, or DOM: the top of canopy and roofs), with the normalised height the app derives from the two (nDSM: surface minus terrain, trees and buildings at their height above the ground). See nDSM and Comparison.
29 surface and height models. A DSM is the top of whatever the survey hit: canopy, roofs, bridges. An nDSM is that surface minus the terrain model, so the ground is at 0 and trees and buildings at their height.
Procedures
How the datasets were chosen, how the app reads them, and what happens at their edges.
Why these and not others
Surveying national mapping agencies worldwide turns up two consistent traps.
No agency anywhere publishes Terrarium tiles. Only two national agencies publish a pre-rendered elevation tile pyramid at all (Japan's GSI and Mexico's INEGI), and both invented their own encoding — Mexico's is close enough to Terrain-RGB to be described with custom factors, Japan's is not, and Japan only loads because the Geological Survey of Japan re-serves GSI's tiles as genuine Terrain-RGB. Everything else serves raw rasters on demand.
FORMAT=image/geotiff on a WMS is usually a lie. Germany's BKG, the UK Environment Agency, Portugal, Croatia, Ecuador and Canada's MRDEM all advertise it and all return an 8-bit RGB colour ramp — a picture of elevation, not elevation. The raw values live on WCS or on an ArcGIS ImageServer, never on the WMS. A related trap: ArcGIS estates usually expose MapServer (rendered) rather than ImageServer (raw), which is what rules out Slovakia, Colombia, Argentina and Australia.
Some excellent data sits behind a login. NASA's High Mountain Asia 8 m DEM (HMA_DEM8m_MOS, stereo from commercial imagery, 2014–2016, 26–46 N by 67–103 E) is the natural pre-event reference for the Himalaya, and Mapterhorn does not carry it (its Nepal coverage is Copernicus GLO-30). It needs an Earthdata account, which the app cannot supply, so it is not in the library; download it and pick it as a local COG, or serve it yourself.
The two best global commercial DEMs are in the same position, one step further out. Vantor Precision3D (1 m DTM/DSM, the maxar-sdx collection) and Airbus WorldDEM Neo (5 m DSM, airbus-dem) are both browsable through NASA's CSDA catalog in STAC search — the catalog is open and CORS-open, so you can see exactly what exists where — but the assets are s3:// URIs behind an Earthdata login, a EULA and per-request approval, so nothing streams. Getting proper API-key access to both is on the list: Airbus runs a OneAtlas elevation API whose free trial includes the WorldDEM layer, and Vantor sells Precision3D through its own delivery platform. Either would become an ordinary custom source with a key, the way Mapbox and MapTiler already are — the app has nowhere to put those credentials yet because there has been nothing to point them at.
Everything listed above was verified by decoding a real tile and checking it against a known summit or sea-level point before being added.
How they are served
Three different transports end up as the same raster-dem source in the app:
- WMS/WCS raw Float32 — the app requests a GeoTIFF per tile and re-encodes it to Terrarium in the browser, via the
float32dem://protocol. WCS 1.0 works unmodified because itsBBOX=is shaped exactly like a WMSGetMap; WCS 2.0 needs a rewrite tosubset=per axis, which a&__wcs2subset=X,Ymarker on the URL performs. - ArcGIS ImageServer —
exportImagewithformat=tiff, which returns raw Float32 and takes the samebbox=as a WMS, so it reuses the identical code path (USGS 3DEP, Czechia). - Single COG — Switzerland and ANADEM are each one national file. Neither is in Web Mercator (LV95 and geographic EPSG:4674), and the in-browser COG reader does not reproject, so these are pinned to titiler with the source's Always serve via titiler switch, whatever the global COG setting says.
- XYZ tiles — a normal tile pyramid. Spain, New Zealand and Japan are standard Terrain-RGB. Mexico is not: its layer is named "terranium" but packs elevation with Terrain-RGB's factors and a
baseShiftof 1000 instead of 10000, so it is configured with custom RGB encoding and reads ~9 km too low without it.
Coverage edges and no-data
A national dataset stops at its border, and services disagree about how to say so. Some return a sentinel (-9999 for France and Finland, -3.4e38 for England, positive +3.4e38 for the Netherlands), some return a service exception, and some return a GeoTIFF that cannot be parsed at all.
Sentinels are handled per-source by a no-data floor/fill, so out-of-coverage areas sit flat at sea level instead of decoding as a 10 km pit. Where a service answers with an error instead, those tiles simply don't render.
Because of this, selecting a national dataset constrains the map to that country's extent by default — see Settings → Map Bounds to change or disable it.
Basemaps and Overlays
Satellite basemaps, overlays, a basemap per view, and Remove paper for scanned maps
National Datasets (tablecn)
The national, regional, surface-model and global terrain datasets of the library as one tablecn data table in client mode, for a side-by-side comparison with the National Open-Data Terrain page