在 netCDF 文件上使用 xarray 时出现随机错误

Random errors when using xarray on netCDF files

提问人:jimmymac 提问时间:11/15/2023 最后编辑:jhammanjimmymac 更新时间:11/15/2023 访问量:27

问:

我正在使用 xarray 从各种 netcdf 文件中提取数据,以分析和绘制不同的气象数据。这是我用于此目的的脚本示例。

import xarray as xr
import numpy as np
import matplotlib.pyplot as plt
from skimage.measure import block_reduce

data = xr.open_mfdataset("filepath\*.nc", parallel=True)

tas = np.array(data['tas'])
time = np.array(data['time'])

x = np.array(data['projection_x_coordinate'])
y = np.array(data['projection_y_coordinate'])

lat = np.array(data['latitude'])
lon = np.array(data['longitude'])

temp = block_reduce(tas, block_size=(12,1,1), func=np.mean, cval=np.mean(tas))

time = np.arange(1884,2023)


plt.plot(time, temp[:, 23, 62], 'r', label='London')
plt.plot(time, temp[:, 22, 55], 'c', label='Headley')
plt.plot(time, temp[:, 23, 59], 'g', label='Egham')
plt.legend()
plt.xlabel('Time (1884-2022)')
plt.ylabel('Temperature [C]')
plt.title('Heat Island Effect for Average Monthly Temperature')

我的问题是代码似乎可以工作而不是随机工作。有时我得到预期的输出,有时我得到错误,例如:

OSError: [Errno -51] NetCDF: Unknown file format: b'C:filepath\\tas_hadukgrid_uk_12km_mon_197201-197212.nc'

RuntimeError: NetCDF: Not a valid ID

KeyError: [<class 'netCDF4._netCDF4.Dataset'>, ('C:filepath\\tas_hadukgrid_uk_12km_mon_197401-197412.nc',), 'r', (('clobber', True), ('diskless', False), ('format', 'NETCDF4'), ('persist', False)), '621f2ad1-8dca-4c52-83d3-1f7fe6b4972d']

我还收到警告,例如:

C:\Users\miniconda3\envs\spyder-env\Lib\site-packages\paramiko\transport.py:219: CryptographyDeprecationWarning: Blowfish has been deprecated
  "class": algorithms.Blowfish,

内核将重新启动。

我使用 spyder 作为 IDE,但问题在 Jupyter 和 VScode 中仍然存在。我已经多次卸载并重新安装了我所有的软件包以及 miniconda。我还将笔记本电脑恢复出厂设置,以确保没有 conda 文件干扰全新安装,但似乎没有任何效果。

任何帮助将不胜感激。

蟒蛇 python-xarray netcdf

评论

0赞 Robert Wilson 11/15/2023
如果不访问文件,很难完全确定第一个错误是怎么回事。文件已损坏或其他原因,或者您的 xarray/dependencies 安装有问题。第二个只是一个警告消息,说某些东西被弃用了,也就是说它现在可以工作,但将来会失败。忽略这一点:修复它是别人的工作
0赞 jimmymac 11/15/2023
谢谢你的评论!我有其他脚本使用不同的netcdf文件,但出现相同的错误。
0赞 Robert Wilson 11/15/2023
正如我所说,错误消息相当清晰。xarray 不喜欢数据。要么是文件坏了,要么是你的安装有问题,要么是 xarray 无法处理它。如果没有访问文件本身,我们就无法弄清楚原因。

答: 暂无答案