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
.mat转png或者tif
最新推荐文章于 2024-06-21 10:59:56 发布
本文介绍了如何使用Python的scipy和osgeo.gdal库读取MAT文件中的遥感数据,将其转换为TIFF格式,并保持与参考TIFF文件相同的投影和坐标系统。
摘要由CSDN通过智能技术生成