Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
5620587
feat(stac): add build_s1_rtc_stac_item and generate-stac-s1 CLI command
lhoupert May 26, 2026
56160cd
fix: support s3:// URIs in S1Tiling discovery and ingest (#175)
lhoupert May 29, 2026
8d19118
fix(stac): point vv/vh asset hrefs to orbit group root; add tile_matr…
lhoupert May 29, 2026
e44c71c
fix(ingest): add proj:code to resolution group attrs for TiTiler comp…
lhoupert May 29, 2026
d1d1e31
fix(s1): write CF grid_mapping, drop tile_matrix_set from RTC store (…
lhoupert Jun 1, 2026
86206dd
feat(s1-stac): add render extension with dual-pol RGB composite preview
lhoupert Jun 9, 2026
d841acd
refactor(s1-stac): emit a single rescale pair in the RGB render
lhoupert Jun 9, 2026
4c47cd5
fix(s1-rtc): TEMPORARY name store as s1-rtc-{tile} to match titiler r…
lhoupert Jun 15, 2026
b839a39
fix(s1-rtc): build STAC item from a non-consolidated cube store
lhoupert Jun 15, 2026
12a3df7
fix(s1-rtc): CF-encode `time` at every level for datetime-based rende…
lhoupert Jun 17, 2026
930131c
fix(s1-rtc): enrich STAC items & consolidate construction into the li…
lhoupert Jun 18, 2026
993b69c
perf(s1-rtc): shard the conditions arrays (gamma_area/LIA) like the v…
lhoupert Jun 19, 2026
27fe686
fix(s1-rtc): heal a multiscale level missing `time` on append (robust…
lhoupert Jun 19, 2026
c6baebf
fix(s1-rtc): write CF `_FillValue` on float arrays (#172 parity) (#201)
lhoupert Jun 22, 2026
9bd5a55
fix(s1-rtc): store nodata as NaN, not 0, so titiler masks it transpar…
lhoupert Jun 23, 2026
79ce15e
fix(s1-rtc): consolidate every orbit group, not just the last-ingeste…
lhoupert Jun 23, 2026
0734ff1
fix(s1-rtc): per-band rescale for the RGB composite render (#204)
lhoupert Jun 23, 2026
2e702ca
feat(s1-rtc): add grid:code (MGRS tile) + grid extension to STAC item…
lhoupert Jun 23, 2026
0eb157a
chore: regenerate uv.lock with pystac after rebase onto main
lhoupert Jul 7, 2026
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
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ dependencies = [
"s3fs>=2024.6.0",
"boto3>=1.34.0",
"pyproj>=3.7.0",
"pystac>=1.8.0",
"structlog>=25.5.0",
]

Expand Down
33 changes: 33 additions & 0 deletions src/eopf_geozarr/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -1108,6 +1108,20 @@ def consolidate_s1_command(args: argparse.Namespace) -> None:
sys.exit(1)


def generate_stac_s1_command(args: argparse.Namespace) -> None:
"""Build and print a STAC item for an S1 GRD RTC Zarr store."""
import json

from .stac.s1_rtc import build_s1_rtc_stac_item

try:
item = build_s1_rtc_stac_item(args.store, args.collection)
print(json.dumps(item.to_dict(), indent=2))
except Exception as e:
log.exception("❌ Error generating STAC item", error=str(e))
sys.exit(1)


def create_parser() -> argparse.ArgumentParser:
"""
Create the argument parser for the CLI.
Expand Down Expand Up @@ -1238,6 +1252,7 @@ def create_parser() -> argparse.ArgumentParser:

# Add S1 ingestion commands
add_s1_ingestion_commands(subparsers)
add_s1_stac_commands(subparsers)

return parser

Expand Down Expand Up @@ -1304,6 +1319,24 @@ def add_s1_ingestion_commands(subparsers: argparse._SubParsersAction) -> None:
cons_parser.set_defaults(func=consolidate_s1_command)


def add_s1_stac_commands(subparsers: argparse._SubParsersAction) -> None:
"""Add S1 GRD RTC STAC builder command to CLI parser."""
stac_parser = subparsers.add_parser(
"generate-stac-s1",
help="Build and print a STAC item for an S1 GRD RTC Zarr store",
)
stac_parser.add_argument(
"--store", type=str, required=True, help="Path or s3:// URI to the Zarr store"
)
stac_parser.add_argument(
"--collection",
type=str,
default="sentinel-1-grd-rtc-staging",
help="STAC collection ID (default: sentinel-1-grd-rtc-staging)",
)
stac_parser.set_defaults(func=generate_stac_s1_command)


def add_s2_optimization_commands(subparsers: argparse._SubParsersAction) -> None:
"""Add S2 optimization commands to CLI parser."""

Expand Down
Loading