Learn R Programming

spatstat (version 1.23-1)

discretise: Safely Convert Point Pattern Window to Binary Mask

Description

Given a point pattern, discretise its window by converting it to a binary pixel mask, adjusting the mask so that it still contains all the points.

Usage

discretise(X, eps = NULL, dimyx = NULL, xy = NULL)

Arguments

X
A point pattern (object of class "ppp") to be converted.
eps
(optional) width and height of each pixel
dimyx
(optional) pixel array dimensions
xy
(optional) pixel coordinates

Value

  • A point pattern (object of class "ppp"), identical to X, except that its observation window has been converted to one of type mask.

Error checking

Before doing anything, discretise checks that all the points of the pattern are actually inside the original window. This is guaranteed to be the case if the pattern was constructed using ppp or as.ppp. However anomalies are possible if the point pattern was created or manipulated inappropriately. These will cause an error.

Details

This function modifies the point pattern X by converting its observation window X$window to a binary pixel image (a window of type "mask"). It ensures that no points of X are deleted by the discretisation.

The window is first discretised using as.mask. It can happen that points of X that were inside the original window may fall outside the new mask. The discretise function corrects this by augmenting the mask (so that the mask includes any pixel that contains a point of the pattern).

The arguments eps, dimyx and xy control the fineness of the pixel array. They are passed to as.mask. If eps, dimyx and xy are all absent or NULL, and if the window of X is of type "mask" to start with, then discretise(X) returns X unchanged.

See as.mask for further details about the arguments eps, dimyx, and xy, and the process of converting a window to one of type mask.

See Also

as.mask

Examples

Run this code
data(demopat)
  X <- demopat
  plot(X, main="original pattern")
  Y <- discretise(X, dimyx=50)
  plot(Y, main="discretise(X)")
  stopifnot(X$n == Y$n)

  # what happens if we just convert the window to a mask?
  W <- X$window
  M <- as.mask(W, dimyx=50)
  plot(M, main="window of X converted to mask")
  plot(X, add=TRUE, pch=16)
  plot(X[M], add=TRUE, pch=1, cex=1.5)
  XM <- X[M]
  cat(paste(X$n - XM$n, "points of X lie outside M
"))

Run the code above in your browser using DataLab