气象插值软件anusplin的使用

1、简介

ANUSPLIN软件包提供了一种使用薄板平滑样条对噪声多变量数据进行透明分析和插值的工具。该软件包通过提供全面的统计分析、数据诊断和空间分布的标准误差来支持这一过程。通常运用到降水、气温等气象要素的插值当中,可以引入高程等协变量进行气象因子的插值。

2、安装过程

我找到的ANUSPLIN软件包是已经解压过的文件,共包括bin/doc/test/uninst4个文件,bin中存放着程序的可执行文件,test文件中有示例数据。

android 在线插值器 插值软件_文件名


android 在线插值器 插值软件_数据_02


由于我是直接用的安装后的软件包,所以需要对用到的可执行文件添加环境变量。我们主要用的文件为bin目录下的splina.exe和lapgrd.exe。

android 在线插值器 插值软件_文件名_03


首先将splina.exe和lapgrd.exe两个文件复制到所在数据文件夹下,然后进入我的电脑、属性、高级系统设置、环境变量、新建,变量名为splina和lapgrd,变量值为文件所在路径。

android 在线插值器 插值软件_气象_04


android 在线插值器 插值软件_数据_05

3、数据准备

3.1 气象站点数据准备

所需的数据主要是站点名称、经度、纬度(投影坐标也可以,在文献中说用投影可以避免空间互相关)、站点海拔以及相应的气象数据,数据准备的格式有多种,在此展示示例数据中的一种格式。

首先,数据必须为ASCII格式,最终后缀名为dat,可以采用spss进行数据转换(网上有很多),我是用python直接写的。

android 在线插值器 插值软件_文件名_06


上图为我使用的数据格式,第一行站点、经度、纬度、海拔,第二行为降水日数据。

这里主要注意的是站点、经纬度、海拔、气象数据等均需要定义数据格式及数据类型,如我的站点信息定义的是宽度为6的字符串数据,经纬度定义的是宽度为8小数点为3的浮点型数据。数据格式及数据类型的定义可以利用spss进行,我采用python进行字符串格式化操作,后期会放出自动化生成的相应程序。3.2 dem数据准备

dem数据要与气象站点数据的坐标系保持一致,数据范围要比研究区大,然后利用arcgis的栅格转ASCII即可得到dem数据。

android 在线插值器 插值软件_数据_07


这里最好用重采样把dem分辨率调的整齐一点,如30m、90m、0.5度、0.25度等,一开始我用默认的0.000832457283程序就运行不了。

android 在线插值器 插值软件_插值_08

4、批处理文件的编写与运行

4.1 splina程序的批处理cmd编写

splina程序主要输入数据为准备好的气象站点数据,输出数据包括日志、误差协方差、表面系数、优化参数和残差5个文件。

splina程序的批处理cmd文件的解释如下:

android 在线插值器 插值软件_气象_09


注意,这里经纬度的设置要比dem的范围大,定义的数据类型与数据格式需与站点数据的dat文件严格对应(即(a6,2f8.3,f8.1/31f6.2))。

编写好后,进入cmd中cd到对应的数据文件夹中,输入splina<cmd文件名>log文件名,即可运行。

android 在线插值器 插值软件_android 在线插值器_10


运行后输出6个文件,1个log文件和5个结果文件。.sur文件在下一步需要用到。

android 在线插值器 插值软件_插值_11


4.2 lapgrd程序的批处理cmd编写

lapgrd程序主要输入数据为准备好的dem数据以及上一步生成的sur文件,输出数据包括日志和对应的栅格数据。

lapgrd程序的批处理cmd文件的解释如下:

android 在线插值器 插值软件_文件名_12


注意这里的经纬度需要和上面的dem文件一致,最小值在文件中有,最大值可以用行列的栅格个数乘以分辨率加上最小值即可,例如我的经度最小值为116.60344566501,列数为7111,分辨率为0.001,那么经度的最大值为116.60344566501+7111*0.001即可。

写好cmd文件后,同样在cmd中,cd到数据文件夹下,输入lapgrd<cmd文件名>log文件名,即可运行。