GeoStats.jl
An extensible framework for high-performance geostatistics in Julia.
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 correlation. 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.
GeoStats.jl is an attempt to bring together bleeding-edge research in the geostatistics community into a comprehensive framework for geospatial modeling, as well as to empower researchers and practioners with a toolkit for fast assessment of different modeling approaches.
The design of this project is the result of many years developing geostatistical software. I hope that it can serve to promote more collaboration between geostatisticians around the globe and to standardize this incredible field of research. If you would like to help support the project, please star the repository and share it with your colleagues. If you would like to extend the framework with new geostatistical solvers, please check the Developer guide.
Citing
If you find this project useful in your work, please consider citing it:
@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.
Installation
Get the latest stable release with Julia's package manager:
] add GeoStats
Tutorials
A set of Pluto notebooks demonstrating the current functionality of the project is available in GeoStatsTutorials with an accompanying series of videos:
Quick example
Below is a quick preview of the high-level API:
using GeoStats
using Plots, GeoStatsPlots
# attribute table
table = (Z=[1.,0.,1.],)
# coordinates for each row
coord = [(25.,25.), (50.,75.), (75.,50.)]
# georeference data
𝒟 = georef(table, coord)
# estimation domain
𝒢 = CartesianGrid(100, 100)
# estimation problem
problem = EstimationProblem(𝒟, 𝒢, :Z)
# choose a solver from the list of solvers
solver = Kriging(
:Z => (variogram=GaussianVariogram(range=35.),)
)
# solve the problem
solution = solve(problem, solver)
# plot the solution
contourf(solution, clabels=true)
For a more detailed example, please consult the Quickstart.
Project organization
The project is split into various packages:
Package | Description |
---|---|
GeoStats.jl | Main package reexporting full stack of packages for geostatistics. |
Meshes.jl | Computational geometry and advanced meshing algorithms. |
TableTransforms.jl | Transforms and pipelines with tabular data. |
Variography.jl | Variogram estimation and modeling, and related tools. |
KrigingEstimators.jl | Kriging estimation over general geospatial domains. |
DensityRatioEstimation.jl | High-performance density ratio estimation. |
PointPatterns.jl | Geospatial point pattern analysis and synthesis. |
GeoClustering.jl | Geostatistical clustering (a.k.a. domaining). |
GeoStatsSolvers.jl | Built-in geostatistical solvers. |
GeoStatsBase.jl | Base package with core definitions. |
Other packages can be installed separately for additional functionality:
Package | Description |
---|---|
GeoStatsViz.jl | Recipes for visualization of geospatial data with Makie.jl. |
GeoStatsPlots.jl | Recipes for visualization of geospatial data with Plots.jl. |
GeoStatsImages.jl | Training images for multiple-point simulation. |
GeoTables.jl | (Down)load geospatial tables in various formats. |
DrillHoles.jl | Desurvey/composite drillhole data. |
GslibIO.jl | Load/save (extended) GSLIB files. |
Besides the packages above, the project can be extended with solver packages.
Community channels
We invite you to join our community channels. There you will meet other fellow geostatisticians who like to code. We are very friendly, come say hi! 😄🌎