You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
aspect(method='geodesic') memory guard is eager-only too #2783
The dask geodesic aspect backend streams chunk by chunk, same as slope, so sizing the guard against the full raster rejects large-but-chunked rasters that would run fine. The fix mirrors the slope change: call _check_geodesic_memory_backend_aware(agg, func_name='aspect') instead, and add the equivalent dask guard tests.
Kept out of #2779 to keep that PR scoped to slope.
Already fixed. The backend-aware guard this issue asks for landed in #2840 / #2846 (commit d51eb3d): aspect.py now calls _check_geodesic_memory_backend_aware(agg, func_name='aspect') instead of the eager-only _check_geodesic_memory(rows, cols, ...). It sizes the guard against the largest chunk plus the 1-cell map_overlap halo for dask, and against the full raster for eager numpy/cupy. The earlier interim fix that skipped the full-raster guard for dask aspect was #2774.
The dask guard tests live in TestGeodesicAspectMemoryGuard (xrspatial/tests/test_geodesic_aspect.py): a large-raster/small-chunk case the eager guard would reject but the chunked path allows, a dask+cupy variant, and a single-whole-raster-chunk case that's still rejected. All pass.
Activity
brendancol commentedon Jun 23, 2026
Already fixed. The backend-aware guard this issue asks for landed in #2840 / #2846 (commit d51eb3d):
aspect.pynow calls_check_geodesic_memory_backend_aware(agg, func_name='aspect')instead of the eager-only_check_geodesic_memory(rows, cols, ...). It sizes the guard against the largest chunk plus the 1-cellmap_overlaphalo for dask, and against the full raster for eager numpy/cupy. The earlier interim fix that skipped the full-raster guard for dask aspect was #2774.The dask guard tests live in
TestGeodesicAspectMemoryGuard(xrspatial/tests/test_geodesic_aspect.py): a large-raster/small-chunk case the eager guard would reject but the chunked path allows, a dask+cupy variant, and a single-whole-raster-chunk case that's still rejected. All pass.Closing as already fixed.