.mat转png或者tif

本文介绍了如何使用Python的scipy和osgeo.gdal库读取MAT文件中的遥感数据,将其转换为TIFF格式,并保持与参考TIFF文件相同的投影和坐标系统。
摘要由CSDN通过智能技术生成
import scipy.io as sio
import numpy as np
from osgeo import gdal

# 定义函数
def writeTiff(im_data, im_geotrans, im_proj, path):
    datatype = gdal.GDT_Float32
    im_data = np.array([im_data])
    _, im_bands, im_height, im_width = im_data.shape
    # 创建文件
    driver = gdal.GetDriverByName("GTiff")
    dataset = driver.Create(path, int(im_width), int(im_height), int(im_bands), datatype)
    if (dataset != None):
        dataset.SetGeoTransform(im_geotrans)  # 写入仿射变换参数
        dataset.SetProjection(im_proj)  # 写入投影
    for i in range(im_bands):
        dataset.GetRasterBand(i + 1).WriteArray(im_data[0,i])
    del dataset

# 加载mat文件数据
path = r'./17.mat'
data = sio.loadmat(path)
datamat = data['HX'] #[H,W,C]
datamat = np.transpose(datamat, (2, 1, 0)) #[C,H,W]

# 读取34.tif的投影信息和坐标系
ref_tif_path = r'F:\datasets\ZY\HSI_MSI_TRAIN_DATA\train\train\X\34.tif'
ref_dataset = gdal.Open(ref_tif_path)
ref_projection = ref_dataset.GetProjection()
ref_geotransform = ref_dataset.GetGeoTransform()

# 创建新的.tif文件并保存
output_path = r'./17.tif'
writeTiff(datamat, ref_geotransform, ref_projection, output_path)

# 清理资源并关闭文件
ref_dataset = None
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python与遥感

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值