Processing toolkit for European Satellite-Derived Flood Depth Maps (JRC/CEMS-EFAS): ingest, index, and extract flood data.
Project description
EuroFlood
Query Europe's observed satellite flood-depth maps by place and time — lightweight, cloud-native, pip-installable.
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:
- Discover —
floods("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 aGeoDataFrameof 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
See the Visualize tutorial.
How the data is served
- Zero-config (default): the published index is read remotely — the COG streams via
/vsicurland the ~14 MB dictionary + events table are cached locally on first use (SHA-256-verified). SetEUROFLOOD_INDEX_MODE=localto only ever use a local copy. - Offline / HPC:
euroflood mirror-indexpulls the full ~130 MB bundle for fast, fully offline queries. - Build it yourself: producers can rebuild the index from the source archive
(
euroflood mirror→ingest→build-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/
- Getting Started — install and run your first query.
- Tutorials — runnable, progressive notebooks (Quickstart → Hazard).
- Concepts — how the index works (the data model in one page).
- API Reference · HPC runbook
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file euroflood-0.1.0.tar.gz.
File metadata
- Download URL: euroflood-0.1.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c333a334cc6618d0fdaa49d83f7f1476ac08fb064bf901f2e980a0e029f7897
|
|
| MD5 |
28e4fa4dd71788ebcfeb5d17c4f8ef6a
|
|
| BLAKE2b-256 |
c7d0f2fdf5fe0b8449b3299106fbb9c808a67a42104540e95b2502a705e51870
|
Provenance
The following attestation bundles were made for euroflood-0.1.0.tar.gz:
Publisher:
release.yml on cisgroup/euroflood
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
euroflood-0.1.0.tar.gz -
Subject digest:
1c333a334cc6618d0fdaa49d83f7f1476ac08fb064bf901f2e980a0e029f7897 - Sigstore transparency entry: 2130686607
- Sigstore integration time:
-
Permalink:
cisgroup/euroflood@7992f2a2ff56822199fa4fb72f5af20c932b14b0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/cisgroup
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7992f2a2ff56822199fa4fb72f5af20c932b14b0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file euroflood-0.1.0-py3-none-any.whl.
File metadata
- Download URL: euroflood-0.1.0-py3-none-any.whl
- Upload date:
- Size: 404.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06be52837e4d95294002c519eb9374b09cc29e7558b812c25102766ce2a968bf
|
|
| MD5 |
37d4288283e2b84fcdd77c8c0c29f816
|
|
| BLAKE2b-256 |
a09ee622d38dd0bc209bff7b94388be8510f2f5cfdd4f885beeb9c5b2f86a8c4
|
Provenance
The following attestation bundles were made for euroflood-0.1.0-py3-none-any.whl:
Publisher:
release.yml on cisgroup/euroflood
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
euroflood-0.1.0-py3-none-any.whl -
Subject digest:
06be52837e4d95294002c519eb9374b09cc29e7558b812c25102766ce2a968bf - Sigstore transparency entry: 2130686733
- Sigstore integration time:
-
Permalink:
cisgroup/euroflood@7992f2a2ff56822199fa4fb72f5af20c932b14b0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/cisgroup
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7992f2a2ff56822199fa4fb72f5af20c932b14b0 -
Trigger Event:
push
-
Statement type: