Overview of EOPF Zarr PluginsΒΆ

We build the following plugins:
xarray EOPF backend
xcube EOPF data store
GDAL EOPF driver
Julia EOPF reader
SNAP EOPF reader (Prototype for Sentinel-2 L2A, under development)
These plugins can be used in the following visualization framework:

What we will learnΒΆ
π What can be done with each plugin.
π³ Current developement state future developement plans of each plugin.
π¦ How to access data with each plugin.
xarray-eopf backendΒΆ
xarray-eopf is a Python package that enhances xarray by a new backend
named "eopf-zarr". This backend allows for reading the ESA EOPF data products
in Zarr format and representing them using analysis ready data models.
After installing xarray-eopf, you can open EOPF products with standard xarray functions:
import xarray as xr
dataset = xr.open_dataset(url_or_path, engine="eopf-zarr")
datatree = xr.open_datatree(url_or_path, engine="eopf-zarr")Modes of operation
Analysis mode (
op_mode="analysis"): Returns user-friendly, analysis-ready data with preprocessing (e.g. band selection, resampling, rectification). This mode supports only Sentinel-2 and Sentinel-3 products.Native mode (
op_mode="native"): Returns a near 1:1 view of the Zarr structure with minimal preprocessing.
π Useful links
π GitHub: EOPF
-Sample -Service /xarray -eopf π¦ PyPI: xarray-eopf
π Anaconda: xarray-eopf on conda-forge
π Documentation: xarray-eopf docs
π Example notebook:
xcube EOPF data storeΒΆ
xcube-eopf extends xcube with an
"eopf-zarr" data store, enabling the creation of analysis-ready data cubes (ARDC)
from Sentinel products via the EOPF Sentinel Zarr Samples Service STAC API.
Once installed, you can access EOPF data products through the standard xcube interface and generate analysis ready data cubes form multiple Sentinel Zarr samples. The workflow for building 3D analysis-ready cubes from Sentinel-2 products involves the following steps:
Query products using the EOPF STAC API for a given time range and spatial extent.
Retrieve observations as cloud-optimized Zarr chunks via the xarray-eopf backend.
Mosaic spatial tiles into single images per timestamp.
Stack the mosaicked scenes along the temporal axis to form a 3D cube.
π Useful links
π GitHub: EOPF
-Sample -Service /xcube -eopf π¦ PyPI: xcube-eopf
π Anaconda: xcube-eopf on conda-forge
π Documentation: xcube-eopf docs
π Example notebook:
GDAL EOPF DriverΒΆ
A GDAL plugin for reading EOPF (Earth Observation Processing Framework) Zarr datasets.
β¨ Key Features
Seamless QGIS integration β Works directly with Add Raster Layer
Smart geospatial handling β Automatic CRS and geotransform detection (crucial for QGIS workflows)
Optimized performance β Built-in caching, lazy loading, and block prefetching
Cloud-native β Supports HTTP/HTTPS access and GDALβs virtual file systems
Cross-platform β Available on Windows, macOS, and Linux
π How to Use
On JupyterHub
Go to JupyterHub
Select Specify an existing Docker image
Enter:
yuvraj1989/eopf-zarr-driver:latest
Locally
Follow the setup instructions in the documentation.
With QGIS via VNC
Run the container:
docker run -d --name eopf-qgis-vnc -p 6080:6080 -p 8888:8888 \ yuvraj1989/eopf-qgis-conda:latest /usr/local/bin/start-qgis-demo.shThen open http://
localhost:6080 /vnc .html in your browser to access QGIS.
π Useful Links
π GitHub: EOPF
-Sample -Service /GDAL -ZARR -EOPF π Documentation: GDAL EOPF driver docs
π Example notebooks:
Julia EOPF readerΒΆ
A Julia plugin for reading EOPF (Earth Observation Processing Framework) Zarr datasets. You can open the EOPF data into a DimTree with Raster leaves for the underlying data. This currently gives you a 1:1 representation of the data in the zarr folder.
π Useful links
π GitHub: JuliaGeo
/SentinelDataSource π Documentation: JuliaGeo/SentinelDataSource docs