Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
GDAL-RASTER-ZONAL-STATS(1)	      GDAL	      GDAL-RASTER-ZONAL-STATS(1)

NAME
     gdal-raster-zonal-stats - Compute raster zonal statistics.

     Added in version 3.12.

SYNOPSIS
	Usage: gdal raster zonal-stats [OPTIONS] <INPUT> <OUTPUT>

	Calculate raster zonal statistics

	Positional arguments:
	  -i, --input <INPUT>				       Input raster datasets [required] [not available in pipelines]
	  -o, --output <OUTPUT> 			       Output vector dataset [required] [not available in pipelines]

	Common Options:
	  -h, --help					       Display help message and exit
	  --json-usage					       Display usage as JSON document and exit
	  --config <KEY>=<VALUE>			       Configuration option [may be repeated]
	  -q, --quiet					       Quiet mode (no progress bar or warning message) [not available in pipelines]

	Options:
	  -f, --of, --format, --output-format <OUTPUT-FORMAT>  Output format ("GDALG" allowed) [not available in pipelines]
	  --co, --creation-option <KEY>=<VALUE> 	       Creation option [may be repeated] [not available in pipelines]
	  --lco, --layer-creation-option <KEY>=<VALUE>	       Layer creation option [may be repeated] [not available in pipelines]
	  --overwrite					       Whether overwriting existing output dataset is allowed [not available in pipelines]
	  --update					       Whether to open existing dataset in update mode [not available in pipelines]
	  --overwrite-layer				       Whether overwriting existing output layer is allowed [not available in pipelines]
	  --append					       Whether appending to existing layer is allowed [not available in pipelines]
							       Mutually exclusive with --upsert
	  --output-layer <OUTPUT-LAYER> 		       Output layer name [not available in pipelines]
	  --skip-errors 				       Skip errors when writing features [not available in pipelines]
	  -b, --band <BAND>				       Input band(s) (1-based index) [may be repeated]
	  --zones <ZONES>				       Dataset containing zone definitions [required]
	  --zones-band <ZONES-BAND>			       Band from which zones should be read
							       Mutually exclusive with --zones-layer
	  --zones-layer <ZONES-LAYER>			       Layer from which zones should be read
							       Mutually exclusive with --zones-band
	  --weights <WEIGHTS>				       Weighting raster dataset
	  --weights-band <WEIGHTS-BAND> 		       Band from which weights should be read (default: 1)
	  --pixels <PIXELS>				       Method to determine which pixels are included in stat calculation.. PIXELS=default|fractional|all-touched
	  --stat <STAT> 				       Statistic(s) to compute for each zone. STAT=center_x|center_y|count|coverage|frac|max|max_center_x|max_center_y|mean|median|min|minority|min_center_x|min_center_y|mode|stdev|sum|unique|values|variance|variety|weighted_mean|weighted_stdev|weighted_sum|weighted_variance|weights [may be repeated] [required]
	  --include-field <INCLUDE-FIELD>		       Fields from polygon zones to include in output [may be repeated]
	  --include-geom				       Include polygon zone geometry in the output
	  --strategy <STRATEGY> 			       For polygon zones, whether to iterate over input features or raster chunks. STRATEGY=feature|raster (default: feature)
	  --chunk-size <CHUNK-SIZE>			       Maximum size of raster chunks read into memory (default: 5%)

	Advanced Options:
	  --if, --input-format <INPUT-FORMAT>		       Input formats [may be repeated] [not available in pipelines]
	  --oo, --open-option <KEY>=<VALUE>		       Open options [may be repeated] [not available in pipelines]
	  --output-oo, --output-open-option <KEY>=<VALUE>      Output open options [may be repeated] [not available in pipelines]
	  --upsert					       Upsert features (implies 'append') [not available in pipelines]
							       Mutually exclusive with --append

DESCRIPTION
     gdal  raster  zonal-stats	computes raster zonal statistics -- a summary of
     pixel values within zones specified either polygon features or a  categori-
     cal raster.
       [image]	Mean  elevation  calculated  for  each polygon from an elevation
       raster..UNINDENT

       A weighting raster may be provided in addition to the source raster,  al-
       lowing calculation of statistics such as population-weighted mean weather
       conditions.

       All  inputs  should  be provided in the same spatial reference system. If
       input rasters use different resolutions they will be resampled to a  con-
       sistent	resolution using average resampling. However, no reprojection is
       performed.

   Pixel inclusion and weighting
     When zones are defined using polygons, three methods are available for  de-
     termining	which  pixels  to  include  in the calculation.  By default, the
     geometries are rasterized using default parameters, and pixels included  in
     the rasterization are used in the calculation with equal weighting.  By us-
     ing --pixels all-touched, all pixels touched by the polygon are used in the
     calculation, again with equal weighting.  If using --pixels fractional, the
     fraction of each pixel that is covered by the polygon is computed, and pix-
     els  are weighted according to this fraction.  This option requires GDAL be
     built against version 3.14 or later of the GEOS library.

   Supported stats
		+-------------------+-----------------------------+
		| Name		    | Description		  |
		+-------------------+-----------------------------+
		| center_x	    | Array  with   cell   center |
		|		    | x-coordinate  for each cell |
		|		    | that intersects  the  poly- |
		|		    | gon.  Each  cell center may |
		|		    | or may not  be  inside  the |
		|		    | polygon.			  |
		+-------------------+-----------------------------+
		| center_y	    | Array   with   cell  center |
		|		    | y-coordinate for each  cell |
		|		    | that  intersects	the poly- |
		|		    | gon. Each cell  center  may |
		|		    | or  may  not  be inside the |
		|		    | polygon.			  |
		+-------------------+-----------------------------+
		| count 	    | Sum of  all  cell  coverage |
		|		    | fractions.		  |
		+-------------------+-----------------------------+
		| coverage	    | Array  with  coverage frac- |
		|		    | tion of each cell that  in- |
		|		    | tersects the polygon	  |
		+-------------------+-----------------------------+
		| frac		    | Fraction	of  covered cells |
		|		    | that are occupied  by  each |
		|		    | distinct	raster	value, as |
		|		    | provided by unique.	  |
		+-------------------+-----------------------------+
		| max		    | Maximum value of cells that |
		|		    | intersect the polygon,  not |
		|		    | taking  coverage	fractions |
		|		    | or weighting raster  values |
		|		    | into account.		  |
		+-------------------+-----------------------------+
		| max_center_x	    | Cell   center  x-coordinate |
		|		    | for the cell containing the |
		|		    | maximum  value  intersected |
		|		    | by  the polygon. The center |
		|		    | of this cell may or may not |
		|		    | be inside the polygon.	  |
		+-------------------+-----------------------------+
		| max_center_y	    | Cell  center   y-coordinate |
		|		    | for the cell containing the |
		|		    | maximum  value  intersected |
		|		    | by the polygon. The  center |
		|		    | of this cell may or may not |
		|		    | be inside the polygon.	  |
		+-------------------+-----------------------------+
		| mean		    | Mean  value  of  cells that |
		|		    | intersect   the	 polygon, |
		|		    | weighted	by the percent of |
		|		    | each cell that is covered.  |
		+-------------------+-----------------------------+
		| min		    | Minimum value of cells that |
		|		    | intersect the polygon,  not |
		|		    | taking  coverage	fractions |
		|		    | or weighting raster  values |
		|		    | into account.		  |
		+-------------------+-----------------------------+
		| min_center_x	    | Cell   center  x-coordinate |
		|		    | for the cell containing the |
		|		    | minimum  value  intersected |
		|		    | by  the polygon. The center |
		|		    | of this cell may or may not |
		|		    | be inside the polygon.	  |
		+-------------------+-----------------------------+
		| min_center_y	    | Cell  center   y-coordinate |
		|		    | for the cell containing the |
		|		    | minimum  value  intersected |
		|		    | by the polygon. The  center |
		|		    | of this cell may or may not |
		|		    | be inside the polygon.	  |
		+-------------------+-----------------------------+
		| minority	    | The  raster value occupying |
		|		    | the least number of  cells, |
		|		    | taking  into  account  cell |
		|		    | coverage fractions but  not |
		|		    | weighting raster values.	  |
		+-------------------+-----------------------------+
		| mode		    | The  raster value occupying |
		|		    | the  greatest   number   of |
		|		    | cells,  taking into account |
		|		    | cell coverage fractions but |
		|		    | not weighting  raster  val- |
		|		    | ues.			  |
		+-------------------+-----------------------------+
		| stdev 	    | Population  standard devia- |
		|		    | tion of  cell  values  that |
		|		    | intersect the polygon, tak- |
		|		    | ing  into  account coverage |
		|		    | fraction. 		  |
		+-------------------+-----------------------------+
		| sum		    | Sum  of  values  of  raster |
		|		    | cells  that  intersect  the |
		|		    | polygon, with  each  raster |
		|		    | value  weighted by its cov- |
		|		    | erage fraction.		  |
		+-------------------+-----------------------------+
		| unique	    | Array of unique raster val- |
		|		    | ues for cells  that  inter- |
		|		    | sect the polygon		  |
		+-------------------+-----------------------------+
		| values	    | Array  of raster values for |
		|		    | each cell  that  intersects |
		|		    | the polygon		  |
		+-------------------+-----------------------------+
		| variance	    | Population variance of cell |
		|		    | values  that  intersect the |
		|		    | polygon,	taking	into  ac- |
		|		    | count coverage fraction.	  |
		+-------------------+-----------------------------+
		| variety	    | The   number   of  distinct |
		|		    | raster  values   in   cells |
		|		    | wholly or partially covered |
		|		    | by the polygon.		  |
		+-------------------+-----------------------------+
		| weighted_frac     | Fraction	of  covered cells |
		|		    | that are occupied  by  each |
		|		    | distinct	  raster   value, |
		|		    | weighted by the value of	a |
		|		    | second   weighting  raster. |
		|		    | Order corresponds to values |
		|		    | returned by unique.	  |
		+-------------------+-----------------------------+
		| weighted_mean     | Mean value  of  cells  that |
		|		    | intersect    the	 polygon, |
		|		    | weighted	by  the   product |
		|		    | over  the coverage fraction |
		|		    | and the weighting raster.   |
		+-------------------+-----------------------------+
		| weighted_stdev    | Weighted version of stdev.  |
		+-------------------+-----------------------------+
		| weighted_variance | Weighted version	of  vari- |
		|		    | ance			  |
		+-------------------+-----------------------------+
		| weights	    | Array  of weight values for |
		|		    | each cell  that  intersects |
		|		    | the polygon		  |
		+-------------------+-----------------------------+

     This algorithm can be part of a gdal pipeline.

PROGRAM-SPECIFIC OPTIONS
     --band, -b <BAND>
	    Input band(s) to be processed.

     --chunk-size <MEMORY>
	    Defines  the maximum size of raster chunks to read. May be expressed
	    as either an amount of memory (500 MB, 2 GB, etc.) or as a	percent-
	    age of available RAM (e.g. 10%).

     --include-field <INCLUDE-FIELD>
	    Specifies one or more fields from the zones to be copied to the out-
	    put. Only available when vector zones are used. Since GDAL 3.13, the
	    special values "ALL" and "NONE" can be used.

     --include-geom
	    Include the zone geometry in the output feature. Only available when
	    vector zones are used.

	    Added in version 3.13.

     --pixels <PIXELS>
	    Method  to determine which pixels should be included in the calcula-
	    tion: default, all-touched, or fractional.

     --stat <STAT>
	    Specifies one or more of the Supported stats  to  compute  for  each
	    zone.

     --strategy <STRATEGY>
	    Specifies the the processing strategy (raster or feature), when vec-
	    tor  zones	are used.  In the default strategy (--strategy feature),
	    GDAL will iterate over the features in the zone  dataset,  read  the
	    corresponding  pixels  from the raster, and write the statistics for
	    that feature. This avoids  the  need  to  read  the  entire  feature
	    dataset  into  memory  at  once, but may cause the same pixels to be
	    read multiple times if the polygon features are large or not ordered
	    spatially. If --strategy raster is	used,  GDAL  will  iterate  over
	    chunks  of the raster dataset, find corresponding polygon zones, and
	    update the statistics for those features. (The size  of  the  raster
	    chunks  can  be controlled using :option:--chunk-size.) This ensures
	    that raster pixels are only read once, but may cause the  same  fea-
	    tures to be processed multiple times.

     --weights <WEIGHTS>
	    Optional path to a dataset to use for weighting.

     --weights-band <WEIGHTS-BAND>
	    Specifies the raster band from which weights can be read.

     --zones <ZONES>
	    The  path  to  a  dataset that defines the zones. If the dataset has
	    more  than	1  raster  band  or  feature  layer,   --zones-band   or
	    --zones-layer must be specified.

     --zones-band <ZONES-BAND>
	    Specifies the raster band from which zones can be read.

     --zones-layer <ZONES-LAYER>
	    Specifies the feature layer from which zones can be read.

STANDARD OPTIONS
     --append
	    Whether  appending	features  to existing layer(s) is allowed.  This
	    also creates the output dataset if it does not exist yet.

     --co, --creation-option <NAME>=<VALUE>
	    Many formats have one or more optional dataset creation options that
	    can be used to control particulars about the file created.	For  in-
	    stance,  the  GeoPackage driver supports creation options to control
	    the version.

	    May be repeated.

	    The dataset creation options available vary by  format  driver,  and
	    some  simple  formats have no creation options at all. A list of op-
	    tions supported for a format can be listed with the  --formats  com-
	    mand line option but the documentation for the format is the defini-
	    tive  source  of information on driver creation options.  See Vector
	    drivers format specific documentation for legal creation options for
	    each format.

	    Note that dataset creation options are different from layer creation
	    options.

     --if, --input-format <format>
	    Format/driver name to be attempted to open the input file(s). It  is
	    generally  not  necessary  to specify it, but it can be used to skip
	    automatic driver detection, when it fails to select the  appropriate
	    driver.   This  option can be repeated several times to specify sev-
	    eral candidate drivers.  Note that it does not force  those  drivers
	    to	open  the dataset. In particular, some drivers have requirements
	    on file extensions.

	    May be repeated.

     --lco, --layer-creation-option <NAME>=<VALUE>
	    Many formats have one or more optional layer creation  options  that
	    can  be used to control particulars about the layer created. For in-
	    stance, the GeoPackage driver supports  layer  creation  options  to
	    control  the feature identifier or geometry column name, setting the
	    identifier or description, etc.

	    May be repeated.

	    The layer creation options available vary by format driver, and some
	    simple formats have no layer creation options at all. A list of  op-
	    tions  supported  for a format can be listed with the --formats com-
	    mand line option but the documentation for the format is the defini-
	    tive source of information on driver creation options.   See  Vector
	    drivers format specific documentation for legal creation options for
	    each format.

	    Note that layer creation options are different from dataset creation
	    options.

     --oo, --open-option <NAME>=<VALUE>
	    Dataset open option (format specific).

	    May be repeated.

     -f, --of, --format, --output-format <OUTPUT-FORMAT>
	    Which  output  vector  format to use. Allowed values may be given by
	    gdal --formats | grep vector | grep rw | sort

     --output-layer <NAME>
	    Specifies the name of the layer to which features will  be	written.
	    If not specified, output layer names will be the same as input layer
	    names.

     --output-open-option, --output-oo <NAME>=<VALUE>
	    Added in version 3.12.

	    Dataset open option for output dataset (format specific).

	    May be repeated.

     --overwrite
	    Allow  program to overwrite existing target file or dataset.  Other-
	    wise, by default, gdal errors out if the target file or dataset  al-
	    ready exists.

     --overwrite-layer
	    Whether overwriting the existing output vector layer is allowed.

     --skip-errors
	    Added in version 3.12.

	    Whether  failures  to  write feature(s) should be ignored. Note that
	    this option sets the size of the transaction unit to one feature  at
	    a  time,  which  may cause severe slowdown when inserting into data-
	    bases.

     --update
	    Whether to open an existing output dataset in update mode.

     --upsert
	    Added in version 3.12.

	    Variant of --append where the OGRLayer::UpsertFeature() operation is
	    used  to  insert  or  update  features  instead  of  appending  with
	    OGRLayer::CreateFeature().

	    This  is  currently  implemented  only  in	a  few	drivers: GPKG --
	    GeoPackage vector, Elasticsearch: Geographically Encoded Objects for
	    Elasticsearch and MongoDBv3 (drivers that  implement  upsert  expose
	    the GDAL_DCAP_UPSERT capability).

	    The  upsert  operation uses the FID of the input feature, when it is
	    set (and the FID column name is not the empty string), as the key to
	    update existing features. It is crucial to make sure that the FID in
	    the source and target layers are consistent.

	    For the GPKG driver, it is also possible to  upsert  features  whose
	    FID is unset or non-significant (the --unset-fid option of gdal vec-
	    tor  edit  can  be	used to ignore the FID from the source feature),
	    when there is a UNIQUE column that is not the integer primary key.

RETURN STATUS CODE
     The program returns status code 0 in case of success, and non-zero in  case
     of  error (non-blocking errors emitted as warnings are considered as a suc-
     cessful execution).

EXAMPLES
   Example 1: Summarize mean elevation within 200m of points of interest
     Using a nested pipeline for the zone dataset

	  gdal pipeline read dem.tif ! \
	      zonal-stats \
		--zones [ read points.geojson ! buffer 200 ] \
		--stat mean ! \
	      write \
		--output-format CSV \
		--output /vsistdout/

	or, using the zone vector dataset as the piped dataset using the ``_PIPE_`` placeholder dataset name:

	gdal pipeline read points.geojson ! \
	    buffer 200 ! \
	    zonal-stats \
	      --input dem.tif
	      --zones _PIPE_ \
	      --stat mean ! \
	    write \
	      --output-format CSV \
	      --output /vsistdout/

   Example 2: Create a layer with the highest points in each watershed
	gdal pipeline read dem.tif !
	    zonal-stats \
	      --zones watersheds.shp \
	      --stat max_center_x \
	      --stat max_center_y ! \
	    make-point \
	      --x max_center_x \
	      --y max_center_y \
	      --output-crs EPSG:4326 ! \
	    write out.geojson

AUTHOR
     Dan Baston <dbaston@gmail.com>

COPYRIGHT
     1998-2026

				  Jun 05, 2026	      GDAL-RASTER-ZONAL-STATS(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=gdal-raster-zonal-stats&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help