ANUSPLIN气象插值的那些坑
ANUSPLIN 是提供实用的转换分析和对多变量数据采用薄 盘光滑样条插值进行插值的工具。它提供了完整的统计分析、数据诊断以及空间分布标准误。同样也支持多种数据输入和表面查询功能。ANUSPLIN可以同时处理几个表面,因此在进行气候要素数据内插的批处理中显得更为方便。ANUSPLIN支持输入数据的多种格式变换,提供复杂的统计分析、透明的数据诊断过程和栅格化的拟合曲面以及标准误差曲面输出,因此目前已
如有做不出来者,可点击
Anusplin插值
更新部分
之后又做了几次,发现了其他地方,比如ANUSPLIN对气象站点最低数目是有要求的,好像不能低于7个;比如dem数据与站点数据投影坐标要匹配一致之类的。
如果上述都没有。却一直做不出来,还是建议检查两个脚本输入的经纬度范围,绝大多数错误都是在这里出的。另外,看log文件排错也是很重要的手段。
更新部分,以上。
ANUSPLIN 是提供实用的转换分析和对多变量数据采用薄 盘光滑样条插值进行插值的工具。它提供了完整的统计分析、数据诊断以及空间分布标准误。同样也支持多种数据输入和表面查询功能。
ANUSPLIN可以同时处理几个表面,因此在进行气候要素数据内插的批处理中显得更为方便。ANUSPLIN支持输入数据的多种格式变换,提供复杂的统计分析、透明的数据诊断过程和栅格化的拟合曲面以及标准误差曲面输出,因此目前已被广泛使用。
对于样条空间插值的原理,请读者自行搜索。本文主要对ANUSILIN的使用步骤进行简单总结。根据网上现有的博客、视频,你会发现还是难以复刻,因为各种细节原因出现差错,后半段会把主要错误(坑)说一下,避免再犯。
数据资料
使用资料为2005-2014年内蒙古锡林格勒盟9个站点各气象要素日值数据与1Km的DEM数据。
数据格式处理
首先要把原始数据气象数据:
处理成这种形式:
这一步非常简单,用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就有,很简单,我直接附上,这篇的目的不是这个。
坑
坑主要就是两方面:数据和范围
通常,我们用SPSS将处理后的气象数据转为固定ASCII码格式的dat文件,然而,新版的SPSS(20后)会出现数据无法被ANUSPLIN识别的问题,这种时候请注意:
另存为时,注意下方有一个编码格式,默认为UTF-8编码,点开,选择本地编码格式!
否侧你会出现喜闻乐见的:ERROR READING DATA POINT 1关于范围,splina和lapgrd都有经纬度的上下范围输入:对于Splina的运行脚本,输入范围应略大于DEM的经纬度范围,对于lapgrd的脚本,应注意其范围与分辨率与dem文件保持一致!
一旦出现读取数据只读经度不读纬度或者只读经纬度不读高程的情况,导致没有grd文件生成,请检查两个脚本的范围和分辨率!
此外,关于splina的脚本后要至少空8行,至于原理我也不清楚,
此文或许会接着更新。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)