数据:.mat文件,维度(360,720,472),
360是行,720是列,472是时间维度,1979-2020年月度数据
全球数据,也就是时间分辨率月,空间分辨率0.5°
目的:将每个月的数据输出为栅格影像
其中包含定义坐标系等等
代码:
"""
将mat文件转为tif
20240619, 19:50, YMJ
"""
import numpy as np
import pandas as pd
import rasterio
import scipy.io as sio
import os
import hdf5storage
mat_path = "D:\\YRB\\TWS\\GRID_CSR_GRACE_REC.mat"
nc_path = "D:\\YRB\\TWS\\tif\\"
data = hdf5storage.loadmat(mat_path)
lat_start, lat_end = data['lat'][0][0], data['lat'][-1][0]
lon_start, lon_end = data['long'][0][0], data['long'][-1][0]
resolution = 0.5
time_list = pd.date_range(start='1979-07', end='2020-07', freq='M').tolist()
for i in range(492):
month_data = data['grace_rec_full'][:,:,i]
# month_data = np.flipud(month_data)
output_filename = f"{nc_path}{time_list[i].strftime('%Y%m')}.tif"
print(output_filename)
# 创建仿射变换参数
transform = rasterio.transform.from_origin(lon_start, lat_start, resolution, resolution)
with rasterio.open(
output_filename,
'w',
driver='GTiff',
height=month_data.shape[0],
width=month_data.shape[1],
count=1,
dtype=str(month_data.dtype),
crs='EPSG:4326',
transform=transform,
) as dst:
dst.write(month_data, 1)
print("TIFF文件生成完成!")