python把hdf转为tif_python读hdf4⽂件,再转写成⼀个tif⽂件1.安装pyhdf包
python怎么读文件夹下的文件夹(2)在dos命令⾏下切换到包所在的⽂件夹,并运⾏pip install 包名进⾏安装。
2.读hdf4⽂件
#导⼊包
from pyhdf.SD import *
from osgeo import osr
import numpy as np
(1)#读取⽂件
file="3B43.20100501.7.HDF"
hdf=SD(file)
#获取hdf⽂件的属性信息
attr=hdf.attributes()
#获取hdf⽂件的图层以及每个图层所对应的⾏与列等信息,datasets是⼀个字典
datasets=hdf.datasets()
#读某⼀图层(我这⾥的图层是降⾬图层),图层名可通过datasets看到。并获取图层数据
rainfall_array=hdf.select("precipitation").get()
#图层的旋转与转置(这⾥我要做旋转转置是由于我的图层需求,可通过查看⾃⼰的图层是否需要做这⼀步)
#对矩阵进⾏左右翻转
data=np.fliplr(rainfall_array)
#对矩阵进⾏转置
anspose(data)
#从图层中读取到的数据是5⽉份逐⼩时数据,我们这⾥转换成逐⽉数据
data=data*24*31
#将数据转换成两个字节的整型数据
d=data.astype(np.uint16)
(2)转tif⽂件
#创建⼀个空的投影对象,实例化
ref=osr.SpatialReference()
#定义投影(导⼊投影参数)
#设置坐标系统为wgs84
ref.ImportFromEPSG(4326)
#查看参考系信息
s=ref.ExportToWkt()
#与上⼀篇讲的gdal写tif⽂件相似,这⾥不做过多描述(我这⾥的Create参数主要来⾃上⾯读取的图层信息) driver = gdal.GetDriverByName("GTiff")
dataset = driver.Create("prec_self.tif", 1440, 400, 1, gdal.GDT_UInt16)
#这⾥的仿射变换参数主要是从上⾯的图层中读取到的。可⾃⾏查看⾃⼰所获取的图层
im_geotrans=(-180,0.25,0.0,50,0.0,-0.25)
dataset.SetGeoTransform(im_geotrans)
dataset.SetProjection(s)
dataset.GetRasterBand(1).WriteArray(d)
del dataset
标签:⽂件,hdf4,python,dataset,hdf,pyhdf,图层,data

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。