Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
## Changes in 0.2.10 (in development)

- Sentinel-1 GRD analysis mode is now fully lazy, enabling seamless execution on
local and distributed Dask clusters.


## Changes in 0.2.9 (from 2026-06-03)

- Added support for Sentinel-1 Level-2 OCN analysis mode.
- Fixed an issue in Sentinel-1 GRD analysis mode that could produce NaN values along
the edges of the bounding box.


## Changes in 0.2.8 (from 2026-05-08)

- Fix package discovery in `pyproject.toml` to ensure only `xarray_eopf`
Expand Down
6 changes: 5 additions & 1 deletion docs/guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,11 @@ Sentinel-1 Level-1 GRD data is provided in radar geometry, defined by the coordi
`nearest`, `bilinear`.
- `footprint_scale_factor`: Defines how radar pixels contribute to the output grid.
Default: `(3.0, 3.0)`, accounting for resolution differences (e.g., ~10 m GRD
vs. ~30 m DEM).
vs. ~30 m DEM).
- `cache_uri`: Temporary path used to store intermediate results from the
backward geocoding step in the Sentinel-1 processing workflow. The cache is
automatically removed when the Python process exits. If None, a temporary
directory with a unique UUID-based name is created.

Examples:

Expand Down
8 changes: 4 additions & 4 deletions integration/test_sen1_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
show_chunking = False


class Sentinel2AnalysisTest(TestCase):
class Sentinel1AnalysisTest(TestCase):
def test_open_dataset_sen1_grd(self):
dem_path = Path(__file__).resolve().parent / "test_data" / "dem_small.zarr.zip"
store = zarr.ZipStore(str(dem_path), mode="r")
Expand All @@ -28,9 +28,9 @@ def test_open_dataset_sen1_grd(self):
dem = dem.dem

url = (
"https://objects.eodc.eu/e05ab01a9d56408d82ac32d69a5aae2a:202603-"
"s01siwgrh-global/19/products/cpm_v262/S1A_IW_GRDH_1SDV_20260319"
"T102725_20260319T102758_063695_0801D3_2EC6.zarr"
"https://objects.eodc.eu/e05ab01a9d56408d82ac32d69a5aae2a:202606"
"-s01siwgrh-global/23/products/cpm_v270/S1D_IW_GRDH_1SDV_20260623"
"T225558_20260623T225623_003369_005EC5_B4C2.zarr"
)
with timeit("open " + url) as result:
# noinspection PyTypeChecker
Expand Down
12 changes: 6 additions & 6 deletions integration/test_sen1_native.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@
class Sentinel1NativeTest(TestCase):
def test_open_datatree_sen1_grd(self):
path = (
"https://objects.eodc.eu/e05ab01a9d56408d82ac32d69a5aae2a:202603-"
"s01siwgrh-global/19/products/cpm_v262/S1A_IW_GRDH_1SDV_20260319"
"T102725_20260319T102758_063695_0801D3_2EC6.zarr"
"https://objects.eodc.eu/e05ab01a9d56408d82ac32d69a5aae2a:202606"
"-s01siwgrh-global/23/products/cpm_v270/S1D_IW_GRDH_1SDV_20260623"
"T225558_20260623T225623_003369_005EC5_B4C2.zarr"
)
# noinspection PyTypeChecker
dt = xr.open_datatree(path, engine="eopf-zarr", op_mode="native")
self.assertEqual(25, len(dt.groups))
self.assertIn(
"/S01SIWGRD_20260319T102725_0033_A364_2EC6_0801D3_VH/measurements",
"/S01SIWGRD_20260623T225558_0025_D019_B4C2_005EC5_VH/measurements",
dt.groups,
)
ds = dt.S01SIWGRD_20260319T102725_0033_A364_2EC6_0801D3_VH.measurements
self.assertEqual({"azimuth_time": 22290, "ground_range": 25223}, ds.sizes)
ds = dt.S01SIWGRD_20260623T225558_0025_D019_B4C2_005EC5_VH.measurements
self.assertEqual({"azimuth_time": 16802, "ground_range": 25319}, ds.sizes)

def test_open_datatree_sen1_slc(self):
path = (
Expand Down
Loading
Loading