Skip to main content

EuroFlood

CI codecov PyPI docs Python License: MIT DOI Ruff

Query Europe's observed satellite flood-depth maps by place and time — lightweight, cloud-native, pip-installable.

EuroFlood — flood-recurrence map of Zutphen on the river IJssel, over a grayscale basemap

Flood-recurrence over Zutphen (river IJssel) — how often each ~90 m pixel flooded, 2015–2024, straight from the index.

EuroFlood is a data-access tool for the JRC / Copernicus CEMS-EFAS Satellite-Derived Flood Depth Maps for Europe (Betterle & Salamon, 2025) — ~3,280 observed, Sentinel-1-derived flood-depth maps across Europe, 2015–2024. The source is published only as an un-indexed bulk FTP archive; EuroFlood turns it into a queryable index so you can discover which flood events touched a region (and when) and extract only the depth rasters you actually need.

It follows a Discover → Extract model:

  • Discoverfloods("Zutphen, Netherlands") streams a compact index (a Cloud-Optimized GeoTIFF read a window at a time via /vsicurl, plus a small sorted GeoParquet dictionary cached on first use) and returns a GeoDataFrame of matching flood events — transferring a few MB, never the whole archive.
  • Extract.download("out/") fetches and crops only the source depth GeoTIFFs for the events you selected.

It also exposes the global CEMS-GLOFAS modelled flood-hazard maps via hazard().

Install

pip install euroflood

Quick start

import euroflood as ef

# Discover observed flood events (place name, bbox, point+radius, or a shapefile)
cat = ef.floods("Zutphen, Netherlands")    # -> a GeoDataFrame, one row per event
cat = ef.floods(bbox=(6.14, 52.09, 6.27, 52.17), start=2024, end=2024)

# Extract: download + crop the depth rasters for the selected events
cat[cat["date"] >= "2024-01-01"].download("out/")

# Global modelled hazard (CEMS-GLOFAS return-period depth)
ef.hazard("Zutphen, Netherlands", return_period=100).download("hazard/")

Or from the command line:

euroflood floods "Zutphen, Netherlands"
euroflood hazard "Zutphen, Netherlands" -r 100 --download --out hazard/

New to EuroFlood? Work through the runnable tutorials — Quickstart → Discover & filter → Visualize → Download & measure → Hazard.

Visualize (optional [viz] extra)

pip install "euroflood[viz]" adds plotting — flood-recurrence and per-event footprints straight from the index (no download), plus the downloaded depth maps:

cat = ef.floods("Zutphen, Netherlands")
cat.plot()                                 # flood-recurrence heatmap (shown at the top)
cat.footprints()                           # a GeoDataFrame of each event's extent (+ extent_km2)
cat.explore()                              # interactive map with per-region hover tooltips
cat.head(3).download().plot(depth=True)    # fetch + render the actual depth rasters

Per-event flood extents (footprints) Downloaded flood-depth map

See the Visualize tutorial.

How the data is served

  • Zero-config (default): the published index is read remotely — the COG streams via /vsicurl and the ~14 MB dictionary + events table are cached locally on first use (SHA-256-verified). Set EUROFLOOD_INDEX_MODE=local to only ever use a local copy.
  • Offline / HPC: euroflood mirror all --bbox <…> -r 100 stages a region's catalogue, flood depth maps, and hazard tiles into the cache (checksum-ledgered; euroflood verify all --deep gates readiness); then EUROFLOOD_OFFLINE=1 runs floods()/hazard() fully offline. Mirror layers independently with mirror index|floods|hazard.
  • Build it yourself: producers can rebuild the index from the source archive (euroflood fetch-sourcesingestbuild-index); see the HPC runbook.

Place names resolve online-first (OpenStreetMap Nominatim, falling back to an offline Eurostat NUTS dataset); set EUROFLOOD_GEOCODER_BACKEND=local to stay fully offline.

Documentation

Full docs: https://cisgroup.github.io/euroflood/

Data source, attribution & license

EuroFlood code is licensed under the MIT License.

The index and the underlying flood-depth maps are derived from the JRC / Copernicus CEMS-EFAS Satellite-Derived Flood Depth Maps for Europe and are licensed CC-BY-4.0. If you use EuroFlood's data, please cite the source:

Betterle, A. & Salamon, P. (2025). Satellite-Derived Flood Depth Maps for Europe. European Commission, Joint Research Centre (JRC) / Copernicus Emergency Management Service. https://data.jrc.ec.europa.eu/dataset/0bc96690-b89c-4909-9166-c2c322a20130

Developed at Princeton University (Complex Infrastructure Systems Group).


This is the public mirror of EuroFlood. Development happens in a separate private repository; each release here is a clean snapshot. Issues and pull requests are welcome — PRs are triaged and applied upstream.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

euroflood-0.2.0.tar.gz (3.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

euroflood-0.2.0-py3-none-any.whl (421.1 kB view details)

Uploaded Python 3

File details

Details for the file euroflood-0.2.0.tar.gz.

File metadata

  • Download URL: euroflood-0.2.0.tar.gz
  • Upload date:
  • Size: 3.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for euroflood-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8fc8b579a65c4da5b1b3ef1d9a297875019d5086ffd5e590fdd738ab51bd1f4d
MD5 b0488451dcb3884caf68379bcec5f055
BLAKE2b-256 75a980d6ecbdaeb32129ccfab3ec722434c563b6523b0d58a4078d7d3417f5ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for euroflood-0.2.0.tar.gz:

Publisher: release.yml on cisgroup/euroflood

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file euroflood-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: euroflood-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 421.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for euroflood-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 593110f245c54ca008b35007e4bd14a34bba4a6fbec55fcafb5d94ebaef15247
MD5 60935595bde4bbb5261aa1a78876fdae
BLAKE2b-256 208a21269422e4db32c3d8fadcaab747e6dfb3b67f042e6faf9f89431a5f86c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for euroflood-0.2.0-py3-none-any.whl:

Publisher: release.yml on cisgroup/euroflood

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.2.2

2 files

0.2.1

2 files

This release

0.2.0 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page