Using PyKrige for ordinary kriging on an XYZ file

Viewed 37

I've previously used ArcGIS for Ordinary Kriging, but I now need a Python alternative.

I found the PyKrige module which i decided to give a try, but I am bit confused by it.

So far, I have read my XYZ file into a numpy array like so

import matplotlib.pyplot as plt
import numpy as np
import pykrige.kriging_tools as kt
from pykrige.ok import OrdinaryKriging
from numpy import genfromtxt

np.set_printoptions(suppress=True)

my_data = genfromtxt('C:/myfile.xyz')
data = np.array(my_data)

print(data)

which prints my data like so

[[626769.27 233220.76     14.66]
 [626768.91 233221.02     14.65]
 [626768.58 233221.26     14.64]
 ...

However, the next part of the PyKrige example found at https://geostat-framework.readthedocs.io/projects/pykrige/en/stable/examples/00_ordinary.html#sphx-glr-examples-00-ordinary-py uses the following code after reading the data into an array

gridx = np.arange(0.0, 5.5, 0.5)
gridy = np.arange(0.0, 5.5, 0.5)

OK = OrdinaryKriging(
data[:, 0],
data[:, 1],
data[:, 2],
variogram_model="linear",
verbose=False,
enable_plotting=False,
)

z, ss = OK.execute("grid", gridx, gridy)

kt.write_asc_grid(gridx, gridy, z, filename="pykrigoutput.asc")
plt.imshow(z)
plt.show()

This is what's confusing me. I don't know how the gridx and gridy are determined? Similarly, is z, ss the variable name or what is this?

My output will be a GeoTiff (hopefully that's supported) and I hope to set an output cell size of 0.5

But can anyone advise me how to successfully use this module as the documentation gives no explanation of the example.

0 Answers
Related