Skip to content
@ROSE-L-ARD

ROSE-L-ARD

🛰️ ROSE-L-ARD

Cloud-Native Analysis-Ready Data (ARD) Processor for Copernicus SAR Missions

License Python 3.13 EOPF 3.0+ Package Manager: uv Engine: Xarray & Dask Funded by ESA

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.


🔄 Processing Workflows

The processor supports two execution pipelines:

  1. 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).
  2. 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.

COP-ARD Processing Workflows

  • Auxiliary Inputs: Ingestion applies the ETAD and ORBIT ADFs (exact timing and precise-orbit corrections), ReferenceDEM consumes the DEM ADF, and Coregistration optionally takes the IONO ADF for ionospheric correction. The REFDB serves as the persistent reference database across all execution units.

📦 Repositories

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).


🔬 Products

1. Coregistered Single-Look Complex (CSLC)

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.

Sentinel-1 ARD Interferogram Mosaic - Mojave Desert
Figure 1: Sentinel-1 IW co-registered interferometric mosaic over Mojave Desert.

2. Geocoded Multi-Look Phase (GMLP)

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).

SAOCOM-1 ARD GMLP - Naples
Figure 2: SAOCOM-1 L-band GMLP over Campi Flegrei.


🚀 Quickstart

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 install

make 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 sync installs: Dask workers enforce a strictly offline environment (pyproj.network.set_network_enabled(False)). If you install via PyPI or run uv sync directly without make 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)


🧪 Testing & Verification

Unit & Integration Tests

Local test suites run with pytest:

uv run --extra tests pytest tests/

System Verification Tests (SVT)

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

🛠️ Development & Deployment

  • Code Standards: make all formats and runs make check (ruff lint, bandit security, xenon complexity, mypy typing).
  • Documentation: make html renders the full validation-report book (CSLC, CSLC-ESD, geolocation, third-party comparison, RIWS, and the GMLP validations) into docs/ as the Preliminary Product Validation Report; make pdf compiles the same book to Typst/PDF.
  • Lockfile Management: Refresh individual dependencies using uv lock -P <package> followed by uv sync --extra tests.
  • Containerization: The included Dockerfile uses a multi-stage layout (a uv build phase + minimal python:3.13-slim runtime image containing the pinned environment and EGM2008 geoid assets).

🏛️ Consortium & Contributors

Prime Contractor & Software Engineering

B-Open is the project prime contractor, lead software developer, and long-term maintainer of the ROSE-L-ARD processing suite.

Project Partners


Acknowledgements

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.

Sponsorship

B-Open is committed to maintaining the project in the long term and welcomes sponsorships to support the development of new features and capabilities.


License

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.

Consortium & Partners

Project Partners & Consortium

Popular repositories Loading

  1. cop-ard-core cop-ard-core Public

    Python 3

  2. cop-ard-app cop-ard-app Public

    Python 3

  3. cop-ard-processor cop-ard-processor Public

    Python 3

  4. .github .github Public

    Typst

Repositories

Showing 4 of 4 repositories

Top languages

Loading…

Most used topics

Loading…