Skip to content

Feature/tile overlap - #1266

Draft
jdroenner wants to merge 9 commits into
feature/retile-and-dataset-originsfrom
feature/tile-overlap
Draft

Feature/tile overlap#1266
jdroenner wants to merge 9 commits into
feature/retile-and-dataset-originsfrom
feature/tile-overlap

Conversation

@jdroenner

Copy link
Copy Markdown
Member

Here is a brief summary of what I did:

@jdroenner
jdroenner changed the base branch from feature/tile-types to feature/retile-and-dataset-origins August 31, 2026 18:13
@jdroenner
jdroenner force-pushed the feature/retile-and-dataset-origins branch from b415d95 to d102026 Compare August 31, 2026 23:54
@jdroenner
jdroenner force-pushed the feature/tile-overlap branch from 430d0fe to eb4badb Compare August 31, 2026 23:54
@jdroenner
jdroenner force-pushed the feature/retile-and-dataset-origins branch from d102026 to 4f24239 Compare September 1, 2026 07:52
SpatialGridDescriptor carries the tile overlap halo (serde default =
zero). Merging requires equal overlaps; mapping/reprojection resets
the overlap because grid geometry changes invalidate padding.
SpatialGridDescriptor carries the tile overlap halo (serde default =
zero). Merging requires equal overlaps; mapping/reprojection resets
the overlap because grid geometry changes invalidate padding.
Add descriptor validation helpers (ensure_no_tile_overlap,
ensure_equal_tile_overlap) plus error variants, and apply the
rejection in operators that count pixels, manage their own margins,
or assume context tile shapes: Onnx, RasterStacker,
NeighborhoodAggregate, BandNeighborhoodAggregate,
TemporalRasterAggregation, Downsampling, Interpolation, BandFilter,
Histogram, ClassHistogram, Statistics, BoxPlot,
MeanRasterPixelValuesOverTime.
Pads every enumerated core tile with neighbor data up to the declared
halo via the RasterSubQueryAdapter fold machinery; regions beyond the
dataset extent stay no-data. Output descriptor declares the overlap.
Rejects already-overlapped inputs (v1) and halos larger than one
core.
AddTileOverlap pads each enumerated core tile with neighbor data via
the RasterSubQueryAdapter fold machinery (no-data beyond the dataset
extent); RemoveTileOverlap crops halos symmetrically with a plain
stream map. Both register in the processing graph API.

The WMS/WCS wrap utility now strips overlap before projection,
resampling, and output so sinks never see padded tiles.

openapi.json regenerated accordingly.
Take TileOverlap accessor receivers by value (Copy type), document
the infallible internal expects, use expect_err in tests.
…ansforms

Add core-anchored local pixel bounds (local_core_pixel_bounds / local_total_pixel_bounds) to BaseTile; the CoordinatePixelAccess hub now validates a local-indexed pixel against the local total bounds before addressing the stored (data-corner) grid. Migrate tile_geo_transform to core_geo_transform and make serialized worldfiles / coordinate lookups overlap-aware.

Fold the hidden TileInformation::global_pixel_bounds into core_pixel_bounds and rename data_pixel_bounds -> total_pixel_bounds, updating callers across operators and services.
Extend the ONNX model descriptor with overlap metadata (halo in/out + required source overlap) and validate it against the tile at setup. Feed the model a halo-padded region and mask the output back to the core, addressing tiles by core-anchored local pixel bounds.

Add a convolution test model and training script exercising the overlap path.
Add an OnnxObjectDetection VectorOperator that runs a raw (pre-NMS) YOLO
ONNX detection model on a raster source and emits bounding boxes as a
MultiPolygonCollection with class (category) and score (float) columns.

- detection_decoder: YOLO box decode (center/corner, objectness) + NMS
- onnx_object_detection: operator, init-time size/resolution checks,
  NHWC tile packing, session run, decode, confidence filter, NMS,
  pixel->world mapping
- test model (test_detection.onnx) + build script, and an end-to-end
  tokio test
@jdroenner
jdroenner force-pushed the feature/tile-overlap branch from eb4badb to 390c704 Compare September 1, 2026 08:13
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.

1 participant