• 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!')

  • 相关阅读:
    【cocos creator】编辑器里自动播放spine动画
    【自然语言处理】【向量表示】AugSBERT:改善用于成对句子评分任务的Bi-Encoders的数据增强方法
    手机爬虫用Appium详细教程:利用Python控制移动App进行自动化抓取数据
    [SCUCTF2022]校赛Web出题笔记
    C++ 语言学习 day15 复习 (7)
    (一)Multisim安装与入门
    Java类和对象
    el-select 绑定对象和el-checkbox-group用法
    类和对象3:组合和混入
    有关QT的问题大全
  • 原文地址:https://blog.csdn.net/guoshihui123/article/details/133710705