From 429218cdd4feb435c3f9f8a9d3c60f67cc4a1e48 Mon Sep 17 00:00:00 2001 From: Max Jones <14077947+maxrjones@users.noreply.github.com> Date: Wed, 13 Mar 2024 18:28:26 -0400 Subject: [PATCH] Only set fill value as nan for floating point arrays --- ndpyramid/core.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ndpyramid/core.py b/ndpyramid/core.py index 34e2463..b598bb8 100644 --- a/ndpyramid/core.py +++ b/ndpyramid/core.py @@ -8,7 +8,12 @@ import xarray as xr from .common import Projection -from .utils import add_metadata_and_zarr_encoding, get_levels, get_version, multiscales_template +from .utils import ( + add_metadata_and_zarr_encoding, + get_levels, + get_version, + multiscales_template, +) def pyramid_coarsen( @@ -132,7 +137,10 @@ def pyramid_reproject( dst_transform = projection_model.transform(dim=dim) def reproject(da, var): - da.encoding['_FillValue'] = np.nan + # Set float FillValue that rasterio will use to initialize array + if da.encoding.get('_FillValue') is None and np.issubdtype(da.dtype, np.floating): + da.encoding['_FillValue'] = np.nan + da = da.rio.reproject( projection_model._crs, resampling=Resampling[resampling_dict[var]],