Data HubContributeData Hub on GitHub

JRC global river flood hazard maps (CEMS-GloFAS)

European Commission Joint Research Centre (JRC), Copernicus Emergency Management Service

Version2.1.2
licenseCC-BY-4.0created2026-08-28updated2026-10-14

Overview

Modelled riverine flood inundation along the global river network for seven return periods, 10 to 500 years, at 3 arc-seconds (~90 m), from the European Commission Joint Research Centre (JRC) for the Copernicus Emergency Management Service (CEMS). River flows come from the LISFLOOD hydrological model driven by the Global Flood Awareness System (GloFAS) v4.0 reanalysis; inundation is simulated with the LISFLOOD-FP hydraulic model. Each return period has a water-depth map in metres and a hazard map of four depth classes plus not flooded, with two auxiliary masks: permanent water bodies used to patch the maps, and spurious depths where the model is known to over-predict. Source Cooperative serves the maps as cloud-optimized GeoTIFF tiles, and the Hub publishes GDAL virtual raster (VRT) mosaics with one band per return period and STAC GeoParquet indexes that open those tiles in place.

Important note

Static modelled hazard with no temporal coverage; only land is covered. Very high depths can be artefacts of the hydraulic model, the 90 m resolution, sinks in the elevation model or tile boundaries, and the spurious-depths mask flags only the known cases. The VRTs reference the tiles over HTTPS with GDAL's /vsicurl, so open them with GDAL-based tools (rasterio, terra) rather than downloading the .vrt alone, and read a window or a few tiles at a time: every read touches Source Cooperative directly, so visualising or reading the whole mosaic issues thousands of requests and is very slow.

Quick start

Python
import rioxarray

url = "https://digital-atlas.s3.amazonaws.com/domain=climate/type=flood/source=jrc-glofas/region=east-africa/processing=return-period/variable=flood-depth/rp=10/flood-depth_rp10.tif"
da = rioxarray.open_rasterio(url, masked=True)

Full access details and endpoints

Intended uses

  • flood-prone baseline by magnitude for exposure and risk assessment
  • population, cropland and infrastructure exposure to river flooding at a given return period
  • modelled counterpart to observed flood extents from satellite monitoring

Not recommended for

reading it as observed or future-scenario flooding

Why: static return-period hazard from a historical reanalysis, with no dates or scenarios.

Use instead: satellite flood extent products, such as Copernicus Global Flood Monitoring, for what actually flooded and when.

coastal, pluvial or flash flooding

Why: only riverine inundation along the modelled river network is simulated.

depth values inside the spurious-depths mask

Why: known model over-prediction in small channels.

Use instead: treat masked cells as flood-prone with unknown depth, or use the hazard class.

Access & use

Files, endpoints, and worked examples for each distribution.

Data

depth

Flood depth tiles, one Source Cooperative collection per return period (depth-rp10 ... depth-rp500). Open the VRT for a single seven-band mosaic, bands in return-period order and described rp10 to rp500, or a GeoParquet file to list and query the tiles of one return period.

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

Variables: depth

Dimensions: cell × return_period

Data dictionary →

File indexes

GDAL VRThttps://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/depth.vrt

Seven bands, rp10 to rp500; tile paths are HTTPS (/vsicurl)

Usage examples

Python
import rioxarray

# The VRT opens as one raster; its tiles are read on demand
da = rioxarray.open_rasterio("https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/depth.vrt", masked=True)
GDAL VRThttps://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/depth-rp{return_period}.vrt7 files

One single-band VRT per return period, the band sources of depth.vrt

List of files 7 filesDownload CSV

Individual file

https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/depth-rp10.vrt

Usage examples

Python
import rioxarray

# The VRT opens as one raster; its tiles are read on demand
da = rioxarray.open_rasterio("https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/depth-rp10.vrt", masked=True)
STAC-GeoParquethttps://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/depth-rp{return_period}.parquet7 files

One STAC GeoParquet per return period, listing that period's tiles

List of files 7 filesDownload CSV

Individual file

https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/depth-rp10.parquet

Usage examples

Python
import rioxarray
import rustac

url = "https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/depth-rp10.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://data.source.coop/nlebovits/jrc-glofas/
depth-east-africa28 MB

Kenya-window crop of the depth maps, one COG per return period on Adaptation Atlas storage. Same values as the global tiles; use it when only that window is needed.

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

Variables: depth

Dimensions: cell × return_period

Data dictionary →

Coverage: Kenya · [33.9, -4.7, 41.9, 5.5]

List of files 7 filesDownload CSV

Individual file

Download

https://digital-atlas.s3.amazonaws.com/domain=climate/type=flood/source=jrc-glofas/region=east-africa/processing=return-period/variable=flood-depth/rp=10/flood-depth_rp10.tif

Usage examples

Python
import rioxarray

url = "https://digital-atlas.s3.amazonaws.com/domain=climate/type=flood/source=jrc-glofas/region=east-africa/processing=return-period/variable=flood-depth/rp=10/flood-depth_rp10.tif"
da = rioxarray.open_rasterio(url, masked=True)

# Clip a window (East Africa)
window = da.rio.clip_box(
    minx=28, miny=-12, maxx=52, maxy=18
)

# ...or sample a single point
point = da.sel(x=36.8, y=-1.3, method="nearest")
Other access methods

File pattern: rp={return_period}/flood-depth_rp{return_period}.tif

HTTPS directory:https://digital-atlas.s3.amazonaws.com/domain=climate/type=flood/source=jrc-glofas/region=east-africa/processing=return-period/variable=flood-depth/
S3 directory:s3://digital-atlas/domain=climate/type=flood/source=jrc-glofas/region=east-africa/processing=return-period/variable=flood-depth/
hazard

Hazard class tiles, one collection per return period (hazard-rp10 ... hazard-rp500). Same layout as depth: the VRT holds seven bands in return-period order, described rp10 to rp500.

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

Variables: hazard

Dimensions: cell × return_period

Data dictionary →

File indexes

GDAL VRThttps://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/hazard.vrt

Seven bands, rp10 to rp500; tile paths are HTTPS (/vsicurl)

Usage examples

Python
import rioxarray

# The VRT opens as one raster; its tiles are read on demand
da = rioxarray.open_rasterio("https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/hazard.vrt", masked=True)
GDAL VRThttps://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/hazard-rp{return_period}.vrt7 files

One single-band VRT per return period, the band sources of hazard.vrt

List of files 7 filesDownload CSV

Individual file

https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/hazard-rp10.vrt

Usage examples

Python
import rioxarray

# The VRT opens as one raster; its tiles are read on demand
da = rioxarray.open_rasterio("https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/hazard-rp10.vrt", masked=True)
STAC-GeoParquethttps://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/hazard-rp{return_period}.parquet7 files

One STAC GeoParquet per return period, listing that period's tiles

List of files 7 filesDownload CSV

Individual file

https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/hazard-rp10.parquet

Usage examples

Python
import rioxarray
import rustac

url = "https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/hazard-rp10.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://data.source.coop/nlebovits/jrc-glofas/
permanent-water

Permanent water body mask tiles, one collection.

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

Variables: permanent_water

Dimensions: cell

Data dictionary →

File indexes

GDAL VRThttps://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/permanent-water.vrt

Usage examples

Python
import rioxarray

# The VRT opens as one raster; its tiles are read on demand
da = rioxarray.open_rasterio("https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/permanent-water.vrt", masked=True)
STAC-GeoParquethttps://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/permanent-water.parquet

Usage examples

Python
import rioxarray
import rustac

url = "https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/permanent-water.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://data.source.coop/nlebovits/jrc-glofas/permanent-water/
spurious-depths

Spurious depth mask tiles, one collection.

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

Variables: spurious_depths

Dimensions: cell

Data dictionary →

File indexes

GDAL VRThttps://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/spurious-depths.vrt

Usage examples

Python
import rioxarray

# The VRT opens as one raster; its tiles are read on demand
da = rioxarray.open_rasterio("https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/spurious-depths.vrt", masked=True)
STAC-GeoParquethttps://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/spurious-depths.parquet

Usage examples

Python
import rioxarray
import rustac

url = "https://digital-atlas.s3.amazonaws.com/cdh/data/jrc-glofas-v2.1.2/spurious-depths.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://data.source.coop/nlebovits/jrc-glofas/spurious-depths/

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

FilesFormatVariablesDimensionsNo data
depthCloud-Optimized GeoTIFFdepthcell × return_period-9999
depth-east-africaCloud-Optimized GeoTIFFdepthcell × return_periodNaN
hazardCloud-Optimized GeoTIFFhazardcell × return_period255
permanent-waterCloud-Optimized GeoTIFFpermanent_watercell255
spurious-depthsCloud-Optimized GeoTIFFspurious_depthscell255

In every file

Dimensions

cellxy

3 arc-seconds (~90 m at the equator).

Grid spacing: 0.000833333 degree

Only in depth

Variables

VariableTypeUnitDescription
depthfloat32mModelled flood water depth. 0 means not flooded at that return period.

Dimensions

return_periodreturn-period

Flood recurrence interval in years.

Unit: year

  • 10
  • 20
  • 50
  • 75
  • 100
  • 200
  • 500

Only in depth-east-africa

Variables

VariableTypeUnitDescription
depthfloat32mModelled flood water depth. 0 means not flooded at that return period.

Dimensions

return_periodreturn-period

Flood recurrence interval in years.

Unit: year

  • 10
  • 20
  • 50
  • 75
  • 100
  • 200
  • 500

Only in hazard

Variables

VariableTypeDescription
hazarduint8Water depth class, consistent with the GloFAS "Flood hazard 100-year return period" static layer without its permanent-water class.
0
not flooded
1
under 1 m
2
1 to 3 m
3
3 to 10 m
4
over 10 m

Dimensions

return_periodreturn-period

Flood recurrence interval in years.

Unit: year

  • 10
  • 20
  • 50
  • 75
  • 100
  • 200
  • 500

Only in permanent-water

Variables

VariableTypeDescription
permanent_wateruint8Permanent water bodies used to patch the flood hazard maps.
0
land
1
permanent water

Only in spurious-depths

Variables

VariableTypeDescription
spurious_depthsuint8Areas where modelled depth exceeds 10 m in channels draining under 3,000 km2 at the 10-year return period, plus a 2 km buffer.
0
reliable
1
spurious depth

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)
[-170.0013, -59.9871, 179.9696, 80.0013]
Coverage
World
Grid spacing
3 arc-seconds (~93 m at the equator)

Provenance

Ordered processing steps, from source to publication.

  1. source

    River flows from LISFLOOD driven by the GloFAS v4.0 hydrological reanalysis, inundation from LISFLOOD-FP on a MERIT-DEM and MERIT-Hydro base, published by JRC as 271 GeoTIFF tiles per layer.

    Derived from: JRC Data Store, CEMS-GLOFAS flood hazard ↗, GloFAS hydrological reanalysis ↗

  2. cloud-optimize

    Tiles converted to cloud-optimized GeoTIFFs with internal overviews and published on Source Cooperative as one STAC collection per layer, by Nissim Lebovits (Radiant Earth).

  3. index2026-09-29

    Upstream STAC collections snapshotted to STAC GeoParquet, one file per collection, and mosaicked into VRTs that reference the Source Cooperative tiles in place. depth.vrt and hazard.vrt stack the return periods as bands. No data is copied.

    Code: jrc_glofas.py ↗ @ 78a2982

  4. crop-cog

    Depth tiles cropped to a Kenya window and written as one COG per return period.

How to cite

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

Calum Baugh, Juan Colonese, Claudia D'Angelo, Francesco Dottori, Jeffrey Neal, Christel Prudhomme, Peter Salamon (2024) Modelled flood inundation for different return period scenarios at the global scale. Version 2.1.2. European Commission, Joint Research Centre (JRC). https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/CEMS-GLOFAS/flood_hazard/. Accessed through the CGIAR Climate Action Data Hub, https://cgiar-climate-data-hub.github.io/catalog/jrc-glofas_2.1.2/.
BibTeX
BibTeX
@misc{jrc_glofas_2024,
  title     = {Modelled flood inundation for different return period scenarios at the global scale},
  author    = {Baugh, Calum and Colonese, Juan and D'Angelo, Claudia and Dottori, Francesco and Neal, Jeffrey and Prudhomme, Christel and Salamon, Peter},
  year      = {2024},
  version   = {2.1.2},
  publisher = {European Commission, Joint Research Centre (JRC)},
  url       = {https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/CEMS-GLOFAS/flood_hazard/},
  note      = {Accessed through the CGIAR Climate Action Data Hub, https://cgiar-climate-data-hub.github.io/catalog/jrc-glofas_2.1.2/}
}

Attribution

Reproduce this credit line wherever you reuse the data.

Contains modified Copernicus Emergency Management Service information [year]

Contacts

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

Peter StewardMaintainer
Alliance of Bioversity International and CIAT
ProcessorPoint of contact
Brayden YoungbergMaintainer
Alliance of Bioversity International and CIAT
Point of contact
European Commission Joint Research Centre (JRC), Copernicus Emergency Management ServiceLicensor
Producer
Source Cooperative (Radiant Earth)
Processor