python read hdf4 & hdf5

Liting Mai (麦李婷)

1.1 import pyhdf read hdf4 (如MODIS Data), 也有用GDAL-OSGEO读hdf4的

参考:代码参考, 数据示例:MODIS地表类型介绍, MODIS MCD12C1V 006 download

import numpy as np
from pyhdf.SD import SD,SDC

f=SD('G:\\surftype\\MCD12C1.A2018001.006.2019200161458.hdf',SDC.READ)   # READ surftype
print(f.datasets())

MLCT=f.select('Majority_Land_Cover_Type_1')    # lon: -180,180;  lat: 90,-90
MLCT=np.array(MLCT)

1.2 import pyhdf read hdf4 (如CloudSat/CPR)

参考:代码参考, 数据示例:Cloudsat/CPR 2b-geoprof, 仪器说明

f = HDF('G:\\201806CloudsatCPR\\'+fs[ifile], SDC.READ)   # # type 1
vs = f.vstart()
data_info_list = vs.vdatainfo()
print( data_info_list )

vdata_lat = vs.attach('Latitude')
vdata_long = vs.attach('Longitude')

lat = vdata_lat[:]
lon = vdata_long[:]

vdata_lat.detach() # "close" the vdata
vdata_long.detach() # "close" the vdata
vs.end() # terminate the vdata interface
f.close()


f=SD('G:\\201806CloudsatCPR\\'+fs[ifile],SDC.READ)    # # type 2
print(f.datasets())
dbze = f.select('Radar_Reflectivity')
f.close()

Cloudsat/CPR type1

Cloudsat/CPR type2

2. import pyhdf read/write hdf5 (如GPM Data)

HDF5数据示例:GPM datasets, GPM data worldview

import h5py
fg=h5py.File('fname.hdf','r') # READ observation DATA
S1=fg['S1']
lon_S1=np.array(S1['Longitude'][:,:])
lat_S1=np.array(S1['Latitude'][:,:])

################ write ################
f=h5py.File("new_file.hdf',"w")
f.create_dataset("varname", data=var,compression="gzip",compression_opts=6)
f.close()

0. python库安装办法:

1. pip install name
2. pip install name.whl
3. tar.gz解压到环境所在的文件夹中,在setup.py存在的路径上:python setup.py install