spJitter  R Documentation 
Randomly perturb (‘jitter’) the coordinates of spatial points.
spJitter(
points,
candi,
x.max,
x.min,
y.max,
y.min,
which.point,
cellsize,
verbose = FALSE
)
points 
Data frame or matrix with three columns in the following order: 
candi 
Data frame or matrix with the candidate locations for the jittered points. 
x.max, x.min, y.max, y.min 
Numeric value defining the minimum and maximum quantity of random noise to
be added to the projected x and ycoordinates. The minimum quantity should be equal to, at least, the
minimum distance between two neighbouring candidate points. The units are the same as of the projected
x and ycoordinates. If missing, they are estimated from 
which.point 
Integer values defining which point should be perturbed. 
cellsize 
Vector with two positive numeric values defining the spacing in the x and ycoordinates
between the candidate locations in 
verbose 
(Optional) Logical for printing messages about the progress of the optimization. Defaults to

There are multiple mechanism to generate a new sample configuration out of an existing one. The main step consists of randomly perturbing the coordinates of a single sample, a process known as ‘jittering’. These mechanisms can be classified based on how the set of candidate locations for the samples is defined. For example, one could use an infinite set of candidate locations, that is, any location in the spatial domain can be selected as a new sample location after a sample is jittered. All that is needed is a polygon indicating the boundary of the spatial domain. This method is more computationally demanding because every time an existing sample is jittered, it is necessary to check if the new sample location falls in spatial domain.
Another approach consists of using a finite set of candidate locations for the samples. A finite set of candidate locations is created by discretising the spatial domain, that is, creating a fine (regular) grid of points that serve as candidate locations for the jittered sample. This is a less computationally demanding jittering method because, by definition, the new sample location will always fall in the spatial domain.
Using a finite set of candidate locations has two important inconveniences. First, not all locations in the spatial domain can be selected as the new location for a jittered sample. Second, when a sample is jittered, it may be that the new location already is occupied by another sample. If this happens, another location has to be iteratively sought for, say, as many times as the size of the sample configuration. In general, the larger the size of the sample configuration, the more likely it is that the new location already is occupied by another sample. If a solution is not found in a reasonable time, the the sample selected to be jittered is kept in its original location. Such a procedure clearly is suboptimal.
spsann uses a more elegant method which is based on using a finite set of candidate locations
coupled with a form of twostage random sampling as implemented in spcosa::spsample()
.
Because the candidate locations are placed on a finite regular grid, they can be taken as the
centre nodes of a finite set of grid cells (or pixels of a raster image). In the first stage, one
of the “grid cells” is selected with replacement, i.e. independently of already being
occupied by another sample. The new location for the sample chosen to be jittered is selected
within that “grid cell” by simple random sampling. This method guarantees that virtually
any location in the spatial domain can be selected. It also discards the need to check if the new
location already is occupied by another sample, speeding up the computations when compared to the
first two approaches.
A matrix with the jittered projected coordinates of the points.
spsann always computes the distance between two locations (points) as the Euclidean distance between them. This computation requires the optimization to operate in the twodimensional Euclidean space, i.e. the coordinates of the sample, candidate and evaluation locations must be Cartesian coordinates, generally in metres or kilometres. spsann has no mechanism to check if the coordinates are Cartesian: you are the sole responsible for making sure that this requirement is attained.
Alessandro SamuelRosa alessandrosamuelrosa@gmail.com
Edzer Pebesma, Jon Skoien with contributions from Olivier Baume, A. Chorti, D.T. Hristopulos, S.J. Melles
and G. Spiliopoulos (2013). intamapInteractive: procedures for automated interpolation  methods
only to be used interactively, not included in intamap
package. R package version 1.110.
van Groenigen, J.W. Constrained optimization of spatial sampling: a geostatistical approach. Wageningen: Wageningen University, p. 148, 1999.
Walvoort, D. J. J.; Brus, D. J.; de Gruijter, J. J. An R package for spatial coverage sampling and random sampling from compact geographical strata by kmeans. Computers & Geosciences. v. 36, p. 12611267, 2010.
ssaOptim
, zerodist
, jitter
,
[jitter2d](https://CRAN.Rproject.org/package=geoR)
.
require(sp)
data(meuse.grid)
meuse.grid < as.matrix(meuse.grid[, 1:2])
meuse.grid < matrix(cbind(1:dim(meuse.grid)[1], meuse.grid), ncol = 3)
pts1 < sample(c(1:dim(meuse.grid)[1]), 155)
pts2 < meuse.grid[pts1, ]
pts3 < spJitter(points = pts2, candi = meuse.grid, x.min = 40,
x.max = 100, y.min = 40, y.max = 100,
which.point = 10, cellsize = 40)
plot(meuse.grid[, 2:3], asp = 1, pch = 15, col = "gray")
points(pts2[, 2:3], col = "red", cex = 0.5)
points(pts3[, 2:3], pch = 19, col = "blue", cex = 0.5)
#' Cluster of points
pts1 < c(1:55)
pts2 < meuse.grid[pts1, ]
pts3 < spJitter(points = pts2, candi = meuse.grid, x.min = 40,
x.max = 80, y.min = 40, y.max = 80,
which.point = 1, cellsize = 40)
plot(meuse.grid[, 2:3], asp = 1, pch = 15, col = "gray")
points(pts2[, 2:3], col = "red", cex = 0.5)
points(pts3[, 2:3], pch = 19, col = "blue", cex = 0.5)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.