读取netCDF数据

时间:2015-12-01 03:40:02

标签: python numpy hdf5 netcdf

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

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

我想要实现的是提取任何给定AirTemperature的{​​{1}}数据:

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

(time, latitude and longitude)

到目前为止,一切都很顺利。但是,当我打印数据时,我看到所有相同的值都被打印出来..(对于我测试的任何lat,lon ..)

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]

我似乎并不理解..为什么气温总是显示为-9999.0?我已经测试了很多其他(lat,lon)点,似乎每个位置点,气温都是-9999.0。如何从此文件中提取实际数据?

请帮忙:-(。

谢谢

1 个答案:

答案 0 :(得分:0)

好的..我想我想通了。以下是发生的事情:

我拥有的nc文件对纬度和经度有不同的精确度,而我显然传递了更加圆润的(lat, lon)点。一旦我找到了正确的精度,它对我来说很好。 -9999.0值基本上是numpy的掩码数组的_fill_value(表示如果没有匹配给定的lat和long的记录,则返回掩码值)。

谢谢大家。