在NetCDF文件中调用维度时的KeyError

时间:2017-06-14 20:09:31

标签: python-3.x netcdf

我的目标是导入NetCDF文件并提取存储在其中的基础变量。我一直关注这个guide

到目前为止,这是我的代码:

from netCDF4 import Dataset
import numpy as np

fileName = 'LES_cloud_fields.nc.cdf'
fdata = Dataset(fileName, 'r', format="NETCDF4")
print(fdata.dimensions)
print(fdata.variables['nz'][:])
fdata.close()

我收到错误:KeyError: 'nz'

非常感谢任何想法,指南或提示!

1 个答案:

答案 0 :(得分:0)

我怀疑问题在于维度和变量之间的混淆。在像LES这样的(大气)模型中,通常会看到名为z的维度和变量(或者开发人员决定使用的任何内容),但情况并非总是如此,并且维度上的信息(包含实际高度级别的变量)可以不同的名称命名。考虑这个最小的例子:

from netCDF4 import Dataset
import numpy as np

f = Dataset('file.nc', 'w')
dim_z = f.createDimension('z', 10)
var_z = f.createVariable('z', 'f4', ('z', ))
var_z[:] = np.arange(10)

print(f.dimensions)         # output: OrderedDict([('z', ....
print(f.variables['z'][:])  # output: [ 0.  1.  2.  3.  4.  ...

您可能会发生这种情况:有一个维度z,它也可以作为变量使用。但如果开发人员决定做类似的事情:

f = Dataset('file.nc', 'w')
dim_z = f.createDimension('z', 10)
var_z = f.createVariable('height', 'f4', ('z', ))
var_z[:] = np.arange(10)

print(f.dimensions)         # output: OrderedDict([('z', ....
print(f.variables['z'][:])  # output: KeyError: 'z'

维称为z,但值存储在名为height的变量中,最后一行给出与您类似的错误。