Learn R Programming

spatstat (version 1.55-0)

superimpose: Superimpose Several Geometric Patterns

Description

Superimpose any number of point patterns or line segment patterns.

Usage

superimpose(…)

# S3 method for ppp superimpose(…, W=NULL, check=TRUE)

# S3 method for psp superimpose(…, W=NULL, check=TRUE)

# S3 method for splitppp superimpose(…, W=NULL, check=TRUE)

# S3 method for ppplist superimpose(…, W=NULL, check=TRUE)

# S3 method for default superimpose(…)

Arguments

Any number of arguments, each of which represents either a point pattern or a line segment pattern or a list of point patterns.

W

Optional. Data determining the window for the resulting pattern. Either a window (object of class "owin", or something acceptable to as.owin), or a function which returns a window, or one of the strings "convex", "rectangle", "bbox" or "none".

check

Logical value (passed to ppp or psp as appropriate) determining whether to check the geometrical validity of the resulting pattern.

Value

For superimpose.ppp, a point pattern (object of class "ppp"). For superimpose.default, either a point pattern (object of class "ppp") or a list(x,y). For superimpose.psp, a line segment pattern (object of class "psp").

Details

This function is used to superimpose several geometric patterns of the same kind, producing a single pattern of the same kind.

The function superimpose is generic, with methods for the class ppp of point patterns, the class psp of line segment patterns, and a default method. There is also a method for lpp, described separately in superimpose.lpp.

The dispatch to a method is initially determined by the class of the first argument in .

  • default: If the first argument is not an object of class ppp or psp, then the default method superimpose.default is executed. This checks the class of all arguments, and dispatches to the appropriate method. Arguments of class ppplist can be handled.

  • ppp: If the first argument is an object of class ppp then the method superimpose.ppp is executed. All arguments in must be either ppp objects or lists with components x and y. The result will be an object of class ppp.

  • psp: If the first argument is an object of class psp then the psp method is dispatched and all arguments must be psp objects. The result is a psp object.

The patterns are not required to have the same window of observation.

The window for the superimposed pattern is controlled by the argument W.

  • If W is a window (object of class "W" or something acceptable to as.owin) then this determines the window for the superimposed pattern.

  • If W is NULL, or the character string "none", then windows are extracted from the geometric patterns, as follows. For superimpose.psp, all arguments are line segment patterns (objects of class "psp"); their observation windows are extracted; the union of these windows is computed; and this union is taken to be the window for the superimposed pattern. For superimpose.ppp and superimpose.default, the arguments are inspected, and any arguments which are point patterns (objects of class "ppp") are selected; their observation windows are extracted, and the union of these windows is taken to be the window for the superimposed point pattern. For superimpose.default if none of the arguments is of class "ppp" then no window is computed and the result of superimpose is a list(x,y).

  • If W is one of the strings "convex", "rectangle" or "bbox" then a window for the superimposed pattern is computed from the coordinates of the points or the line segments as follows.

    "bbox":

    the bounding box of the points or line segments (see bounding.box.xy);

    "convex":

    the Ripley-Rasson estimator of a convex window (see ripras);

    "rectangle":

    the Ripley-Rasson estimator of a rectangular window (using ripras with argument shape="rectangle").

  • If W is a function, then this function is used to compute a window for the superimposed pattern from the coordinates of the points or the line segments. The function should accept input of the form list(x,y) and is expected to return an object of class "owin". Examples of such functions are ripras and bounding.box.xy.

The arguments may be marked patterns. The marks of each component pattern must have the same format. Numeric and character marks may be ``mixed''. If there is such mixing then the numeric marks are coerced to character in the combining process. If the mark structures are all data frames, then these data frames must have the same number of columns and identical column names.

If the arguments are given in the form name=value, then the names will be used as an extra column of marks attached to the elements of the corresponding patterns.

See Also

superimpose.lpp, concatxy, quadscheme.

Examples

Run this code
# NOT RUN {
  # superimposing point patterns
  p1  <- runifrect(30)
  p2  <- runifrect(42)
  s1  <- superimpose(p1,p2) # Unmarked pattern.
  p3  <- list(x=rnorm(20),y=rnorm(20))
  s2  <- superimpose(p3,p2,p1) # Default method gets called.
  s2a <- superimpose(p1,p2,p3) # Same as s2 except for order of points.
  s3  <- superimpose(clyde=p1,irving=p2) # Marked pattern; marks a factor
                                         # with levels "clyde" and "irving";
                                         # warning given.
  marks(p1) <- factor(sample(LETTERS[1:3],30,TRUE))
  marks(p2) <- factor(sample(LETTERS[1:3],42,TRUE))
  s5  <- superimpose(clyde=p1,irving=p2) # Marked pattern with extra column
  marks(p2) <- data.frame(a=marks(p2),b=runif(42))
  s6  <- try(superimpose(p1,p2)) # Gives an error.
  marks(p1) <- data.frame(a=marks(p1),b=1:30)
  s7  <- superimpose(p1,p2) # O.K.

  # how to make a 2-type point pattern with types "a" and "b"
  u <- superimpose(a = rpoispp(10), b = rpoispp(20))

  # how to make a 2-type point pattern with types 1 and 2
  u <- superimpose("1" = rpoispp(10), "2" = rpoispp(20))
 
  # superimposing line segment patterns
  X <- rpoisline(10)
  Y <- as.psp(matrix(runif(40), 10, 4), window=owin())
  Z <- superimpose(X, Y)

  # being unreasonable
  
# }
# NOT RUN {
   if(FALSE) {
    crud <- try(superimpose(p1,p2,X,Y)) # Gives an error, of course!
   }
  
# }

Run the code above in your browser using DataLab