插值
# 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)供大家参考学习。
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
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
注意
每个参数为一行。
参数(例) | 说明 | 解释 | |
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)供大家参考学习。
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)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
注意
每个参数为一行。
参数(例) | 说明 | 解释 | ||
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
3)执行 splina<RAINSP.cmd>rainsp.log 命令。
C:\ANUSPLIN>splina<RAINSP.cmd>rainsp.log
4)执行 lapgrd<rainrd.cmd>rainrd.log 命令。
C:\ANUSPLIN>lapgrd<rainrd.cmd>rainrd.log
# 3.2 一键全部执行
在脚本文件夹下创建 run.cmd 文件,并将以下内容复制到 run.cmd 文件中:
splina<RAINSP.cmd>rainsp.log
lapgrd<rainrd.cmd>rainrd.log
2
双击 run.cmd 即可运行。
# 3.3 修改调试
ANUSPLIN 运行记录保存在 rainsp.log 和 rainrd.log 文件中,运行出错时,可根据 rainsp.log 和 rainrd.log 文件中错误位置和提示修改脚本和数据。