Skip to content

feat(_outofcore): tiled monotone (epsilon>0) fill — eps_fill='monotone' (B6) #67

Description

@MAfarrag

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestphase-4Phase 4 — continental scale & maintenance

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions