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


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

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

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

    1. clc
    2. clear all
    3. %% 批读取NC文件的准备工作
    4. datadir = 'E:\GSH\1Km温度数据\1985-2017_3\'; %指定批量数据所在的文件夹
    5. filelist = dir([datadir,'*.nc']); %列出所有满足指定类型的文件
    6. % a = filelist(1).name %查看要读取的文件的编号
    7. % b = filelist(2).name
    8. k=length(filelist);
    9. for i = 1:11 %依次读取并处理,按照文件夹内文件的顺序读取
    10. %% 批量读取NC文件
    11. ncFilePath = ['E:\GSH\1Km温度数据\1985-2017_3\',filelist(i).name]; %设定NC路径
    12. num_1 = filelist(i).name(1:8); %读取数据编号,以便于保存时以此编号储存tif
    13. num_2=strcat('tmx_',num2str(str2num(num_1(5:8))+1 ));
    14. num_3=strcat('tmx_',num2str(str2num(num_1(5:8))+2 ));
    15. %% 读取变量值
    16. %根据ncdisp函数读取到的nc文件变量相应替换
    17. lon=ncread(ncFilePath,'lon'); %读取经度信息(范围、精度)
    18. lat=ncread(ncFilePath,'lat'); %读取维度信息
    19. time=ncread(ncFilePath,'time'); %读取时间序列
    20. pre=ncread(ncFilePath,'tmx'); %获取温度数据
    21. %一个文件包含三年数据,将这三年的数据单独导出
    22. time_1=time(1:12);
    23. time_2=time(13:24);
    24. time_3=time(25:36);
    25. pre_1=pre(:,:,1:12);
    26. pre_2=pre(:,:,13:24);
    27. pre_3=pre(:,:,25:36);
    28. sum_pre_1=sum(pre_1,3)/12; %求第一年平均温度
    29. sum_pre_2=sum(pre_2,3)/12; %求第二年平均温度
    30. sum_pre_3=sum(pre_3,3)/12; %求第三年平均温度
    31. %% 存为tif格式
    32. %第一年
    33. data_1=rot90(sum_pre_1,1); %逆时针旋转90°,不旋转的话最后的图像朝向是错的
    34. R = georasterref('RasterSize', size(data_1),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]);
    35. geotiffwrite(['E:\GSH\1Km温度数据\1985-2017_3\',num_1,'.tif'],data_1,R);
    36. disp([num_1,'done'])
    37. %第二年
    38. data_2=rot90(sum_pre_2,1); %逆时针旋转90°,不旋转的话最后的图像朝向是错的
    39. R = georasterref('RasterSize', size(data_2),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]);
    40. geotiffwrite(['E:\GSH\1Km温度数据\1985-2017_3\',num_2,'.tif'],data_2,R);
    41. disp([num_2,'done'])
    42. %第三年
    43. data_3=rot90(sum_pre_3,1); %逆时针旋转90°,不旋转的话最后的图像朝向是错的
    44. R = georasterref('RasterSize', size(data_3),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]);
    45. geotiffwrite(['E:\GSH\1Km温度数据\1985-2017_3\',num_3,'.tif'],data_3,R);
    46. disp([num_3,'done'])
    47. end
    48. disp('Done!')

  • 相关阅读:
    2022年互联网网络爬虫框架TOP10分析
    【SpringCloud】OpenFeign服务接口调用快速入门
    简述三范式
    307 week contest
    IDEA 自动导入的配置(Auto import)
    如何通过 kubectl 进入 node shell
    代码随想录算法训练营第三天| LeetCode ● 203.移除链表元素 ● 707.设计链表 ● 206.反转链表
    《LC刷题总结》——回溯
    ES6 class类
    ESP8266-Arduino编程实例-MQ-4气体传感器驱动
  • 原文地址:https://blog.csdn.net/guoshihui123/article/details/133710705