ESA Mediterranean Data Cubes

The ESA Mediterranean Datacube brings together Earth observation and ocean science datasets for the Mediterranean Sea as part of EarthCODE’s work to make data easier to access and analyse. Drawing on ESA Ocean Science Cluster activities and complementary research products, it covers ocean circulation, physical and biogeochemical conditions, marine productivity, carbon exchange and marine heatwaves.

The datasets share a common 1/24° latitude-longitude grid in EPSG:4326 and are organised in analysis-ready GeoZarr format, with separate stores for monthly variables, daily surface and depth-resolved fields, and hourly currents.

Visit the ocean hackathon website to explore the data and accompanying examples, or browse the notebooks on GitHub.

Example variables from the ESA Mediterranean Datacube.

The Data

The collection covers the Mediterranean Sea, approximately 6°W-36°E and 30°N-46°N. The daily and monthly grids cover 2016-2022, with depth-resolved data through July 2022; hourly currents cover late 2014-2019. Availability varies by source dataset and variable.

Daily Surface Variables

The daily surface datasets we have processed are:

Monthly Ocean Variables

The monthly store includes:

Daily Depth-Resolved Variables

The depth-resolved store includes fields at 18 levels from 3 to 135 m:

Hourly Currents

Each source dataset retains its own attribution, licence and scientific reference. See the dataset overview and access examples for more information.

Access

Reading the Data

You can read the monthly GeoZarr store using Xarray, opening group 0 for the full-resolution grid:

import xarray as xr

ds = xr.open_zarr("https://s3.waw4-1.cloudferro.com/EarthCODE/OSCAssets/med_cubes/ocean-med-monthly-cube.zarr", group="0", chunks={})
ds

The store also provides groups 1 and 2 for coarser spatial levels. For example, you can open group 1 and select chlorophyll-a for July 2019:

coarse_ds = xr.open_zarr("https://s3.waw4-1.cloudferro.com/EarthCODE/OSCAssets/med_cubes/ocean-med-monthly-cube.zarr", group="1", chunks={})

chlorophyll = coarse_ds["chl_a"].sel(time="2019-07-01")
chlorophyll

The stores share a spatial grid, but their time coordinates and depth dimensions differ. Select the variables and align the time periods needed for your analysis when working across stores.

For tutorials and worked examples, visit the Mediterranean Datacube getting-started notebook or GitHub repository.

To suggest a dataset, share a use case or help extend the collection, reply here or email earth-code@esa.int.