Releases
v0.10.7
Compare
Sorry, something went wrong.
No results found
Version 0.10.7 - 2026-06-13
New features
to_geotiff: add pack=True, the inverse of mask_and_scale (#3064 ) (#3065 )
open_geotiff: add coregister=True (mask_and_scale + reproject + match grid) (#3069 ) (#3070 ) (#3072 )
open_geotiff: pick reproject resampling by raster type under auto_reproject=True (#3067 ) (#3068 )
open_geotiff: rename mask_and_scale to unpack and add GPU / dask+GPU support (#3075 )
Bug fixes and improvements
polygonize: reject invalid return_type before running the computation (#3312 )
polygonize: document that column_name is also used for geojson output (#3309 )
kriging: keep template backend and variance name in the singular-matrix fallback (#3294 )
rasterize: drop non-finite-coordinate geometries and clamp row casts (#3310 )
merge: add GPU tests for mixed-type first/last ordering (#3296 ) (#3302 )
interpolate: add edge-case and parameter test coverage (#3300 )
polygonize: honor _xrspatial_no_georef in CRS detection (#3293 ) (#3308 )
polygonize: jit the float-chunk region ranges scan (#3303 ) (#3314 )
rasterize: burn each geometry once per pixel under merge='sum'/'count' (#3313 )
interpolate: cut redundant work in the backends (#3311 )
rasterize: widen the dtype annotation to the accepted forms (#3291 ) (#3297 )
kriging: name the singular-fallback variance '{name}_variance' (#3289 )
polygonize: cover the dask mask-rechunk path (#3299 ) (#3305 )
polygonize: raise on uint32 region overflow in the cupy integer backend (#3292 ) (#3301 )
interpolate: drop unused math import and fix isort drift (#3286 ) (#3287 )
docs: add a why-xarray-spatial page, retire raster_huh (#3249 ) (#3284 )
geotiff: fill pack=True nodata holes at the integer dtype's native width (#3277 )
ci: add a docs-build job (#3252 )
projection: read ITRF Helmert scale as ppm to match PROJ's data files (#3283 )
projection: reject non-WGS84 ellipsoids in the fast-path dispatch (#3282 )
projection: fix LAEA inverse rq normalization and authalic inverse series (#3280 )
reproject: upload shared coordinate arrays once per chunk in multi-band cupy (#3279 )
reproject: promote to the dask path when the output is large (#3278 )
geotiff: export VRTUnsupportedError, CloudSizeLimitError, PixelSafetyLimitError publicly (#3265 ) (#3273 )
geotiff: refuse pack=True values the packed integer dtype cannot hold (#3272 )
merge: keep the shared integer input dtype instead of promoting to float64 (#3271 )
geotiff: add gpu and dask+gpu legs to the pack=True feature tests (#3270 )
geotiff: correct the unpack docstring (masking still runs without scale/offset) (#3263 ) (#3269 )
geotiff: rewrap _attrs import in _writers/gpu.py to isort line_length=100 (#3259 ) (#3261 )
docs: replace the usage page with a runnable quickstart (#3249 ) (#3258 )
docs: rewrite the installation page (environments, extras, GPU and cloud notes) (#3257 )
dask: name compute tasks xrspatial. for readable task graphs (#3255 )
docs: fix stale Datashader claim and hardcoded links in getting-started (#3249 ) (#3251 )
geotiff: coregister=True reads COG overviews and fails fast on bad templates (#3254 )
geotiff: document coregister=True and register it as an experimental feature (#3248 )
geotiff: warn when coregister=True covers only a small fraction of the caller grid (#3247 )
proximity: replace the numpy line-sweep with an exact cKDTree query (#3245 )
projection: add dask end-to-end warning test, lock note on _crs_to_dict (#3242 ) (#3244 )
projection: silence the pyproj lossy-PROJ-string warning in param extractors (#3242 ) (#3243 )
geotiff: stream dask input through the GPU writer one tile-row band at a time (#3241 )
geotiff: fix to_geotiff(pack=True) crash on cupy and dask+cupy input (#3240 )
geotiff: keep float32 sources float32 through to_geotiff(pack=True) (#3080 ) (#3239 )
hotspots: raise instead of returning all zeros when the raster contains Inf (#3238 )
geotiff: defer the pack=True NaN guard into the dask graph so chunks compute once (#3237 )
geotiff: forward caller chunking to the coregister/auto_reproject output (#3236 )
visibility: add cupy backend, NaN, and Fresnel-blocked coverage (#3202 )
visibility: fix the cupy backend crash in cumulative_viewshed/visibility_frequency (#3205 )
zonal: add GPU backend coverage for regions and crosstab (#3203 )
focal: make the kernel memory guard dtype-aware (#3223 ) (#3232 )
focal: resolve apply() default func per backend (#3215 ) (#3224 )
focal: add edge-case and parameter tests from the test-coverage sweep (#3230 )
hotspots: fix the docstring backend list and kernel weight semantics (#3216 ) (#3227 )
clip_polygon: align dask+cupy mask chunks before map_blocks (#3186 ) (#3204 )
focal: make output dtype consistent across backends (#3226 )
clip_polygon: use the largest chunk for the rasterize mask on dask (#3191 ) (#3201 )
visibility: compute the dask source once in cumulative_viewshed (#3185 ) (#3199 )
polygon_clip: remove unused imports and fix import order (#3198 )
visibility: align output name and frequency_mhz hint with viewshed (#3183 ) (#3195 )
geotiff: fix to_geotiff dask+cupy crash in the CPU streaming writer (gpu=False) (#3171 )
clip_polygon: make nodata dtype consistent across backends (#3208 )
mcda: fix the owa() dask path and batch wpm() validation into one scheduler pass (#3158 )
hypsometric_integral: validate raster inputs (#3211 )
regions: vectorize the relabel loop (#3207 ) (#3212 )
mcda: fix cupy and dask backend failures in owa, standardize, and sensitivity (#3146 ) (#3157 )
mcda: fix API consistency (owa weights param, boolean_overlay Dataset input, ahp_weights docs, ConsistencyResult export) (#3148 ) (#3155 )
mcda: add cupy, dask, metadata, and edge-case test coverage (#3149 ) (#3156 )
mcda: guard monte_carlo dask materialization against OOM (#3145 ) (#3153 )
proximity: add coverage tests (int rasters, bounded GPU metrics, empty input) (#3139 ) (#3140 )
geotiff: add reader.unpack / writer.pack to SUPPORTED_FEATURES at experimental tier (#3172 )
focal: preserve input float dtype in mean() across all backends (#3214 ) (#3221 )
proximity: fix stale proximity/allocation/direction docstrings (#3091 ) (#3138 )
visibility: fix isort import-ordering (#3182 ) (#3189 )
geotiff: thread the nodata kwarg into _pack's NaN fill so pack=True holes match GDAL_NODATA (#3168 ) (#3174 )
mcda: remove unused warnings import, fix isort drift (#3143 ) (#3144 )
geotiff: rewrite stale per-band SCALE/OFFSET in to_geotiff(pack=True) after band-subset reads (#3175 )
geotiff: validate compression_level before GPU dispatch and pass it to fallback codecs (#3167 ) (#3176 )
vrt: place non-georeferenced tiles by explicit pixel offsets (#3116 ) (#3135 )
projection: document actual return types of vertical datum functions (#3097 ) (#3134 )
mcda: keep standardize piecewise/categorical on the device for cupy inputs (#3159 )
geotiff: fix the compression corpus fixture path so oracle tests actually run (#3164 ) (#3169 )
geotiff: warn when the GPU writer materializes dask input; scope streaming docs to the CPU path (#3173 )
focal: hoist the input cast out of the cupy focal_stats loop (#3231 ) (#3233 )
focal: make the memory guard backend-aware for dask input (#3218 ) (#3228 )
clip_polygon: add backend/edge-case/metadata test coverage (#3197 ) (#3206 )
docs: fix the README to_geotiff example that used the gated JPEG codec (#3162 ) (#3170 )
zonal: tighten crosstab zone_ids/cat_ids type hints and fix stale nodata docstring (#3196 )
mcda: preserve input attrs in constrain() (#3147 ) (#3154 )
reproject: keep integer dtype for empty chunks (#3096 ) (#3133 )
mcda: make monte_carlo sensitivity chunk-bounded on dask and drop constrain() deep copy (#3160 )
rasterize: drop two avoidable full-raster allocations in the backends (#3107 ) (#3131 )
proximity: fix bounded dask GREAT_CIRCLE missing antimeridian targets (#3108 ) (#3130 )
geotiff: mask 64-bit integer sentinels at native width in eager reads (#3098 ) (#3128 )
reproject: accept cupy and dask+cupy inputs in merge() (#3095 ) (#3125 )
geotiff: add xfail'd GPU and dask+GPU pack=True round-trip tests (#3114 ) (#3127 )
proximity: sort dask KDTree targets row-major so the tie-break matches numpy (#3090 ) (#3124 )
proximity: hoist the line-sweep kernel to module level to stop per-call recompiles (#3103 ) (#3126 )
rasterize: add all_touched-line and non-iterable-input coverage tests (#3120 )
rasterize: rename use_cuda to gpu with a deprecation shim (#3089 ) (#3122 )
geotiff: reject zero and non-finite SCALE/OFFSET under unpack=True; guard pack=True against divide-by-zero (#3104 ) (#3129 )
reproject: gate the CUDA fast path on WGS84-compatible datums (#3094 ) (#3119 )
geotiff: group streaming-write rows into bands so source chunks compute once (#3117 ) (#3136 )
reproject: skip the duplicate try_numba_transform probe in the numpy chunk worker (#3123 )
reproject: remove the obsolete strict xfail on the streaming 3-D test (#3100 ) (#3181 )
reproject: add tests for the streaming fallback path (#3101 ) (#3118 )
reproject: match streaming output dtype to the other backends (#3093 ) (#3111 )
geotiff: name unpack instead of the deprecated mask_and_scale alias in docs and errors (#3115 )
geotiff: keep regression tests and sweep state after #3109 landed the guard (#3088 ) (#3110 )
proximity: build dask coordinate grids with chunk-aligned broadcast (#3132 ) (#3137 )
rasterize: propagate GeoDataFrame CRS to output when like has none (#3087 ) (#3113 )
rasterize: reject non-finite burn values against integer and bool output dtypes (#3085 ) (#3109 )
reproject: remove unused import and dead local, fix import order in init .py (#3083 ) (#3092 )
geotiff: fix isort import-ordering drift (#3082 ) (#3084 )
merge: make the output-size guard backend-aware (#3048 ) (#3081 )
geotiff: restore the nodata sentinel for float rasters in to_geotiff(pack=True) (#3078 ) (#3079 )
projection: silence the pyproj PROJ-string warning in _get_datum_params (#3076 ) (#3077 )
resample: add dask+numpy nodata-masking value-parity tests (#3073 ) (#3074 )
rasterize: treat a LinearRing as a line; warn on dropped geometries (#3055 ) (#3063 )
rasterize: guard against geometry/like CRS mismatch (#3058 ) (#3062 )
rasterize: reject large integer burn values that float64 cannot hold exactly (#3056 ) (#3060 )
geotiff: warn on non-atomic custom GPU merge over overlap (#3061 )
rasterize: reject fills the output dtype cannot represent exactly (#3059 )
Contributors
Thanks to @brendancol for contributions to this release.
You can’t perform that action at this time.