ANUSPLIN气象插值的那些坑

如有做不出来者,可点击
Anusplin插值
更新部分
之后又做了几次,发现了其他地方,比如ANUSPLIN对气象站点最低数目是有要求的,好像不能低于7个;比如dem数据与站点数据投影坐标要匹配一致之类的。
如果上述都没有。却一直做不出来,还是建议检查两个脚本输入的经纬度范围,绝大多数错误都是在这里出的。另外,看log文件排错也是很重要的手段。
更新部分,以上。

ANUSPLIN 是提供实用的转换分析和对多变量数据采用薄 盘光滑样条插值进行插值的工具。它提供了完整的统计分析、数据诊断以及空间分布标准误。同样也支持多种数据输入和表面查询功能。
ANUSPLIN可以同时处理几个表面,因此在进行气候要素数据内插的批处理中显得更为方便。ANUSPLIN支持输入数据的多种格式变换,提供复杂的统计分析、透明的数据诊断过程和栅格化的拟合曲面以及标准误差曲面输出,因此目前已被广泛使用。
对于样条空间插值的原理,请读者自行搜索。本文主要对ANUSILIN的使用步骤进行简单总结。根据网上现有的博客、视频,你会发现还是难以复刻,因为各种细节原因出现差错,后半段会把主要错误(坑)说一下,避免再犯。

数据资料

使用资料为2005-2014年内蒙古锡林格勒盟9个站点各气象要素日值数据与1Km的DEM数据。

数据格式处理

首先要把原始数据气象数据:
ANUSPLIN气象插值的那些坑_第1张图片
处理成这种形式:
ANUSPLIN气象插值的那些坑_第2张图片
这一步非常简单,用python也好matlab也好R也好,都可以非常轻松的解决。

d2=xlsread('D:\data\锡林格勒盟气象数据\1950-2019年锡林格勒盟7站点气象数据.xlsx','2012-2018','A2:AY22284');
info=xlsread('E:\haolu\stainfo.xls','A1:D9');
p=[d1(:,5);d2(:,10)];
sta=[d1(:,1);d2(:,1)];
year=[d1(:,2);d2(:,5)];
mon=[d1(:,3);d2(:,6)];
day=[d1(:,4);d2(:,7)];
lat=zeros(length(sta),1);
lon=zeros(length(sta),1);
dem=zeros(length(sta),1);
p(p==32700)=0.01;
p=p/10;
data=[sta,lat,lon,dem,year,mon,day,p];
for i=1:length(sta)
    for j=1:9
        if data(i,1)==info(j,1)
            data(i,2:4)=info(j,2:4);
        end
    end
end
year=2005:2014;
mon=1:12;
sta=unique(sta);
m_data=cell(1,10);
for k=1:10
    d=data(data(:,5)==year(k),:);
    a=zeros(9,12);
    for i=1:9
       t=d(d(:,1)==sta(i),:);
       for j=1:12
           t1=t(t(:,6)==j,:);
           a(i,j)=sum(t1(:,8));
       end
    end
    m_data{k}=a;
end
md=[];
for i=1:10
    md=[md;m_data{i}];
end
md=[repmat(info,10,1),md];
xlswrite('E:\haolu\monthly.xlsx',md);   

还是非常简单的。
关于dem数据的处理与气象数据的导出,参考这篇即可:
Anuspline气象插值总结

处理脚本

主要用splina与lapgrd这两个。
脚本的撰写也可以参考上篇,或者简书一为大佬的文(百度一搜ANUSPLIN就有,很简单,我直接附上,这篇的目的不是这个。
ANUSPLIN气象插值的那些坑_第3张图片
ANUSPLIN气象插值的那些坑_第4张图片

坑主要就是两方面:数据和范围
通常,我们用SPSS将处理后的气象数据转为固定ASCII码格式的dat文件,然而,新版的SPSS(20后)会出现数据无法被ANUSPLIN识别的问题,这种时候请注意:
另存为时,注意下方有一个编码格式,默认为UTF-8编码,点开,选择本地编码格式!
否侧你会出现喜闻乐见的:ERROR READING DATA POINT 1关于范围,splina和lapgrd都有经纬度的上下范围输入:对于Splina的运行脚本,输入范围应略大于DEM的经纬度范围,对于lapgrd的脚本,应注意其范围与分辨率与dem文件保持一致!
一旦出现读取数据只读经度不读纬度或者只读经纬度不读高程的情况,导致没有grd文件生成,请检查两个脚本的范围和分辨率!
此外,关于splina的脚本后要至少空8行,至于原理我也不清楚,
此文或许会接着更新。

你可能感兴趣的:(笔记,matlab)