Open source methods for kriging?

Depending on which Kriging type you want to apply, there are different packages to choose from:

Ordinary Kriging

The most common version is implemented for example in:

  • GRASS - v.krige
  • SAGA - Module: Ordinary Kriging
  • HPGL - ordinary-kriging() (PDF page 12)
  • gstat - krige

Simple Kriging

Simple Kriging uses the average of the entire data set while Ordinary Kriging uses a local average. Therefore, Simple Kriging can be less accurate, but it generally produces "smoother" results. It's implemented in:

  • HPGL - simple_kriging() (PDF page 12)
  • gstat krige

Universal Kriging

Universal Kriging allows for consideration of drift in data. Implementations are included in:

  • SAGA - Module: Universal Kriging
  • gstat krige

Other Kriging Types

GRASS v.krige also supports Block Kriging.

HPGL implements a big number of less known Kriging methods (check the manual for more information on those):

  • Indicator Kriging (IK)
  • Local Varying Mean Kriging (LVM Kriging)
  • Simple CoKriging (Markov Models 1 & 2)
  • Sequential Indicator Simulation (SIS)
  • Corellogram Local Varying Mean SIS (CLVM SIS)
  • Local Varying Mean SIS (LVM SIS)
  • Sequential Gaussian Simulation (SGS)
  • Truncated Gaussian Simulation (GTSIM) [in Python scripts collection]

SAGA offers different versions of both Ordinary and Universal Kriging.

Gstat krige additionally supports Block and Point Kriging.


It looks like there are a few options with GRASS GIS. Check out the GRASS Kriging Wiki page: http://grass.osgeo.org/wiki/Kriging

A Google Summer of Code project in 2009 produced V.krige: http://grass.osgeo.org/wiki/V.krige_GSoC_2009

The GPL gstat package should work by itself or interfaced with GRASS GIS. http://www.gstat.org/

Dylan Beaudette has a nice example of doing kriging with GRASS. http://casoilresource.lawr.ucdavis.edu/drupal/node/438 (His blog is full of great and interesting examples of using OpenSource GIS and statistical tools!)


If you are happy to read your raster into a numpy array (gdal can do this), then you could use the High Performance Geostatistics Library implementation from Python or C/C++.

HPGL implements the following algorithms:

  1. Simple Kriging (SK)
  2. Ordinary Kriging (OK)
  3. Indicator Kriging (IK)
  4. Local Varying Mean Kriging (LVM Kriging)
  5. Simple CoKriging (Markov Models 1 & 2)
  6. Sequential Indicator Simulation (SIS)
  7. Corellogram Local Varying Mean SIS (CLVM SIS)
  8. Local Varying Mean SIS (LVM SIS)
  9. Sequential Gaussian Simulation (SGS)
  10. Truncated Gaussian Simulation (GTSIM) [in Python scripts collection]

I haven't used it myself but have heard good things about it, especially with respect to speed.