有没有办法使用文件对象(二进制流)或从netCDF4数据集对象创建(打开/加载)一个Iris Cube?具体而言,我有一个通过URL提供的文件,但不是由OpenDAP服务器提供的;iris.load_cube()等函数在此文件上失败。我意识到Iris更喜欢惰性加载,因此使用URI而不是内存数据,但这并非总是可行的。对于一个普通的netCDF4 Dataset对象,我可以执行以下操作:
from urllib.request import urlopen
import netCDF4 as nc
url = 'https://crudata.uea.ac.uk/cru/data/temperature/HadCRUT.4.6.0.0.median.nc'
with urlopen(url) as stream:
ds = nc.Dataset('HadCRUT', memory=stream.read())
所以我希望对Iris Cube
做类似的事情,或者将netCDF4数据集读入到一个立方体中,而不需要通过磁盘上的临时文件。我原本希望在Iris的功能中会存在这样的东西,但是我还没有在参考文档中找到它。
iris.fileformats.netcdf.load_cubes
。文档可能不鼓励直接使用这些方法,但如果你要使用 monkeypatching,那么这只是你问题中最小的一部分。 - imposerenload_cubes
调用_load_cube
,后者还需要一个文件名,以将 netCDF 变量读入可能的单独立方体中。对于内存中的 netCDF 数据集,乍一看需要覆盖 netcdf.py 中的各种(私有)函数。在这种情况下,覆盖load_cubes
实际上变成了实现自己的文件格式模块。 - 9769953