Skip to content

Commit d45f27a

Browse files
authored
Fix northness/eastness to stay lazy on dask arrays (#1123)
* Add sweep-performance design spec Parallel subagent triage + ralph-loop workflow for auditing all xrspatial modules for performance bottlenecks, OOM risk under 30TB dask workloads, and backend-specific anti-patterns. * Add sweep-performance implementation plan 7 tasks covering command scaffold, module scoring, parallel subagent dispatch, report merging, ralph-loop generation, and smoke tests. * Add sweep-performance slash command * Fix northness/eastness to stay lazy on dask arrays (#1122) Use da.cos/da.sin/da.deg2rad/da.where when the aspect result is dask- backed, preventing implicit materialization via numpy dispatch.
1 parent 8efb6d0 commit d45f27a

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

xrspatial/aspect.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -506,8 +506,12 @@ def northness(agg: xr.DataArray,
506506
asp = aspect(agg, name='_aspect', method=method, z_unit=z_unit,
507507
boundary=boundary)
508508
asp_data = asp.data
509-
trig = np.cos(np.deg2rad(asp_data))
510-
out = np.where(asp_data == -1, np.nan, trig)
509+
if da is not None and isinstance(asp_data, da.Array):
510+
trig = da.cos(da.deg2rad(asp_data))
511+
out = da.where(asp_data == -1, np.nan, trig)
512+
else:
513+
trig = np.cos(np.deg2rad(asp_data))
514+
out = np.where(asp_data == -1, np.nan, trig)
511515
return xr.DataArray(out,
512516
name=name,
513517
coords=agg.coords,
@@ -582,8 +586,12 @@ def eastness(agg: xr.DataArray,
582586
asp = aspect(agg, name='_aspect', method=method, z_unit=z_unit,
583587
boundary=boundary)
584588
asp_data = asp.data
585-
trig = np.sin(np.deg2rad(asp_data))
586-
out = np.where(asp_data == -1, np.nan, trig)
589+
if da is not None and isinstance(asp_data, da.Array):
590+
trig = da.sin(da.deg2rad(asp_data))
591+
out = da.where(asp_data == -1, np.nan, trig)
592+
else:
593+
trig = np.sin(np.deg2rad(asp_data))
594+
out = np.where(asp_data == -1, np.nan, trig)
587595
return xr.DataArray(out,
588596
name=name,
589597
coords=agg.coords,

0 commit comments

Comments
 (0)