python处理数据与数据可视化Ausplin插值

基于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
上一篇下一篇

猜你喜欢

热点阅读