python 克里金插值_Kriging开源库推荐(基于Python)

前言

68e40e70252eec528e0e5073595cbedd.png

最近在做煤质数据的空间插值,试用了很多种方法,如距离幂次反比、多项式函数、拟合1/2/3次函数的最小二乘、加权最小二乘以及移动曲面拟合,插值出来的效果呀,千奇百怪的,除了距离幂次反比像一点点那么回事儿,其他的........啧啧啧...........。无奈之下重新找克里金开源程序,尝试能获得个好点的效果。今天看了看PyKrige的Demo感觉还不多,于是打算睡前写一小段,分享和记录下,并且准备开个系列,以后研究研究这个库.......

8641e28976c29f38e7ee71a231006ec2.png

PyKrige

python 克里金插值_Kriging开源库推荐(基于Python)_第1张图片

a3ed7d2ac4d212eab8e98c8db9a6d4b9.png

Purpose

代码支持2D和3D普通和通用克里格。内置标准变异函数模型(线性、幂次、球面、高斯、指数),但也可以使用自定义变异函数模型。2D通用克立格码目前支持区域线性、点对数和外部漂移项,而3D通用克立格码支持所有三维空间的区域线性漂移项。通用版立格类也支持泛型“指定”和“功能”漂移能力。使用“指定”漂移功能,用户可以手动指定每个数据点和所有网格点上的漂移值。有了“功能”漂移能力,用户可以提供定义漂移的空间坐标的可调用函数。这个包包含一个模块,其中包含处理ASCII网格文件(*.asc)时非常有用的函数。

Installation

安装可以直接通过pip进行安装,要求Python版本3.5+

pip install pykrige

地址

github源码地址:

https://github.com/GeoStat-Framework/PyKrige

官网地址:

https://geostat-framework.readthedocs.io/projects/pykrige/en/stable/examples/index.html

Github上小例子

"""Ordinary Kriging Example========================First we will create a 2D dataset together with the associated x, y grids."""import numpy as npimport pykrige.kriging_tools as ktfrom pykrige.ok import OrdinaryKrigingimport matplotlib.pyplot as pltdata = np.array(    [        [0.3, 1.2, 0.47],        [1.9, 0.6, 0.56],        [1.1, 3.2, 0.74],        [3.3, 4.4, 1.47],        [4.7, 3.8, 1.74],    ])gridx = np.arange(0.0, 5.5, 0.5)gridy = np.arange(0.0, 5.5, 0.5)################################################################################ Create the ordinary kriging object. Required inputs are the X-coordinates of# the data points, the Y-coordinates of the data points, and the Z-values of the# data points. If no variogram model is specified, defaults to a linear variogram# model. If no variogram model parameters are specified, then the code automatically# calculates the parameters by fitting the variogram model to the binned# experimental semivariogram. The verbose kwarg controls code talk-back, and# the enable_plotting kwarg controls the display of the semivariogram.OK = OrdinaryKriging(    data[:, 0],    data[:, 1],    data[:, 2],    variogram_model="linear",    verbose=False,    enable_plotting=False,)################################################################################ Creates the kriged grid and the variance grid. Allows for kriging on a rectangular# grid of points, on a masked rectangular grid of points, or with arbitrary points.# (See OrdinaryKriging.__doc__ for more information.)z, ss = OK.execute("grid", gridx, gridy)################################################################################ Writes the kriged grid to an ASCII grid file and plot it.kt.write_asc_grid(gridx, gridy, z, filename="output.asc")plt.imshow(z)plt.show()

2D格网插值效果

普通克里金2D插值效果演示:

格网估计值如下:

python 克里金插值_Kriging开源库推荐(基于Python)_第2张图片

你可能感兴趣的:(python,克里金插值)