Python HDF_TIFF及投影转换

Python将hdf文件中的某个图层转换成Tiff输出

以MODIS数据为例,选择其中一个图层输出,并进行投影转换,将MODIS的正弦曲线投影转换为特定投影坐标系(UTM)。

from osgeo import gdal
# 输入文件路径(HDF 文件)
input_hdf = 'MCD.hdf'
# 输出文件路径(TIFF 文件)
output_tiff = 'MCD43A3.tif'
# 要提取的图层名称
layer_name = "要输出的图层"
# 投影转换参数
target_projection = "+proj=utm +zone=38 +datum=WGS84 +units=m +no_defs"

# 打开 HDF 数据集
hdf_dataset = gdal.Open(input_hdf)
# 遍历 HDF 数据集的所有子数据集
for subdataset_name, subdataset_description in hdf_dataset.GetSubDatasets():
    if layer_name in subdataset_description:
        # 打开匹配的子数据集
        subdataset_ds = gdal.Open(subdataset_name)
        if subdataset_ds is not None:
            # 创建 TIFF 数据集
            driver = gdal.GetDriverByName("GTiff")
            tiff_dataset = driver.Create(output_tiff, subdataset_ds.RasterXSize, subdataset_ds.RasterYSize, 1, gdal.GDT_Float32)

            # 将子数据集的数据写入 TIFF 数据集
            tiff_dataset.GetRasterBand(1).WriteArray(subdataset_ds.ReadAsArray())

            # 设置 TIFF 数据集的地理转换和投影信息
            tiff_dataset.SetGeoTransform(subdataset_ds.GetGeoTransform())
            tiff_dataset.SetProjection(subdataset_ds.GetProjection())
            # 投影转换
            gdal.Warp(output_tiff, tiff_dataset, dstSRS=target_projection)
            # 关闭数据集
            tiff_dataset = None
            subdataset_ds = None
            hdf_dataset = None
            print("TIFF 文件已创建并保存。")
            break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值