james-willis opened a new pull request, #749: URL: https://github.com/apache/sedona-db/pull/749
## Summary Upgrades SedonaDB's raster type from 2D tiles to N-dimensional chunks with named dimensions, enabling support for climate model outputs, hyperspectral imagery, Zarr/NetCDF datacubes, and other multi-dimensional geospatial datasets. **Design doc:** https://www.notion.so/wherobots/328ba32ec027812e9413eacf3096aa77 ### Key changes - **New Arrow schema** — flat band struct with `dim_names`, `shape`, `strides`, `offset`; affine transform collapsed to single `List<Float64>`; explicit `x_dim`/`y_dim` fields for spatial dimension declaration; `outdb_uri` replaces `outdb_url` + `outdb_band_id`; `StorageType` enum removed - **New traits** — `RasterRef` (transform, x_dim/y_dim, width/height derived from band dims) and `BandRef` (ndim, dim_names, shape, nd_buffer, contiguous_data returning `Cow<[u8]>`) - **`NdBuffer` struct** — exposes raw buffer + shape + strides + offset for zero-copy access (numpy/Arrow FFI boundary) - **Builder convenience** — `start_raster_2d`/`start_band_2d` for legacy 2D usage; full N-D `start_raster`/`start_band` for multi-dimensional data - **All 33 RS_* functions migrated** — mechanical migration, all produce identical outputs - **Backward compatible** — legacy 2D rasters represented as bands with `dim_names=["y","x"]`, `shape=[height, width]` ### Crates modified - `sedona-schema` — N-D raster schema definition - `sedona-raster` — traits, Arrow array reader, builder, affine transform, display - `sedona-testing` — raster test helpers - `sedona-raster-functions` — all RS_* function implementations ## Test plan - [x] `sedona-schema`: 25 tests pass - [x] `sedona-raster`: 24 tests pass (17 existing + 7 new N-D capability tests) - [x] `sedona-raster-functions`: 140 tests pass — all existing tests produce identical outputs - [x] `sedona-testing`: 8 raster tests pass - [x] Full workspace compiles (`cargo check --workspace`) - [x] New N-D tests cover: non-standard spatial dim names (lon/lat), mixed dimensionality bands, dim_index/dim_size lookups, Cow::Borrowed verification, NdBuffer strides for various types/shapes, no-bands edge case, nullable band names -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
