The Best Free Elevation Datasets in 2026 (And How to Access Them in Python)
Compare the top open DEMs, understand their strengths, and learn how to download and analyze terrain data using Python.
The Best Free Elevation Datasets in 2026 (And How to Access Them in Python)
Compare the top open DEMs, understand their strengths, and learn how to download and analyze terrain data using Python.

If you’ve ever spent an afternoon hunting for a decent Digital Elevation Model (DEM) only to end up with a file full of voids over your exact area of interest, you already know the real cost of “free” elevation data. It’s not the price. It’s the time you burn figuring out which dataset to trust, which one actually covers your region, and which Python library won’t choke on a 90-day trial API key halfway through your pipeline.
I’ve run into this constantly working on terrain and flood-risk projects across East Africa, where canopy cover, informal settlements, and sparse ground-truth data make DEM quality a real operational concern, not an academic one. A dataset that performs beautifully over flat farmland in the Midwest can fall apart over a forested escarpment in the Rift Valley. So this is less a “top 5 list” and more a field guide: what each dataset actually gets right, where it breaks down, and the exact Python code to pull it.
Why DEM Choice Actually Matters
Every free global DEM today traces back to one of two sensor missions: the Shuttle Radar Topography Mission (SRTM, 2000) or the newer TanDEM-X mission that underpins the Copernicus DEM. Everything else — NASADEM, AW3D30, FABDEM, MERIT — is a derivative product built by post-processing one of those two source datasets to fix specific flaws like tree-canopy bias, building height contamination, or hydrological inconsistency.
That lineage matters because it tells you what kind of errors to expect. Radar-derived elevation models don’t measure the ground — they measure the first surface the radar pulse reflects off. Over a dense forest, that’s the canopy top, not the terrain. Over a city, that’s rooftops. If your project needs bare-earth elevation (flood modeling, drainage design, land-use suitability), that distinction can mean tens of meters of error in exactly the areas where accuracy matters most.
The Datasets Worth Knowing in 2026
Copernicus DEM (GLO-30) is the current default for most serious geospatial work. Produced by ESA and DLR from TanDEM-X radar data at 30m resolution globally, it has become the reference dataset that newer products are benchmarked against. Recent comparative accuracy studies have found it consistently outperforms older datasets like SRTM and NASADEM across varied terrain, and it remains freely available to registered users through the Copernicus Data Space Ecosystem. If you only download one DEM this year, this is it.
FABDEM (Forest And Buildings removed Copernicus DEM) takes GLO-30 and applies a machine-learning correction to strip out tree canopy and building height, producing an actual bare-earth surface. Independent validation studies comparing it against SRTM, MERIT, and raw Copernicus-30 have repeatedly ranked it as the top-performing freely available global DEM, with the largest accuracy gains showing up precisely in forested and built-up areas — the two terrain types where older datasets fail hardest. For anything involving vegetation, informal urban settlements, or flood extent mapping, this is the dataset I reach for first.
SRTM (30m) is still worth knowing because it’s the most universally supported format across GIS software and older tutorials, and because its coverage gaps and known artifacts are extremely well documented at this point. It’s a fine baseline or teaching dataset, but I wouldn’t ship a production analysis on it in 2026 when Copernicus DEM and FABDEM exist.
AW3D30, JAXA’s optical stereo-derived DEM, is the dark horse. In terrain-accuracy comparisons using geodetic ground control points, it has actually outperformed Copernicus DEM in some regions, particularly where radar layover and shadow effects are a problem — steep mountainous terrain being the classic case. Worth a second look if your project sits in rugged topography.
MERIT DEM is hydrologically conditioned — meaning it’s specifically corrected to remove pits, spikes, and stripe artifacts that break flow-accumulation algorithms. If your downstream workflow involves watershed delineation or stream network extraction, this preprocessing saves you a genuinely painful debugging session later.
Accessing Them in Python
The good news: you no longer need five different download workflows. Most of these datasets are accessible through a handful of consistent tools.
Option 1: OpenTopography API (best for quick clips)
OpenTopography hosts GLO-30, GLO-90, and SRTM, and exposes them through a clean REST API that returns a GeoTIFF for any bounding box.
import requests
api_key = "YOUR_OT_API_KEY" # free registration at opentopography.org
url = "https://portal.opentopography.org/API/globaldem"
params = {
"demtype": "COP30", # options: COP30, COP90, SRTMGL1, SRTMGL3
"south": -1.35, "north": -1.10,
"west": 36.70, "east": 36.95, # rough Nairobi bounding box
"outputFormat": "GTiff",
"API_Key": api_key,
}
response = requests.get(url, params=params)
with open("nairobi_cop30.tif", "wb") as f:
f.write(response.content)
This is the fastest path for a one-off analysis or a bounded study area — no need to download a full tile grid.
Option 2: elevation + rasterio (good for SRTM workflows)
The elevation package wraps SRTM download and clipping in a few lines, and hands off cleanly to rasterio for analysis:
import elevation
import rasterio
elevation.clip(bounds=(36.70, -1.35, 36.95, -1.10), output="nairobi_srtm.tif")
elevation.clean()
with rasterio.open("nairobi_srtm.tif") as src:
dem = src.read(1)
transform = src.transform
print("Shape:", dem.shape, "CRS:", src.crs)
Option 3: Copernicus Data Space (best for GLO-30 / GLO-90 at scale)
For larger areas or repeat access, register at dataspace.copernicus.eu and pull tiles directly via their STAC API, then mosaic with rasterio:
import rasterio
from rasterio.merge import merge
import glob
tiles = glob.glob("cop_dem_tiles/*.tif")
srcs = [rasterio.open(t) for t in tiles]
mosaic, out_transform = merge(srcs)
out_meta = srcs[0].meta.copy()
out_meta.update({"height": mosaic.shape[1], "width": mosaic.shape[2], "transform": out_transform})
with rasterio.open("mosaic_cop30.tif", "w", **out_meta) as dest:
dest.write(mosaic)
Option 4: FABDEM (direct tile download)
FABDEM doesn’t have a live query API — it’s distributed as downloadable 1°x1° tiles. Once downloaded, treat it exactly like any other GeoTIFF:
import rasterio
import numpy as np
with rasterio.open("N01E036_FABDEM_V1–2.tif") as src:
dem = src.read(1)
nodata = src.nodata
valid = dem[dem != nodata]
print(f"Min: {valid.min():.1f}m, Max: {valid.max():.1f}m, Mean: {valid.mean():.1f}m")
Once loaded, GeoPandas and Shapely handle the vector side — clipping to an admin boundary, extracting elevation at point locations, or generating slope and hillshade with rasterio’s companion tools — the same way regardless of which source DEM you started with. That consistency is really the underrated benefit of Python’s geospatial stack: the hard part is choosing the right data source, not writing the pipeline.
Which One Should You Actually Use?
If you want a single answer: default to Copernicus DEM GLO-30 for general terrain work, switch to FABDEM the moment vegetation or buildings are contaminating your bare-earth analysis, and keep AW3D30 in your back pocket for steep, radar-shadow-prone terrain. SRTM’s main remaining use case in 2026 is teaching and legacy-format compatibility, not production work.
None of these datasets are perfect substitutes for local LiDAR or drone-derived orthomosaics — nothing free is. But for regional-scale analysis across East Africa and anywhere else ground survey data is sparse, this stack covers the vast majority of real project needs without a licensing fee attached to any of it.
메타데이터
- post_id
- 3740c5ff987e
- slug
- the-best-free-elevation-datasets-in-2026-and-how-to-access-them-in-python-3740c5ff987e
- url
- https://tierrainsights.buzz/the-best-free-elevation-datasets-in-2026-and-how-to-access-them-in-python-3740c5ff987e
- canonical_url
- https://tierrainsights.buzz/the-best-free-elevation-datasets-in-2026-and-how-to-access-them-in-python-3740c5ff987e
- author_url
- https://medium.com/@stephen-tierrainsights
- status
- ok
- fetched_at
- 2026-07-08 21:20:17