What's broken
The processed GEBCO file (`data/processed/gebco/static.json`) is quantised down to six discrete depth values: `{200, -3000, -1500, -600, -400, -200}`. At 1° global resolution that's effectively a land/deep-ocean mask — the depth palette in the scatter sketch has nothing to interpolate between.
For regional recipes (Mediterranean, Gulf Stream, etc.) the data is dense enough relative to the canvas that this was tolerable. For globe-spanning biologging recipes (elephant-seal-bathymetry, leatherback-decades, three-species) it produced visible rectangular tiles where the few discrete depth bands abruptly changed.
Workaround landed in 28320cb: drop `context_layer: bathymetry` from the affected recipes and fall back to coastline.
What we want
A processed GEBCO file with:
- Continuous depth values (or at least 50+ bands), not 6
- Higher spatial resolution — at least 1080×2160 (¼°), ideally 2160×4320 (⅛°), so canvas pixels don't all map to the same data cell
- Same JSON shape the sketch already consumes (`shape`, `data`, `min`, `max`, `lat_range`, `lon_range`)
Where to start
The processing path is in `pipeline/src/oceancanvas/tasks/process.py` (or wherever GEBCO is handled). Likely the original processing was meant for a much smaller regional crop and aggressively binned values to keep the file small. For the static global bathymetry file the size budget can be larger — a ½° float32 grid is ~1MB.
Acceptance
What's broken
The processed GEBCO file (`data/processed/gebco/static.json`) is quantised down to six discrete depth values: `{200, -3000, -1500, -600, -400, -200}`. At 1° global resolution that's effectively a land/deep-ocean mask — the depth palette in the scatter sketch has nothing to interpolate between.
For regional recipes (Mediterranean, Gulf Stream, etc.) the data is dense enough relative to the canvas that this was tolerable. For globe-spanning biologging recipes (elephant-seal-bathymetry, leatherback-decades, three-species) it produced visible rectangular tiles where the few discrete depth bands abruptly changed.
Workaround landed in 28320cb: drop `context_layer: bathymetry` from the affected recipes and fall back to coastline.
What we want
A processed GEBCO file with:
Where to start
The processing path is in `pipeline/src/oceancanvas/tasks/process.py` (or wherever GEBCO is handled). Likely the original processing was meant for a much smaller regional crop and aggressively binned values to keep the file small. For the static global bathymetry file the size budget can be larger — a ½° float32 grid is ~1MB.
Acceptance