Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

earth and related environmental sciences

Working with Sentinel-3 in Julia SentinelDataSource.jl package

Direct access to analysis-ready data cubes

Max Planck Institute for Biogeochemistry
ESA EOPF Zarr Logo

🚀 Launch in JupyterHub

Run this notebook interactively with all dependencies pre-installed

Introduction

SentinelDataSource.jl is a Julia package that extends DimensionalData to load EOPF Zarr data. This backend enables seamless access to ESA EOPF data products stored in the Zarr format, presenting them as analysis-ready data structures.

This notebook demonstrates how to use the SentinelDataSource package to explore and analyze EOPF Zarr datasets. It highlights the key features currently supported.


Install the SentinelDataSource package

The SentinelDataSource package can be installed as any Julia package via the internal package manager.

] add https://github.com/JuliaGeo/SentinelDataSource.jl.git

Import Package

The SentinelDataSource package is the library to open EOPF datasets. This is integrated into the DimensionalData ecosystem and the JuliaGeo ecosystem.

using SentinelDataSource
using YAXArrays

Main Features of the SentinelDataSource package

The SentinelDataSource package will at the moment open the EOPF datasets in Native Mode and will return a DimTree of the data.


Open the Product in Native Mode

Sentinel-3 data

We begin with a simple example by accessing a Sentinel-3 product in native mode. To obtain the product URL, you can use the STAC Browser to locate a tile and retrieve the URL from the “EOPF Product” asset.

path = "https://objects.eodc.eu:443/e05ab01a9d56408d82ac32d69a5aae2a:202603-s03olcefr-eu/13/products/cpm_v262/S3B_OL_1_EFR____20260313T100048_20260313T100348_20260314T100820_0180_117_350_2160_ESA_O_NT_004.zarr"
"https://objects.eodc.eu:443/e05ab01a9d56408d82ac32d69a5aae2a:202603-s03olcefr-eu/13/products/cpm_v262/S3B_OL_1_EFR____20260313T100048_20260313T100348_20260314T100820_0180_117_350_2160_ESA_O_NT_004.zarr"

We can use SentinelDataSource.open_datatree to open the EOPF Zarr product as an DimensionalData.DimTree.

dts3 = SentinelDataSource.open_tree(path)
DimTree ├ branches ┤ :measurements dims: columns, rows size: 4865×4091 layers: :oa05_radiance, :altitude, :time_stamp, :oa10_radiance, :oa15_radiance, :oa06_radiance, :oa01_radiance, :oa07_radiance, :oa18_radiance, :oa19_radiance, :oa02_radiance, :oa21_radiance, :oa08_radiance, :oa14_radiance, :oa20_radiance, :oa16_radiance, :oa17_radiance, :oa03_radiance, :latitude, :oa13_radiance, :oa12_radiance, :oa09_radiance, :longitude, :oa11_radiance, :oa04_radiance └─ :orphans dims: removed_pixels, rows size: 150×4091 layers: :oa10_radiance, :altitude, :oa15_radiance, :oa05_radiance, :oa06_radiance, :oa01_radiance, :oa07_radiance, :oa18_radiance, :oa19_radiance, :oa02_radiance, :oa21_radiance, :oa08_radiance, :oa14_radiance, :oa20_radiance, :oa16_radiance, :oa17_radiance, :oa03_radiance, :oa13_radiance, :latitude, :oa12_radiance, :longitude, :oa09_radiance, :oa11_radiance, :oa04_radiance :conditions ├─ :instrument dims: bands2, bands, detectors size: 21×21×3700 layers: :relative_spectral_covariance, :fwhm, :lambda0, :solar_flux ├─ :image dims: columns, rows size: 4865×4091 layers: :altitude, :time_stamp, :latitude, :detector_index, :longitude, :frame_offset ├─ :geometry dims: columns, rows size: 77×4091 layers: :latitude, :sza, :oza, :longitude, :oaa, :saa ├─ :meteorology dims: columns, rows, wind_vector, pressure_level size: 77×4091×2×25 layers: :latitude, :horizontal_wind, :total_columnar_water_vapour, :longitude, :humidity, :sea_level_pressure, :atmospheric_temperature_profile, :total_ozone └─ :orphans dims: removed_pixels, rows size: 150×4091 layers: :altitude, :latitude, :sza, :detector_index, :nb_removed_pixels, :longitude, :frame_offset :quality dims: columns, rows size: 4865×4091 layers: :altitude, :oa12_radiance_unc, :time_stamp, :oa16_radiance_unc, :oa03_radiance_unc, :oa04_radiance_unc, :oa17_radiance_unc, :oa07_radiance_unc, :oa13_radiance_unc, :oa19_radiance_unc, :oa02_radiance_unc, :oa09_radiance_unc, :quality_flags, :oa01_radiance_unc, :oa15_radiance_unc, :oa21_radiance_unc, :oa06_radiance_unc, :oa14_radiance_unc, :oa10_radiance_unc, :latitude, :oa20_radiance_unc, :oa11_radiance_unc, :longitude, :oa08_radiance_unc, :oa18_radiance_unc, :oa05_radiance_unc └─ :orphans dims: removed_pixels, rows, dim_1, dim_0 size: 150×4091×150×4091 layers: :altitude, :oa12_radiance_unc, :oa16_radiance_unc, :oa03_radiance_unc, :oa04_radiance_unc, :oa17_radiance_unc, :oa07_radiance_unc, :oa13_radiance_unc, :oa02_radiance_unc, :oa19_radiance_unc, :oa09_radiance_unc, :oa01_radiance_unc, :quality_flags, :oa15_radiance_unc, :oa21_radiance_unc, :oa06_radiance_unc, :oa14_radiance_unc, :oa10_radiance_unc, :latitude, :oa20_radiance_unc, :oa11_radiance_unc, :longitude, :oa08_radiance_unc, :oa18_radiance_unc, :oa05_radiance_unc └─────────┘

As an example, we plot the 60 meters red band to view the image.

using CairoMakie
data = dts3.measurements[:oa04_radiance][begin:4:end, begin:4:end]
fig, ax, h = image(data)
Loading...

Conclusion

This notebook presents the current development state of the SentinelDataSource.jl package, which enables seamless access to EOPF Zarr products in the familiar DimensionalData ecosystem. The key takeaways are summarized below:

  • EOPF products are opened without modification using DimensionalData DimTree and structures.

  • These DimTree objects can be queried with the selectors as other DimensionalData objects.

Future Development Steps