美文网首页
ERA数据预处理

ERA数据预处理

作者: 荔枝猪 | 来源:发表于2019-10-22 20:46 被阅读0次

需求

对全球ERA数据进行预处理为自己需要的

代码

%% 先处理ERA一年数据
% 原文件为一年一个的nc格式数据,一个中有12个月,包含温度Ta,露点温度Td两个变量
% 结果:提取出温度Ta,露点温度Td分别为一个元胞,一个月的数据为一个矩阵排为一行

% 先查看nc文件的变量等相关信息
info = ncinfo('D:\vpd\1979.nc');
% 看一下经纬度排列
lon = ncread('D:\vpd\1979.nc','longitude');
lat = ncread('D:\vpd\1979.nc','latitude');
% 确定变量名称等信息后,提取数据 
for i = 1:12             %时间维,共12个月
    startLoc = [1 1 i];  %读取经度,维度,时间维度的位置
    count = [Inf Inf 1]; %经度,维度从开始一直读到最后,时间维度一个一个读取
    Ta = ncread('D:\vpd\1979.nc','t2m',startLoc,count);
    Ta = Ta - 273.15;    %温度单位K转为°C
    Ta2 = Ta';           %旋转一下
    Td = ncread('D:\yangdong\vpd\1979.nc','d2m',startLoc,count);
    Td2 = Td';
    Td = Td - 273.15;    %温度K转为°C
    ERA_Ta{1,i}(:,1:1440) = Ta2(:,1441:2880); %变换排列方式
    ERA_Ta{1,i}(:,1441:2880) = Ta2(:,1:1440); %变换排列方式
    ERA_Td{1,i}(:,1:1440) = Td2(:,1441:2880);
    ERA_Td{1,i}(:,1441:2880) = Td2(:,1:1440);
end
% 显示一月的图,看是否正确(地图是否有旋转/翻转现象)
Taa = ERA_Ta{1,1};
imshow(Taa,[]);

%% 处理多年ERA nc数据,将以上代码编写成函数ERA_nc
% 先创建空元胞
ERA_Ta1979_2018  = {};   ERA_Td1979_2018 = {};
% 利用编写好的函数ERA_nc批量处理,将1979-2018共480个月数据排为一行储存在元胞
for i = 1979:2018
    dz = strcat('D:\vpd\',num2str(i),'.nc');                     %获取文件夹下的所有nc文件路径名称
    [ERA_Ta,ERA_Td] = ERA_nc(dz);
    ERA_Ta1979_2018 = [ERA_Ta1979_2018,ERA_Ta];
    ERA_Td1979_2018 = [ERA_Td1979_2018,ERA_Td];    
end

相关文章

网友评论

      本文标题:ERA数据预处理

      本文链接:https://www.haomeiwen.com/subject/kuycvctx.html