Skip to content

feat(stac): eodash layerExclusive + style link for S2 L2A (#206)#278

Merged
lhoupert merged 2 commits into
mainfrom
feat/206-eodash-stac-enhancements
Jul 3, 2026
Merged

feat(stac): eodash layerExclusive + style link for S2 L2A (#206)#278
lhoupert merged 2 commits into
mainfrom
feat/206-eodash-stac-enhancements

Conversation

@lhoupert

@lhoupert lhoupert commented Jun 18, 2026

Copy link
Copy Markdown
Collaborator

Closes #206.

What & why

eodash renders sentinel-2-l2a both as server-side XYZ tiles and as a client-side GeoZarr (reflectance) layer, which currently overlap. This adds collection-level metadata so the eodash Layer Control treats them as mutually exclusive and binds a style to the GeoZarr asset.

Changes

Commit A — feat(stac) (prod + staging templates):

  • eodash:layerExclusive: true
  • rel:"style" link → eodash-assets/.../styles/geozarr.json with asset:keys:["reflectance"] (exact values from @A-Behairi's comment; URL verified 200)
  • new tests/test_stac_collections.py — validity, field presence, exactly-one style link bound to a real item_asset, plus adversarial checks that the fields don't leak into other collections

Commit B — chore(stac): remove the obsolete sentinel-2-l2a-staging-codecs collection template and repoint stale example S3 paths in the codec checker docs. Leaves the experimental_scale_offset_codec feature/tests untouched.

Verification

  • ruff format + ruff check clean; mypy clean
  • full suite: 335 passed, 1 skipped

Follow-up ops (not in this PR)

Collection templates still need deploying to the live STAC API, and the live sentinel-2-l2a-staging-codecs collection deleting — handled separately via manage_collections.py.

🤖 Generated with Claude Code

lhoupert and others added 2 commits June 18, 2026 16:49
eodash renders sentinel-2-l2a both as server-side XYZ tiles and as a
client-side GeoZarr (reflectance) layer, which visually overlap. Add
collection-level metadata so the eodash Layer Control treats them as
mutually exclusive and binds a style to the GeoZarr asset:

- eodash:layerExclusive: true
- a rel:"style" link to eodash-assets geozarr.json with asset:keys:["reflectance"]

Applied to the prod and staging collection templates only (per issue thread:
"NB only collections"). Adds tests/test_stac_collections.py covering the new
fields plus adversarial checks that they don't leak into other collections.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The staging-codecs collection variant was an experimental scale-offset-codec
trial and is no longer used. Remove its collection template and update the
obsolete example S3 paths in the codec checker docs to point at the live
sentinel-2-l2a-staging path.

Does not touch the experimental_scale_offset_codec feature or its tests
(tests/unit/test_convert_v1_s2.py uses the name only as a config label).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@lhoupert lhoupert temporarily deployed to harbor-registry June 18, 2026 15:50 — with GitHub Actions Inactive
@lhoupert lhoupert requested a review from emmanuelmathot June 18, 2026 16:00
@lhoupert

Copy link
Copy Markdown
Collaborator Author

@j08lue j08lue requested a review from A-Behairi June 18, 2026 19:22

@A-Behairi A-Behairi left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the additions. In case of eodash:layerExclusive we can find a way to add it in the client if you'd prefer, other than that the properties and links are all correct, thanks.

@lhoupert lhoupert merged commit 017898d into main Jul 3, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature Request: STAC Enhancements for eodash

2 participants