imod.prepare.zonal_aggregate_raster#
- imod.prepare.zonal_aggregate_raster(path: Path | str, column: str, raster: DataArray, resolution: float, method: str | Callable, chunksize: int = 10000) DataFrame [source]#
Compute a zonal aggregate of raster data for polygon geometries, e.g. a mean, mode, or percentile.
- Parameters:
path (str or pathlib.Path) – path to OGR supported vector file (e.g. a shapefile). Defines zones of aggregation.
column (str) – column name of path, integer IDs defining zones.
raster (xarray.DataArray) – Raster data from which to sample and aggregate data
resolution (float) – cellsize at which the rasterization of polygons and sampling occurs
method (Union[str, Callable]) – Aggregation method. Anything that is acceptable by a pandas groupby aggregate: https://pandas.pydata.org/docs/reference/api/pandas.core.groupby.DataFrameGroupBy.aggregate.html
chunksize (int, optional) – The size of the chunksize. Used for both x and y dimension.
- Returns:
zonal_aggregates
- Return type:
pandas.DataFrame
Examples
To compute the mean surface level at polygons of water bodies:
>>> import imod >>> surface_level = imod.rasterio.open("surface_level.tif") >>> df = imod.prepare.spatial.zonal_aggregate_raster( >>> path="water-bodies.shp", >>> column="id", >>> raster=surface_level, >>> resolution=1.0, >>> method="mean", >>> )
For some functions, like the mode, a function should be passed instead:
>>> import pandas as pd >>> df = imod.prepare.spatial.zonal_aggregate_raster( >>> path="water-bodies.shp", >>> column="id", >>> raster=surface_level, >>> resolution=1.0, >>> method=pd.Series.mode, >>> )