Cloud-Native Analysis-Ready Data (ARD) Processor for Copernicus SAR Missions
Workflows • Repositories • Products • Quickstart • Testing • Consortium
A prototype processing pipeline for generating standardized Analysis-Ready Data (ARD) from Copernicus SAR missions (Sentinel-1 and ROSE-L).
The processor leverages Xarray and Dask for distributed, cloud-native high-throughput computation, adhering to the European Space Agency’s EOPF (Earth Observation Platform Framework) operational architecture.
The processor supports two execution pipelines:
- CSLC Pipeline (Coregistration Only): Aligns images at sub-pixel accuracy to a reference geometry. The workflow completes directly after co-registration, providing full-resolution complex stacks optimized for phase-sensitive techniques (PSI, SBAS, DS).
- GMLP Pipeline (Coregistration + Multi-looking + Geocoding): Ingests the co-registered data, compresses phase noise and volume via multi-looking into an intermediate radar-coordinate CMLP product, mitigates phase drifts, and geocodes the result into ready-to-use GMLP.
- Auxiliary Inputs:
Ingestionapplies the ETAD and ORBIT ADFs (exact timing and precise-orbit corrections),ReferenceDEMconsumes the DEM ADF, andCoregistrationoptionally takes the IONO ADF for ionospheric correction. The REFDB serves as the persistent reference database across all execution units.
The system is organized into three Python packages:
| Layer | Repository | Responsibilities |
|---|---|---|
| Operational | cop-ard-processor |
EOPF processing units (ingestion, coregistration, geocoding, reference_dem, reference_geometry, reference_update, cmlp), preflight validation, system verification tests, and Docker/Dask deployment targets. |
| Application | cop-ard-app |
Mission readers (Sentinel-1 SAFE, ROSE-L via sarpy), coregistration workflow orchestration, interferogram generation, CMLP/GMLP pipeline assembling. |
| Core | cop-ard-core |
Low-level SAR numerical kernels: Orbit & geometry computation, image matching, ESD, split-spectrum processing, DEM handling, ionospheric estimation, and warping/resampling (NumPy / SciPy / Numba over Xarray/Dask). |
Dependency flow: cop-ard-processor → cop-ard-app → cop-ard-core
All packages require Python 3.13 (>=3.13, <3.14) and are managed with uv (pyproject.toml + pinned uv.lock).
Image co-registration aligns multiple acquisitions so each pixel corresponds to the exact same ground target at sub-pixel accuracy.
- Fundamental baseline for multidimensional image stacks and multi-temporal SAR interferometry (PSI, SBAS, DS).
- Minimizes mission-specific geometric distortions across Sentinel-1, ROSE-L, and NISAR.
- Mitigates phase errors through integrated Enhanced Spectral Diversity (ESD) and Split-Spectrum ionospheric correction.
Figure 1: Sentinel-1 IW co-registered interferometric mosaic over Mojave Desert.
An ARD product optimized for large-scale interferometric monitoring, inspired by intermediate stages in PS/DS and SBAS processing chains before phase unwrapping.
- Reduced Noise & Footprint: Multi-looking suppresses speckle/phase noise and dramatically reduces data storage compared to full CSLC stacks.
- Vegetation Drift Correction: Incorporates correction methods to minimize long-term phase drifts caused by vegetative dynamics.
- Continuous Ingestion: Designed to support sequential updates as new acquisitions arrive.
- Intermediate CMLP: Generated first in radar coordinates on a subset of the original SLC grid (CMLP), then geocoded to standard map coordinates (GMLP).
Figure 2: SAOCOM-1 L-band GMLP over Campi Flegrei.
The entry point for end users is the cop-ard-processor repository.
git clone https://github.com/ROSE-L-ARD/cop-ard-processor.git
cd cop-ard-processor
make installmake install is the recommended installation path for local development. It creates the virtual environment with uv sync and automatically downloads the default EGM2008 geoid grid (us_nga_egm08_25.tif) into the standard PROJ user directory (~/.local/share/proj).
Note on direct
pip/uv syncinstalls: Dask workers enforce a strictly offline environment (pyproj.network.set_network_enabled(False)). If you install via PyPI or runuv syncdirectly withoutmake install, geoid grids will not be downloaded automatically, causing vertical CRS transformations (e.g., Copernicus DEM / EGM2008) to fail at runtime.In that case, provision the grid manually before running processors:
python -c "from cop_ard_app.utils import download_geoid_grid; download_geoid_grid()"(Or point to an existing folder with
export PROJ_USER_WRITABLE_DIRECTORY=/path/to/grids)
Local test suites run with pytest:
uv run --extra tests pytest tests/End-to-end SVTs (tests/vt/) validate full operational chains against S3 trigger data. Because of high storage and compute requirements, SVTs must be executed on a dedicated HPC environment (e.g., CEMPAL).
Test cases must run REFERENCE.py first to construct the reference baseline, followed chronologically by acquisition dates:
# Order enforced automatically; stages S3 trigger data
bash scripts/run_tests.sh TC-ST-FUNC-003
# Reuse existing reference database
bash scripts/run_tests.sh TC-ST-FUNC-009 --skip-reference- Code Standards:
make allformats and runsmake check(rufflint,banditsecurity,xenoncomplexity,mypytyping). - Documentation:
make htmlrenders the full validation-report book (CSLC, CSLC-ESD, geolocation, third-party comparison, RIWS, and the GMLP validations) intodocs/as the Preliminary Product Validation Report;make pdfcompiles the same book to Typst/PDF. - Lockfile Management: Refresh individual dependencies using
uv lock -P <package>followed byuv sync --extra tests. - Containerization: The included
Dockerfileuses a multi-stage layout (auvbuild phase + minimalpython:3.13-slimruntime image containing the pinned environment and EGM2008 geoid assets).
B-Open is the project prime contractor, lead software developer, and long-term maintainer of the ROSE-L-ARD processing suite.
- Federico Minati (@effeminati) — Lead Developer
- Alessio Morea (@AlessioMorea)
- Tommaso Carletti (@Sbyner)
- Francesco Vecchioli (@francesco-vecchioli)
- Francesco DeZan (@fdz-insar) — DeltaPhi
- Juan M. Lopez-Sanchez (@juanma-lopez) — University of Alicante
- Paco López-Dekker (@pakodekker) — TU Delft
- Yan Yuan (@Yan-518) — TU Delft
We gratefully acknowledge the support of the following organizations:
- European Space Agency (ESA): Funded under the Prototype Processor for ARD of Copernicus SAR Missions project.
- CONAE & ASI: Provided L-band SAOCOM SAR data used during prototype development, analysis, and validation activities.
B-Open is committed to maintaining the project in the long term and welcomes sponsorships to support the development of new features and capabilities.
Copyright @ 2026 B-Open Solutions S.r.l.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.