The goal of spatialising is to perform simulations of binary spatial raster data using the Ising model.
You can install the development version of spatialising from GitHub with:
# install.packages("devtools")
devtools::install_github("Nowosad/spatialising")
The spatialising package expects raster data with just two values,
-1
and 1
. Here, we will use the r_start.tif
file built in the
package.
library(spatialising)
library(terra)
r1 = rast(system.file("raster/r_start.tif", package = "spatialising"))
plot(r1)
Most of the raster area is covered with the value of 1
, and just about
5% of the area is covered with the value of -1
. The main function in
this package is kinetic_ising()
. It accepts the input raster and at
least two additional parameters: B
– representing external pressure
and J
– representing the strength of the local autocorrelation
tendency. The output is a raster modified based on the provided
parameters.
r2 = kinetic_ising(r1, B = -0.3, J = 0.7)
plot(r2)
The kinetic_ising()
function also has a fourth argument called
updates
. By default, it equals to 1
, returning just one raster as
the output. However, when given a value larger than one, it returns many
rasters. Each new raster is the next iteration of the Ising model of the
previous one.
ri1 = kinetic_ising(r1, B = -0.3, J = 0.7, updates = 3)
plot(ri1, nr = 1)
Obtained results depend greatly on the set values of B
and J
. In the
example above, values of B = -0.3
and J = 0.7
resulted in expansion
of the yellow category (more -1
values).
On the other hand, values of B = 0.3
and J = 0.7
give a somewhat
opposite result with less cell with the yellow category:
ri2 = kinetic_ising(r1, B = 0.3, J = 0.7, updates = 3)
plot(ri2, nr = 1)
Finally, in the last example, we set values of B = -0.3
and J = 0.4
.
Note that the result shows much more prominent data change, with a
predominance of the yellow category only after a few updates.
ri3 = kinetic_ising(r1, B = -0.3, J = 0.4, updates = 3)
plot(ri3, nr = 1)
Read the related article:
Contributions to this package are welcome - let us know if you have any suggestions or spotted a bug. The preferred method of contribution is through a GitHub pull request. Feel also free to contact us by creating an issue.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.