01-02怎么用python实现克里金插值

Python011

01-02怎么用python实现克里金插值,第1张

只为了输出的话倒是还好

1

print '['+', '.join(map(lambda x: '0'+str(x) if len(str(x))==1 else str(x),range(20)))+']'

克里金(Kriging)插值法又称空间自协方差最佳插值法,它是以南非矿业工程师D.G.Krige的名字命名的一种最优内插法。克里金法广泛地应用于地下水模拟、土壤制图等领域,是一种很有用的地质统计格网化方法。它首先考虑的是空间属性在空间位置上的变异分布.确定对一个待插点值有影响的距离范围,然后用此范围内的采样点来估计待插点的属性值。该方法在数学上可对所研究的对象提供一种最佳线性无偏估计(某点处的确定值)的方法。它是考虑了信息样品的形状、大小及与待估计块段相互间的空间位置等几何特征以及品位的空间结构之后,为达到线性、无偏和最小估计方差的估计,而对每一个样品赋予一定的系数,最后 进行加权平均来估计块段品位的方法。但它仍是一种光滑的内插方法 在数据点多时,其内插的结果可信度较高 。

根据项目对数据处理的要求,采用了优化的克里金插值算法,将等值线地化数据插值转换为格网数据,以便实现地化数据的三维显示(王家华等,1999)。其主要实现过程如下:

第一步,计算半变异图,用非线性最小二乘拟合半变异函数系数;

第二步,数据点进行四叉树存储;

第三步,对每一格网点搜索邻近数据点;

第四步,由待预测网格点和邻近数据点计算克里金算法中系数矩阵,及右端常数向量;

第五步,对矩阵进行LU分解,回代求解待预测点的预测值。

克里金插值算法主要包括半变异函数和邻近点搜索的计算,实现方法如下。

(1)半变异函数计算

半变异函数是地质统计学中区域化变量理论的基础。地质统计学主要完成2方面的任务:利用半变异函数生成半变异图来量化研究对象的空间结构;通过插值方法利用半变异图中拟合模型和研究对象周围的实测值来对未知值进行预测。

半变异函数是用来描述区域化变量结构性和随机性并存这一空间特征而提出的。在满足假设的条件下,随机函数z(x)和z(x+h)为某一物理参数测定值的一一对应的2组函数,h为每对数之间的距离。半变异函数γ(h)可用下式来计算:

γ(h)= 1/2E{[z(x)-z(x +h)]2}

4种基本的半变异函数模式(除了这4种基本模式以外,还有很多模式),包括:

1)线形模式(Linear Model)

浙江省农业地质环境GIS设计与实现

2)球面模式(Spherical Model)

浙江省农业地质环境GIS设计与实现

3)指数模式(Exponential Model)

浙江省农业地质环境GIS设计与实现

4)高斯模式(Gaussian Model)

浙江省农业地质环境GIS设计与实现

半变异函数γ(h)会随距离h增大而增大,并逐渐逼近一定值(C0 +C),称为基台值(Sill);而逼近基台值所对应的距离,称为影响范围(Range),表示空间中两位置间的距离小于影响范围时,是空间相关性的。在线性和球面模式中,影响范围等于a;在指数和高斯模式中,影响范围则分别等于3a和 。而模式于半变异函数轴的截距(C0)成为块金系数(Nugget Effect),产生的原因主要是样本测定的误差和最小采样间距内的变异。在应用上,为探讨说明空间变异在不同方向上的差距,也可利用非等向性的变异函数模式。半变异图拟合半变异函数模式的拟合方法可采用非线性最小二乘法拟合。

(2)邻近点搜索算法

由于矩阵LU分解求解方程的算法会随着矩阵维数的增加计算量增大,所以针对大量采样数据点时不能采用全部数据进行估计,必须采用插值点的临近点数据进行计算,即采用局部数据进行克里金算法进行计算。搜索邻近点可采用四叉树结构存储总数据,以提高搜索邻近点的速度。

对于选取邻近点的数目要有所限制,因该值的大小选择会影响插值的计算结果。若太大,则内插结果过于平滑;太小,则无法反映地表的变化;距离预测点较远的实测点可能与待估样点已经不存在自相关关系,也不能参与插值计算。采取以插值点为圆心,以R为半径的圆来确定取样的范围和参加计算的实测样点数目(如果存在各向异性,则可考虑划定一椭圆作为研究区域)。为了避免方向上的偏差,将圆平均地分为4个扇区,每个扇区内实测点数目在2~5之间,这样总共参与每个待估点预测的实测点数目平均达到8个。

区域内临近点的选择,存在着两种策略。

1)以邻近点的个数为基准。通常情况下,邻近点的个数以8~12个为宜,并且个数不能少于2个。此时计算出来的图像较为光滑。

2)以邻近点的半径尺度为基准。通常情况下,选择5~10 倍栅格间距的距离为宜。此时必须定义选择邻近点的最小和最大个数,当在一定半径内查找的邻近点个数小于最小个数时,应扩大搜索半径,使之达到最小查找个数;反之在一定半径内查找的邻近点个数大于最大个数时,应缩小搜索半径,使之小于最大查找个数。通常情况下最大最小个数分别可以定为20和4。

克里金算法的优点在于它基于一些可被验证的统计假设。根据这些假设,克里金算法产生的栅格节点估计量是最佳的,所有的估计量都依赖于可获得的观测值,并且平均误差最小。克里金算法提供了方差误差分析的表达式,可以表明每一个栅格节点的估计精度。