基于ANUSPLIN的批量气象插值-从数据处理到最终结果(1)
2018-06-29 本文已影响496人
画长空_yin
引言
气象数据是进行气候变化研究必不可少的基础数据,对其空间插值是实现面源数据的重要步骤,空间插值的方式是多种的,如常见的Kring,IDW等,上述两种通过arcgis既能够快速的完成,但当我们的研究时间尺度较短,需要的数据量特别大时,即需要我们进行批量的气象数据插值,这里假设我们需要同时插值全国2000-2015年日气压,日相对湿度,日风速,日照时数,空间分辨率为8km,时间分辨率为1km,将会产生366416=23424个文件,AUSPLIN是专业的气象插值软件,主要是通过薄样条函数进行插值,协变量的引入(通常是高程,气象要素的分布一般与高程相关)能够使得插值精度更高,插值结果更为平滑。
基于matlab的文本气象数据初处理
基于matlab的文本批量拼接
首先从中国气象数据网上下载中国地面气候资料日值数据集(V3.0)。如下图所示:
我这里下载的是1951-2016年的,包括了日气压,日相对湿度,日风速,日照时数等
image.png
以下是下载下来的气压的文本文件,可以看到每个文本文件是以月为单位的,我们需要将月的全部拼接到年上去。
image.png
代码如下所示:
%
filename='H:\Day1951-2012yuanshi\';%%根目录,自行修改
e=dir(); %得到文件夹的名称
for i=5:10
file=strcat(filename,e(i).name,'\'); %得到子文件夹
if i==5
id='-13011-'; %对应不同的数据
end
if i==6
id='-10004-';
end
if i==7
id='-13003-';
end
if i==8
id='-14032-';
end
if i==9
id='-12001-';
end
if i==10
id='-11002-';
end
for m=2000:2015
value=[];value1=[];value2=[];
for n=1:12
if n<10
term=importdata(strcat(file,'SURF_CLI_CHN_MUL_DAY-',file(28:30),id,int2str(m),'0',int2str(n),'.TXT'));%导入数据
else
term=importdata(strcat(file,'SURF_CLI_CHN_MUL_DAY-',file(28:30),id,int2str(m),int2str(n),'.TXT'));
end
if i==9
term1=[term(:,1),term(:,5:7),term(:,9)];%最高温
value1=[value1;term1];
term2=[term(:,1),term(:,5:7),term(:,10)];%最低温
value2=[value2;term2];
else
if i==5
term1=[term(:,1),term(:,5:7),term(:,10)];%
value=[value;term1];
else
term1=[term(:,1),term(:,5:8)];%
value=[value;term1];
end
end
end
%输出的
if i==9
name1=strcat('H:\Day1951-2012yuanshi\统一到年上\',file(28:30),int2str(m),'max.xlsx');
name2=strcat('H:\Day1951-2012yuanshi\统一到年上\',file(28:30),int2str(m),'min.xlsx');
xlswrite(name1,value1);
xlswrite(name2,value2);
else
name1=strcat('H:\Day1951-2012yuanshi\统一到年上\',file(28:30),int2str(m),'.xlsx');
xlswrite(name1,value);
end
end
end
当文件夹中只有以下文件时
image.png
运行上述代码可得到每年的降水,气压,相对湿度,日照时数,日最高气温,日最低气温及风速,如下图
image.png通过上述步骤就完成了auspline插值的第一步,下期是形成auspline需要的插值格式,见下图,敬请期待
image.png