stac-utils / stac-utils/rustac

Add storage:schemes to geoparquet

Open
#999 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
145
Forks
24
Avg merge
1d 10h
Merged PRs (30d)
12

Description

TL;DR: It would be great if we could use rustac to search STAC items in geoparquet and return sufficient info to open Icechunks in Xarray.

I made a catalog of STAC items for each of the dynamical.org Icechunk datasets on AWS Open Data, and then used rustac to create a geoparquet version.  I pushed both to a bucket, mostly because I wanted to keep the regular catalog for the STAC browser.

I then asked Claude Code to make a notebook that queries the geoparquet with rustac and open one of the returned items in xarray: https://nbviewer.org/gist/rsignell/42cba4d8db34f49ed91538ef47375b32

What it built works. But after querying the geoparquet file, it uses the JSON STAC items to get the asset info necessary to load into Xarray, saying:
"rustac drops non-spec top-level attributes (like storage:schemes) when writing GeoParquet, so we look the item up by ID in the original JSON catalog, which has the full metadata needed by xpystac to open the icechunk store."

So it would be great if we could store the storage:schemes in geoparquet also, allowing us to open and start working with the icechunk assets from the items that got returned.

In case it's useful, here are the notebooks I used for the dynamical data:

The notebook to create the STAC catalog: https://github.com/OpenScienceComputing/NCICS-2026/blob/main/build_dynamical_catalog_full.ipynb

The notebook to create geoparquet:
https://github.com/OpenScienceComputing/NCICS-2026/blob/main/build_geoparquet.ipynb

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing rustac's GeoParquet writing and STAC item serialization paths, using the linked geoparquet and dynamical catalog notebooks to reproduce the query. Check how the non-spec storage:schemes attribute is handled and add coverage for retaining it so returned items contain enough asset information for Xarray and Icechunk access.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, rust
Domain
data
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.