Quickstart#

Installation#

Install package with conda:

conda install -c conda-forge pyinterpolate

Ordinary Kriging#

The package has multiple spatial interpolation functions. The flow of analysis is usually the same for each method. The interpolation of missing value from points is the basic case. We use for it Ordinary Kriging.

[1.] Read and prepare data.

from pyinterpolate import read_txt


point_data = read_txt('dem.txt')

[2.] Analyze data, calculate the experimental variogram.

from pyinterpolate import build_experimental_variogram


search_radius = 500
max_range = 40000

experimental_semivariogram = build_experimental_variogram(input_array=point_data,
                                                          step_size=search_radius,
                                                          max_range=max_range)

[3.] Data transformation, fit theoretical variogram.

from pyinterpolate import build_theoretical_variogram


semivar = build_theoretical_variogram(experimental_variogram=experimental_semivariogram,
                                      model_type='spherical',
                                      sill=400,
                                      rang=20000,
                                      nugget=0)

[4.] Interpolation.

from pyinterpolate import kriging


unknown_point = (20000, 65000)
prediction = kriging(observations=point_data,
                     theoretical_model=semivar,
                     points=[unknown_point],
                     how='ok',
                     no_neighbors=32)

[5.] Error and uncertainty analysis.

print(prediction)  # [predicted, variance error, lon, lat]
>> [211.23, 0.89, 20000, 60000]

[6.] Full code.

from pyinterpolate import read_txt
from pyinterpolate import build_experimental_variogram
from pyinterpolate import build_theoretical_variogram
from pyinterpolate import kriging


point_data = read_txt('dem.txt')  # x, y, value
search_radius = 500
max_range = 40000

experimental_semivariogram = build_experimental_variogram(input_array=point_data,
                                                          step_size=search_radius,
                                                          max_range=max_range)
semivar = build_theoretical_variogram(experimental_variogram=experimental_semivariogram,
                                      model_type='spherical',
                                      sill=400,
                                      rang=20000,
                                      nugget=0)
unknown_point = (20000, 65000)
prediction = kriging(observations=point_data,
                     theoretical_model=semivar,
                     points=[unknown_point],
                     how='ok',
                     no_neighbors=32)