diff --git a/wofs/virtualproduct.py b/wofs/virtualproduct.py index ec1a832..eaac228 100644 --- a/wofs/virtualproduct.py +++ b/wofs/virtualproduct.py @@ -20,11 +20,12 @@ def scale_usgs_collection2(data): """These are taken from the Fractional Cover scaling values""" return data.apply(scale_and_clip_dataarray, keep_attrs=True, - scale_factor=0.275, add_offset=-2000, clip_range=(0, 10000)) + scale_factor=0.275, add_offset=-2000, + clip_range=None, valid_range=(0, 10000)) def scale_and_clip_dataarray(dataarray: xr.DataArray, *, scale_factor=1, add_offset=0, clip_range=None, - new_nodata=-999, new_dtype='int16'): + valid_range=None, new_nodata=-999, new_dtype='int16'): orig_attrs = dataarray.attrs nodata = dataarray.attrs['nodata'] @@ -40,6 +41,10 @@ def scale_and_clip_dataarray(dataarray: xr.DataArray, *, scale_factor=1, add_off dataarray = dataarray.astype(new_dtype) dataarray.data[mask] = new_nodata + if valid_range is not None: + valid_min, valid_max = valid_range + dataarray = dataarray.where(dataarray>= valid_min, new_nodata) + dataarray = dataarray.where(dataarray<= valid_max, new_nodata) dataarray.attrs = orig_attrs dataarray.attrs['nodata'] = new_nodata