- 积分
- 300
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-6-13
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
网上有很多用python读取hdf文件的教程,没看到有写入的,研究了一下,发个帖分享。
读取hdf:
import glob
from pyhdf import SD
hdf_name1 = glob.glob('c:/python/MCD43GF_bsa_Band1_001_2008.hdf')
print("file found {}".format(hdf_name1))
hdf_obj1 = SD.SD(hdf_name1[0],SD.SDC.READ)
print(hdf_obj1.datasets().keys())
Map1 = hdf_obj1.select('Albedo_Map_0.659')[:,:]
lon = hdf_obj1.select('longitude')[:]
lat = hdf_obj1.select('latitude')[:]
hdf_obj1.end()
首先要知道hdf文件中包含哪些量,我的文件中包含地表反照率的值,以及经纬度,总共三个量,就分开赋值到三个数组。
写入hdf文件(我是写了一个调用函数):
from pyhdf.SD import*
def white_hdf(Albedo, lat ,lon):
hdf_name = 'Albedo.hdf'
sd = SD(hdf_name[:], SDC.CREATE|SDC.WRITE)
sds1 = SD.create(sd, 'Albedo', SDC.INT32,(1200,1600))
sds2 = SD.create(sd, 'lon', SDC.FLOAT32, (1200))
sds3 = SD.create(sd, 'lat', SDC.FLOAT32, (1600))
sds1.setfillvalue(0)
sds2.setfillvalue(0)
sds3.setfillvalue(0)
dim1 = sds1.dim(0)
dim2 = sds1.dim(1)
dim3 = sds2.dim(0)
dim4 = sds3.dim(0)
sds1[:,:] = Albedo
sds2[:] = lon
sds3[:] = lat
sd.end
return sds1,sds2,sds3
sds1,sds2,sds3表示建立三个量,dim用来设定维数。
如有问题,欢迎大家指正。
|
|