python 普通克里金(Kriging)法的实现


Posted in Python onDecember 19, 2019

克里金法时一种用于空间插值的地学统计方法。

克里金法用半变异测定空间要素,要素即自相关要素。

半变异公式为:

python 普通克里金(Kriging)法的实现

其中γ(h) 是已知点 xixj 的半变异,***h***表示这两个点之间的距离,z是属性值。

假设不存在漂移,普通克里金法重点考虑空间相关因素,并用拟合的半变异直接进行插值。

估算某测量点z值的通用方程为:

python 普通克里金(Kriging)法的实现

式中,z0是待估计值,zx是已知点x的值,Wx是每个已知点关联的权重,s是用于估计的已知点数目。
权重可以由一组矩阵方程得到。

python 普通克里金(Kriging)法的实现

python 普通克里金(Kriging)法的实现

此程序对半变异进行拟合时采用的时最简单的正比例函数拟合

数据为csv格式

保存格式如下:

第一行为第一个点以此类推

最后一行是待求点坐标,其中z为未知值,暂且假设为0

python 普通克里金(Kriging)法的实现

代码如下:

import numpy as np
from math import*
from numpy.linalg import *
h_data=np.loadtxt(open('高程点数据.csv'),delimiter=",",skiprows=0)
print('原始数据如下(x,y,z):\n未知点高程初值设为0\n',h_data)
def dis(p1,p2):
 a=pow((pow((p1[0]-p2[0]),2)+pow((p1[1]-p2[1]),2)),0.5)
 return a
def rh(z1,z2):
 r=1/2*pow((z1[2]-z2[2]),2)
 return r
def proportional(x,y):
 xx,xy=0,0
 for i in range(len(x)):
  xx+=pow(x[i],2)
  xy+=x[i]*y[i]
 k=xy/xx
 return k
r=[];pp=[];p=[];
for i in range(len(h_data)):
 pp.append(h_data[i])
for i in range(len(pp)):
 for j in range(len(pp)):
  p.append(dis(pp[i],pp[j]))
  r.append(rh(pp[i],pp[j]))
r=np.array(r).reshape(len(h_data),len(h_data))
r=np.delete(r,len(h_data)-1,axis =0)
r=np.delete(r,len(h_data)-1,axis =1)

h=np.array(p).reshape(len(h_data),len(h_data))
h=np.delete(h,len(h_data)-1,axis =0)
oh=h[:,len(h_data)-1]
h=np.delete(h,len(h_data)-1,axis =1)

hh=np.triu(h,0)
rr=np.triu(r,0)
r0=[];h0=[];
for i in range(len(h_data)-1):
 for j in range(len(h_data)-1):
  if hh[i][j] !=0:
   a=h[i][j]
   h0.append(a)
  if rr[i][j] !=0:
   a=rr[i][j]
   r0.append(a)
k=proportional(h0,r0)
hnew=h*k
a2=np.ones((1,len(h_data)-1))
a1=np.ones((len(h_data)-1,1))
a1=np.r_[a1,[[0]]]
hnew=np.r_[hnew,a2]
hnew=np.c_[hnew,a1]
print('半方差联立矩阵:\n',hnew)
oh=np.array(k*oh)
oh=np.r_[oh,[1]]
w=np.dot(inv(hnew),oh)
print('权阵运算结果:\n',w)
z0,s2=0,0
for i in range(len(h_data)-1):
 z0=w[i]*h_data[i][2]+z0
 s2=w[i]*oh[i]+s2
s2=s2+w[len(h_data)-1]
print('未知点高程值为:\n',z0)
print('半变异值为:\n',pow(s2,0.5))
input()

运算结果

python 普通克里金(Kriging)法的实现

python初学,为了完成作业写了个小程序来帮助计算,因为初学知识有限,有很多地方写的很复杂,可以优化的地方很多。 还望读者谅解,欢迎斧正谢谢!

参考文献:
【1】(美)张康聪 著;陈健飞等译. 地理信息系统导论(第三版). 北京:清华大学出版社, 2009.04.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中实现两个字典(dict)合并的方法
Sep 23 Python
Python中使用select模块实现非阻塞的IO
Feb 03 Python
Python中List.count()方法的使用教程
May 20 Python
python 3.7.0 安装配置方法图文教程
Aug 27 Python
python实现多层感知器MLP(基于双月数据集)
Jan 18 Python
python中正则表达式与模式匹配
May 07 Python
对django views中 request, response的常用操作详解
Jul 17 Python
django 取消csrf限制的实例
Mar 13 Python
Python 统计位数为偶数的数字代码详解
Mar 15 Python
Pytorch转tflite方式
May 25 Python
Python扫描端口的实现
Jan 25 Python
Python一行代码实现自动发邮件功能
May 30 Python
Python函数参数类型及排序原理总结
Dec 19 #Python
python中with语句结合上下文管理器操作详解
Dec 19 #Python
Django中密码的加密、验密、解密操作
Dec 19 #Python
利用OpenCV和Python实现查找图片差异
Dec 19 #Python
Python文本处理简单易懂方法解析
Dec 19 #Python
python类中super() 的使用解析
Dec 19 #Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 #Python
You might like
php4的session功能评述(二)
2006/10/09 PHP
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
JavaScipt基本教程之前言
2008/01/16 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
js断点调试经验分享
2017/12/08 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
2018/03/03 Javascript
vue实现微信二次分享以及自定义分享的示例
2019/03/20 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
2020/04/16 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
[02:35]DOTA2英雄基础教程 末日使者
2013/12/04 DOTA
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
分享给Python新手们的几道简单练习题
2017/09/21 Python
python去除扩展名的实例讲解
2018/04/23 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
python开头的coding设置方法
2019/08/08 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
python实现按日期归档文件
2021/01/30 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
双十佳事迹材料
2014/01/29 职场文书
学习保证书范文
2014/04/30 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
机票销售员态度不好检讨书
2014/09/27 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书
怎样写家长意见
2015/06/04 职场文书
详解Vue的options
2021/05/15 Vue.js
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
“鬼灭之刃”热度不减,其成功背后的原因是什么?
2022/03/22 日漫