1.在项目的过程中往往由于用户提供(或自己搜集)的原始数据数据量不够,作出的一些曲线效果或者gis效果达不到效果,此时需要使用插值的方式完善数据,提升效果
本文主要讲述web端克里金插值的使用步骤
kriging.js 是一个Javascript库,它通过kriging算法提供空间预测和映射能力。
github地址:https://github.com/oeo4b/kriging.js
1.将坐标和目标变量指定给 3个独立数组
var t = [ /* Target variable */ ];
var x = [ /* X-axis coordinates */ ];
var y = [ /* Y-axis coordinates */ ];
var model = "exponential";
var sigma2 = 0, alpha = 100;
var variogram = kriging.train(t, x, y, model, sigma2, alpha);
注:
t数组为某一平面坐标点的值,如某一点的钻孔深度,或者某一点的温度值,组成的值数组
x为原始数据点的x坐标的值组成的数组
y为原始数据点的y坐标的值组成的数组
如原始数据有ABCD四个点
pointA={
height:aHeight,
x:a_positionx,
y:a_positiony
};
pointB={
height:bHeight,
x:b_positionx,
y:b_positiony
};
pointC={
height:cHeight,
x:c_positionx,
y:c_positiony
};
pointD={
height:dHeight,
x:d_positionx
y:d_positiony
};
则:
t=[aHeight,bHeight,cHeight,dHeight];
x=[a_positionx,b_positionx,c_positionx,d_positionx];
y=[a_positiony,b_positiony,c_positiony,d_positiony];
2.预测新值
a.预测新的坐标点p=(xnew,ynew)的新的值(如高度,温度等)
var xnew, ynew /* Pair of new coordinates to predict */;
var tpredicted = kriging.predict(xnew, ynew, variogram);
b.使用一个边界区域按间距生成grid格网数据数组
var grid=kriging.grid(polygons,variogram,width);
注:polygons为区域的坐标数组,可以为多个polygon,variogram为第一步train产生的结果,width为生成grid格网的间距
var polygons =[
[
[
103.13092800000004,
29.022763000000054
],
[
103.11851800000005,
28.966904000000056
],
[
103.10646800000006,
28.953798000000063
],
[
103.08176800000007,
28.958551000000057
],
[
104.07084300000008,
28.941115000000025
],
[
103.13092800000004,
29.022763000000054
]
]
];
3.拿到拟合后的数据重新生成gis效果或者曲线效果