1km分辨率逐月降雨量和最高温度数据集(1901-2022)--数据处理

1km分辨率逐月降雨量和最高温度数据集(1901-2022)的下载可以参考我的另外一篇博客:

这里的温度和降雨数据集都是NC格式的,需要将其处理为tif格式,我采用的处理软件是MATLAB。

本篇博客以处理温度数据为例,下面是完整的处理代码,注意看代码中的注释。

Matlab 复制代码
clc
clear all
%% 批读取NC文件的准备工作
datadir = 'E:\GSH\1Km温度数据\1985-2017_3\'; %指定批量数据所在的文件夹
filelist = dir([datadir,'*.nc']);    %列出所有满足指定类型的文件
% a = filelist(1).name               %查看要读取的文件的编号
% b = filelist(2).name
k=length(filelist);
for i = 1:11 %依次读取并处理,按照文件夹内文件的顺序读取
    
    %% 批量读取NC文件
    ncFilePath = ['E:\GSH\1Km温度数据\1985-2017_3\',filelist(i).name]; %设定NC路径
    num_1 = filelist(i).name(1:8); %读取数据编号,以便于保存时以此编号储存tif
    num_2=strcat('tmx_',num2str(str2num(num_1(5:8))+1 ));
    num_3=strcat('tmx_',num2str(str2num(num_1(5:8))+2 ));
    
    %% 读取变量值
    %根据ncdisp函数读取到的nc文件变量相应替换
    lon=ncread(ncFilePath,'lon');     %读取经度信息(范围、精度)
    lat=ncread(ncFilePath,'lat');      %读取维度信息
    time=ncread(ncFilePath,'time');         %读取时间序列
    pre=ncread(ncFilePath,'tmx');   %获取温度数据
    %一个文件包含三年数据,将这三年的数据单独导出
    time_1=time(1:12);
    time_2=time(13:24);
    time_3=time(25:36);
    pre_1=pre(:,:,1:12);
    pre_2=pre(:,:,13:24);
    pre_3=pre(:,:,25:36);
    sum_pre_1=sum(pre_1,3)/12;                %求第一年平均温度
    sum_pre_2=sum(pre_2,3)/12;                %求第二年平均温度
    sum_pre_3=sum(pre_3,3)/12;                %求第三年平均温度
    %% 存为tif格式
    %第一年
    data_1=rot90(sum_pre_1,1);   %逆时针旋转90°,不旋转的话最后的图像朝向是错的
    R = georasterref('RasterSize', size(data_1),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]);
    geotiffwrite(['E:\GSH\1Km温度数据\1985-2017_3\',num_1,'.tif'],data_1,R);
    disp([num_1,'done'])
    %第二年
    data_2=rot90(sum_pre_2,1);   %逆时针旋转90°,不旋转的话最后的图像朝向是错的
    R = georasterref('RasterSize', size(data_2),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]);
    geotiffwrite(['E:\GSH\1Km温度数据\1985-2017_3\',num_2,'.tif'],data_2,R);
    disp([num_2,'done'])
    %第三年
    data_3=rot90(sum_pre_3,1);   %逆时针旋转90°,不旋转的话最后的图像朝向是错的
    R = georasterref('RasterSize', size(data_3),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]);
    geotiffwrite(['E:\GSH\1Km温度数据\1985-2017_3\',num_3,'.tif'],data_3,R);
    disp([num_3,'done'])
    
end
disp('Done!')
相关推荐
heartzZ1yy2 小时前
PolarCTF靶场 Crypto 简单 (上)
经验分享·笔记
凌峰的博客4 小时前
IEEE Transactions on Network Science and Engineering 期刊投稿经验
经验分享
赵谨言6 小时前
地球磁场干扰噪声减弱声波对抗测量系统研究进展:近十年中英文文献综述
大数据·开发语言·经验分享
Bdzbdq6 小时前
电压互感器为什么要配一次消谐器?
经验分享
大师影视解说7 小时前
短剧出海全流程实操:翻译工具怎么选?如何操作?
经验分享·ai翻译·短剧翻译·ai配音工具测评·ai配音技术·解说配音
LaughingZhu7 小时前
Product Hunt 每日热榜 | 2026-03-26
人工智能·经验分享·深度学习·神经网络·产品运营
森诺Alyson8 小时前
前沿技术借鉴研讨-2026.3.26(解决虚假特征x2/混合专家对比学习框架)
论文阅读·人工智能·经验分享·深度学习·学习·论文笔记
森诺Alyson8 小时前
前沿技术借鉴研讨-2026.3.19(睡眠分期/Agents模拟临床会诊/多模态抑郁症检测)
论文阅读·经验分享·深度学习·论文笔记·论文讨论
Daorigin_com10 小时前
合规经营新时代:从“安全港”制度看企业合规管理新路径
经验分享·百度·信息可视化·职场和发展·社交电子·交互·新浪微博
Factory_Audit10 小时前
纺织产品的“安全身份证“OEKO
经验分享