GeoStatsModule

GeoStats.jl

GeoStats.jl is an extensible framework for geospatial data science and geostatistical modeling fully written in Julia. It is comprised of several modules for advanced geometric processing, state-of-the-art geostatistical algorithms and sophisticated visualization of geospatial data.

All further information is provided in the online documentation.

source
Star us on GitHub!

If you have found this software useful, please consider starring it on GitHub. This gives us an accurate lower bound of the (satisfied) user count.

Organizations using the framework:

Sponsors

Would like to become a sponsor? Press the sponsor button in our GitHub repository.

Overview

In many fields of science, such as mining engineering, hydrogeology, petroleum engineering, and environmental sciences, traditional statistical methods fail to provide unbiased estimates of resources due to the presence of geospatial association. Geostatistics (a.k.a. geospatial statistics) is the branch of statistics developed to overcome this limitation. Particularly, it is the branch that takes geospatial coordinates of data into account. Some major highlights of GeoStats.jl are:

  • It is simple: has a very short learning curve and requires writing minimal code 😌
  • It is general: supports all types of geospatial domains, including unstructured meshes 👍
  • It is native: fully written in Julia for maximum flexibility and performance 🚀
  • Has an extensive library of algorithms from the geostatistics literature 📚

The following table generated on March 11, 2025 provides a general comparison with other software:

Our JuliaCon2021 talk provides an overview of geostatistical learning, which is one of the many geostatistical problems addressed by the framework:

Consider reading the Geospatial Data Science with Julia book before reading this documentation. If you have questions, or would like to brainstorm ideas, don't hesitate to start a topic in our community channel.

Installation

Get the latest stable release with Julia's package manager:

using Pkg
Pkg.add("GeoStats")

Quick example

Below is an example of geostatistical interpolation of point data over a Cartesian grid with a Kriging model:

# load framework
using GeoStats

# load visualization backend
import CairoMakie as Mke

# attribute table
table = (; z=[1.,0.,1.])

# coordinates for each row
coord = [(25.,25.), (50.,75.), (75.,50.)]

# georeference data
geotable = georef(table, coord)

# interpolation domain
grid = CartesianGrid(100, 100)

# choose an interpolation model
model = Kriging(GaussianVariogram(range=35.))

# perform interpolation over grid
interp = geotable |> Interpolate(grid, model=model)

# visualize the solution
viz(interp.geometry, color = interp.z)
Example block output

Project organization

The project is split into various packages:

PackageDescription
GeoStats.jlMain package reexporting full stack of packages for geostatistics.
Meshes.jlComputational geometry and advanced meshing algorithms.
CoordRefSystems.jlUnitful coordinate reference systems.
CoordGridTransforms.jlCoordinate transforms with offset grids.
GeoTables.jlGeospatial tables compatible with the framework.
DataScienceTraits.jlTraits for geospatial data science.
TableTransforms.jlTransforms and pipelines with tabular data.
StatsLearnModels.jlStatistical learning models for geospatial prediction.
GeoStatsBase.jlBase package with core geostatistical definitions.
GeoStatsFunctions.jlGeostatistical functions and related tools.
GeoStatsModels.jlGeostatistical models for geospatial interpolation.
GeoStatsProcesses.jlGeostatistical processes for geospatial simulation.
GeoStatsTransforms.jlGeostatistical transforms for geospatial data.
GeoStatsValidation.jlGeostatistical validation methods.

Other packages can be installed separately for additional functionality:

PackageDescription
GeoIO.jlLoad/save geospatial tables in various formats.
GeoArtifacts.jlArtifacts for geospatial data science.
DrillHoles.jlDesurvey/composite drillhole data.

Citing the software

If you find this software useful in your work, please consider citing it:

JOSS DOI

@ARTICLE{Hoffimann2018,
  title={GeoStats.jl – High-performance geostatistics in Julia},
  author={Hoffimann, Júlio},
  journal={Journal of Open Source Software},
  publisher={The Open Journal},
  volume={3},
  pages={692},
  number={24},
  ISSN={2475-9066},
  DOI={10.21105/joss.00692},
  url={https://dx.doi.org/10.21105/joss.00692},
  year={2018},
  month={Apr}
}

We ❤ to see our list of publications growing.

Contributors

This project would not be possible without the contributions of:

Maarten Pronk
Maarten Pronk

🚇
Martijn Visser
Martijn Visser

💻
Fredrik Ekre
Fredrik Ekre

🚇
Durand D'souza
Durand D'souza

💻
Morten Piibeleht
Morten Piibeleht

📖
Tony Kelman
Tony Kelman

🚇
M. A. Siddique
M. A. Siddique

💬
Anshul Singhvi
Anshul Singhvi

📖
Zlatan Vasović
Zlatan Vasović

📖
Benoit Pasquier
Benoit Pasquier

💻
exepulveda
exepulveda

💻
Renato Aranha
Renato Aranha

⚠️
Patrick Kofod Mogensen
Patrick Kofod Mogensen

💻
Kai Xu
Kai Xu

💻
Paul Matlashewski
Paul Matlashewski

💻
Riyad Muradov
Riyad Muradov

💻
Alex Miltenberger
Alex Miltenberger

💻
Lakshya Khatri
Lakshya Khatri

💻
Milan Bouchet-Valat
Milan Bouchet-Valat

📖
Rafael Caixeta
Rafael Caixeta

💻
Sam
Sam

🚇
Nitish Gadangi
Nitish Gadangi

📖 🚇
Mattriks
Mattriks

💻
cormullion
cormullion

📖
Mauro
Mauro

💻
Gaurav Wasnik
Gaurav Wasnik

💻
Atreya Majumdar
Atreya Majumdar

📖
Hadrien Meyer
Hadrien Meyer

💻
Felix Cremer
Felix Cremer

📖
Jose Storopoli
Jose Storopoli

🚇
Franco Naghetini
Franco Naghetini

💻
Nicholas Shea
Nicholas Shea

💻
Steven G. Johnson
Steven G. Johnson

🚇
José A. S. Silva
José A. S. Silva

💻
Marlon Sproesser Mathias
Marlon Sproesser Mathias

💻
Elias Carvalho
Elias Carvalho

💻
ClaroHenrique
ClaroHenrique

💻
decarvalhojunior-fh
decarvalhojunior-fh

💻
DianaPat
DianaPat

💻
James Cook
James Cook

💻
vickydeka
vickydeka

💻
刘昊
刘昊

💻
stla
stla

💻
Gerhard Dorn
Gerhard Dorn

💻
Jack Beagley
Jack Beagley

💻
cserteGT3
cserteGT3

💻
Kyle Beggs
Kyle Beggs

💻
Dr. Erick A. Chacón Montalván
Dr. Erick A. Chacón Montalván

💻
Manuel Schmid
Manuel Schmid

💻
Andrés Riedemann
Andrés Riedemann

💻
Yuto Horikawa
Yuto Horikawa

💻
Conor Doherty
Conor Doherty

📖
spaette
spaette

📖
Ashwani Rathee
Ashwani Rathee

📖
Miles Cranmer
Miles Cranmer

💻
Daniel VandenHeuvel
Daniel VandenHeuvel

📖
Christopher Burns
Christopher Burns

💻
Essam
Essam

💻 📖
Lucas R. Schiavetti
Lucas R. Schiavetti

🐛
Lee, Dohyeon
Lee, Dohyeon

💻
Jay-sanjay
Jay-sanjay

💻
Steve
Steve

💻
Felipe Silva
Felipe Silva

💻
Adam J
Adam J

💻
Maurizio Tomasi
Maurizio Tomasi

💻
Mark Baum
Mark Baum

💻
RomeoV
RomeoV

💻
BambOoxX
BambOoxX

🚇
Simon Etter
Simon Etter

📖
Rémi Vezy
Rémi Vezy

💻
Alberto Mengali
Alberto Mengali

💻
Joshua Lampert
Joshua Lampert

💻
Salvador Balkus
Salvador Balkus

💻
TimG1964
TimG1964

💻
Rafael Mendoza Ureche
Rafael Mendoza Ureche

💻
Simon Kok Lupemba
Simon Kok Lupemba

💻
Marco
Marco

💻
Davi Sales Barreira
Davi Sales Barreira

💻
Michael Ingold
Michael Ingold

💻
Štěpán Ošlejšek
Štěpán Ošlejšek

💻
Jeffrey Chandler
Jeffrey Chandler

💻
Carl Bittendorf
Carl Bittendorf

💻
cschen
cschen

💻
Thatcher Chamberlin
Thatcher Chamberlin

💻
Omar Elrefaei
Omar Elrefaei

💻
Andrew Brown
Andrew Brown

📖
Allen Hill
Allen Hill

📖
Neven Sajko
Neven Sajko

💻
jamesalster
jamesalster

💻 📖
Paul Shen
Paul Shen

💻