R: Coercion between sp objects and spatstat ppp objects

as.ppp {maptools} | R Documentation

## Coercion between sp objects and spatstat ppp objects

### Description

Functions to convert between spatstats planar point pattern (`ppp`) format and sps `SpatialPoints` and `SpatialPointsDataFrame` as well as one-way conversion from `SpatialGridDataFrame` to `ppp`. S4-style `as()` coercion can be used as well.

### Usage

    as.ppp.SpatialPoints(X)
    as.ppp.SpatialPointsDataFrame(X)
    as.SpatialPoints.ppp(from)
    as.SpatialPointsDataFrame.ppp(from)
    as.SpatialGridDataFrame.ppp(from)

### Arguments

`from, X` | object to coerce from

### Details

The main conversion is between sps `SpatialPoints`/`SpatialPointsDataFrame` and spatstats `ppp`. Conversion between `SpatialGridDataFrame` and `ppp` should rarely be used; using `as.owin.SpatialGridDataFrame` is more transparent.

### Methods

coerce

  `signature(from = "SpatialPoints", to = "ppp")`

coerce

  `signature(from = "SpatialPointsDataFrame", to = "ppp")`

coerce

  `signature(from = "ppp", to = "SpatialGridDataFrame")`

coerce

  `signature(from = "ppp", to = "SpatialPointsDataFrame")`

coerce

  `signature(from = "ppp", to = "SpatialPoints")`

### Warning

In spatstat all spatial objects are assumed to be planar. This means that spatstat is not designed to work directly with geographic (longitude and latitude) coordinates. If a sp object is declared to have geographic (unprojected) coordinates maptools refuses to convert directly to spatstat format. Rather, these should be projected first using e.g. `spTransform`. If you know what you are doing, and really want to force coercion, you can overwrite the `proj4string` of the sp object with `NA`, `proj4string(x) <- CRS(NA)`, which will fool the system to think that the data is in local planar coordinates. This is probably not a good idea!

### Note

The `ppp` format requires an observation window which is the sampling region. The sp formats contain no such information and by default the bounding box of the points is simply used. This is almost never the correct thing to do! Rather, information about the sampling region should be converted into spatstats `owin` format and assigned as the observation window. Usually conversion from `ppp` to sp format simply discards the `owin`. However, `as.SpatialGridDataFrame.ppp` actually first discards the points(!), second checks that the corresponding `owin` is in a grid format (matrix of TRUE/FALSE for inside/outside sampling region), and finally converts the TRUE/FALSE grid to a `SpatialGridDataFrame`.

### Author(s)

Edzer Pebesma edzer.pebesma@uni-muenster.de, Roger Bivand

### Examples

    run <- FALSE
    if (require(spatstat, quietly=TRUE)) run <- TRUE
    if (run) {
    ## Convert SpatialPointsDataFrame into a marked ppp
    data(meuse)
    coordinates(meuse) = ~x+y
    meuse_ppp <- as(meuse, "ppp")
    meuse_ppp # Window is the bounding rectangle
    }
    if (run) {
    plot(meuse_ppp, which.marks = "zinc")
    }
    if (run) {
    ## Convert SpatialPoints into an unmarked ppp
    meuse2 <- as(meuse, "SpatialPoints")
    as(meuse2, "ppp")
    }
    if (run) {
    ## Get sampling region in grid format and assign it as observation window
    data(meuse.grid)
    gridded(meuse.grid) <- ~x+y
    mg_owin <- as(meuse.grid, "owin")
    Window(meuse_ppp) <- mg_owin
    meuse_ppp # Window is now a binary image mask (TRUE/FALSE grid)
    }
    if (run) {
    plot(meuse_ppp, which.marks = "zinc")
    }
    if (run) {
    ## Convert marked ppp back to SpatialPointsDataFrame
    rev_ppp_SPDF <- as.SpatialPointsDataFrame.ppp(meuse_ppp)
    summary(rev_ppp_SPDF)
    }
    if (run) {
    ## Convert marked ppp back to SpatialPoints (discarding marks)
    rev_ppp_SP <- as.SpatialPoints.ppp(meuse_ppp)
    summary(rev_ppp_SP)
    }
    if (run) {
    ## Convert marked ppp back to SpatialGridDataFrame (extracting the window grid)
    rev_ppp_SGDF <- as.SpatialGridDataFrame.ppp(meuse_ppp)
    summary(rev_ppp_SGDF)
    }

[Package maptools version 0.9-9 Index]