|
2 | 2 | ----------- |
3 | 3 |
|
4 | 4 |
|
| 5 | +### Version 0.9.9 - 2026-05-05 |
| 6 | + |
| 7 | +#### Bug fixes and improvements |
| 8 | +- Add geotiff edge-case tests and integer-coord fallback (#1482) (#1492) |
| 9 | +- Use synchronous dask scheduler for different-CRS merge parity test (#1495) |
| 10 | +- Fetch COG tiles concurrently in HTTP path to mask RTT (#1487) |
| 11 | +- Geotiff polish: validation, caching caps, parallelism thresholds, memory guards (#1488) (#1493) |
| 12 | +- Round-trip transform, crs, and tag metadata through to_geotiff/open_geotiff (#1484) (#1494) |
| 13 | +- Tighten geotiff reader: partial-tile shape check, ModelTransformation rotation guard (#1486) (#1491) |
| 14 | +- Add geotiff writer test matrix (#1483) (#1490) |
| 15 | +- Stream tile writes per dask chunk segment to bound peak memory in to_geotiff (#1485) (#1489) |
| 16 | +- Add regression test for GPU pred=3 multi-sample TIFFs (#1479) (#1481) |
| 17 | +- Make cubic resample prefilter explicit so chunk seams stay sub-eps (#1464) (#1478) |
| 18 | +- Preserve input float dtype through resample() (#1467) (#1476) |
| 19 | +- Resample polish: fix cubic depth comment, tighten NaN threshold, add edge tests (#1475) |
| 20 | +- Fix dask aggregate boundary contamination and clean up bookkeeping (#1469) (#1477) |
| 21 | +- Support 3D rasters, expose nodata, document target_resolution tuple in resample (#1466) (#1474) |
| 22 | +- Cover cupy median/mode, dask+cupy, integer input, target_resolution tuple in resample tests (#1470) (#1473) |
| 23 | +- Refresh transform and nodata attrs on resample output (#1465) (#1472) |
| 24 | +- Inline dask aggregate kernel in resample (#1463) (#1468) |
| 25 | +- Emit fresh grid metadata and propagate _FillValue in reproject (#1458) (#1462) |
| 26 | +- Polish reproject/merge docstrings and cover Inf and parameter edge cases (#1459) (#1461) |
| 27 | +- Batch CuPy reductions and drop redundant copies in reproject (#1460) |
| 28 | +- Add transform_precision parameter to merge() (#1452) (#1456) |
| 29 | +- Preserve non-spatial coords through reproject() and merge() (#1455) |
| 30 | +- Guard _apply_vertical_shift against non-finite coords; add vertical CRS tests (#1453) |
| 31 | +- Honor per-raster nodata sentinels in merge() (#1448) (#1449) |
| 32 | +- Preserve input attrs through reproject() and merge() (#1446) |
| 33 | +- Fix dask reproject dtype and same-CRS dask merge (#1450) |
| 34 | +- Validate raster inputs in reproject public APIs (#1431) (#1432) |
| 35 | +- Add memory guard and scalar validation to generate_terrain (#1443) (#1444) |
| 36 | +- Validate scalar parameters in hydro public APIs (#1427) (#1428) |
| 37 | +- Validate mannings_n DataArray values in flood (#1437) (#1438) |
| 38 | +- Add _validate_raster on secondary DataArray args in hydro (#1425) (#1426) |
| 39 | +- Validate grid/bounds/precision params in reproject (#1433) (#1434) |
| 40 | +- Validate cellsize in hydro public APIs (#1429) (#1430) |
| 41 | +- Validate pathfinding inputs and cap waypoints (#1439) (#1440) |
| 42 | +- Validate raster/mask inputs in polygonize (#1441) (#1442) |
| 43 | +- Add memory guard to flow_direction_mfd numpy/cupy backends (#1423) (#1424) |
| 44 | +- Reject NaN/Inf in reproject scalar inputs (#1435) (#1436) |
| 45 | +- Lazy assembly for hand_mfd dask path (#1416) (#1417) |
| 46 | +- Return NaN from glcm_texture angle=None when no angle has valid pairs (#1408) (#1409) |
| 47 | +- Use ground distance for sky_view_factor horizon angle (#1407) (#1410) |
| 48 | +- Exclude centre cell from morph_erode/dilate when kernel[centre]==0 (#1397) (#1398) |
| 49 | +- Use sized slice in dask morph chunk writeback (#1399) (#1400) |
| 50 | +- Merge sink_d8 labels across dask tile boundaries (#1394) (#1395) |
| 51 | +- Reject complex dtypes in _validate_raster() (#1384) (#1387) |
| 52 | +- Reject underflowing sigma_spatial in bilateral() (#1390) (#1392) |
| 53 | +- Use int64 row_ptr in _build_row_csr_numba (#1388) (#1391) |
| 54 | +- Reject mixed-backend arrays in validate_arrays() (#1383) (#1386) |
| 55 | +- Reject non-positive inputs in wpm() (#1382) (#1385) |
| 56 | +- Guard _idw knearest against unbounded grid x k allocation (#1377) (#1380) |
| 57 | +- Validate raster dtype in convolve_2d() (#1389) (#1393) |
| 58 | +- Reject all-zero rasters in mesh_utils.create_triangulation (#1378) (#1381) |
| 59 | +- Validate dtypes per band in mahalanobis() (#1376) (#1379) |
| 60 | +- Guard owa() against unbounded criteria stack (#1370) (#1375) |
| 61 | +- Guard spline() TPS against unbounded memory allocations (#1372) (#1374) |
| 62 | +- Reject n_samples<=0 in mcda sensitivity (#1371) (#1373) |
| 63 | +- Guard flow_path_d8() against unbounded memory allocations (#1364) (#1368) |
| 64 | +- Guard flow_path_mfd() against unbounded memory allocations (#1365) (#1369) |
| 65 | +- Guard flow_path_dinf() against unbounded memory allocations (#1363) (#1367) |
| 66 | +- Guard snap_pour_point_d8() against unbounded memory allocations (#1362) (#1366) |
| 67 | +- Guard sink_d8() against unbounded memory allocations (#1356) (#1361) |
| 68 | + |
| 69 | + |
5 | 70 | ### Version 0.9.8 - 2026-04-29 |
6 | 71 |
|
7 | 72 | #### Bug fixes and improvements |
|
0 commit comments