读取 netCDF 数据

Reading netCDF data

我正在尝试从 nc 文件中读取数据,该文件具有以下变量:

['latitude', 
'longitude', 
'latitude_bnds', 
'longitude_bnds', 
'time', 
'minimum', 
'maximum', 
'average', 
'stddev', 
'AirTemperature']

我想要实现的是为任何给定的 (time, latitude and longitude):

提取 AirTemperature 数据

为此,我正在做这样的事情:

df = Dataset('data_file.nc', 'r')   
lat = df.variables['latitude'][:]
lon = df.variables['longitude'][:]
temp = df.variables['AirTemperature'][:,:,:]

#(lat, lon) for Coffee, TN
test_lat = 35.45
test_lon = -86.05

#getting the indices for the (lat, lon) using numpy.where
lat_idx = np.where(lat==test_lat)[0][0]
lon_idx = np.where(lon==test_lon)[0][0]

#extracting data for all the times for given indices
tmp_crd = temp[:,lat_idx,lon_idx]

到目前为止,一切顺利。但是,当我打印数据时,我看到所有相同的值都被打印出来了……(对于我一直在测试的任何经纬度……)

print tmp_crd.data
>>> [-9999. -9999. -9999. ..., -9999. -9999. -9999.]

我好像不太明白..为什么气温总是显示为-9999.0?我已经测试了很多其他(纬度、经度)点,似乎每个位置点的气温都是 -9999.0。如何从此文件中提取真实数据?

请帮忙:-(。

谢谢

好的..我想我明白了。这是发生的事情:

我拥有的 nc 文件在纬度和经度方面具有不同的精度,而且我显然传递了更圆润的 (lat, lon) 点集。一旦我弄清楚了正确的精度,它对我来说就很好用。 -9999.0 值基本上是 numpy 屏蔽数组的 _fill_value(这表明如果没有记录匹配给定的纬度和经度集,return 屏蔽值)。

谢谢大家