diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 5804207c..c591cd33 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.4","generation_timestamp":"2024-07-26T01:14:56","documenter_version":"1.5.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.4","generation_timestamp":"2024-07-26T01:15:11","documenter_version":"1.5.0"}} \ No newline at end of file diff --git a/dev/about/citing/index.html b/dev/about/citing/index.html index 7ba251b3..e59504ac 100644 --- a/dev/about/citing/index.html +++ b/dev/about/citing/index.html @@ -12,4 +12,4 @@ url={https://dx.doi.org/10.21105/joss.00692}, year={2018}, month={Apr} -} +} diff --git a/dev/about/community/index.html b/dev/about/community/index.html index 95b00790..3214b0ee 100644 --- a/dev/about/community/index.html +++ b/dev/about/community/index.html @@ -1,2 +1,2 @@ -Community · GeoStats.jl

We use the Zulip platform to chat and help the community of users. Consider creating an account and pressing ? on the keyboard there for navigation instructions.

Click on the image to join the channel:

Zulip

+Community · GeoStats.jl

We use the Zulip platform to chat and help the community of users. Consider creating an account and pressing ? on the keyboard there for navigation instructions.

Click on the image to join the channel:

Zulip

diff --git a/dev/about/license/index.html b/dev/about/license/index.html index a6d06092..8742bc30 100644 --- a/dev/about/license/index.html +++ b/dev/about/license/index.html @@ -19,4 +19,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +SOFTWARE. diff --git a/dev/contributing/index.html b/dev/contributing/index.html index e30e023f..c733d5f7 100644 --- a/dev/contributing/index.html +++ b/dev/contributing/index.html @@ -1,3 +1,3 @@ Contributing · GeoStats.jl

Contributing

First off, thank you for considering contributing to GeoStats.jl. It’s people like you that make this project so much fun. Below are a few suggestions to speed up the collaboration process:

  • Please be polite, we are here to help and learn from each other.
  • Try to explain your contribution with simple language.
  • References to textbooks and papers are always welcome.
  • Follow the coding standards in the source.

How to start contributing?

Contributing to an open-source project for the very first time can be a very daunting task. To make the process easier and more GitHub-beginner-friendly, the community has written an article about how to start contributing to open-source and overcome the mental and technical barriers that come associated with it. The article will also take you through the steps required to make your first contribution in detail.

Reporting issues

If you are experiencing issues or have discovered a bug, please report it on GitHub. To make the resolution process easier, please include the version of Julia and GeoStats.jl in your writeup. These can be found with two commands:

julia> versioninfo()
-julia> using Pkg; Pkg.status()

Feature requests

If you have suggestions of improvement or algorithms that you would like to see implemented, please open an issue on GitHub. Suggestions as well as feature requests are very welcome.

Code contribution

If you have code that you would like to contribute that is awesome! Please open an issue or reach out in our community channel before you create the pull request on GitHub so that we make sure your idea is aligned with the project goals.

After your idea is revised by project maintainers, you implement it online on Github or offline on your machine.

Online changes

If the changes to the code are minimal, we recommend pressing . on the keyboard on any file in the GitHub repository of interest. This will open the VSCode editor on the web browser where you can implement the changes, commit them and submit a pull request.

Offline changes

If the changes require additional investigation and tests, please get the development version of the project by typing the following in the package manager:

] activate @geo

This will create a fresh environment called @geo where you can edit the project modules without effects on your global user environment. Next, go ahead and ask the package manager to develop the package of interest (e.g. GeoStatsFunctions.jl):

] dev GeoStatsFunctions

You can modify the source code that was cloned in the .julia/dev folder and submit a pull request on GitHub later.

+julia> using Pkg; Pkg.status()

Feature requests

If you have suggestions of improvement or algorithms that you would like to see implemented, please open an issue on GitHub. Suggestions as well as feature requests are very welcome.

Code contribution

If you have code that you would like to contribute that is awesome! Please open an issue or reach out in our community channel before you create the pull request on GitHub so that we make sure your idea is aligned with the project goals.

After your idea is revised by project maintainers, you implement it online on Github or offline on your machine.

Online changes

If the changes to the code are minimal, we recommend pressing . on the keyboard on any file in the GitHub repository of interest. This will open the VSCode editor on the web browser where you can implement the changes, commit them and submit a pull request.

Offline changes

If the changes require additional investigation and tests, please get the development version of the project by typing the following in the package manager:

] activate @geo

This will create a fresh environment called @geo where you can edit the project modules without effects on your global user environment. Next, go ahead and ask the package manager to develop the package of interest (e.g. GeoStatsFunctions.jl):

] dev GeoStatsFunctions

You can modify the source code that was cloned in the .julia/dev folder and submit a pull request on GitHub later.

diff --git a/dev/data/491ff635.png b/dev/data/491ff635.png new file mode 100644 index 00000000..cf80180e Binary files /dev/null and b/dev/data/491ff635.png differ diff --git a/dev/data/53cd8333.png b/dev/data/53cd8333.png new file mode 100644 index 00000000..ee8c9b67 Binary files /dev/null and b/dev/data/53cd8333.png differ diff --git a/dev/data/591b0169.png b/dev/data/591b0169.png deleted file mode 100644 index 78630709..00000000 Binary files a/dev/data/591b0169.png and /dev/null differ diff --git a/dev/data/805cdd22.png b/dev/data/805cdd22.png new file mode 100644 index 00000000..f7498adf Binary files /dev/null and b/dev/data/805cdd22.png differ diff --git a/dev/data/88b8200f.png b/dev/data/88b8200f.png deleted file mode 100644 index b06a8411..00000000 Binary files a/dev/data/88b8200f.png and /dev/null differ diff --git a/dev/data/a45949da.png b/dev/data/a45949da.png deleted file mode 100644 index c92d19a4..00000000 Binary files a/dev/data/a45949da.png and /dev/null differ diff --git a/dev/data/ac481946.png b/dev/data/ac481946.png new file mode 100644 index 00000000..0e5135d2 Binary files /dev/null and b/dev/data/ac481946.png differ diff --git a/dev/data/c376d19f.png b/dev/data/c376d19f.png deleted file mode 100644 index a54a7e80..00000000 Binary files a/dev/data/c376d19f.png and /dev/null differ diff --git a/dev/data/c5eb15e2.png b/dev/data/c5eb15e2.png deleted file mode 100644 index 4714576c..00000000 Binary files a/dev/data/c5eb15e2.png and /dev/null differ diff --git a/dev/data/f1ba8f34.png b/dev/data/f1ba8f34.png new file mode 100644 index 00000000..307437c0 Binary files /dev/null and b/dev/data/f1ba8f34.png differ diff --git a/dev/data/index.html b/dev/data/index.html index 26f10ec9..ef693663 100644 --- a/dev/data/index.html +++ b/dev/data/index.html @@ -17,11 +17,11 @@ fig end
plot (generic function with 1 method)

Tables

Consider a table (e.g. DataFrame) with 25 samples of temperature T and pressure P:

using DataFrames
 
-table = DataFrame(T=rand(25), P=rand(25))
25×2 DataFrame
RowTP
Float64Float64
10.4946710.48202
20.1479840.132287
30.2532750.982311
40.6015860.425859
50.05099530.454921
60.1755150.884283
70.8509280.495431
80.245140.335958
90.8008260.961417
100.2681780.765979
110.3073150.0650747
120.2171760.690314
130.5269070.735342
140.5923840.20431
150.6791110.0311764
160.5655350.132666
170.7555150.4291
180.9732710.549551
190.2740290.734996
200.006061470.0973826
210.749860.254549
220.4327030.608807
230.4746390.805431
240.4989460.520061
250.2051950.99034

We can georeference this table based on a given set of points:

georef(table, rand(Point, 25)) |> plot
Example block output

or alternatively, georeference it on a 5x5 regular grid (5x5 = 25 samples):

georef(table, CartesianGrid(5, 5)) |> plot
Example block output

Another common pattern in geospatial data is when the coordinates of the samples are already part of the table as columns. In this case, we can specify the column names:

table = DataFrame(T=rand(25), P=rand(25), X=rand(25), Y=rand(25), Z=rand(25))
+table = DataFrame(T=rand(25), P=rand(25))
25×2 DataFrame
RowTP
Float64Float64
10.9107890.420359
20.8152860.291038
30.3043670.482976
40.8956890.740065
50.6348040.599887
60.4632860.100807
70.324220.473178
80.2329140.306715
90.2818090.494228
100.2878820.245625
110.530180.959828
120.4719470.277439
130.3742280.499597
140.5498350.789358
150.9054540.230605
160.4752960.21372
170.5753960.542426
180.1259140.489461
190.9618770.487576
200.05427260.891625
210.9025990.557625
220.2643960.854942
230.3566310.360155
240.1302870.595874
250.6595940.837926

We can georeference this table based on a given set of points:

georef(table, rand(Point, 25)) |> plot
Example block output

or alternatively, georeference it on a 5x5 regular grid (5x5 = 25 samples):

georef(table, CartesianGrid(5, 5)) |> plot
Example block output

Another common pattern in geospatial data is when the coordinates of the samples are already part of the table as columns. In this case, we can specify the column names:

table = DataFrame(T=rand(25), P=rand(25), X=rand(25), Y=rand(25), Z=rand(25))
 
-georef(table, ("X", "Y", "Z")) |> plot
Example block output

Arrays

Consider arrays (e.g. images) with data for various geospatial variables. We can georeference these arrays using a named tuple, and the framework will understand that the shape of the arrays should be preserved in a CartesianGrid:

T, P = rand(5, 5), rand(5, 5)
+georef(table, ("X", "Y", "Z")) |> plot
Example block output

Arrays

Consider arrays (e.g. images) with data for various geospatial variables. We can georeference these arrays using a named tuple, and the framework will understand that the shape of the arrays should be preserved in a CartesianGrid:

T, P = rand(5, 5), rand(5, 5)
 
-georef((T=T, P=P)) |> plot
Example block output

Alternatively, we can interpret the entries of the named tuple as columns in a table:

georef((T=vec(T), P=vec(P)), rand(Point, 25)) |> plot
Example block output

Files

We can easily load geospatial data from disk without any specific knowledge of file formats:

using GeoIO
+georef((T=T, P=P)) |> plot
Example block output

Alternatively, we can interpret the entries of the named tuple as columns in a table:

georef((T=vec(T), P=vec(P)), rand(Point, 25)) |> plot
Example block output

Files

We can easily load geospatial data from disk without any specific knowledge of file formats:

using GeoIO
 
 zone = GeoIO.load("data/zone.shp")
@@ -86,4 +86,4 @@
4×6 GeoTable over 4 GeometrySet
- + diff --git a/dev/declustering/index.html b/dev/declustering/index.html index 0b6dc5c9..f23f3507 100644 --- a/dev/declustering/index.html +++ b/dev/declustering/index.html @@ -4,4 +4,4 @@

The following statistics have geospatial semantics:

Statistics.meanMethod
mean(data, v)
 mean(data, v, s)

Declustered mean of geospatial data. Optionally, specify the variable v and the block side s.

source
Statistics.varMethod
var(data, v)
 var(data, v, s)

Declustered variance of geospatial data. Optionally, specify the variable v and the block side s.

source
Statistics.quantileMethod
quantile(data, v, p)
-quantile(data, v, p, s)

Declustered quantile of geospatial data at probability p. Optionally, specify the variable v and the block side s.

source

A histogram with geospatial semantics is also available where the heights of the bins are adjusted based on the coordinates of the samples:

GeoStatsBase.EmpiricalHistogramType
EmpiricalHistogram(sdata, var, [s]; kwargs...)

Spatial histogram of variable var in spatial data sdata. Optionally, specify the block side s and the keyword arguments kwargs for the fit(Histogram, ...) call.

source
+quantile(data, v, p, s)

Declustered quantile of geospatial data at probability p. Optionally, specify the variable v and the block side s.

source

A histogram with geospatial semantics is also available where the heights of the bins are adjusted based on the coordinates of the samples:

GeoStatsBase.EmpiricalHistogramType
EmpiricalHistogram(sdata, var, [s]; kwargs...)

Spatial histogram of variable var in spatial data sdata. Optionally, specify the block side s and the keyword arguments kwargs for the fit(Histogram, ...) call.

source
diff --git a/dev/domains/aed6da6c.png b/dev/domains/aed6da6c.png deleted file mode 100644 index b5bee09d..00000000 Binary files a/dev/domains/aed6da6c.png and /dev/null differ diff --git a/dev/domains/b6842228.png b/dev/domains/b6842228.png new file mode 100644 index 00000000..10c58b37 Binary files /dev/null and b/dev/domains/b6842228.png differ diff --git a/dev/domains/index.html b/dev/domains/index.html index b755364d..cff9b8d5 100644 --- a/dev/domains/index.html +++ b/dev/domains/index.html @@ -4,11 +4,11 @@ julia> PointSet([(1,2,3), (4,5,6)]) julia> PointSet((1,2,3), (4,5,6))source
pset = PointSet(rand(Point, 100))
 
-viz(pset)
Example block output

GeometrySet

Meshes.GeometrySetType
GeometrySet(geometries)

A set of geometries representing a Domain.

Examples

Set containing two balls centered at (0.0, 0.0) and (1.0, 1.0):

julia> GeometrySet([Ball((0.0, 0.0)), Ball((1.0, 1.0))])
source
tria = Triangle((0.0, 0.0), (1.0, 1.0), (0.0, 1.0))
+viz(pset)
Example block output

GeometrySet

Meshes.GeometrySetType
GeometrySet(geometries)

A set of geometries representing a Domain.

Examples

Set containing two balls centered at (0.0, 0.0) and (1.0, 1.0):

julia> GeometrySet([Ball((0.0, 0.0)), Ball((1.0, 1.0))])
source
tria = Triangle((0.0, 0.0), (1.0, 1.0), (0.0, 1.0))
 quad = Quadrangle((1.0, 1.0), (2.0, 1.0), (2.0, 2.0), (1.0, 2.0))
 gset = GeometrySet([tria, quad])
 
 viz(gset, showsegments = true)
Example block output

CartesianGrid

Meshes.CartesianGridType
CartesianGrid(dims, origin, spacing)

A Cartesian grid with dimensions dims, lower left corner at origin and cell spacing spacing. The three arguments must have the same length.

CartesianGrid(dims, origin, spacing, offset)

A Cartesian grid with dimensions dims, with lower left corner of element offset at origin and cell spacing spacing.

CartesianGrid(start, finish, dims=dims)

Alternatively, construct a Cartesian grid from a start point (lower left) to a finish point (upper right).

CartesianGrid(start, finish, spacing)

Alternatively, construct a Cartesian grid from a start point to a finish point using a given spacing.

CartesianGrid(dims)
 CartesianGrid(dim1, dim2, ...)

Finally, a Cartesian grid can be constructed by only passing the dimensions dims as a tuple, or by passing each dimension dim1, dim2, ... separately. In this case, the origin and spacing default to (0,0,...) and (1,1,...).

Examples

Create a 3D grid with 100x100x50 hexahedrons:

julia> CartesianGrid(100, 100, 50)

Create a 2D grid with 100 x 100 quadrangles and origin at (10.0, 20.0):

julia> CartesianGrid((100, 100), (10.0, 20.0), (1.0, 1.0))

Create a 1D grid from -1 to 1 with 100 segments:

julia> CartesianGrid((-1.0,), (1.0,), dims=(100,))
source
grid = CartesianGrid(10, 10, 10)
 
-viz(grid, showsegments = true)
Example block output +viz(grid, showsegments = true)Example block output diff --git a/dev/index.html b/dev/index.html index 866e538f..54e4d7ea 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,5 +1,5 @@ -Home · GeoStats.jl
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:

+Home · GeoStats.jl

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:

@@ -53,4 +53,4 @@ url={https://dx.doi.org/10.21105/joss.00692}, year={2018}, month={Apr} -}

We ❤ to see our list of publications growing.

+}

We ❤ to see our list of publications growing.

diff --git a/dev/kriging/index.html b/dev/kriging/index.html index f59030c2..1dc5fbcd 100644 --- a/dev/kriging/index.html +++ b/dev/kriging/index.html @@ -53,4 +53,4 @@ \begin{bmatrix} \g \\ \f -\end{bmatrix}\]

with $\boldsymbol{\nu}$ the Lagrange multipliers associated with the universal constraints. The mean and variance at location $\x_0$ are given by:

\[\mu(\x_0) = \z^\top \l\]

\[\sigma^2(\x_0) = \begin{bmatrix}\g \\ \f\end{bmatrix}^\top \begin{bmatrix}\l \\ \boldsymbol{\nu}\end{bmatrix}\]

GeoStatsModels.UniversalKrigingType
UniversalKriging(γ, degree, dim)

Universal Kriging with variogram model γ and polynomial degree on a geospatial domain of dimension dim.

Notes

source

External Drift Kriging

In External Drift Kriging, the mean of the random field is assumed to be a combination of known smooth functions:

\[\mu(\x) = \sum_k \beta_k m_k(\x)\]

Differently than Universal Kriging, the functions $m_k$ are not necessarily polynomials of the geospatial coordinates. In practice, they represent a list of variables that is strongly correlated (and co-located) with the variable being estimated.

External drifts are known to cause numerical instability. Give preference to other Kriging variants if possible.

GeoStatsModels.ExternalDriftKrigingType
ExternalDriftKriging(γ, drifts)

External Drift Kriging with variogram model γ and external drifts functions.

Notes

  • External drift functions should be smooth
  • Kriging system with external drift is often unstable
  • Include a constant drift (e.g. x->1) for unbiased estimation
  • OrdinaryKriging is recovered for drifts = [x->1]
  • For polynomial mean, see UniversalKriging
source
+\end{bmatrix}\]

with $\boldsymbol{\nu}$ the Lagrange multipliers associated with the universal constraints. The mean and variance at location $\x_0$ are given by:

\[\mu(\x_0) = \z^\top \l\]

\[\sigma^2(\x_0) = \begin{bmatrix}\g \\ \f\end{bmatrix}^\top \begin{bmatrix}\l \\ \boldsymbol{\nu}\end{bmatrix}\]

GeoStatsModels.UniversalKrigingType
UniversalKriging(γ, degree, dim)

Universal Kriging with variogram model γ and polynomial degree on a geospatial domain of dimension dim.

Notes

source

External Drift Kriging

In External Drift Kriging, the mean of the random field is assumed to be a combination of known smooth functions:

\[\mu(\x) = \sum_k \beta_k m_k(\x)\]

Differently than Universal Kriging, the functions $m_k$ are not necessarily polynomials of the geospatial coordinates. In practice, they represent a list of variables that is strongly correlated (and co-located) with the variable being estimated.

External drifts are known to cause numerical instability. Give preference to other Kriging variants if possible.

GeoStatsModels.ExternalDriftKrigingType
ExternalDriftKriging(γ, drifts)

External Drift Kriging with variogram model γ and external drifts functions.

Notes

  • External drift functions should be smooth
  • Kriging system with external drift is often unstable
  • Include a constant drift (e.g. x->1) for unbiased estimation
  • OrdinaryKriging is recovered for drifts = [x->1]
  • For polynomial mean, see UniversalKriging
source
diff --git a/dev/links/index.html b/dev/links/index.html index 97c93b15..3c475786 100644 --- a/dev/links/index.html +++ b/dev/links/index.html @@ -1,2 +1,2 @@ -Index · GeoStats.jl

Index

Below is the list of types and functions mentioned in the documentation.

Types

Functions

+Index · GeoStats.jl

Index

Below is the list of types and functions mentioned in the documentation.

Types

Functions

diff --git a/dev/objects.inv b/dev/objects.inv index 640716a9..645f3026 100644 Binary files a/dev/objects.inv and b/dev/objects.inv differ diff --git a/dev/queries/index.html b/dev/queries/index.html index 622982d7..65eb0e88 100644 --- a/dev/queries/index.html +++ b/dev/queries/index.html @@ -36,4 +36,4 @@ tablejoin(gtb, tab, 1 => mean, on=:a) tablejoin(gtb, tab, :a => mean, :b => std, on=:a) tablejoin(gtb, tab, "a" => mean, on=[:a, :b]) -tablejoin(gtb, tab, kind=:inner, on=["a", "b"])

See also geojoin.

source +tablejoin(gtb, tab, kind=:inner, on=["a", "b"])

See also geojoin.

source diff --git a/dev/quickstart/87405a0f.png b/dev/quickstart/87405a0f.png new file mode 100644 index 00000000..5bade01c Binary files /dev/null and b/dev/quickstart/87405a0f.png differ diff --git a/dev/quickstart/99064ca6.png b/dev/quickstart/99064ca6.png deleted file mode 100644 index fabfc657..00000000 Binary files a/dev/quickstart/99064ca6.png and /dev/null differ diff --git a/dev/quickstart/index.html b/dev/quickstart/index.html index 65fb8c8d..1d1b6502 100644 --- a/dev/quickstart/index.html +++ b/dev/quickstart/index.html @@ -346,4 +346,4 @@

Scientific visualization

We note that the prediction of a geostatistical learning model is a geospatial data object, and we can inspect it with the same methods already described above. This also means that we can visualize the prediction directly, side by side with the true label in this synthetic example:

fig = Mke.Figure(size = (800, 400))
 viz(fig[1,1], Ω̂t.geometry, color = Ω̂t.crop)
 viz(fig[1,2], Ωt.geometry, color = Ωt.crop)
-fig
Example block output

With this example we conclude the basic workflow. To get familiar with other features of the project, please check the the reference guide.

+figExample block output

With this example we conclude the basic workflow. To get familiar with other features of the project, please check the the reference guide.

diff --git a/dev/random/fields/12d82523.png b/dev/random/fields/12d82523.png deleted file mode 100644 index 39a0d4fb..00000000 Binary files a/dev/random/fields/12d82523.png and /dev/null differ diff --git a/dev/random/fields/189114f6.png b/dev/random/fields/189114f6.png new file mode 100644 index 00000000..c1f8e769 Binary files /dev/null and b/dev/random/fields/189114f6.png differ diff --git a/dev/random/fields/1b01d89f.png b/dev/random/fields/1b01d89f.png deleted file mode 100644 index 88b548da..00000000 Binary files a/dev/random/fields/1b01d89f.png and /dev/null differ diff --git a/dev/random/fields/2608c5db.png b/dev/random/fields/2608c5db.png deleted file mode 100644 index 4c30f268..00000000 Binary files a/dev/random/fields/2608c5db.png and /dev/null differ diff --git a/dev/random/fields/31892e01.png b/dev/random/fields/31892e01.png new file mode 100644 index 00000000..6b37eccf Binary files /dev/null and b/dev/random/fields/31892e01.png differ diff --git a/dev/random/fields/3234a552.png b/dev/random/fields/3234a552.png deleted file mode 100644 index 63bde8a5..00000000 Binary files a/dev/random/fields/3234a552.png and /dev/null differ diff --git a/dev/random/fields/38780fa6.png b/dev/random/fields/38780fa6.png new file mode 100644 index 00000000..02120549 Binary files /dev/null and b/dev/random/fields/38780fa6.png differ diff --git a/dev/random/fields/3d204fe1.png b/dev/random/fields/3d204fe1.png new file mode 100644 index 00000000..666f9872 Binary files /dev/null and b/dev/random/fields/3d204fe1.png differ diff --git a/dev/random/fields/3d4218cf.png b/dev/random/fields/3d4218cf.png new file mode 100644 index 00000000..0930430c Binary files /dev/null and b/dev/random/fields/3d4218cf.png differ diff --git a/dev/random/fields/42664a7c.png b/dev/random/fields/42664a7c.png deleted file mode 100644 index 117d90a2..00000000 Binary files a/dev/random/fields/42664a7c.png and /dev/null differ diff --git a/dev/random/fields/4bf19d0b.png b/dev/random/fields/4bf19d0b.png new file mode 100644 index 00000000..9b4c9b97 Binary files /dev/null and b/dev/random/fields/4bf19d0b.png differ diff --git a/dev/random/fields/50617f1b.png b/dev/random/fields/50617f1b.png new file mode 100644 index 00000000..25872b02 Binary files /dev/null and b/dev/random/fields/50617f1b.png differ diff --git a/dev/random/fields/50630dcc.png b/dev/random/fields/50630dcc.png deleted file mode 100644 index a29b82bd..00000000 Binary files a/dev/random/fields/50630dcc.png and /dev/null differ diff --git a/dev/random/fields/64e4585a.png b/dev/random/fields/64e4585a.png deleted file mode 100644 index 462bf022..00000000 Binary files a/dev/random/fields/64e4585a.png and /dev/null differ diff --git a/dev/random/fields/6a4ade91.png b/dev/random/fields/6a4ade91.png deleted file mode 100644 index df1af6df..00000000 Binary files a/dev/random/fields/6a4ade91.png and /dev/null differ diff --git a/dev/random/fields/82f40195.png b/dev/random/fields/82f40195.png new file mode 100644 index 00000000..3e5ee217 Binary files /dev/null and b/dev/random/fields/82f40195.png differ diff --git a/dev/random/fields/8ccfd9ff.png b/dev/random/fields/8ccfd9ff.png deleted file mode 100644 index 790e3862..00000000 Binary files a/dev/random/fields/8ccfd9ff.png and /dev/null differ diff --git a/dev/random/fields/8d3edc41.png b/dev/random/fields/8d3edc41.png new file mode 100644 index 00000000..ffc12c81 Binary files /dev/null and b/dev/random/fields/8d3edc41.png differ diff --git a/dev/random/fields/a07330a1.png b/dev/random/fields/a07330a1.png new file mode 100644 index 00000000..382ff960 Binary files /dev/null and b/dev/random/fields/a07330a1.png differ diff --git a/dev/random/fields/d5610b53.png b/dev/random/fields/d5610b53.png new file mode 100644 index 00000000..6d340986 Binary files /dev/null and b/dev/random/fields/d5610b53.png differ diff --git a/dev/random/fields/da57a67d.png b/dev/random/fields/da57a67d.png deleted file mode 100644 index 66d4e8a5..00000000 Binary files a/dev/random/fields/da57a67d.png and /dev/null differ diff --git a/dev/random/fields/ebeb5fd1.png b/dev/random/fields/ebeb5fd1.png deleted file mode 100644 index 86f51cbb..00000000 Binary files a/dev/random/fields/ebeb5fd1.png and /dev/null differ diff --git a/dev/random/fields/index.html b/dev/random/fields/index.html index 0db47336..1c1c42b9 100644 --- a/dev/random/fields/index.html +++ b/dev/random/fields/index.html @@ -16,18 +16,18 @@ N° reals: 100

We can visualize the first two realizations:

fig = Mke.Figure(size = (800, 400))
 viz(fig[1,1], real[1].geometry, color = real[1].Z)
 viz(fig[1,2], real[2].geometry, color = real[2].Z)
-fig
Example block output

the mean and variance:

m, v = mean(real), var(real)
+fig
Example block output

the mean and variance:

m, v = mean(real), var(real)
 
 fig = Mke.Figure(size = (800, 400))
 viz(fig[1,1], m.geometry, color = m.Z)
 viz(fig[1,2], v.geometry, color = v.Z)
-fig
Example block output

or the 25th and 75th percentiles:

q25 = quantile(real, 0.25)
+fig
Example block output

or the 25th and 75th percentiles:

q25 = quantile(real, 0.25)
 q75 = quantile(real, 0.75)
 
 fig = Mke.Figure(size = (800, 400))
 viz(fig[1,1], q25.geometry, color = q25.Z)
 viz(fig[1,2], q75.geometry, color = q75.Z)
-fig
Example block output

All field processes can generate realizations in parallel using multiple Julia processes. Doing so requires using the Distributed standard library, like in the following example:

using Distributed
+fig
Example block output

All field processes can generate realizations in parallel using multiple Julia processes. Doing so requires using the Distributed standard library, like in the following example:

using Distributed
 
 # request additional processes
 addprocs(3)
@@ -58,7 +58,7 @@
 fig = Mke.Figure(size = (800, 400))
 viz(fig[1,1], real[1].geometry, color = real[1].Z)
 viz(fig[1,2], real[2].geometry, color = real[2].Z)
-fig
Example block output
GeoStatsProcesses.LindgrenProcessType
LindgrenProcess(range=1.0, sill=1.0; init=NearestInit())

Lindgren process with given range (correlation length) and sill (total variance) as described in Lindgren 2011. Optionally, specify the data initialization method init.

The process relies relies on a discretization of the Laplace-Beltrami operator on meshes and is adequate for highly curved domains (e.g. surfaces).

References

source

External

The following processes are available in external packages.

ImageQuilting.jl

GeoStatsProcesses.QuiltingProcessType
QuiltingProcess(trainimg, tilesize; [paramaters])

Image quilting process with training image trainimg and tile size tilesize as described in Hoffimann et al. 2017.

Parameters

  • overlap - Overlap size (default to (1/6, 1/6, ..., 1/6))
  • path - Process path (:raster (default), :dilation, or :random)
  • inactive - Vector of inactive voxels (i.e. CartesianIndex) in the grid
  • soft - A pair (data,dataTI) of geospatial data objects (default to nothing)
  • tol - Initial relaxation tolerance in (0,1] (default to 0.1)
  • init - Data initialization method (default to NearestInit())

References

source
using ImageQuilting
+fig
Example block output
GeoStatsProcesses.LindgrenProcessType
LindgrenProcess(range=1.0, sill=1.0; init=NearestInit())

Lindgren process with given range (correlation length) and sill (total variance) as described in Lindgren 2011. Optionally, specify the data initialization method init.

The process relies relies on a discretization of the Laplace-Beltrami operator on meshes and is adequate for highly curved domains (e.g. surfaces).

References

source

External

The following processes are available in external packages.

ImageQuilting.jl

GeoStatsProcesses.QuiltingProcessType
QuiltingProcess(trainimg, tilesize; [paramaters])

Image quilting process with training image trainimg and tile size tilesize as described in Hoffimann et al. 2017.

Parameters

  • overlap - Overlap size (default to (1/6, 1/6, ..., 1/6))
  • path - Process path (:raster (default), :dilation, or :random)
  • inactive - Vector of inactive voxels (i.e. CartesianIndex) in the grid
  • soft - A pair (data,dataTI) of geospatial data objects (default to nothing)
  • tol - Initial relaxation tolerance in (0,1] (default to 0.1)
  • init - Data initialization method (default to NearestInit())

References

source
using ImageQuilting
 using GeoArtifacts
 
 # domain of interest
@@ -74,7 +74,7 @@
 fig = Mke.Figure(size = (800, 400))
 viz(fig[1,1], real[1].geometry, color = real[1].facies)
 viz(fig[1,2], real[2].geometry, color = real[2].facies)
-fig
Example block output
# domain of interest
+fig
Example block output
# domain of interest
 grid = CartesianGrid(200, 200)
 
 # quilting process
@@ -87,7 +87,7 @@
 fig = Mke.Figure(size = (800, 400))
 viz(fig[1,1], real[1].geometry, color = real[1].Z)
 viz(fig[1,2], real[2].geometry, color = real[2].Z)
-fig
Example block output
# domain of interest
+fig
Example block output
# domain of interest
 grid = domain(img)
 
 # pre-existing observations
@@ -103,7 +103,7 @@
 fig = Mke.Figure(size = (800, 400))
 viz(fig[1,1], real[1].geometry, color = real[1].facies)
 viz(fig[1,2], real[2].geometry, color = real[2].facies)
-fig
Example block output

Voxels marked with the special symbol NaN are treated as inactive. The algorithm will skip tiles that only contain inactive voxels to save computation and will generate realizations that are consistent with the mask. This is particularly useful with complex 3D models that have large inactive portions.

# domain of interest
+fig
Example block output

Voxels marked with the special symbol NaN are treated as inactive. The algorithm will skip tiles that only contain inactive voxels to save computation and will generate realizations that are consistent with the mask. This is particularly useful with complex 3D models that have large inactive portions.

# domain of interest
 grid = domain(img)
 
 # skip circle at the center
@@ -124,7 +124,7 @@
 fig = Mke.Figure(size = (800, 400))
 viz(fig[1,1], real[1].geometry, color = real[1].facies)
 viz(fig[1,2], real[2].geometry, color = real[2].facies)
-fig
Example block output

It is possible to incorporate auxiliary variables to guide the selection of patterns from the training image.

using ImageFiltering
+fig
Example block output

It is possible to incorporate auxiliary variables to guide the selection of patterns from the training image.

using ImageFiltering
 
 # image assumed as ground truth (unknown)
 truth = GeoStatsImages.get("WalkerLakeTruth")
@@ -151,7 +151,7 @@
 fig = Mke.Figure(size = (800, 400))
 viz(fig[1,1], real[1].geometry, color = real[1].Z)
 viz(fig[1,2], real[2].geometry, color = real[2].Z)
-fig
Example block output

TuringPatterns.jl

GeoStatsProcesses.TuringProcessType
TuringProcess(; [paramaters])

Turing process as described in Turing 1952.

Parameters

  • params - basic parameters (default to nothing)
  • blur - blur algorithm (default to nothing)
  • edge - edge condition (default to nothing)
  • iter - number of iterations (default to 100)

References

source
using TuringPatterns
+fig
Example block output

TuringPatterns.jl

GeoStatsProcesses.TuringProcessType
TuringProcess(; [paramaters])

Turing process as described in Turing 1952.

Parameters

  • params - basic parameters (default to nothing)
  • blur - blur algorithm (default to nothing)
  • edge - edge condition (default to nothing)
  • iter - number of iterations (default to 100)

References

source
using TuringPatterns
 
 # domain of interest
 grid = CartesianGrid(200, 200)
@@ -162,7 +162,7 @@
 fig = Mke.Figure(size = (800, 400))
 viz(fig[1,1], real[1].geometry, color = real[1].z)
 viz(fig[1,2], real[2].geometry, color = real[2].z)
-fig
Example block output

StratiGraphics.jl

GeoStatsProcesses.StrataProcessType
StrataProcess(environment; [paramaters])

Strata process with given geological environment as described in Hoffimann 2018.

Parameters

  • state - Initial geological state
  • stack - Stacking scheme (:erosional or :depositional)
  • nepochs - Number of epochs (default to 10)

References

source
using StratiGraphics
+fig
Example block output

StratiGraphics.jl

GeoStatsProcesses.StrataProcessType
StrataProcess(environment; [paramaters])

Strata process with given geological environment as described in Hoffimann 2018.

Parameters

  • state - Initial geological state
  • stack - Stacking scheme (:erosional or :depositional)
  • nepochs - Number of epochs (default to 10)

References

source
using StratiGraphics
 
 # domain of interest
 grid = CartesianGrid(50, 50, 20)
@@ -179,4 +179,4 @@
 fig = Mke.Figure(size = (800, 400))
 viz(fig[1,1], real[1].geometry, color = real[1].z)
 viz(fig[1,2], real[2].geometry, color = real[2].z)
-fig
Example block output +figExample block output diff --git a/dev/random/points/0d463a0a.png b/dev/random/points/0d463a0a.png deleted file mode 100644 index 9781fb09..00000000 Binary files a/dev/random/points/0d463a0a.png and /dev/null differ diff --git a/dev/random/points/100ba079.png b/dev/random/points/100ba079.png deleted file mode 100644 index da113c35..00000000 Binary files a/dev/random/points/100ba079.png and /dev/null differ diff --git a/dev/random/points/16eea946.png b/dev/random/points/16eea946.png new file mode 100644 index 00000000..9e8913d6 Binary files /dev/null and b/dev/random/points/16eea946.png differ diff --git a/dev/random/points/2a0290a3.png b/dev/random/points/2a0290a3.png new file mode 100644 index 00000000..2a335974 Binary files /dev/null and b/dev/random/points/2a0290a3.png differ diff --git a/dev/random/points/49a65eeb.png b/dev/random/points/49a65eeb.png new file mode 100644 index 00000000..bc1b349a Binary files /dev/null and b/dev/random/points/49a65eeb.png differ diff --git a/dev/random/points/59ed1f74.png b/dev/random/points/59ed1f74.png new file mode 100644 index 00000000..8dd5334d Binary files /dev/null and b/dev/random/points/59ed1f74.png differ diff --git a/dev/random/points/5eabe8f7.png b/dev/random/points/5eabe8f7.png new file mode 100644 index 00000000..e950bd75 Binary files /dev/null and b/dev/random/points/5eabe8f7.png differ diff --git a/dev/random/points/6586c6af.png b/dev/random/points/6586c6af.png new file mode 100644 index 00000000..0bc015b9 Binary files /dev/null and b/dev/random/points/6586c6af.png differ diff --git a/dev/random/points/65c7ac68.png b/dev/random/points/65c7ac68.png new file mode 100644 index 00000000..b7774004 Binary files /dev/null and b/dev/random/points/65c7ac68.png differ diff --git a/dev/random/points/762cd76e.png b/dev/random/points/762cd76e.png deleted file mode 100644 index aacb2dda..00000000 Binary files a/dev/random/points/762cd76e.png and /dev/null differ diff --git a/dev/random/points/91ca175d.png b/dev/random/points/91ca175d.png deleted file mode 100644 index 2c2e462c..00000000 Binary files a/dev/random/points/91ca175d.png and /dev/null differ diff --git a/dev/random/points/9f6c20a1.png b/dev/random/points/9f6c20a1.png deleted file mode 100644 index 37b152a5..00000000 Binary files a/dev/random/points/9f6c20a1.png and /dev/null differ diff --git a/dev/random/points/a118e144.png b/dev/random/points/a118e144.png new file mode 100644 index 00000000..d4630eac Binary files /dev/null and b/dev/random/points/a118e144.png differ diff --git a/dev/random/points/d06687ba.png b/dev/random/points/d06687ba.png deleted file mode 100644 index 58f5c183..00000000 Binary files a/dev/random/points/d06687ba.png and /dev/null differ diff --git a/dev/random/points/d7520528.png b/dev/random/points/d7520528.png deleted file mode 100644 index 6407c0ea..00000000 Binary files a/dev/random/points/d7520528.png and /dev/null differ diff --git a/dev/random/points/de9f0588.png b/dev/random/points/de9f0588.png deleted file mode 100644 index 7c644aff..00000000 Binary files a/dev/random/points/de9f0588.png and /dev/null differ diff --git a/dev/random/points/index.html b/dev/random/points/index.html index ba26d25f..7a02dc34 100644 --- a/dev/random/points/index.html +++ b/dev/random/points/index.html @@ -14,7 +14,7 @@ viz!(fig[1,1], pset[1], color = :black) viz(fig[1,2], sphere) viz!(fig[1,2], pset[2], color = :black) -figExample block output
GeoStatsProcesses.ishomogeneousFunction
ishomogeneous(process::PointProcess)

Tells whether or not the spatial point process process is homogeneous.

source

Processes

GeoStatsProcesses.BinomialProcessType
BinomialProcess(n)

A Binomial point process with n points.

source
# geometry of interest
+fig
Example block output
GeoStatsProcesses.ishomogeneousFunction
ishomogeneous(process::PointProcess)

Tells whether or not the spatial point process process is homogeneous.

source

Processes

GeoStatsProcesses.BinomialProcessType
BinomialProcess(n)

A Binomial point process with n points.

source
# geometry of interest
 box = Box((0, 0), (100, 100))
 
 # Binomial process
@@ -28,7 +28,7 @@
 viz!(fig[1,1], pset[1], color = :black)
 viz(fig[1,2], box)
 viz!(fig[1,2], pset[2], color = :black)
-fig
Example block output
GeoStatsProcesses.PoissonProcessType
PoissonProcess(λ)

A Poisson process with intensity λ. For a homogeneous process, define λ as a constant real value, while for an inhomogeneous process, define λ as a function or vector of values. If λ is a vector, it is assumed that the process is associated with a Domain with the same number of elements as λ.

source
# geometry of interest
+fig
Example block output
GeoStatsProcesses.PoissonProcessType
PoissonProcess(λ)

A Poisson process with intensity λ. For a homogeneous process, define λ as a constant real value, while for an inhomogeneous process, define λ as a function or vector of values. If λ is a vector, it is assumed that the process is associated with a Domain with the same number of elements as λ.

source
# geometry of interest
 box = Box((0, 0), (100, 100))
 
 # intensity function
@@ -49,7 +49,7 @@
 viz!(fig[1,1], pset₁, color = :black)
 viz(fig[1,2], box)
 viz!(fig[1,2], pset₂, color = :black)
-fig
Example block output
GeoStatsProcesses.InhibitionProcessType
InhibitionProcess(δ)

An inhibition point process with minimum distance δ.

source
# geometry of interest
+fig
Example block output
GeoStatsProcesses.InhibitionProcessType
InhibitionProcess(δ)

An inhibition point process with minimum distance δ.

source
# geometry of interest
 box = Box((0, 0), (100, 100))
 
 # inhibition process
@@ -63,7 +63,7 @@
 viz!(fig[1,1], pset[1], color = :black)
 viz(fig[1,2], box)
 viz!(fig[1,2], pset[2], color = :black)
-fig
Example block output
GeoStatsProcesses.ClusterProcessType
ClusterProcess(proc, ofun)

A cluster process with parent process proc and offsprings generated with ofun. It is a function that takes a parent point and returns a point pattern from another point process.

ClusterProcess(proc, offs, gfun)

Alternatively, specify the parent process proc, the offspring process offs and the geometry function gfun. It is a function that takes a parent point and returns a geometry or domain for the offspring process.

source
# geometry of interest
+fig
Example block output
GeoStatsProcesses.ClusterProcessType
ClusterProcess(proc, ofun)

A cluster process with parent process proc and offsprings generated with ofun. It is a function that takes a parent point and returns a point pattern from another point process.

ClusterProcess(proc, offs, gfun)

Alternatively, specify the parent process proc, the offspring process offs and the geometry function gfun. It is a function that takes a parent point and returns a geometry or domain for the offspring process.

source
# geometry of interest
 box = Box((0, 0), (5, 5))
 
 # Matérn process
@@ -88,7 +88,7 @@
 viz!(fig[1,1], pset₁, color = :black)
 viz(fig[1,2], box)
 viz!(fig[1,2], pset₂, color = :black)
-fig
Example block output

Operations

Base.unionMethod
p₁ ∪ p₂

Return the union of point processes p₁ and p₂.

source
# geometry of interest
+fig
Example block output

Operations

Base.unionMethod
p₁ ∪ p₂

Return the union of point processes p₁ and p₂.

source
# geometry of interest
 box = Box((0, 0), (100, 100))
 
 # superposition of two Binomial processes
@@ -103,7 +103,7 @@
 viz!(fig[1,1], pset[1], color = :black)
 viz(fig[1,2], box)
 viz!(fig[1,2], pset[2], color = :black)
-fig
Example block output
GeoStatsProcesses.thinFunction
thin(process, method)

Thin spatial point process with thinning method.

source
GeoStatsProcesses.RandomThinningType
RandomThinning(p)

Random thinning with retention probability p, which can be a constant probability value in [0,1] or a function mapping a point to a probability.

Examples

RandomThinning(0.5)
+fig
Example block output
GeoStatsProcesses.RandomThinningType
RandomThinning(p)

Random thinning with retention probability p, which can be a constant probability value in [0,1] or a function mapping a point to a probability.

Examples

RandomThinning(0.5)
 RandomThinning(p -> sum(to(p)))
source
# geometry of interest
 box = Box((0, 0), (100, 100))
 
@@ -120,7 +120,7 @@
 viz!(fig[1,1], pset₁, color = :black)
 viz(fig[1,2], box)
 viz!(fig[1,2], pset₂, color = :black)
-fig
Example block output
# geometry of interest
+fig
Example block output
# geometry of interest
 box = Box((0, 0), (100, 100))
 
 # Binomial process
@@ -137,4 +137,4 @@
 viz!(fig[1,1], pset₁, color = :black)
 viz(fig[1,2], box)
 viz!(fig[1,2], pset₂, color = :black)
-fig
Example block output
+figExample block output diff --git a/dev/resources/ecosystem/index.html b/dev/resources/ecosystem/index.html index 07952f76..2d53ea30 100644 --- a/dev/resources/ecosystem/index.html +++ b/dev/resources/ecosystem/index.html @@ -1,4 +1,4 @@ Ecosystem · GeoStats.jl

Ecosystem

The Julia ecosystem for geospatial modeling is maturing very quickly as the result of multiple initiatives such as JuliaEarth, JuliaClimate, and JuliaGeo. Each of these initiatives is associated with a different set of challenges that ultimatively determine the types of packages that are being developed in the corresponding GitHub organizations. In this section, we try to clarify what is available to first-time users of the language.

-

JuliaEarth

Originally created to host the GeoStats.jl framework, this initiative is primarily concerned with geospatial data science and geostatistical modeling. Due to the various applications in the subsurface of the Earth, most of our Julia packages were developed to work efficiently with both 2D and 3D geometries.

Unlike other initiatives, JuliaEarth is 100% Julia by design. This means that we do not rely on external libraries such as GDAL or Proj4 for geospatial work.

JuliaClimate

The most recent of the three initiatives, JuliaClimate has been created to address specific challenges in climate modeling. One of these challenges is access to climate data in Julia. Packages such as INMET.jl and CDSAPI.jl serve this purpose and are quite nice to work with.

JuliaGeo

Focused on bringing well-established external libraries to Julia, JuliaGeo provides packages that are widely used by geospatial communities from other programming languages. GDAL.jl, Proj4.jl and LibGEOS.jl are good examples of such packages.

+

JuliaEarth

Originally created to host the GeoStats.jl framework, this initiative is primarily concerned with geospatial data science and geostatistical modeling. Due to the various applications in the subsurface of the Earth, most of our Julia packages were developed to work efficiently with both 2D and 3D geometries.

Unlike other initiatives, JuliaEarth is 100% Julia by design. This means that we do not rely on external libraries such as GDAL or Proj4 for geospatial work.

JuliaClimate

The most recent of the three initiatives, JuliaClimate has been created to address specific challenges in climate modeling. One of these challenges is access to climate data in Julia. Packages such as INMET.jl and CDSAPI.jl serve this purpose and are quite nice to work with.

JuliaGeo

Focused on bringing well-established external libraries to Julia, JuliaGeo provides packages that are widely used by geospatial communities from other programming languages. GDAL.jl, Proj4.jl and LibGEOS.jl are good examples of such packages.

diff --git a/dev/resources/education/index.html b/dev/resources/education/index.html index 11acd0dc..b9246143 100644 --- a/dev/resources/education/index.html +++ b/dev/resources/education/index.html @@ -1,2 +1,2 @@ -Education · GeoStats.jl

Education

We recommend the following educational resources.

Learning resources

Textbooks

Video lectures

  • Júlio Hoffimann - Video lectures with the GeoStats.jl framework.

  • Edward Isaaks - Video lectures on variography, Kriging and related concepts.

  • Jef Caers - Video lectures on two-point and multiple-point methods.

Workshop material

  • UFMG 2024 [Portuguese] - Geociência de Dados na Mineração, UFMG 2024

  • JuliaEO 2024 [English] - Global Workshop on Earth Observation, AIRCentre 2024

  • UFMG 2023 [Portuguese] - Geociência de Dados na Mineração, UFMG 2023

  • JuliaEO 2023 [English] - Global Workshop on Earth Observation, AIRCentre 2023

  • CBMina 2021 [Portuguese] - Introução à Geoestatística, CBMina 2021

  • UFMG 2021 [Portuguese] - Introdução à Geoestatística, UFMG 2021

GaussianProcesses.jl

GaussianProcesses.jl - Gaussian process regression and Simple Kriging are essentially two names for the same concept. The derivation of Kriging estimators, however; does not require distributional assumptions. It is a beautiful coincidence that for multivariate Gaussian distributions, Simple Kriging gives the conditional expectation.

KernelFunctions.jl

KernelFunctions.jl - Spatial structure can be represented in many different forms: covariance, variogram, correlogram, etc. Variograms are more general than covariance kernels according to the intrinsic stationary property. This means that there are variogram models with no covariance counterpart. Furthermore, empirical variograms can be easily estimated from the data (in various directions) with an efficient procedure. GeoStats.jl treats variograms as first-class objects.

Interpolations.jl

Interpolations.jl - Kriging and spline interpolation have different purposes, yet these two methods are sometimes listed as competing alternatives. Kriging estimation is about minimizing variance (or estimation error), whereas spline interpolation is about deriving smooth estimators for computer visualization. Kriging is a generalization of splines in which one has the freedom to customize geospatial structure based on data. Besides the estimate itself, Kriging also provides the variance map as a function of point patterns.

ScikitLearn.jl

ScikitLearn.jl - Traditional statistical learning relies on core assumptions that do not hold in geospatial settings (fixed support, i.i.d. samples, ...). Geostatistical learning has been introduced recently as an attempt to push the frontiers of statistical learning with geospatial data.

+Education · GeoStats.jl

Education

We recommend the following educational resources.

Learning resources

Textbooks

Video lectures

  • Júlio Hoffimann - Video lectures with the GeoStats.jl framework.

  • Edward Isaaks - Video lectures on variography, Kriging and related concepts.

  • Jef Caers - Video lectures on two-point and multiple-point methods.

Workshop material

  • UFMG 2024 [Portuguese] - Geociência de Dados na Mineração, UFMG 2024

  • JuliaEO 2024 [English] - Global Workshop on Earth Observation, AIRCentre 2024

  • UFMG 2023 [Portuguese] - Geociência de Dados na Mineração, UFMG 2023

  • JuliaEO 2023 [English] - Global Workshop on Earth Observation, AIRCentre 2023

  • CBMina 2021 [Portuguese] - Introução à Geoestatística, CBMina 2021

  • UFMG 2021 [Portuguese] - Introdução à Geoestatística, UFMG 2021

GaussianProcesses.jl

GaussianProcesses.jl - Gaussian process regression and Simple Kriging are essentially two names for the same concept. The derivation of Kriging estimators, however; does not require distributional assumptions. It is a beautiful coincidence that for multivariate Gaussian distributions, Simple Kriging gives the conditional expectation.

KernelFunctions.jl

KernelFunctions.jl - Spatial structure can be represented in many different forms: covariance, variogram, correlogram, etc. Variograms are more general than covariance kernels according to the intrinsic stationary property. This means that there are variogram models with no covariance counterpart. Furthermore, empirical variograms can be easily estimated from the data (in various directions) with an efficient procedure. GeoStats.jl treats variograms as first-class objects.

Interpolations.jl

Interpolations.jl - Kriging and spline interpolation have different purposes, yet these two methods are sometimes listed as competing alternatives. Kriging estimation is about minimizing variance (or estimation error), whereas spline interpolation is about deriving smooth estimators for computer visualization. Kriging is a generalization of splines in which one has the freedom to customize geospatial structure based on data. Besides the estimate itself, Kriging also provides the variance map as a function of point patterns.

ScikitLearn.jl

ScikitLearn.jl - Traditional statistical learning relies on core assumptions that do not hold in geospatial settings (fixed support, i.i.d. samples, ...). Geostatistical learning has been introduced recently as an attempt to push the frontiers of statistical learning with geospatial data.

diff --git a/dev/resources/publications/index.html b/dev/resources/publications/index.html index 65dac47f..3c4efb1a 100644 --- a/dev/resources/publications/index.html +++ b/dev/resources/publications/index.html @@ -1,2 +1,2 @@ -Publications · GeoStats.jl

Publications

Below is a list of publications made possible with this project:

+Publications · GeoStats.jl

Publications

Below is a list of publications made possible with this project:

diff --git a/dev/transforms/0ed6db2b.png b/dev/transforms/0ed6db2b.png deleted file mode 100644 index 8e771fff..00000000 Binary files a/dev/transforms/0ed6db2b.png and /dev/null differ diff --git a/dev/transforms/38ae3210.png b/dev/transforms/38ae3210.png deleted file mode 100644 index 76c71325..00000000 Binary files a/dev/transforms/38ae3210.png and /dev/null differ diff --git a/dev/transforms/8101e319.png b/dev/transforms/8101e319.png new file mode 100644 index 00000000..24a2717b Binary files /dev/null and b/dev/transforms/8101e319.png differ diff --git a/dev/transforms/9fd0d77f.png b/dev/transforms/9fd0d77f.png deleted file mode 100644 index f8d60e12..00000000 Binary files a/dev/transforms/9fd0d77f.png and /dev/null differ diff --git a/dev/transforms/a557e1fb.png b/dev/transforms/a557e1fb.png new file mode 100644 index 00000000..6633a968 Binary files /dev/null and b/dev/transforms/a557e1fb.png differ diff --git a/dev/transforms/e74f4e73.png b/dev/transforms/e74f4e73.png new file mode 100644 index 00000000..86e33972 Binary files /dev/null and b/dev/transforms/e74f4e73.png differ diff --git a/dev/transforms/index.html b/dev/transforms/index.html index 5d45ca94..d8deb038 100644 --- a/dev/transforms/index.html +++ b/dev/transforms/index.html @@ -111,13 +111,13 @@ Ω = georef(tab, dom) # describe features -describe(values(Ω))
3×7 DataFrame
Rowvariablemeanminmedianmaxnmissingeltype
SymbolFloat64Float64Float64Float64Int64DataType
1a0.4911664.70714e-50.5032520.9994260Float64
2b-0.00730958-3.36640.01031623.650330Float64
3c0.4997440.002397470.5154120.9995390Float64

We can create a pipeline that transforms the features to their normal quantile (or scores):

pipe = Quantile()
+describe(values(Ω))
3×7 DataFrame
Rowvariablemeanminmedianmaxnmissingeltype
SymbolFloat64Float64Float64Float64Int64DataType
1a0.5068660.001295780.5004590.9999140Float64
2b-0.0332988-2.63952-0.06342833.359130Float64
3c0.4936870.0001117760.475510.9991560Float64

We can create a pipeline that transforms the features to their normal quantile (or scores):

pipe = Quantile()
 
 Ω̄, cache = apply(pipe, Ω)
 
 describe(values(Ω̄))
3×7 DataFrame
Rowvariablemeanminmedianmaxnmissingeltype
SymbolFloat64Float64Float64Float64Int64DataType
1a0.00309023-3.090230.001253323.090230Float64
2b0.00309023-3.090230.001253323.090230Float64
3c0.00309023-3.090230.001253323.090230Float64

We can then revert the transform given any new geospatial data in the transformed sample space:

Ωₒ = revert(pipe, Ω̄, cache)
 
-describe(values(Ωₒ))
3×7 DataFrame
Rowvariablemeanminmedianmaxnmissingeltype
SymbolFloat64Float64Float64Float64Int64DataType
1a0.4916570.0004878050.5034940.9991560Float64
2b-0.00434807-3.017260.01100733.252750Float64
3c0.5002410.003116190.5156980.9989290Float64

The Learn transform is another important transform from StatsLearnModels.jl:

StatsLearnModels.LearnType
Learn(train, model, incols => outcols)

Fits the statistical learning model using the input columns, selected by incols, and the output columns, selected by outcols, from the train table.

The column selection can be a single column identifier (index or name), a collection of identifiers or a regular expression (regex).

Examples

Learn(train, model, [1, 2, 3] => "d")
+describe(values(Ωₒ))
3×7 DataFrame
Rowvariablemeanminmedianmaxnmissingeltype
SymbolFloat64Float64Float64Float64Int64DataType
1a0.5073710.002555370.5007690.9993830Float64
2b-0.0309234-2.47855-0.0624363.128320Float64
3c0.4941790.001515590.4765550.9983690Float64

The Learn transform is another important transform from StatsLearnModels.jl:

StatsLearnModels.LearnType
Learn(train, model, incols => outcols)

Fits the statistical learning model using the input columns, selected by incols, and the output columns, selected by outcols, from the train table.

The column selection can be a single column identifier (index or name), a collection of identifiers or a regular expression (regex).

Examples

Learn(train, model, [1, 2, 3] => "d")
 Learn(train, model, [:a, :b, :c] => :d)
 Learn(train, model, ["a", "b", "c"] => 4)
 Learn(train, model, [1, 2, 3] => [:d, :e])
@@ -132,7 +132,7 @@
 fig = Mke.Figure(size = (800, 400))
 viz(fig[1,1], Ω.geometry, color = Ω.Z)
 viz(fig[1,2], Ωr.geometry, color = Ωr.Z)
-fig
Example block output

Geostatistical transforms

Bellow is the current list of transforms that operate on both the geometries and features of geospatial data. They are implemented in the GeoStatsBase.jl package.

UniqueCoords

GeoStatsTransforms.UniqueCoordsType
UniqueCoords(var₁ => agg₁, var₂ => agg₂, ..., varₙ => aggₙ)

Retain locations in data with unique coordinates.

Duplicates of a variable varᵢ are aggregated with aggregation function aggᵢ. If an aggregation function is not defined for variable varᵢ, the default aggregation function will be used. Default aggregation function is mean for continuous variables and first otherwise.

Examples

UniqueCoords(1 => last, 2 => maximum)
+fig
Example block output

Geostatistical transforms

Bellow is the current list of transforms that operate on both the geometries and features of geospatial data. They are implemented in the GeoStatsBase.jl package.

UniqueCoords

GeoStatsTransforms.UniqueCoordsType
UniqueCoords(var₁ => agg₁, var₂ => agg₂, ..., varₙ => aggₙ)

Retain locations in data with unique coordinates.

Duplicates of a variable varᵢ are aggregated with aggregation function aggᵢ. If an aggregation function is not defined for variable varᵢ, the default aggregation function will be used. Default aggregation function is mean for continuous variables and first otherwise.

Examples

UniqueCoords(1 => last, 2 => maximum)
 UniqueCoords(:a => first, :b => minimum)
 UniqueCoords("a" => last, "b" => maximum)
source
# point set with repeated points
 p = rand(Point, 50)
@@ -154,44 +154,44 @@
   
   
     
-      0.584364
-      (x: 0.849658 m, y: 0.136413 m, z: 0.495448 m)
+      0.270833
+      (x: 0.684876 m, y: 0.525404 m, z: 0.175078 m)
     
     
-      0.575938
-      (x: 0.824676 m, y: 0.295841 m, z: 0.174437 m)
+      0.96575
+      (x: 0.553023 m, y: 0.136494 m, z: 0.524255 m)
     
     
-      0.270019
-      (x: 0.921131 m, y: 0.708105 m, z: 0.700846 m)
+      0.142493
+      (x: 0.834673 m, y: 0.340095 m, z: 0.892304 m)
     
     
-      0.946829
-      (x: 0.272472 m, y: 0.120462 m, z: 0.0570065 m)
+      0.630078
+      (x: 0.287108 m, y: 0.238548 m, z: 0.128713 m)
     
     
-      0.650731
-      (x: 0.373669 m, y: 0.892867 m, z: 0.271739 m)
+      0.404306
+      (x: 0.347211 m, y: 0.567902 m, z: 0.608515 m)
     
     
-      0.862176
-      (x: 0.37104 m, y: 0.941841 m, z: 0.2853 m)
+      0.136309
+      (x: 0.626898 m, y: 0.145515 m, z: 0.647534 m)
     
     
-      0.814584
-      (x: 0.571168 m, y: 0.75778 m, z: 0.202956 m)
+      0.377828
+      (x: 0.614886 m, y: 0.565762 m, z: 0.495424 m)
     
     
-      0.564418
-      (x: 0.8186 m, y: 0.929388 m, z: 0.964255 m)
+      0.817192
+      (x: 0.80385 m, y: 0.998143 m, z: 0.362898 m)
     
     
-      0.560871
-      (x: 0.0851548 m, y: 0.893349 m, z: 0.747961 m)
+      0.223346
+      (x: 0.228553 m, y: 0.818193 m, z: 0.380325 m)
     
     
-      0.908497
-      (x: 0.362903 m, y: 0.083284 m, z: 0.343517 m)
+      0.2137
+      (x: 0.716033 m, y: 0.737178 m, z: 0.206582 m)
     
     
       ⋮
@@ -218,44 +218,44 @@
   
   
     
-      0.354843
-      (x: 0.849658 m, y: 0.136413 m, z: 0.495448 m)
+      0.470989
+      (x: 0.684876 m, y: 0.525404 m, z: 0.175078 m)
     
     
-      0.677913
-      (x: 0.824676 m, y: 0.295841 m, z: 0.174437 m)
+      0.50074
+      (x: 0.553023 m, y: 0.136494 m, z: 0.524255 m)
     
     
-      0.271829
-      (x: 0.921131 m, y: 0.708105 m, z: 0.700846 m)
+      0.127838
+      (x: 0.834673 m, y: 0.340095 m, z: 0.892304 m)
     
     
-      0.683211
-      (x: 0.272472 m, y: 0.120462 m, z: 0.0570065 m)
+      0.371302
+      (x: 0.287108 m, y: 0.238548 m, z: 0.128713 m)
     
     
-      0.639082
-      (x: 0.373669 m, y: 0.892867 m, z: 0.271739 m)
+      0.544521
+      (x: 0.347211 m, y: 0.567902 m, z: 0.608515 m)
     
     
-      0.597775
-      (x: 0.37104 m, y: 0.941841 m, z: 0.2853 m)
+      0.436964
+      (x: 0.626898 m, y: 0.145515 m, z: 0.647534 m)
     
     
-      0.582003
-      (x: 0.571168 m, y: 0.75778 m, z: 0.202956 m)
+      0.499013
+      (x: 0.614886 m, y: 0.565762 m, z: 0.495424 m)
     
     
-      0.489127
-      (x: 0.8186 m, y: 0.929388 m, z: 0.964255 m)
+      0.761838
+      (x: 0.80385 m, y: 0.998143 m, z: 0.362898 m)
     
     
-      0.344468
-      (x: 0.0851548 m, y: 0.893349 m, z: 0.747961 m)
+      0.489247
+      (x: 0.228553 m, y: 0.818193 m, z: 0.380325 m)
     
     
-      0.506361
-      (x: 0.362903 m, y: 0.083284 m, z: 0.343517 m)
+      0.294474
+      (x: 0.716033 m, y: 0.737178 m, z: 0.206582 m)
     
     
       ⋮
@@ -281,7 +281,7 @@ 

Detrend

Example block output

Potrace

GeoStatsTransforms.PotraceType
Potrace(mask; [ϵ])
+fig
Example block output

Potrace

GeoStatsTransforms.PotraceType
Potrace(mask; [ϵ])
 Potrace(mask, var₁ => agg₁, ..., varₙ => aggₙ; [ϵ])

Trace polygons on 2D image data with Selinger's Potrace algorithm.

The categories stored in column mask are converted into binary masks, which are then traced into multi-polygons. When provided, the option ϵ is forwarded to Selinger's simplification algorithm.

Duplicates of a variable varᵢ are aggregated with aggregation function aggᵢ. If an aggregation function is not defined for variable varᵢ, the default aggregation function will be used. Default aggregation function is mean for continuous variables and first otherwise.

Examples

Potrace(:mask, ϵ=0.1)
 Potrace(1, 1 => last, 2 => maximum)
 Potrace(:mask, :a => first, :b => minimum)
@@ -329,7 +329,7 @@ 

Detrend

Example block output
GeoStatsTransforms.GSCType
GSC(k, m; σ=1.0, tol=1e-4, maxiter=10, weights=nothing, as=:CLUSTER)

A transform for partitioning geospatial data into k clusters using Geostatistical Spectral Clustering (GSC).

Parameters

  • k - Desired number of clusters
  • m - Multiplicative factor for adjacent weights
  • σ - Standard deviation for exponential model (default to 1.0)
  • tol - Tolerance of k-means algorithm (default to 1e-4)
  • maxiter - Maximum number of iterations (default to 10)
  • weights - Dictionary with weights for each attribute (default to nothing)
  • as - Cluster column name

References

Notes

  • The algorithm implemented here is slightly different than the algorithm

described in Romary et al. 2015. Instead of setting Wᵢⱼ = 0 when i <-/-> j, we simply magnify the weight by a multiplicative factor Wᵢⱼ *= m when i <–> j. This leads to dense matrices but also better results in practice.

source
𝒞 = Ω |> GSC(50, 2.0)
 
-viz(𝒞.geometry, color = 𝒞.CLUSTER)
Example block output
GeoStatsTransforms.SLICType
SLIC(k, m; tol=1e-4, maxiter=10, weights=nothing, as=:CLUSTER)

A transform for clustering geospatial data into approximately k clusters using Simple Linear Iterative Clustering (SLIC). The transform produces clusters of samples that are spatially connected based on a distance dₛ and that, at the same time, are similar in terms of vars with distance dᵥ. The tradeoff is controlled with a hyperparameter parameter m in an additive model dₜ = √(dᵥ² + m²(dₛ/s)²).

Parameters

  • k - Approximate number of clusters
  • m - Hyperparameter of SLIC model
  • tol - Tolerance of k-means algorithm (default to 1e-4)
  • maxiter - Maximum number of iterations (default to 10)
  • weights - Dictionary with weights for each attribute (default to nothing)
  • as - Cluster column name

References

source
𝒞 = Ω |> SLIC(50, 0.01)
+viz(𝒞.geometry, color = 𝒞.CLUSTER)
Example block output
GeoStatsTransforms.SLICType
SLIC(k, m; tol=1e-4, maxiter=10, weights=nothing, as=:CLUSTER)

A transform for clustering geospatial data into approximately k clusters using Simple Linear Iterative Clustering (SLIC). The transform produces clusters of samples that are spatially connected based on a distance dₛ and that, at the same time, are similar in terms of vars with distance dᵥ. The tradeoff is controlled with a hyperparameter parameter m in an additive model dₜ = √(dᵥ² + m²(dₛ/s)²).

Parameters

  • k - Approximate number of clusters
  • m - Hyperparameter of SLIC model
  • tol - Tolerance of k-means algorithm (default to 1e-4)
  • maxiter - Maximum number of iterations (default to 10)
  • weights - Dictionary with weights for each attribute (default to nothing)
  • as - Cluster column name

References

source
𝒞 = Ω |> SLIC(50, 0.01)
 
 viz(𝒞.geometry, color = 𝒞.CLUSTER)
Example block output

Interpolate

GeoStatsTransforms.InterpolateType
Interpolate(domain, vars₁ => model₁, ..., varsₙ => modelₙ; [parameters])
 Interpolate([g₁, g₂, ..., gₙ], vars₁ => model₁, ..., varsₙ => modelₙ; [parameters])

Interpolate geospatial data on given domain or vector of geometries [g₁, g₂, ..., gₙ], using geostatistical models model₁, ..., modelₙ for variables vars₁, ..., varsₙ.

Interpolate(domain, model=NN(); [parameters])
@@ -356,4 +356,4 @@ 

Detrend

Simulate nreals realizations of variable parent with geostatistical process process, and each child variable varsᵢ with process map procmapᵢ, over given domain.

The process map must be an iterable of pairs of the form: value => process. Each process in the map is related to a value of the parent realization, therefore the values of the child variables will be chosen according to the values of the corresponding parent realization.

The parameters are forwarded to the rand method of the geostatistical processes.

Examples

parent = QuiltingProcess(trainimg, (30, 30))
 child0 = GaussianProcess(SphericalVariogram(range=20.0, sill=0.2))
 child1 = GaussianProcess(SphericalVariogram(MetricBall((200.0, 20.0))))
-transform = CookieCutter(domain, :parent => parent, :child => [0 => child0, 1 => child1])
source
+transform = CookieCutter(domain, :parent => parent, :child => [0 => child0, 1 => child1])
source
diff --git a/dev/validation/index.html b/dev/validation/index.html index 2f484a25..1d0fab0a 100644 --- a/dev/validation/index.html +++ b/dev/validation/index.html @@ -24,8 +24,8 @@ # estimate of generalization error ϵ̂ = cverror((model, feats => label), Ωₛ, bcv)
Dict{Symbol, Float64} with 1 entry:
-  :crop => 0.229619

We can unhide the labels in the target domain and compute the actual error for comparison:

# train in Ωₛ and predict in Ωₜ
+  :crop => 0.233841

We can unhide the labels in the target domain and compute the actual error for comparison:

# train in Ωₛ and predict in Ωₜ
 Ω̂ₜ = Ωₜ |> Learn(Ωₛ, model, feats => label)
 
 # actual error of the model
-ϵ = mean(loss.(Ωₜ.crop, Ω̂ₜ.crop))
0.23444760905411482

Below is the list of currently implemented validation methods.

Leave-one-out

GeoStatsValidation.LeaveOneOutType
LeaveOneOut(; loss=Dict())

Leave-one-out validation. Optionally, specify loss function from LossFunctions.jl for some of the variables.

References

source

Leave-ball-out

GeoStatsValidation.LeaveBallOutType
LeaveBallOut(ball; loss=Dict())

Leave-ball-out (a.k.a. spatial leave-one-out) validation. Optionally, specify loss function from the LossFunctions.jl package for some of the variables.

LeaveBallOut(radius; loss=Dict())

By default, use Euclidean ball of given radius in space.

References

source

K-fold

GeoStatsValidation.KFoldValidationType
KFoldValidation(k; shuffle=true, loss=Dict())

k-fold cross-validation. Optionally, shuffle the data, and specify loss function from LossFunctions.jl for some of the variables.

References

source

Block

GeoStatsValidation.BlockValidationType
BlockValidation(sides; loss=Dict())

Cross-validation with blocks of given sides. Optionally, specify loss function from LossFunctions.jl for some of the variables. If only one side is provided, then blocks become cubes.

References

source

Weighted

GeoStatsValidation.WeightedValidationType
WeightedValidation(weighting, folding; lambda=1.0, loss=Dict())

An error estimation method which samples are weighted with weighting method and split into folds with folding method. Weights are raised to lambda power in [0,1]. Optionally, specify loss function from LossFunctions.jl for some of the variables.

References

source

Density-ratio

GeoStatsValidation.DensityRatioValidationType
DensityRatioValidation(k; [parameters])

Density ratio validation where weights are first obtained with density ratio estimation, and then used in k-fold weighted cross-validation.

Parameters

  • shuffle - Shuffle the data before folding (default to true)
  • estimator - Density ratio estimator (default to LSIF())
  • optlib - Optimization library (default to default_optlib(estimator))
  • lambda - Power of density ratios (default to 1.0)

Please see DensityRatioEstimation.jl for a list of supported estimators.

References

source
+ϵ = mean(loss.(Ωₜ.crop, Ω̂ₜ.crop))
0.23619647229300955

Below is the list of currently implemented validation methods.

Leave-one-out

GeoStatsValidation.LeaveOneOutType
LeaveOneOut(; loss=Dict())

Leave-one-out validation. Optionally, specify loss function from LossFunctions.jl for some of the variables.

References

source

Leave-ball-out

GeoStatsValidation.LeaveBallOutType
LeaveBallOut(ball; loss=Dict())

Leave-ball-out (a.k.a. spatial leave-one-out) validation. Optionally, specify loss function from the LossFunctions.jl package for some of the variables.

LeaveBallOut(radius; loss=Dict())

By default, use Euclidean ball of given radius in space.

References

source

K-fold

GeoStatsValidation.KFoldValidationType
KFoldValidation(k; shuffle=true, loss=Dict())

k-fold cross-validation. Optionally, shuffle the data, and specify loss function from LossFunctions.jl for some of the variables.

References

source

Block

GeoStatsValidation.BlockValidationType
BlockValidation(sides; loss=Dict())

Cross-validation with blocks of given sides. Optionally, specify loss function from LossFunctions.jl for some of the variables. If only one side is provided, then blocks become cubes.

References

source

Weighted

GeoStatsValidation.WeightedValidationType
WeightedValidation(weighting, folding; lambda=1.0, loss=Dict())

An error estimation method which samples are weighted with weighting method and split into folds with folding method. Weights are raised to lambda power in [0,1]. Optionally, specify loss function from LossFunctions.jl for some of the variables.

References

source

Density-ratio

GeoStatsValidation.DensityRatioValidationType
DensityRatioValidation(k; [parameters])

Density ratio validation where weights are first obtained with density ratio estimation, and then used in k-fold weighted cross-validation.

Parameters

  • shuffle - Shuffle the data before folding (default to true)
  • estimator - Density ratio estimator (default to LSIF())
  • optlib - Optimization library (default to default_optlib(estimator))
  • lambda - Power of density ratios (default to 1.0)

Please see DensityRatioEstimation.jl for a list of supported estimators.

References

source
diff --git a/dev/variography/empirical/index.html b/dev/variography/empirical/index.html index a0e27bfc..f507ee4d 100644 --- a/dev/variography/empirical/index.html +++ b/dev/variography/empirical/index.html @@ -25,4 +25,4 @@ fig = Mke.Figure() ax = Mke.PolarAxis(fig[1,1], title = "Varioplane") Mke.plot!(ax, γ) -figExample block output +figExample block output diff --git a/dev/variography/fitting/index.html b/dev/variography/fitting/index.html index fded362d..4e0006a0 100644 --- a/dev/variography/fitting/index.html +++ b/dev/variography/fitting/index.html @@ -23,4 +23,4 @@ Mke.plot(g) Mke.plot!(γ, maxlag = 25.) Mke.current_figure()Example block output

Methods

Weighted least squares

GeoStatsFunctions.WeightedLeastSquaresType
WeightedLeastSquares()
-WeightedLeastSquares(w)

Fit theoretical variogram using weighted least squares with weighting function w (e.g. h -> 1/h). If no weighting function is provided, bin counts of empirical variogram are normalized and used as weights.

source
+WeightedLeastSquares(w)

Fit theoretical variogram using weighted least squares with weighting function w (e.g. h -> 1/h). If no weighting function is provided, bin counts of empirical variogram are normalized and used as weights.

source diff --git a/dev/variography/theoretical/index.html b/dev/variography/theoretical/index.html index 37904cec..4175eef6 100644 --- a/dev/variography/theoretical/index.html +++ b/dev/variography/theoretical/index.html @@ -58,4 +58,4 @@ cₒ # matrix nugget
2×2 Matrix{Float64}:
  5.0  1.0
- 1.0  7.0
c # matrix coefficients
([1.0 0.0; 0.0 1.0], [2.0 0.5; 0.5 3.0])
g # normalized structures
(GaussianVariogram(sill: 1, nugget: 0, range: 1.0 m, distance: Euclidean), ExponentialVariogram(sill: 1, nugget: 0, range: 1.0 m, distance: Euclidean))
+ 1.0 7.0
c # matrix coefficients
([1.0 0.0; 0.0 1.0], [2.0 0.5; 0.5 3.0])
g # normalized structures
(GaussianVariogram(sill: 1, nugget: 0, range: 1.0 m, distance: Euclidean), ExponentialVariogram(sill: 1, nugget: 0, range: 1.0 m, distance: Euclidean))
diff --git a/dev/visualization/index.html b/dev/visualization/index.html index da8beeeb..2387eacc 100644 --- a/dev/visualization/index.html +++ b/dev/visualization/index.html @@ -17,4 +17,4 @@ hscatter(fig[1,2], 𝒮, :Z, :Z, lag=20) hscatter(fig[2,1], 𝒮, :Z, :Z, lag=40) hscatter(fig[2,2], 𝒮, :Z, :Z, lag=60) -figExample block output

PairPlots.jl

The PairPlots.jl package provides the pairplot function that can be used with any table, including tables of attributes obtained with the values function.

Biplots.jl

The Biplot.jl package provides 2D and 3D statistical biplots.

+figExample block output

PairPlots.jl

The PairPlots.jl package provides the pairplot function that can be used with any table, including tables of attributes obtained with the values function.

Biplots.jl

The Biplot.jl package provides 2D and 3D statistical biplots.