1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
\name{as.owin}
\alias{as.owin.SpatialGridDataFrame}
\alias{coerce,SpatialGridDataFrame,owin-method}
\alias{as.owin.SpatialPixelsDataFrame}
\alias{coerce,SpatialPixelsDataFrame,owin-method}
\alias{as.owin.SpatialPolygons}
\alias{coerce,SpatialPolygons,owin-method}
\alias{as.SpatialPolygons.owin}
\alias{coerce,owin,SpatialPolygons-method}
\title{Coercion between sp objects and spatstat owin objects}
\description{
Functions to convert between \pkg{spatstat}s observation window (\code{owin})
format and various \pkg{sp} formats. S4-style \code{as()} coercion can be used
as well.
}
\section{Methods}{
\describe{
\item{coerce}{\code{signature(from = "SpatialPolygons", to = "owin")}}
\item{coerce}{\code{signature(from = "SpatialPixelsDataFrame", to = "owin")}}
\item{coerce}{\code{signature(from = "SpatialGridDataFrame", to = "owin")}}
\item{coerce}{\code{signature(from = "owin", to = "SpatialPolygons")}}
}
}
\usage{
as.owin.SpatialPolygons(W, \dots, fatal)
as.owin.SpatialGridDataFrame(W, \dots, fatal)
as.owin.SpatialPixelsDataFrame(W, \dots, fatal)
as.SpatialPolygons.owin(x)
}
\arguments{
\item{W}{\code{SpatialPolygons} object to coerce to \code{owin}}
\item{x}{\code{owin} object to coerce to \code{SpatialPolygons} format}
\item{\dots}{ignored}
\item{fatal}{formal coercion argument; ignored}
}
\section{Warning}{
In \pkg{spatstat} all spatial objects are assumed to be planar. This means
that \pkg{spatstat} is not designed to work directly with geographic
(longitude and latitude) coordinates. If a \pkg{sp} object is declared to
have geographic (unprojected) coordinates \pkg{maptools} refuses to convert
directly to \pkg{spatstat} format. Rather, these should be projected first
using e.g. \code{\link[sp]{spTransform}}. If you know what you are doing, and
really want to force coercion, you can overwrite the \code{proj4string} of the
\pkg{sp} object with an empty string, \code{proj4string(x) <- ""}, which
will fool the system to think that the data is in local planar coordinates.
This is probably not a good idea!
}
\details{An observation window in \pkg{spatstat} defines a planar region. It is
typically used to represent a sampling region. It comes in three different
formats: a simple rectangle, a polygon (vector format) or a binary mask (TRUE/FALSE grid; raster format). These can all be coerced to polygonal form internally in
\pkg{spatstat} and then converted to \code{SpatialPolygons}, which is what
\code{as.SpatialPolygons.owin()} does. For objects of class
\code{SpatialPolygons} (and \code{SpatialPolygonsDataFrame}) the \pkg{sp}
polygons are simply extracted and cast into \pkg{spatstat}s polygon format
inside the \code{owin} object. For \code{SpatialPixelsDataFrame} and
\code{SpatialGridDataFrame} the grid is extracted and cast into \pkg{spatstat}s
mask format inside the \code{owin} object. In all cases any data apart from the
spatial region itself are discarded.}
\note{When coercing a SpatialPolygons object to an owin object, full
topology checking is enabled by default. To avoid checking, set
\code{spatstat.options(checkpolygons=FALSE)} (from spatstat (1.14-6)).
To perform the checking later, \code{owinpolycheck(W, verbose=TRUE)}.}
\author{Edzer Pebesma \email{edzer.pebesma@uni-muenster.de}, Roger Bivand}
\examples{
run <- FALSE
if (require(spatstat, quietly=TRUE)) run <- TRUE
if (run) {
## SpatialPixelsDataFrame -> owin
data(meuse.grid) # A data.frame
gridded(meuse.grid) = ~x+y # Now a SpatialPixelsDataFrame
mg_owin <- as(meuse.grid, "owin")
mg_owin
}
if (run) {
## SpatialGridDataFrame -> owin
fullgrid(meuse.grid) <- TRUE # Now a SpatialGridDataFrame
mg_owin2 <- as(meuse.grid, "owin")
}
if (run) {
## SpatialPolygons region with a hole
ho_sp <- SpatialPolygons(list(Polygons(list(Polygon(cbind(c(0,1,1,0,0),
c(0,0,1,1,0))), Polygon(cbind(c(0.6,0.4,0.4,0.6,0.6),
c(0.2,0.2,0.4,0.4,0.2)), hole=TRUE)), ID="ho")))
plot(ho_sp, col="red", pbg="pink")
}
if (run) {
## SpatialPolygons -> owin
ho <- as(ho_sp, "owin")
plot(ho)
}
if (run) {
## Define owin directly and check they are identical
ho_orig <- owin(poly=list(list(x=c(0,1,1,0), y=c(0,0,1,1)),
list(x=c(0.6,0.4,0.4,0.6), y=c(0.2,0.2,0.4,0.4))))
identical(ho, ho_orig)
}
if (run) {
## owin -> SpatialPolygons
ho_sp1 <- as(ho, "SpatialPolygons")
all.equal(ho_sp, ho_sp1, check.attributes=FALSE)
}
}
\keyword{spatial}
|