zonal | R Documentation |

Compute zonal statistics, that is summarize values of a SpatRaster for each "zone" defined by another SpatRaster, or by a SpatVector with polygon geometry.

If `fun`

is a true R `function`

, the <SpatRaster,SpatRaster> method may fail when using very large SpatRasters, except for the functions ("mean", "min", "max", "sum", "isNA", and "notNA").

You can also summarize values of a SpatVector for each polygon (zone) defined by another SpatVector.

## S4 method for signature 'SpatRaster,SpatRaster' zonal(x, z, fun=mean, ..., w=NULL, as.raster=FALSE, filename="", overwrite=FALSE, wopt=list()) ## S4 method for signature 'SpatRaster,SpatVector' zonal(x, z, fun=mean, ..., w=NULL, weights=FALSE, exact=FALSE, touches=FALSE, as.raster=FALSE, filename="", wopt=list()) ## S4 method for signature 'SpatVector,SpatVector' zonal(x, z, fun=mean, ..., weighted=FALSE, as.polygons=FALSE)

`x` |
SpatRaster or SpatVector |

`z` |
SpatRaster with cell-values representing zones or a SpatVector with each polygon geometry representing a zone |

`fun` |
function to be applied to summarize the values by zone. Either as character: "mean", "min", "max", "sum", "isNA", and "notNA" and, for relatively small SpatRasters, a proper function |

`...` |
additional arguments passed to fun, such as |

`w` |
SpatRaster with weights. Should have a single-layer with non-negative values |

`as.raster` |
logical. If |

`filename` |
character. Output filename (ignored if |

`overwrite` |
logical. If |

`wopt` |
list with additional arguments for writing files as in |

`weights` |
logical. If |

`exact` |
logical. If |

`touches` |
logical. If |

`weighted` |
logical. If |

`as.polygons` |
logical. Should the results be merged with the attributes of |

A `data.frame`

with a value for each zone, or a SpatRaster, or SpatVector of polygons.

See `global`

for "global" statistics (i.e., all of `x`

is considered a single zone), `app`

for local statistics, and `extract`

for an alternative way to summarize values of a SpatRaster with a SpatVector.

### SpatRaster, SpatRaster r <- rast(ncols=10, nrows=10) values(r) <- 1:ncell(r) z <- rast(r) values(z) <- rep(c(1:2, NA, 3:4), each=20) names(z) <- "zone" zonal(r, z, "sum", na.rm=TRUE) # with weights w <- init(r, "col") zonal(r, z, w=w, "mean", na.rm=TRUE) # multiple layers r <- rast(system.file("ex/logo.tif", package = "terra")) # zonal layer z <- rast(r, 1) names(z) <- "zone" values(z) <- rep(c(1:2, NA, c(3:4)), each=ncell(r)/5, length.out=ncell(r)) zonal(r, z, "mean", na.rm = TRUE) # raster of zonal values zr <- zonal(r, z, "mean", na.rm = TRUE, as.raster=TRUE) ### SpatRaster, SpatVector x <- rast(ncol=2,nrow=2, vals=1:4, xmin=0, xmax=1, ymin=0, ymax=1, crs="+proj=utm +zone=1") p <- as.polygons(x) pp <- shift(p, .2) r <- disagg(x, 4) zonal(r, p) zonal(r, p, sum) zonal(x, pp, exact=TRUE) zonal(c(x, x*10), pp, w=x) ### SpatVector, SpatVector f <- system.file("ex/lux.shp", package="terra") v <- vect(f)[,c(2,4)] p <- spatSample(v, 100) values(p) <- data.frame(b2=1:100, ssep1=100:1) zonal(p, v, mean)

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.