pytroll/satpy

Allow generic_image reader to set fill value on reading

Opened this issue · 1 comments

While looking into #2923 I went through the generic_image reader code. All the images with A channel are converted to floats and NaNs are placed to the no data pixels. If there's no A but the image has a nodatavals metadata item present and nodata_handling is set to "fill_value" the image is kept as integer data. I'm not sure PNG supports the no data value (or fill value).

Maybe the generic_image reader should have a feature to force a fill_value that would replace the A band whether there is a fill value in the original image or not.

Originally posted by @pnuu in #2897 (comment)

pnuu commented

I did some format testing.

Saving to PNG with fill_value=0 using Satpy and reading the image back with rasterio, we can see that nodatavals are (None, None, None).

I think what we'd need is a set_fill_value kwarg that is used to set the nodatavals. A single value or a tuple. Then in .get_dataset() -> ._mask_image_data() we'd need to handle discarding of the A band for the case where set_fill_value is given.