当前位置: 首页 > news >正文

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

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

这里的温度和降雨数据集都是NC格式的,需要将其处理为tif格式,我采用的处理软件是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); %读取数据编号,以便于保存时以此编号储存tifnum_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!')

http://www.lryc.cn/news/190142.html

相关文章:

  • docker入门加实战—docker常见命令
  • 【C/C++】使用 g++ 编译器编译 C++ 程序的完全指南
  • ARM中断实验
  • Vue条件渲染
  • k8s中如何使用gpu、gpu资源讲解、nvidia gpu驱动安装
  • VRRP 虚拟路由器冗余协议的解析和配置
  • 旅游网站HTML
  • Unity - Normal mapping - Reoriented normal mapping - 重定向法线、混合法线
  • CSS 常用样式background背景属性
  • Java开发利器,让你事半功倍!
  • Redis面临的挑战
  • 10月12日
  • Windows 下 Qt 可执行程序添加默认管理员权限启动(QMAKE、MinGW MSVC)
  • 深度思考面试常考sql题
  • 使用springboot服务端远程调试? 试试HTTP实现服务监听
  • CSS图文悬停翻转效果完整源码附注释
  • MQTT C库下载
  • android U广播详解(一)
  • input标签的23种type类型
  • 分类预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入分类预测
  • 解决echarts配置滚动(dataZoom)后导出图片数据不全问题
  • 【vue3+ts】项目初始化
  • c++视觉图像----扩充边界
  • 邮政编码,格式校验:@ZipCode(自定义注解)
  • Appium自动化测试框架:关键字驱动+数据驱动
  • 简单多状态dp【动态规划】
  • OpenCV中initUndistortRectifyMap ()函数与十四讲中去畸变公式的区别探究
  • 【C++】C++11——智能指针、内存泄漏、智能指针的使用和原理、RAII、auto_ptr、unique_ptr、shared_ptr、weak_ptr
  • EDUSRC-记某擎未授权与sql注入
  • 1688拍立淘API接口分享