什么是克里金插值算法
IDW(反距离加权法)和样条函数法插值工具被称为确定性插值方法,因为这些方法直接基于周围的测量值或确定生成表面的平滑度的指定数学公式。第二类插值方法由地统计方法(如克里金法)组成,该方法基于包含自相关(即,测量点之间的统计关系)的统计模型。因此,地统计方法不仅具有产生预测表面的功能,而且能够对预测的确定性或准确性提供某种度量。
克里金法假定采样点之间的距离或方向可以反映可用于说明表面变化的空间相关性。克里金法工具可将数学函数与指定数量的点或指定半径内的所有点进行拟合以确定每个位置的输出值。克里金法是一个多步过程;它包括数据的探索性统计分析、变异函数建模和创建表面,还包括研究方差表面。当您了解数据中存在空间相关距离或方向偏差后,便会认为克里金法是最适合的方法。该方法通常用在土壤科学和地质中。
实际应用(JAVA程序中)
相关jar包链接下载地址:jk3d.jar,这里使用jk3d.jar包
public class KeMain {
public static void main(String[] args) {
String path="D:/kriging/jk3d.par";//配置文件储存位置
jk3d j=new jk3d(path);
}
}
jk3d.par配置文件
Parameters for jk3d
*******************
START OF PARAMETERS:
D:/kriging/testdata-iw3d-3D.dat -file with data // 需要插值计算的数据文件
1 2 3 4 0 -columns for X, Y, Z, var, sec var
-1.0e21 1.0e21 -trimming limits
0 -option: 0=grid, 1=cross, 2=jackknife // 表格模式
xvk.dat -file with jackknife data
1 2 0 3 0 -columns for X,Y,Z,vr and sec var
3 -debugging level: 0,1,2,3
testdata-iw3d-3D.dbg -file for debugging output
testdata-iw3d-3D.out -file for kriged output // 插值计算后生成的文件
5 1 2 -nx,xmn,xsiz // 次数,起始值,步长(没有z的变化就配置为如下这个样子)
5 2 0.5 -ny,ymn,ysiz
1 0 0.0 -nz,zmn,zsiz
1 1 1 -x,y and z block discretization
1 16 -min, max data for kriging // 最小、最大值(pm的最大最小值)
0.2 0.2 0.2 -max per octant (0-> not used), blank if more than this many octants are empty
2 0.5 0.5 -maximum search radii // 搜索半径(代表x,y,z单个坐标的搜索半径,例如x为1,半径为2,x为3的这个值就被搜索到了val值会是x是1的val值)
0.0 0.0 0.0 -angles for search ellipsoid
1 -1001 -0=SK,1=OK,2=non-st SK,3=exdrift
0 0 0 0 0 0 0 0 0 -drift: x,y,z,xx,yy,zz,xy,xz,zy
0 -0, variable; 1, estimate trend
extdrift.dat -gridded file with drift/mean
4 -column number in gridded file
1 0.0 -nst, nugget effect
3 0.04 0.0 0.0 0.0 \it,cc,ang1,ang2,ang3
0.994 0.994 0.84 \a_hmax, a_hmin, a_vert
3 0.0336 0.0 0.0 90.0 \it,cc,ang1,ang2,ang3
0.85 0.85 0.0 \a_hmax, a_hmin, a_vert
次数,起始值,步长
:次数代表x或者y的插值次数,开始代表x或者y从这个值开始插值,步长代表插值的间隔,例如(5,1,1)这个就代表从1开始插值五次,一共会生成25条数据,首先是x变化,y不变,例如(1,1),(2,1),(3,1),(4,1),(5,1)然后x变成5走完之后(1,2)…按照这个规律进行变化
搜索半径
:这个的意思是指在该点的搜索半径例如点(1,1)的val值为1,假设搜索半径为都为0.5,x的步长或者y的步长为0.5,在插值在(1,1.5)或者是(1.5,1)的时候他的val值就为1 ,注意这个搜索半径是对应给出的点为圆心进行半径搜索
1.1.1.1 testdata-iw3d-3D.dat数据文件(没有z也得写上z,写为0就好)
primary data
4
X
Y
Z
VAL
1 1.0 0.0 1 // x y z坐标值和val值
1 2.0 0.0 1
1 3.0 0.0 1
1 4.0 0.0 2