python - 在 xarray 中导入和解码数据集以避免冲突 _FillValue 和 missing_value

标签 python netcdf python-xarray

当使用 xarray open_dataset 或 open_mfdataset 加载 NARR netcdf 数据集(例如 ftp://ftp.cdc.noaa.gov/Datasets/NARR/monolevel/air.2m.2010.nc )时,xarray 返回有关“conflicting _FillValue and missing_values”的错误。

输入:

ds = xarray.open_dataset('air.2m.2010.nc')

产生这个错误:

ValueError: ('发现 _FillValue 和 missing_value 冲突。考虑使用 decode_cf=False 打开有问题的数据集,更正属性', '并使用 xray.conventions.decode_cf(ds) 显式解码')

使用建议打开时:

ds = xarray.open_dataset('air.2m.2010.nc',decode_cf=False),

数据集已打开,但变量、时间、坐标等未解码(很明显)。显式使用 xarray.decode_cf(ds) 似乎无助于成功解码数据集,因为遇到了同样的错误。

我认为出现此错误是因为 NARR 数据集是 Lambert Conformal,因此在 xarray 打开时由于网格的形状而存在一些缺失值,并且出于某种原因,这与填充值冲突。

在 xarray 中打开和解码此文件的最佳方法是什么?

注意我已经能够使用 netcdf4-python 打开和解码,但希望能够在 xarray 中执行此操作以利用它超出 dask 提供的核心计算功能。

最佳答案

此问题已在较新版本的 xarray 中得到修复。使用 0.12 版,我得到以下内容

>>> ds = xr.open_dataset('air.2m.2010.nc')
.../conventions.py:394: SerializationWarning: variable 'air' has multiple fill values {9.96921e+36, -9.96921e+36}, decoding all values to NaN.

换句话说,它会发出警告,而不是错误,并成功地对两个缺失值应用掩码。

因此,您的问题可以通过升级到较新版本的 xarray 来解决。

关于python - 在 xarray 中导入和解码数据集以避免冲突 _FillValue 和 missing_value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35281841/

相关文章:

Python - 如何确定已解析 XML 元素的层次结构级别?

python - 使用MongoDB作为我们的主数据库,我应该使用单独的图数据库来实现实体之间的关系吗?

python - 有没有办法将 np.where() 与列列表一起使用?

python - 快速读取变量的非连续子集

bash - 将 netcdf 文件中的 float 转换为 byte

python - 在 python 中重新定义 Netcdf 文件

python-xarray - xarray - 如何重命名 DataArray 对象上的维度

python-xarray: xarray.Dataset.keep?

Python 多处理 TLS 套接字服务器

python - 这是什么意思? xarray 错误 : cannot handle a non-unique multi-index