Data HubContributeData Hub on GitHub

Copernicus DEM global digital surface model, 30 m and 90 m

European Space Agency (ESA), Copernicus programme

Version2021_1
licenseLicenseRef-Copernicus-DEMdoi10.5270/ESA-c5d3d65created2026-10-15updated2026-10-15

Overview

Global digital surface model (DSM) of the Earth’s surface including buildings, infrastructure and vegetation, derived from the TanDEM-X radar mission and edited and infilled by Airbus Defence and Space for the European Space Agency (ESA) under the Copernicus programme. Two public instances: GLO-30 at 1 arc-second (~30 m) and GLO-90 at 3 arc-seconds (~90 m), both as orthometric heights in metres over the EGM2008 geoid. The standard global elevation base for terrain derivatives, hydrological conditioning and elevation covariates. Sinergise (Sentinel Hub) republishes each instance on AWS Open Data as one cloud-optimized GeoTIFF per 1x1 degree tile with a static SpatioTemporal Asset Catalog (STAC). The Hub publishes a GDAL tile index (GTI) per instance that opens all tiles as one global raster, and a STAC GeoParquet snapshot of the Earth Search items for each instance that lists the tiles with their footprints and grid metadata. No data is copied.

Important note

GLO-30 is missing 25 tiles over Armenia and Azerbaijan: Copernicus released them only in 2023_1, after the 2021_1 copy on AWS. Use GLO-90 there. Above 50 degrees latitude the GTI resamples the wider-pixel tiles to the equatorial grid on read with nearest neighbour, so columns repeat. The GTI needs GDAL 3.8 or newer and references the tiles over HTTPS with /vsicurl, so open it with GDAL-based tools and read a window at a time rather than the full dataset.

Intended uses

  • terrain inputs such as slope, aspect and flow direction for crop suitability and hydrological modelling
  • elevation covariate for downscaling climate and interpolating station data
  • exposure baselines for flood and landslide hazard, and visibility and routing analysis

Not recommended for

bare-earth terrain analysis under forest or in cities

Why: it is a surface model, so heights include canopy and buildings.

Use instead: a bare-earth product derived from it, such as FABDEM, or local LiDAR terrain models.

elevation change or time series

Why: a single static model from 2011 to 2015 radar acquisitions, released with edits rather than new data.

sub-metre vertical precision, such as drainage design

Why: absolute vertical accuracy is specified as under 4 m at 90% confidence.

Access & use

Files, endpoints, and worked examples for each distribution.

Data

glo-30

26,450 GLO-30 tiles named Copernicus_DSM_COG_10_<N|S>yy_00_<E|W>xxx_00_DEM, one folder per tile holding the elevation COG and an AUXFILES folder with editing, filling, water-body and height-error masks. Open the GTI as one global raster, or the GeoParquet to list and select elevation tiles; the masks are not indexed.

Format: Cloud-Optimized GeoTIFF — best for single-file downloads, visualisation, and traditional GIS tools

Variables: elevation

Dimensions: cell

Data dictionary →

File indexes

GDAL Tile Index (GTI)https://digital-atlas.s3.amazonaws.com/cdh/data/copernicus-dem-2021/glo-30.gti.gpkg

VSICURl/HTTPS based Gdal Tile index

Usage examples

Python
import rioxarray

# The tile index opens as one mosaic (GDAL 3.9+)
da = rioxarray.open_rasterio("GTI:/vsicurl/https://digital-atlas.s3.amazonaws.com/cdh/data/copernicus-dem-2021/glo-30.gti.gpkg", masked=True)
STAC-GeoParquethttps://digital-atlas.s3.amazonaws.com/cdh/data/copernicus-dem-2021/glo-30.parquet

STAC GeoParquet of the Earth Search items. hrefs are HTTPS

Usage examples

Python
import rioxarray
import rustac

url = "https://digital-atlas.s3.amazonaws.com/cdh/data/copernicus-dem-2021/glo-30.parquet"

# As STAC items: search reads only the rows that match (area, time, ids…)
items = rustac.search_sync(url, bbox=[28, -12, 52, 18])
# ...or every item, as a FeatureCollection: rustac.read_sync(url)

# As one mosaic through GDAL's tile index driver (GDAL 3.10+). If items have
# several assets, pick one: open_rasterio(..., LOCATION_FIELD="assets.<key>.href")
da = rioxarray.open_rasterio(f"GTI:/vsicurl/{url}", masked=True)
Other access methods
HTTPS directory:https://copernicus-dem-30m.s3.eu-central-1.amazonaws.com/
S3 (eu-central-1, no credentials) directory:s3://copernicus-dem-30m/
glo-90

26,475 GLO-90 tiles named Copernicus_DSM_COG_30_<N|S>yy_00_<E|W>xxx_00_DEM, same layout as GLO-30. Complete land coverage, including the tiles withheld from GLO-30.

Format: Cloud-Optimized GeoTIFF — best for single-file downloads, visualisation, and traditional GIS tools

Variables: elevation

Dimensions: cell

Data dictionary →

File indexes

GDAL Tile Index (GTI)https://digital-atlas.s3.amazonaws.com/cdh/data/copernicus-dem-2021/glo-90.gti.gpkg

VSICURl/HTTPS based Gdal Tile index

Usage examples

Python
import rioxarray

# The tile index opens as one mosaic (GDAL 3.9+)
da = rioxarray.open_rasterio("GTI:/vsicurl/https://digital-atlas.s3.amazonaws.com/cdh/data/copernicus-dem-2021/glo-90.gti.gpkg", masked=True)
STAC-GeoParquethttps://digital-atlas.s3.amazonaws.com/cdh/data/copernicus-dem-2021/glo-90.parquet

STAC GeoParquet of the Earth Search items. hrefs are HTTPS

Usage examples

Python
import rioxarray
import rustac

url = "https://digital-atlas.s3.amazonaws.com/cdh/data/copernicus-dem-2021/glo-90.parquet"

# As STAC items: search reads only the rows that match (area, time, ids…)
items = rustac.search_sync(url, bbox=[28, -12, 52, 18])
# ...or every item, as a FeatureCollection: rustac.read_sync(url)

# As one mosaic through GDAL's tile index driver (GDAL 3.10+). If items have
# several assets, pick one: open_rasterio(..., LOCATION_FIELD="assets.<key>.href")
da = rioxarray.open_rasterio(f"GTI:/vsicurl/{url}", masked=True)
Other access methods
HTTPS directory:https://copernicus-dem-90m.s3.eu-central-1.amazonaws.com/
S3 (eu-central-1, no credentials) directory:s3://copernicus-dem-90m/

Data dictionary

What each file holds. A layout describes how the data is stored in a file: its variables, the dimensions they vary over, and any keys.

File layouts

FilesFormatVariablesDimensions
glo-30Cloud-Optimized GeoTIFFelevationcell
glo-90Cloud-Optimized GeoTIFFelevationcell

In every file

Variables

VariableTypeUnitDescription
elevationfloat32mSurface height above the EGM2008 geoid, including canopy and buildings. No nodata value; the ocean has no tiles and reads as 0, so sea cannot be told from 0 m land.

Only in glo-30

Dimensions

cellxy

1 arc-second (~30 m at the equator). Latitude spacing is constant; longitude spacing is 1.5x, 2x, 3x, 5x and 10x wider above 50, 60, 70, 80 and 85 degrees.

Grid spacing: 0.000277778 degree

Only in glo-90

Dimensions

cellxy

3 arc-seconds (~90 m at the equator), same latitude-dependent longitude spacing as GLO-30.

Grid spacing: 0.000833333 degree

Technical metadata

The full spatial, temporal, and modeling detail behind the summaries elsewhere on this page.

Spatial

CRS
EPSG:4326
Extent (W S E N)
[-180, -90, 180, 90]
Coverage
World
Grid spacing
1 arc-second (~31 m at the equator)
Grid spacing
3 arc-seconds (~93 m at the equator)

Temporal

Start
2011
End
2015

Provenance

Ordered processing steps, from source to publication.

  1. source

    WorldDEM radar surface model from the TanDEM-X mission (2011 to 2015), edited, infilled and resampled by Airbus Defence and Space to the Copernicus DEM GLO-30 and GLO-90 DGED products, 2021_1 release.

    Derived from: Copernicus DEM - Global and European Digital Elevation Model (COP-DEM) ↗

  2. cloud-optimize

    Each 1x1 degree tile converted to a cloud-optimized GeoTIFF by Sinergise: the row and column shared with neighbouring tiles dropped, giving 3600 (GLO-30) or 1200 (GLO-90) rows per tile, DEFLATE compression with floating-point predictor and average-resampled overviews. Published on AWS Open Data with a static STAC catalog per instance.

  3. index2026-10-15

    Items for each instance read from the Element 84 Earth Search STAC API, which carries projection, grid and raster metadata the static AWS catalog lacks, with asset hrefs rewritten from s3:// to HTTPS so readers need no credentials. Snapshotted to STAC GeoParquet, one file per instance, and a GTI tile index written over the elevation tiles at the equatorial resolution. No data is copied.

    Code: copernicus_dem.py ↗ @ ffe089e

How to cite

Please cite the dataset and any associated peer-reviewed publications.

European Space Agency (ESA) (2021) Copernicus DEM - Global and European Digital Elevation Model (COP-DEM). Version 2021_1. European Space Agency. https://doi.org/10.5270/ESA-c5d3d65. Accessed through the CGIAR Climate Action Data Hub, https://cgiar-climate-data-hub.github.io/catalog/copernicus-dem_2021_1/.
BibTeX
BibTeX
@misc{copernicus_dem_2021,
  title     = {Copernicus DEM - Global and European Digital Elevation Model (COP-DEM)},
  author    = {{European Space Agency (ESA)}},
  year      = {2021},
  version   = {2021_1},
  publisher = {European Space Agency},
  doi       = {10.5270/ESA-c5d3d65},
  note      = {Accessed through the CGIAR Climate Action Data Hub, https://cgiar-climate-data-hub.github.io/catalog/copernicus-dem_2021_1/}
}

Attribution

Reproduce this credit line wherever you reuse the data.

© DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved.

Contacts

Who produced this dataset, and who to reach about it.

Brayden YoungbergMaintainer
Alliance of Bioversity International and CIAT
ProcessorPoint of contact