当使用 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/