Zonal statistics
Compute zonal statistics, that is summarized values of a Raster* object for each "zone" defined by a RasterLayer.
If stat
is a true function
, zonal
will fail (gracefully) for very large Raster objects, but it will in most cases work for functions that can be defined as by a character argument ('mean', 'sd', 'min', 'max', or 'sum'). In addition you can use 'count' to count the number of cells in each zone (only useful with na.rm=TRUE
, otherwise freq(z)
would be more direct.
If a function is used, it should accept a na.rm
argument (or at least a ...
argument)
## S4 method for signature 'RasterLayer,RasterLayer' zonal(x, z, fun='mean', digits=0, na.rm=TRUE, ...) ## S4 method for signature 'RasterStackBrick,RasterLayer' zonal(x, z, fun='mean', digits=0, na.rm=TRUE, ...)
x |
Raster* object |
z |
RasterLayer with codes representing zones |
fun |
function to be applied to summarize the values by zone. Either as character: 'mean', 'sd', 'min', 'max', 'sum'; or, for relatively small Raster* objects, a proper function |
digits |
integer. Number of digits to maintain in 'zones'. By default averaged to an integer (zero digits) |
na.rm |
logical. If |
... |
additional arguments. One implemented: |
A matrix with a value for each zone (unique value in zones
)
r <- raster(ncols=10, nrows=10) values(r) <- runif(ncell(r)) * 1:ncell(r) z <- r values(z) <- rep(1:5, each=20) # for large files, use a character value rather than a function zonal(r, z, 'sum') # for smaller files you can also provide a function ## Not run: zonal(r, z, mean) zonal(r, z, min) ## End(Not run) # multiple layers zonal(stack(r, r*10), z, 'sum')
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.