Extract values from a SpatRaster
Extract values from a SpatRaster for a set of locations. The locations can be a SpatVector (points, lines, polygons), a matrix with (x, y) or (longitude, latitude – in that order!) coordinates, or a vector with cell numbers.
When argument y
is a SpatVector
, and list=FALSE
, the first column has the ID (record number) of the SpatVector
used.
## S4 method for signature 'SpatRaster,SpatVector' extract(x, y, fun=NULL, method="simple", list=FALSE, factors=TRUE, cells=FALSE, xy=FALSE, weights=FALSE, exact=FALSE, touches=is.lines(y), ...) ## S4 method for signature 'SpatRaster,SpatExtent' extract(x, y, factors=TRUE, cells=FALSE, xy=FALSE) ## S4 method for signature 'SpatRaster,matrix' extract(x, y, ...) ## S4 method for signature 'SpatRaster,numeric' extract(x, y, ...)
x |
SpatRaster |
y |
SpatVector (for points, lines, polygons), or for points, 2-column matrix or data.frame (x, y) or (lon, lat), or a vector with cell numbers |
fun |
function to summarize the data by geometry. If |
... |
additional arguments to |
method |
character. method for extracting values with points ("simple" or "bilinear"). With "simple" values for the cell a point falls in are returned. With "bilinear" the returned values are interpolated from the values of the four nearest raster cells |
list |
logical. If |
factors |
logical. If |
cells |
logical. If |
xy |
logical. If |
weights |
logical. If |
exact |
logical. If |
touches |
logical. If |
matrix, list, or data.frame
r <- rast(ncol=5, nrow=5, xmin=0, xmax=5, ymin=0, ymax=5) values(r) <- 1:25 xy <- rbind(c(0.5,0.5), c(2.5,2.5)) p <- vect(xy, crs="+proj=longlat +datum=WGS84") extract(r, xy) extract(r, p) r[1,] r[5] r[,5] r[c(0:2, 99:101)] f <- system.file("ex/meuse.tif", package="terra") r <- rast(f) xy <- cbind(179000, 330000) xy <- rbind(xy-100, xy, xy+1000) extract(r, xy) p <- vect(xy) g <- geom(p) g extract(r, p) x <- r + 10 extract(x, p) i <- cellFromXY(r, xy) x[i] r[i] y <- c(x,x*2,x*3) y[i] ## extract with a polygon f <- system.file("ex/lux.shp", package="terra") v <- vect(f) v <- v[1:2,] z <- rast(v, res=.1, names="test") values(z) <- 1:ncell(z) rf <- system.file("ex/elev.tif", package="terra") x <- rast(rf) #extract(x, v, mean, na.rm=TRUE) #e <- extract(z, v) #e #tapply(e[,2], e[,1], mean, na.rm=TRUE) #ee <- extract(z, v, list=TRUE) #rapply(ee, mean) #x <- c(z, z*2, z/3) #names(x) <- letters[1:3] #e <- extract(x, v) #de <- data.frame(e) #aggregate(de[,2:4], de[,1,drop=FALSE], mean) #ee <- extract(x, v, list=TRUE) #matrix(rapply(ee, mean), ncol=nlyr(x), byrow=TRUE)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.