气象 | 基于ANUSPLIN的气象数据插值过程

   本文共分为3个部分,分别从 模型原理,气象数据处理,插值脚本编写 三个方向进行展开介绍。目标:

   1、降低学习门槛,学会利用SPSS、Excel和ArcGIS工具实现ANUSPLIN插值的全流程。
   2、熟练使用SPSS(25.0)、Excel(2016)、ArcGIS(10.8)及ANUSPLIN(4.3)等软件。
   3、锻炼耐心、阅读力和理解力。本例以文字和表的形式介绍全部流程(重点部分加粗表示),学习时需要认真阅读和思考。

   本例原始气象数据为从 气象数据网(http://data.cma.cn/) 或其他渠道下载的 ∗ * .TXT格式数据。若不需要进行气象数据处理,可直接进行插值脚本编写。

   当然,本文所介绍的气象数据整理方法并非为最简洁的方法,但是确实最为基础的方法。这对那些编程能力较弱(主要为入门程序员)和Excel能力一般的人员而言非常有用。例如:在进行气象站点数据提取时,Excel的VLOOKUP函数其实更加有效和简单,在将气象数据整理为所需样式时,Excel的数据透视表也能实现相应的功能。当然,这两步可能对基础较差的人来说较难理解。而本文所列举的步骤虽然不如上两步迅速快捷,但处理步骤更加连贯,环环相扣,容易理解,更易上手。当然,对于资深程序员来说,这些步骤统统可以用代码直接搞定,例如Python中的pandas库,如果程序写得好,即可在数秒内完成所有数据的清洗和转换;也可以写Python脚本来生成ANUSPLIN脚本;如果你的代码能力和数学能力都很强,也可以将ANUSPLIN算法直接用Python或其他编程语言直接复现,岂不是更易使用。

   本教程写于2018年本人研一期间,当时正处于各种学习积累的开始期,也不如现在一样对软件、编程有一定的了解。因此本教程即是我初学(不管是科研还是软件、编程能力)阶段探索过程的成果积累,也是让我慢慢找到状态,走出迷茫的开始。

   最后,希望所有读者有所收获,也希望能与各位同僚大神交流经验,共同学习,共同进步。

点击获取《基于ANUSPIN的气象数据插值过程》PDF文档和ANUSPLIN软件

目录

  • 0 ANUSPLIN 模型的使用
    • 0.1 模型算法
    • 0.2 ANUSPLIN 模块描述
    • 0.3 ANUSPLIN 光滑样条函数模型选择
    • 0.4 ANUSPLIN 插值模型选择
  • 1 数据整理
    • 1.1 提取所需站点信息
    • 1.2 原始气象数据整理
      • 1.2.1 气象数据整理格式
      • 1.2.2 原始数据合并
      • 1.2.3 数据重构
      • 1.2.4 站点筛选
      • 1.2.5 缺失值插补
      • 1.2.6 更换单位并改变小数位数
      • 1.2.7 重新添加站点经纬度和高程信息
      • 1.2.8 导出气象数据文件
    • *1.3 站点坐标转换
      • *1.3.1 定义 Albers 投影信息
      • *1.3.2 坐标转换
    • 1.4 DEM 数据处理
      • 1.4.1 DEM 数据重采样
      • *1.4.2 重投影
      • 1.4.3 导出 DEM 数据
  • 2 ANUSPLIN 使用方法
    • 2.1 文件准备
    • 2.2 ANUSPLIN 命令行编写
      • 2.2.1 新建 *.cmd 批处理文件
      • 2.2.2 利用 splina.exe 模块的批处理文件 [splina.cmd] (文件名自拟)编写说明
      • 2.2.3 利用 lapgrd.exe 模块的批处理文件 [lapgrd.cmd] (文件名自拟)编写说明
    • 2.3 执行批处理命令
      • 2.3.1 利用 CMD 程序执行插值批处理文件
      • 2.3.2 利用 *.cmd 执行插值批处理文件
      • 2.3.3 批处理命令修改调试

0 ANUSPLIN 模型的使用

0.1 模型算法

   ANUSPLIN 采用局部薄盘光滑样条法。其理论统计模型表达方法如下:

  z i = f ( x i ) + b T y i + e i   i = 1 , 2 , … , N \ z_i = f(x_i) + b^{T}y_i + e_i \quad\ i = 1,2, … , N  zi=f(xi)+bTyi+ei i=1,2,,N

     z i \ z_i  zi 是位于空间   i \ i  i 点的因变量;   x i \ x_i  xi   d \ d  d 维样条独立变量,   f \ f  f 是要估算的关于   x i \ x_i  xi 的未知光滑函数;   y i \ y_i  yi   p \ p  p 维独立协变量;   b \ b  b   y i \ y_i  yi   p \ p  p 维系数;   e i \ e_i  ei 为具有期望值为 0 且方差为   w i σ 2 \ w_i σ_2  wiσ2 的自变量随机误差;   w i \ wi  wi 是作为权重的已知局部相对变异系数,   σ 2 \ σ_2  σ2 为误差协方差,在所有数据点上为常数,但通常未知。
  若   p = 0 \ p=0  p=0,则模型简化为简化为薄盘光滑样条原型。函数   f \ f  f 和系数   b \ b  b采用最小二乘法估计来确定:
∑ i = 1 N ( ( z i − f ( x i ) − b T y i ) / w i ) 2 + ρ J m ( f ) \displaystyle\sum_{i=1}^{N}((z_i-f(x_i)-b^Ty_i)/w_i)^2 +ρJ_m(f) i=1N((zif(xi)bTyi)/wi)2+ρJm(f)

     J m ( f ) \ J_m(f)  Jm(f)是函数   f ( x i ) \ f(x_i)  f(xi)的粗糙度测度函数(样条次数),定义为函数   f \ f  f   m \ m  m 阶偏导,   ρ \ ρ  ρ是正的光滑参数,通常由广义交叉验证 GCV 的最小化来确定。
  其他更具体的参数计算参见 ANUSPLIN 说明文件。

0.2 ANUSPLIN 模块描述

表 0.2 ANUSPLIN 模块描述
程序模块 描述
SPLINA 适用于站点数<2000 的任意个独立变量或多个协变量的薄盘样条函数。数据平滑度由 GCV 或 GML 决定。
SPLINB 功能与 SPLINA 类似,站点数>2000 数据利用 SELNOT 进行节点选择,最多 10000 个站点,2000 个节点。
SELNOT 为 SPLINB 添加初始节点
ADDNOT 为 SPLINB 添加数据节点
DELNOT 为 SPLINB 删除数据节点
GCVGML 计算每个表面的 GCV 或 GML,以及平滑参数范围内所有表面的平均GCV 或 GML。可用于样条优化参数。将 GCV 或 GML 值写入文件,以供检查和绘图。
LAPPNT 计算预测值或贝叶斯标准误差估计的点文件
LAPGRD 生成拟合曲面或贝叶斯标准误差曲面

*注:本例对SPLINA、LAPGRD模块的详细参数进行解释。

0.3 ANUSPLIN 光滑样条函数模型选择

表 0.3 18 个薄盘光滑样条函数模型详细列表
模型序号 变量(协变量) 样条次数 模 型 缩写 含义
1 经度,纬度 2 BVTPS2 双变量薄盘光滑样条函数
2 经度,纬度 3 BVTPS3 双变量薄盘光滑样条函数
3 经度,纬度 4 BVTPS4 双变量薄盘光滑样条函数
4 经度,纬度(高程) 2 TVPTPS2 三变量局部薄盘光滑样条函数
5 经度,纬度(高程) 3 TVPTPS3 三变量局部薄盘光滑样条函数
6 经度,纬度(高程) 4 TVPTPS4 三变量局部薄盘光滑样条函数
7 经度,纬度,高程(m) 2 TVTPS2 三变量薄盘光滑样条函数
8 经度,纬度,高程(m) 3 TVTPS3 三变量薄盘光滑样条函数
9 经度,纬度,高程(m) 4 TVTPS4 三变量薄盘光滑样条函数
10 经度,纬度,高程(km) 2 TVTPS2 三变量薄盘光滑样条函数
11 经度,纬度,高程(km) 3 TVTPS3 三变量薄盘光滑样条函数
12 经度,纬度,高程(km) 4 TVTPS4 三变量薄盘光滑样条函数
13 经度,纬度,高程(dm) 2 TVTPS2 三变量薄盘光滑样条函数

0.4 ANUSPLIN 插值模型选择

表 0.4 不同气象要素空间插值的最佳模型参考
气象要素 模型 独立变量 独立协变量 数据转换方式 样条次数
月平均最高气温 TVPTPS 经度,纬度 高程 2,3
月平均最低气温 TVPTPS 经度,纬度 高程 2,3
月平均风速 TVPTPS 经度,纬度 高程 2
月降雨量 BVTPS 经度,纬度 - 平方根转换 2
水汽压 TVPTPS 经度,纬度 高程 2
月日照时数 TVPTPS 经度,纬度 月温度范围 2,3
净辐射 SRAD+TVPTS 经度,纬度 年辐射,地表覆盖,地形等 2,3
蒸发皿蒸发 QVPTPS 经度,纬度 净辐射,水气压差,风速 2,3,4

*注:对于日、年等数据,也可尝试选择以上模型。

1 数据整理

1.1 提取所需站点信息

  首先需要获取所拥有的气象数据中的气象站点信息以及研究区域的*.shp 文件,参考坐标系尽量相同。利用 ARCGIS(版本为 10.5)或其他方法进行站点筛选,筛选原则为研究区内所有站点和研究区域边界外垂直于边界方向 1-2 个站点的站点数的总和。参考方法如下:
   1)导入数据。在 ARCGIS 中,点击<添加数据>,导入包含站点经纬度数据的 ∗ * .xls 文件和对应的sheet。

*注:ARCGIS不能很好地打开 ∗ * .xlsx 文件,建议将包含站点经纬度数据的 ∗ * .xlsx 文件另存为 ∗ * .xls 文件。

   2)显示数据。右键点击 <图层> 下导入的文件数据,选择 <显示 XY 数据> 选择经度列, 选择纬度列, 可不进行设置,<输入坐标的坐标系> 选择 WGS 1984 。
   3)将数据文件导出为 ∗ * .shp 矢量图层文件。方法:[右键数据-数据-导出数据]
   4) 导入研究区域的 ∗ * .shp 矢量图层文件,并对其进行编辑。利用 <编辑器> 工具,按照筛选原则,制作一个包含所有所需站点的 ∗ * .shp 矢量图层文件。
   5)裁剪所需要的点数据。以制作的包含所有所需站点的 ∗ * .shp 矢量图层文件为掩膜, 裁剪导出的气象站点 ∗ * .shp 文件,得到所需的气象站点。方法为:[地图处理-裁剪],输入要素为站点导出的 ∗ * .shp 矢量图层文件,裁剪要素为制作的包含所有所需站点的 ∗ * .shp 矢量图层文件。
   6)导出数据。打开 [地图处理-ArcToolBox-转换工具-表转 Excel] ,将裁剪后得到的气象站点数据文件导出为 Excel 文件,并删除或替换其中的冗余数据。

1.2 原始气象数据整理

1.2.1 气象数据整理格式

表 1.2.1a ANUSPLIN 插值数据格式示例
区站号 经度 纬度 高程 2018.1.1 2018.1.2 2018.1.3 2018.1.4
50136 122.52 52.97 438.5 2 5 3 5
50246 124.72 52.35 361.9 1 4 7 6
50349 124.4 51.67 501.5 0 4 6 6
50353 126.63 51.73 173.9 0 6 6 7
50425 120.18 50.25 581.4 5 3 6 6
50434 121.68 50.48 732.6 5 3 7 7

*注:此处经纬度坐标系为 WGS-1984 地理坐标系,单位为度(°),也可为 albers 投影坐标系,单位为米 (m),或其他坐标系。经纬度高程为变量信息,可进行取舍,如果还有其他变量或协变量,可在经纬度高程后依次添加相应变量数据。

表 1.2.1b 原始气象数据格式示例
区站号 纬度 经度 高程 平均气温 最高气温 最低气温 平均气温质量控制码 日最高气温质量控制码 日最低气温质量控制码
50136 5258 12231 4330 1999 12 1 -205 -165 -242 0 0 0
50136 5258 12231 4330 1999 12 2 -293 -175 -361 0 0 0
50136 5258 12231 4330 1999 12 3 -270 -173 -324 0 0 0
50136 5258 12231 4330 1999 12 4 -248 -136 -314 0 0 0
50136 5258 12231 4330 1999 12 5 -230 -117 -296 0 0 0
50136 5258 12231 4330 1999 12 6 -230 -115 -306 0 0 0

1.2.2 原始数据合并

   原始气象站点数据为*.TXT 格式文本,若文本较多,需要将其合并从而简化步骤。以国家气象数据共享网的气象站点数据为例,通过《数据集内容和文件组织方式》文件信息,找出所需要的气象数据对应的 ∗ * .txt 文件。例如日照时数数据,以的方式命名。
   合并步骤如下:
   1)将所需气象数据拷贝至空文件夹,在此文件夹下新建一个 ∗ * .txt 文件。
   2)打开新建的 ∗ * .txt 文件,编辑以下内容:

 type *.txt > <文件名>.txt

   其中<文件名>为合并后文件的文件名。
   3)保存文件,将文件扩展名 txt 改为 bat,双击运行。文件夹下所有 ∗ * .txt 文件会合并到<文件名>.txt 文件。

*注:原始 ∗ * .txt 文件末尾必须有空行,否则会出现合并乱行。

表 1.2.2 “日照时数”数据组织方式示例
序号 中文名 数据类型 单位
1 区站号 Number(5)
2 纬度 Number(5) (度、分)
3 经度 Number(6) (度、分)
4 观测场海拔高度 Number(7) 0.1米
5 Number(5)
6 Number(3)
7 Number(3)
8 日照时数 Number(7) 0.1小时
9 日照时数质量控制码 Number(2)

*数据解析方式为:每行的字符串长度为(5+5+6+7+5+3+3+7+2),与数据类型列()内标记的数据长度对应且相等。其中1-5位为区站号,6-10位为纬度……依此类推。

1.2.3 数据重构

   数据重构利用 SPSS 软件(版本为 25.0)。步骤如下:
   1)打开 SPSS,利用 [文件-导入数据-文本数据] 导入合并的气象数据文件。

*注:若气象数据含有特定特征值 32766 或其他特殊值而导致相邻数据之间无空格符区分,则可能导致 SPSS 无法正常读取这些数据。这里,可以利用 Excel 来解决这些问题,以日照时数数据为例:
   1. 依据《数据集内容和文件组织方式》文件,获取对应的序号、中文名、数据类型、单位等信息, 提取数据类型 Number 后的数据宽度值信息。
   2. 打开 Excel,导入合并后的气象数据文件,导入数据选项中选择固定宽度,依据 Number 后的数据宽度值划分数据,完成后另存数据,利用 SPSS 导入另存后数据,也可在此处直接进行< 2)>的步骤后再进行 SPSS 导入数据。

   2)检查数据信息,删除无效数据。此处可保留经纬度高程数据,若经纬度高程数据相同站点出现不同值,建议剔除经纬度高程,保留日期和所需的气象数据即可。

*建议去除经纬度高程信息,利于<1.2.4 站点筛选>步骤。

   3)数据重构。方法为:[数据-重构] (可不进行保存) 。在重构数据向导设置中,第一步选择将选定个案重构为变量,第二步以区站号为标识变量,以年月日三个变量为索引变量, 之后按默认选项完成设置。

*若提示变量不唯一而无法完成重构,可利用 Excel 中<数据-删除重复项>功能删除原始数据中的重复项后进行重试。

   4) 将重构后的数据保存为 Excel 文件(也可为其他文件) 。

1.2.4 站点筛选

   若重构后的数据完全为所研究的数据,则忽略此步骤。若只利用其中部分站点的数据,则利用 SPSS 进行以下步骤:
   1)获得所需的站点数据,包括经纬度高程信息。
   2)导入重构后的气象数据和站点数据文件。
   3)文件合并。将气象数据合并到气象站点数据,步骤为 [数据-合并文件-添加变量] , 打开气象数据的数据集,选择基于键值的一对一合并,键值选择区站号,点击确定。将合并后的文件另存为 Excel 文件。
   4)删除多余站点数据。打开导出的 Excel 文件,筛选出没有经纬度高程信息的站点, 删除站点及气象数据,并保存。

1.2.5 缺失值插补

   在 SPSS 中进行缺失值插补。利用同一站点不同日期数据,对缺失数据通过线性内插的方法进行数据补全。方法如下:
   1)利用 SPSS 或 Excel 对筛选过的站点数据进行转置。保证每一列为同一站点不同日期的数据。
   2)将特定特征值 32766 或其他特殊值替换为空值,并删除经纬度高程信息。
   3)打开 [转换-替换缺失值] 工具,导入第一组要插值的数据,方法选择 <线性内插> , 之后点击 <变化量>,最后,选择其余所有需要缺失值插补的数据组导入,点击确定后完成差值。
   4)删除插值前的数据,保留插值后的数据,重新转置数据并导出为 Excel 文件。

1.2.6 更换单位并改变小数位数

   依据《数据集内容和文件组织方式》,各个气象数据的单位并不为 1。例如降水的单位为 0.1mm,即,如果降水数据为 135,则真实降水量应为 135 * 0.1 = 13.5mm,另外,缺失值插补后小数位数会增加。若单位和小数位数不影响后续计算和分析,则忽略此步,否则,则可利用进行以下步骤进行单位换算和改变小数位数:
   1)打开缺失值插补后 Excel 文件,新建一个sheet,复制第一行日期和第一列区站号至新sheet 相应位置。
   2)从新sheet 中对应的原sheet 第一个数据的位置开始,输入以下公式:

=ROUND(Sheet1!B2*0.1,1)

   其中 Sheet1!B2 为原 sheet 第一个数据的位置,0.1 为数据单位,1 为需要保留的小数位数。

*注意:在 Excel 中单元格设置中设置小数位数,只能改变显示的小数位数,源数据小数位数并未改变。

   3)将公式填充到新 sheet 中所有对应数据的位置,完成单位换算和小数位数的设置。建议将新sheet 中的数据,以文本的格式复制到另一个无数据的sheet 或新 Excel 文件中,便于下一步使用。

1.2.7 重新添加站点经纬度和高程信息

   如果需要转换坐标系,可以利用<*1.3 站点坐标转换>的方法进行经纬度坐标转换。
   由于前步骤去除了站点经纬度高程信息,需要在数据整理最后步骤中重新进行添加。
   添加过程如<1.2.4 站点筛选>过程中的文件合并,基本思路为,将处理完成的气象数据合并到所需站点数据之后,由于站点相同,所以合并完成的文件便为包含站点经纬度高程信息和气象数据的文件。也可将经纬度高程信息直接粘贴到数据文件的相应位置,同样可以得到<表 1.2>所示例的 Anusplin 插值数据格式。最后导出数据文件,建议为 Excel 文件。

1.2.8 导出气象数据文件

   ANUSPLIN 要求输入数据文件为以 ASCII 码保存的包含站点经纬度和高程信息的站点数据( ∗ * .dat),可以使用 SPSS 进行数据文件导出。
   1)SPSS 导入包含完整数据的 Excel 文件。将数据第一行读取为变量名称。

*注:导出的 ∗ * .dat 不含变量名称。

   2)变量属性定义。在变量视图窗口,将区站号 <类型> 定义为字符串,其余变量组的< 类型>均为数字,宽度和小数位数自拟。除经度、纬度、高程等变量或协变量外,建议数 据组变量的格式设置相同,即相同的类型、宽度和小数位数。设置宽度时建议宽度值大于变量组中变量的最大值的所占的数据宽度(例如 15.32,数据所需宽度为 5,建议设置该组数据宽度值大于 5)。
   如果数据过多,可进行批量定义属性,方法如下:
   打开 [数据-定义变量属性] 工具,选择需要定义的变量(建议取消勾选 <将显示的值数目限制为> ),点击继续,在 <定义变量属性> 对话框设置一组数据的类型、宽度和小数位数,之后点击 <复制属性> 中的 <到其他变量> ,选择其余所有需要定义相同属性的变量, 点击复制,然后点击确定完成变量属性批量定义。
   3)导出数据。点击 [文件-另存为] ,保存类型选择 <固定 ASCII( ∗ * .dat)> ,编码(若可选)建议选择 <本地编码>,导出文件名自拟。

*注:以上过程完整的输出了每一步处理所得的文件。如果不需要,处理过程的中间文件可以忽略, 直接尝试执行所有步骤一次性导出以 ASCII 码保存的包含站点经纬度和高程信息的站点数据( ∗ * .dat)。

*1.3 站点坐标转换

  ANUSPLIN 通常使用投影坐标系。
  如果需要进行站点坐标转换,可利用 ARCGIS 进行坐标转换并替换原始站点坐标信息,本章以 WGS 1984 转 Albers 投影坐标系为例。

*1.3.1 定义 Albers 投影信息

  1)打开 [地图处理-ArcToolBox-数据管理工具-投影和变换-创建空间参考] 工具,利用
<空间参考> 属性(或其他方法打开 <空间参考> 属性),新建一个投影坐标系。
  2)投影坐标系参数设置。<名称> 项为新建坐标文件的名称,这里命名为
<投影名称> 选择 Albers 设置为 105.0 设置为 25.0 设置为 47.0,线性单位 < 名称> 选择 Meter<每单位米数> 设置 1<地理坐标系> 选择 WGS 1984,其余参数为默认。

*Asia_North_Albers_WGS84_LCR:Albers 投影平面为以东经 105°为中央经线,过北纬 25°和 47°的平面。

*1.3.2 坐标转换

  1)导入和显示数据。如<1.1 提取所需站点信息>中的方法。
  2)要素转点。打开 [地图处理-ArcToolBox-数据管理工具-要素-要素转点] 工具,选择 输入数据和输出文件进行转换。
  3)投影。打开 [地图处理-ArcToolBox-数据管理工具-投影和变换-投影] 工具,将 3)中输出文件进行投影变换,输出坐标系选择自定义的
  4)添加 XY 坐标。打开 [地图处理-ArcToolBox-数据管理工具-要素-添加 XY 坐标] 工具,对投影完成后的数据添加坐标。打开数据属性表,可以发现原始站点经纬度数据后增加了定义的 Albers 投影坐标信息。
  5)导出 Excel。打开 [地图处理-ArcToolBox-转换工具-表转 Excel] ,将添加完Albers 投影坐标的数据导出为 Excel 文件,并删除其中的冗余数据,保留所需的 Albers 投影坐标数据。

1.4 DEM 数据处理

1.4.1 DEM 数据重采样

  以一个 0.00027777778° × 0.00027777778° 分辨率的 DEM 为例,将其重采样至0.00886815° × 0.00886815° 的分辨率。打开 [地图处理-ArcToolBox-数据管理工具-栅格-栅格处理-重采样] 工具,设置输入栅格,输出栅格信息,输出像元大小 X、Y 均设置为0.00886815°,重采样方法选择默认的 NEAREST 法。

*1.4.2 重投影

  可以将 1.4.1 输出的栅格数据,直接利用 [地图处理-ArcToolBox-数据管理工具-投影和变换-栅格-投影栅格] 方法投影到坐标系。也可利用输入的 DEM 栅格数据,首先利用上述方法进行投影转换,再利用 [地图处理-ArcToolBox-数据管理工具-栅格-栅格处理-重采样] 工具进行重采样。重采样分辨率中地理坐标系 0.01°大约(大于)为投影坐标系中的 1000m。

1.4.3 导出 DEM 数据

  ANUSPLIN 要求输入的 DEM 数据文件(或其他变量或协变量文件)为以 ASCII 码保存的 DEM 数据。可以用 ARCGIS 进行导出。
  将分辨率符合需求的 DEM 栅格数据导入 ARCGIS,打开工具 [地图处理-ArcToolBox-转换工具-由栅格转出-栅格转 ASCII] ,定义输入栅格和输出 ASCII 文件即可。

2 ANUSPLIN 使用方法

2.1 文件准备

  1)保证已安装 ANUSPLIN 气象数据插值软件。
  2)新建文件夹,复制相关文件至此文件夹下。此文件夹应包含:
    a. 插值模块文件splina.exe 和lapgrd.exe(常用命令)。这两个文件在安装的 ANUSPLIN所在的文件夹下。
    b. 以 ASCII 码保存的DEM 数据( ∗ * .txt)。
    c. 以 ASCII 码保存的包含站点经纬度和高程信息的站点数据(*.dat)。

2.2 ANUSPLIN 命令行编写

2.2.1 新建 *.cmd 批处理文件

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

2.2.2 利用 splina.exe 模块的批处理文件 [splina.cmd] (文件名自拟)编写说明

表 2.2.3a [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


*注:每个参数为一行。

表2.2.2b [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.2.3 利用 lapgrd.exe 模块的批处理文件 [lapgrd.cmd] (文件名自拟)编写说明

表 2.2.3a [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)


*注:每个参数为一行。

表 2.2.3b [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) 同[输出文件数量和数据格式]。
(建议空两行作为结尾)

2.3 执行批处理命令

2.3.1 利用 CMD 程序执行插值批处理文件

  1)打开 “运行” ,输入CMD, 运行CMD程序。
  2)利用 CD 命令,将CMD的运行文件夹转至数据文件夹。例如:脚本和数据在 C:\ANUSPLIN 文件夹下,输入:

 CD C:\ANUSPLIN 

  3)执行 splinarainsp.log 命令。

C:\ANUSPLIN>splina.cmd>rainsp.log

  4)执行 lapgrdrainrd.log 命令。

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

2.3.2 利用 *.cmd 执行插值批处理文件

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

splina.cmd>rainsp.log
lapgrd.cmd>rainrd.log

  双击 run.cmd 即可运行。

2.3.3 批处理命令修改调试

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

你可能感兴趣的:(抽象代数)