首页 > 其他分享 >基于ANUSPLIN的气象数据插值

基于ANUSPLIN的气象数据插值

时间:2022-09-01 18:12:11浏览次数:76  
标签:变量 样条 ANUSPLIN 经度 插值 splina 气象 04

这篇文章是对ANUSPLIN这个插值工具进行简单的介绍,项目demo可以参考:

https://github.com/leeyang1991/ANUSPLIN

这个项目已经把从数据转换到脚本运行等一系列工作都用python实现了。

至于ANUSPLIN中的一些细节和参数说明,参考自:

https://blog.csdn.net/weixin_42155937/article/details/120673718

零、ANUSPLIN 介绍

空间插值:将空间上离散点的测量数据转换为连续的数据曲面的过程

ArcGIS软件中,有趋势面法、自然邻域法、样条函数法、克里金法等插值方法,但不能引入协变量

协变量:温度插值引入高程数据、降水量引入海岸线

ANUSPLIN 基于薄盘样条函数理论 ,引入多个影响因子作为协变量进行气象要素空间插值 ,大大提高插值精度 ,且 能同时进行多个表面的空间插值, 对时间序列的气象要素更加适合。

——《专用气候数据空间插值软件ANUSPLIN 及其应用 》

将 ANUSPLIN 的局部薄盘样条插值结 果分别与反向距离权重法和普通克吕格法的插值结果进行对比 , 显示 ANUSPLIN 软件的插值误差最小 。 结果同样表明 , 适当增加站点数量、 提高DEM精度可进一 步提高 ANUSPLIN软件 的插值精度。

——《基于 ANUSPLIN 软件的逐日气象要素插值方法应用与评估 》

一、ANUSPLIN 模型说明

1.1 模型算法

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

$z_i = f(x_i)+b^T y_i + e_i i = 1 , 2 , … , N $

\(z_i\)是位于空间 \(i\)点的因变量; \(x_i\)为 \(d\) 维样条独立变量,\(f\)是要估算的关于 \(x_i\)的未知光滑函数; \(yi\)为 \(p\)维独立协变量; \(b\)为 \(y_i\) 的\(p\)维系数; $ e_i $为具有期望值为 0 且方差为 $w_i σ_2 $的自变量随机误差; \(w_i\)是作为权重的已知局部相对变异系数, \(σ2\)为误差协方差,在所有数据点上为常数,但通常未知。

若 \(p=0\),则模型简化为简化为薄盘光滑样条原型。函数\(f\)和系数\(b\)采用最小二乘法估计来确定:
$\displaystyle\sum_{i=1}{N}((z_i-f(x_i)-bTy_i)/w_i)^2 +ρJ_m(f) $

$ J_m(f) $是函数 $f(x_i) \(的粗糙度测度函数(样条次数),定义为函数\)f$的m阶偏导, ρ是正的光滑参数,通常由广义交叉验证 GCV 的最小化来确定。

其他更具体的参数计算参见 ANUSPLIN 说明文件。

1.2 模块描述

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

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

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

1.4 ANUSPLIN 插值模型选择

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

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

image

二、ANUSPLIN 使用方法

2.1 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



注:每个参数为一行。

[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变换系数AA=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拟合表面系数的误差协方差文件不需要可不填,需空行。
(建议空两行作为结尾)

2.2 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)



[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 grd转tif文件

import arcpy
from arcpy.sa import *
import sys, string, os

idx = 'Avst'
dir = r'E:\projects\weather\ANUSPLIN\mapdata\\'
path = dir + idx
files = os.listdir(path)
for f in files:
    if os.path.splitext(f)[1] == '.grd':
        Input_raster_file = path + os.sep + f
        Raster_Format = "TIFF"
        Output_Workspace = path
        basename = os.path.splitext(f)[0]
        Output_raster = Output_Workspace + os.sep + basename + '.tif'
        arcpy.RasterToOtherFormat_conversion(Input_raster_file, Output_Workspace, Raster_Format)
        print(Output_raster)
        os.remove(Input_raster_file)

标签:变量,样条,ANUSPLIN,经度,插值,splina,气象,04
From: https://www.cnblogs.com/wkfvawl/p/16647422.html

相关文章

  • 超声波一体气象站测风测雨测温湿气象监测解决方案轻松搞定
    超声波一体气象站测风测雨测温湿气象监测解决方案轻松搞定超声波气象站是我公司结合多年气象产品开发经验,根据现场实际情况开发的一款多功能自动气象站。该产品集温度、湿......
  • 气象相关,转换风力,风向的工具类
    importjava.util.LinkedHashMap;importjava.util.Map;/***气象工具**/publicclassWeatherUtil{//风力privatestaticfinalMap<String,Ran......
  • 三次插值
    优化问题通常涉及以值表形式给出的函数,例如一幅图像。计算这些函数以及他们的导数需要对这些值进行插值。插值表格函数是一个广泛的研究领域,有许多库已经实现了一些插值问......
  • Python 字符串插值 All In One
    Python字符串插值AllInOne#!/usr/bin/envpython3#coding=utf-8__author__='xgqfrms'__editor__='vscode'__version__='1.0.1'__copyright__="""Co......
  • 拉格朗日插值优化DP
    拉格朗日插值优化DP模拟赛出现神秘插值,太难啦!!回忆拉格朗日插值是用来做什么的对于一个多项式\(F(x)\),如果已知它的次数为\(m-1\),且已知\(m\)个点值,那么可以得到\[F(k......