Auto-created from planning/out-of-core/digital-rivers-out-of-core-plan.md (Workstream B). Part of the
out-of-core (tiled, larger-than-RAM) DEM-hydrology effort; umbrella issue #59. Implemented in PR #60.
Is your feature request related to a problem? Please describe.
epsilon>0 fill removes flat plateaus so D8 flow is defined everywhere, but the in-memory kernel's ε-step-count is a global priority-flood traversal that does not compose across tile seams — so the tiled fill was ε=0 only.
Describe the solution you'd like
Add eps_fill="monotone": fill_0 (B3) + ε·g, where g is a seam-reconciled multi-source BFS exit-distance over the ε=0 filled surface. Lifts the ε=0 restriction with a valid, flat-free terracing. Honest limitation (documented): flat-free only for small ε relative to terrain steps, and not byte-identical to the in-memory Barnes kernel (whose global step-count needs the deferred eps_fill="exact"). For guaranteed flat removal at any ε, use engine="in_memory".
Acceptance criteria
- Tiled monotone == whole-array reference bit-for-bit;
ε→0 reduces to fill_0.
- Flat-free on smooth terrain for small ε.
eps_fill="exact" raises NotImplementedError (deferred).
Effort & dependencies
- Effort: XL (exact mode); monotone mode shipped.
- Depends on: B3.
Additional context (references)
- Barnes, Lehman & Mulla (2014) flat-drainage; Garbrecht & Martz (1997) — the in-memory flat router the exact mode would need to make seam-aware.
Implementation status
Partly done (PR #60): eps_fill="monotone" shipped; eps_fill="exact" (byte-identical) deferred (research-grade — needs the global priority-flood order).
src/digitalrivers/_outofcore/fill_monotone.py; eps_fill= on DEM.fill_depressions.
- Tests:
tests/_outofcore/test_fill_monotone.py.
Is your feature request related to a problem? Please describe.
epsilon>0fill removes flat plateaus so D8 flow is defined everywhere, but the in-memory kernel's ε-step-count is a global priority-flood traversal that does not compose across tile seams — so the tiled fill was ε=0 only.Describe the solution you'd like
Add
eps_fill="monotone":fill_0(B3) + ε·g, wheregis a seam-reconciled multi-source BFS exit-distance over the ε=0 filled surface. Lifts the ε=0 restriction with a valid, flat-free terracing. Honest limitation (documented): flat-free only for small ε relative to terrain steps, and not byte-identical to the in-memory Barnes kernel (whose global step-count needs the deferredeps_fill="exact"). For guaranteed flat removal at any ε, useengine="in_memory".Acceptance criteria
ε→0reduces tofill_0.eps_fill="exact"raisesNotImplementedError(deferred).Effort & dependencies
Additional context (references)
Implementation status
Partly done (PR #60):
eps_fill="monotone"shipped;eps_fill="exact"(byte-identical) deferred (research-grade — needs the global priority-flood order).src/digitalrivers/_outofcore/fill_monotone.py;eps_fill=onDEM.fill_depressions.tests/_outofcore/test_fill_monotone.py.