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!')
相关推荐
一隅论数智1 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
上海广测检测科技有限公司1 天前
智能平板出口巴西合规详解:Anatel射频、Inmetro电源/电池与LGPD数据合规叠加
经验分享
FLJwu1 天前
存储与固件量产实战01:运动相机TF卡量产翻车实录!V30≠4K可用,90%OEM踩中的隐形售后坑
经验分享·数码相机·相机
xiaomu001231 天前
床垫选型的技术评估模型:结构、材料、卫生与检测四层口径
经验分享
汉风设计装饰1 天前
智慧办公弱电系统设计:门禁、监控与 IoT 传感器的集成方案
经验分享
m0_719640872 天前
支持开源二次开发的VR遥操机器人2026年选型推荐
经验分享
陈卫军老师2 天前
陈卫军:把口味写在一张纸上,店才稳得住
经验分享·笔记·流量运营
从零开始的嵌入式之旅2 天前
day47
arm开发·经验分享·笔记·嵌入式硬件
恒锐丰科技林技术员2 天前
EG1164 高压大电流升压同步整流芯片解析
经验分享·嵌入式硬件·硬件工程
欣悦财务2 天前
怎么判断代理记账收费值不值,把费用折成服务密度再比
经验分享