插值

2018/10/8 AUNSPLIN

# 1 文件准备

   插值模块、数据和插值脚本应在同一文件夹下,文件组织示例如下:

ANUSPIN 插值文件组织示例

  • splina.exe      ||生成表面文件的模块
  • lapgrd.exe      || 生成拟合曲面和贝叶斯标准误差曲面的模块
  • splina.cmd      || 生成表面文件的模块参数脚本
  • lapgrd.cmd      || 生成拟合曲面和贝叶斯标准误差曲面模块的参数脚本
  • rainn.dat       || 以 ASCII 码保存的包含站点经纬度和高程信息的站点数据
  • tas4.txt      || 以 ASCII 码保存的 DEM 数据

提示

  SPLINA.exe、LAPGRD.exe 可从 ANUSPLIN 安装文件夹下复制。

# 2 脚本编写

# 2.1 新建插值脚本

  使用记事本、写字板或 Word 等文本编辑程序创建纯文本文件 .txt,将扩展名改为 .cmd,利用记事本、写字板或 Word 等文本编辑程序对 .cmd 命令行文件进行编辑,以 splina.cmd 和 lapgrd.cmd 为例。

# 2.2 splina 模块脚本参数示例

  生成表面文件的模块为 splina.exe ,其对应的脚本 splina.cmd (文件名自拟,以下为示例),脚本参数(表 2.2-a)和参数解释(表 2.2-b)供大家参考学习。

表 2.2-a splina.cmd 脚本示例

rainsp
1
2
1
0
0
140 150 0 5
-45 -39 0 5
2 5000 1 1
1000.0
2
2
12
0
1
1
rainn.dat
300
6
(a6,f8.3,f8.3,f8.1/12f9.2)
04-P-04-splina.res
04-P-04-splina.opt
04-P-04-splina.sur
04-P-04-splina.lis
04-P-04-splina.cov


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

注意

  每个参数为一行。

表 2.2-b [splina.cmd] 脚本解释

参数(例) 说明 解释
rainsp 表面文件名
1 插值数据的单位 0-未定义
1-米
2-英尺
3-千米
4-英里
5-度
6-弧度
7-毫米
8-兆焦耳
2 变量 独立样条变量 0-10
1 独立协变量 0-7
0 表面样条变量 0-7
0 表面协变量 0-7
140 150 0 5 第1个变量(经度)的参数 含义:
  前两个数字:经纬度和高程的边界信息。
  第三个数字:表示经纬度和高程(变量)是否进行转换和转换方法。
  第四个数字:表示单位。
  如果有,第五个数字代表边距。
①经纬度和高程的边界(大于DEM中的范围)
  [140 150]-经度的西东边界
  [-45 -39]-纬度南北边界
  [2 5000]-高程的下上边界
②经纬度 (变量)的变换方法
  0-不进行变换
  1-X/A
  2-X*A
  3-A*LOG(X + B)
  4-(X/B)**A
  5-A*EXP(X/B)
  6-A*TANH(X/B)
  7-取异向角值
  8-取异向角系数
③单位定义可参考[插值数据的单位]
④当第3个变量为高程时,可将单位m变换为km,可提高拟合效果。
-45 -39 0 5 第2个变量(纬度)的参数
2 5000 1 1 第3个变量(协变量-高程)的参数
1000.0 变换系数A A=1000.0
2 因变量转换 0-不转换
1-转换为自然对数
2-转换为平方根
2 样条次数 ≥2
12 输出表面数 ≥1
0 误差权重选择 0-所有数据点采用统一的权重
1-所有的表面采用统一的权重
12(输出表面数)-为每个表面采用不同的权重
1 优化参数指标(通常为1) 0-每个表面采用相同的平滑参数
1-每个表面采用相同的平滑算法
2-每个表面采用不同的平滑算法
1 平滑方法选择 (通常为1) 0-采用表面平滑参数-参数大小
1-最小化GCV法
2-使用所提供的误差标准偏差估计最小化真实均方误差(MSE)
3-采用固定自由度-固定值大小
4-最小化GML法
rainn.dat 插值数据文件
300 数据点个数 ≥数据点真实值
6 站点标签字符数
(a6,f8.3,f8.3,f8.1/12f9.2) 数据格式 a6-标签类型为字符串,6字符。
f8.3-变量数据,3位小数,8个字符。
/-换行。
12f9.2-12个9个字符保留两位小数的数据。
若有:
x-空格。
48x, f8.1,40x-数据为8个字符1位小数,除去前6(48/8)列数据和后5(40/8)列数据,只保留第7列数据。
(注意:定义的数据数量与站点标签、变量个数与需要插值的数据数量总和尽量一致。例如根据 <表1.2.1 ANUSPLIN插值数据格式示例> 的示例数据,我们可以定义 (a5, 2f8.2, f8.1, 4f8.0),表示1个5字符的站点标签,2个8字符2位小数的变量(经度、纬度),1个8字符1位小数的协变量(高程),4个8字符无小数的数据。)
若有,此处可以为导入导出数据节点文件和坏数据标志文件。若无,则忽略,不需空行。(脚本示例中为 忽略)
04-P-04-splina.res 输出残差文件 不需要可不填,需空行。
04-P-04-splina.opt 光滑参数文件 不需要可不填,需空行。
04-P-04-splina.sur 表面文件 LAPGRD的输入数据
04-P-04-splina.lis 列表文件 观测数据、预测数据、误差数据。不需要可不填,需空行。
04-P-04-splina.cov 拟合表面系数的误差协方差文件 不需要可不填,需空行。
(建议空两行作为结尾)

注意

  输入数据格式应与 SPSS 输出的以 ASCII 码保存的包含站点经纬度和高程信息的站点数据(.dat)中定义的数据的属性一致。

# 2.3 lapgrd 模块脚本参数示例

  生成拟合曲面和贝叶斯标准误差曲面的模块为 lapgrd.exe ,其对应的脚本 lapgrd.cmd (文件名自拟,以下为示例),脚本参数(表 2.2-a)和参数解释(表 2.2-b)供大家参考学习。

表 2.3-a [lapgrd.cmd] 脚本示例

04-P-04-splina.sur
1
1
1
04-P-04-splina.cov
2

1
1
144.5 148.5 0.25
2
-44.0 -40.0 0.25
0
2
tas4.txt
2
-99.0
rain1.grd
(f8.2)
2
-99.0
cov_rain1.grd
(f8.2)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

注意

  每个参数为一行。

表 2.3-b [lapgrd.cmd] 脚本解释

参数(例) 说明 解释
04-P-04-splina.sur 输入表面名
1 表面个数 0-全部输出
1-12([splina.cmd]中的输出表面数)-输出指定个数的表面,与最后输出的*.grd个数一致。
1 表面类型计算 0-只统计摘要信息
1-拟合表面值
1 表面值转换,不一定需要。依[splina.cmd]中的因变量转换确定。没有则忽略,不需空行。 0-不进行转换
1-应用转换
04-P-04-splina.cov 误差协方差文件名,没有则忽略,不需空行。
2 误差协方差类型。没有则忽略,不需空行。 0-只计算平均表面值的标准误差
1-模型标准误差
2-预测标准误差
3-95%模型置信区间
4-95%预测置信区间
最大标准误差,可不填,需空行。
1 栅格位置 0-栅格边角
1-栅格中心
1 第1个变量的索引(经度) 数据中第1数字类型的数据列
144.5 148.5 0.25 边界与分辨率,小于[splina.cmd]中纬度的边界范围,与DEM的范围一致。 [144.5 148.5]-西东边界
0.25-分辨率
2 第2个变量的索引(纬度) 数据中第2数字类型的数据列
-44.0 -40.0 0.25 边界与分辨率。小于[splina.cmd]中纬度的边界范围,与DEM的范围一致。 [-44.0 -40.0]-南北边界
0.25-分辨率
0 掩膜方式 0-无掩膜
1-通用掩膜
2-ARCGIS掩膜
3-Idrisi掩膜
若有掩膜,此处可以为掩膜文件名。若没有,则忽略,不需空行。(脚本示例中为忽略)
2 独立协变量数据格式 0-固定常数
1-通用栅格格式
2-ArcGIS格式
3-Idrisi格式
tas4.txt 独立协变量数据文件名。若为常量,此处为常量值。 此处为ArcGIS导出以ASCII码保存的纯文本dem数据。
2 输出文件格式 0-X,Y,Z网格文件
1-以行的形式保存通用栅格文件
2-ARCGIS栅格文件
3- Idrisi影像文件
-99.0 输出文件无效值定义 设置值与DEM中无效值相同。
rain1.grd 输出文件名 输出文件个数与[表面个数]一致。每个文件名占一行。
(1f8.2) 输出文件数量(1,为1时可忽略)和数据格式(f8.2) 空白表示以二进制形式输出。
*注意:如果输出文件无效值设置过大,建议增加输出文件字符宽度。
2 输出误差表面格式 同[输出文件格式]。
-99.0 输出误差文件无效值定义 同[输出文件无效值定义]。
cov_rain1.grd 输出误差文件名 同[输出文件名]。
(1f8.2) 输出误差文件数量(1,为1时可忽略)和数据格式(f8.2) 同[输出文件数量和数据格式]。
(建议空两行作为结尾)

注意

  请关注 [splina.cmd] 和 [lapgrd.cmd] 参数的联动,例如 [splina.cmd] 定义了数据转换方式,[lapgrd.cmd] 需要应用转换恢复。

# 3 执行插值脚本

# 3.1 分部执行

  1)打开 “运行” ,输入CMD, 运行CMD程序。

  2)利用 cd 命令,将 CMD 的运行文件夹转至数据文件夹。例如:脚本和数据在 C:\ANUSPLIN 文件夹下,输入:

 cd C:\ANUSPLIN 
1

  3)执行 splina<RAINSP.cmd>rainsp.log 命令。

C:\ANUSPLIN>splina<RAINSP.cmd>rainsp.log
1

  4)执行 lapgrd<rainrd.cmd>rainrd.log 命令。

C:\ANUSPLIN>lapgrd<rainrd.cmd>rainrd.log
1

# 3.2 一键全部执行

  在脚本文件夹下创建 run.cmd 文件,并将以下内容复制到 run.cmd 文件中:

splina<RAINSP.cmd>rainsp.log
lapgrd<rainrd.cmd>rainrd.log
1
2

  双击 run.cmd 即可运行。

# 3.3 修改调试

  ANUSPLIN 运行记录保存在 rainsp.log 和 rainrd.log 文件中,运行出错时,可根据 rainsp.log 和 rainrd.log 文件中错误位置和提示修改脚本和数据。