python HDF 文件读取
HDF文件是地学研究中常用的数据格式,卫星数据的储存格式通常如此。下面以AVHRR 卫星数据为例,利用python 读取其数据
python 包
python 有专门针对hdf 文件读取的包
对于HDF4 以及以下来说,需要导入的包有:
from __future__ import division
from pyhdf.SD import SD,SDC
import pprint
文件读取-变量输出
hdf_name = 'patmpsx_n18.levels.hdf'
print ('file found {}'.format(hdf_name)) # 输出数据文件的名字以及所处的文件夹
hdf_obj = SD(hdf_name)
print (hdf_obj,info())
输出内容为:(66,70) 表示有66个变量,70意思还不知道
data_dic = hdf_obj.datasets()
for idx,sds in enumerate(data_dic.keys()):
print (idx,sds)
输出内容为:
文件读取–变量读取
Lat = hdf_obj.select('latitude')[:]
print (Lat)
Lon = hdf_obj.select('longitude')[:]
print (Lon)
上述是第一种读取变量的方法,一维数据直接在select 后面加上[:]表示一维,如果是二维数据,则添加[:,:]
Map = hdf_obj.select('cloud_fraction')
data = Map.get()
data = np.transpose(data) # 将数据进行转置
这是第二种读取数据的方法,假设我们不知道数据的维度,select 选定读取的变量名【第一行】,get 即获取数据的具体数值【第二行】。
pprint.pprint (Map.attributes())
输出内容为cloud fraction变量的全部信息: