美文网首页python处理数据与数据可视化Ausplin插值
基于ANUSPLIN的批量气象插值-从数据处理到最终结果(1)

基于ANUSPLIN的批量气象插值-从数据处理到最终结果(1)

作者: 画长空_yin | 来源:发表于2018-06-29 19:25 被阅读496次

    引言

    气象数据是进行气候变化研究必不可少的基础数据,对其空间插值是实现面源数据的重要步骤,空间插值的方式是多种的,如常见的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

    相关文章

      网友评论

      本文标题:基于ANUSPLIN的批量气象插值-从数据处理到最终结果(1)

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