Skip To Content ArcGIS for Developers Sign In Dashboard

Zonal Statistics As Table

Description

Zonal Statistics As Table diagram

The ZonalStatisticsAsTable task summarizes the cells of a raster within the boundaries of zones defined by another dataset.

You can think of ZonalStatisticsAsTable as taking two layers, one that defines specific zones and another that defines the value of each location across the whole area, and calculating some summary statistic for all of the values that fall within each particular area. The layer that defines the areas, inputZoneRasterOrFeatures, is a raster or feature dataset that defines the boundaries of each of the zones for which a summary values will be calculated. If the zone layer is a raster, it must have an integer data type. If the zone is a feature layer, it can contain overlapping polygons, where the zonal analysis will be performed for each individual feature. The area defining the values, the inputValueRaster, is a raster dataset recording the value of some particular property at each location.

The statistic can report such properties as the sum of all the values in each area, the maximum value, or the average value. The statisticType can be calculated based on some mathematical function, the result of a sorting operation on the values, or an indication of the frequency values.

Some example applications of ZonalStatisticsAsTable include:

  • Given a layer of state boundaries and the distribution of mean precipitation over the continental United States, calculate the state-wise distribution of extreme rain events using a list of percentile values.
  • Given a layer of overlapping ecological zones and a raster layer of soil moisture, calculate all supported statistics within each zone to relate zones with soil moisture availability.

Request parameters

ParameterDetails
inputZoneRasterOrFeatures

(Required)

The layer the defines the boundaries of the zones.

Syntax: This parameter can have either a raster input or a feature input. For raster input, this parameter can be specified as a portal item ID, a URL to a raster image service layer, a cloud raster dataset, or a shared raster dataset. For feature input, this parameter can be specified as either a URL to a feature service layer or a feature collection.

Raster input examples:

//Portal item as input raster
"inputZoneRasterOrFeatures":{"itemId": <portal item Id>}

//URL as input raster
"inputZoneRasterOrFeatures":{"url": <image service layer url>}

Feature input examples:

//Feature layer URL
"inputZoneRasterOrFeatures":{"url": <feature service layer url>}

//Feature collection
"inputZoneRasterOrFeatures":{"layerDefinition": {}, "featureSet": {}}

inputValueRaster

(Required)

Choose the raster layer you wish to summarize by the zones defined by the inputZoneRasterOrFeatures.

Syntax: This parameter can be specified as a portal item ID, a URL to a raster image service layer, a cloud raster dataset, or a shared raster dataset.

Examples:

//Portal item as input raster to summarize
"inputValueRaster":{"itemId": <portal item Id>}

//URL as input raster to summarize
"inputValueRaster":{"url": <image service layer url>}

outputTableName

(Required)

The output table feature service name that will be created.

You can specify the name, or you can create an empty service using Portal Admin Sharing API and use the return JSON object as input to this parameter.

Syntax: A JSON object describes the name of the output or the output table.

Output name example:

"outputTableName":{"serviceProperties":{"name":"testrasteranalysis"}}

Output table examples:

//Output portal item:
"outputTableName":{"itemId": <portal item id>}

//Output url:
"outputTableName":{"url": <feature service url}

//Output table layer service:
"outputTableName":{"serviceProperties":
  {"name":"testrasteranalysis",
    "serviceUrl":"https://<server name>/server/rest/services/Hosted/testrasteranalysis/FeatureServer/0"},
  "itemProperties":{"itemId":"351fe8441a1a436d8001124487b02550","folderId":"sdfwerfbd3ec25584d0d8f4"}
}

zoneField

(Required)

A field on the inputZoneRasterOrFeatures that holds the values that define each zone.

It can be an integer or a string field of the zone dataset.

Example:

"zoneField": "ParcelID"

ignoreNodata

Specify whether NoData in the raster layer to summarize will influence the results of the areas they fall within.

Syntax: A Boolean value as either true or false.

  • A value of true specifies that, within any particular area, only cells that have a value in the raster layer being summarized will be used in determining the output value for that area. Any missing or NoData cells will be ignored in the statistics calculations. This is the default.
  • A value of false specifies that, within any particular area, if any cells in the raster layer do not have a value, it is deemed that there is insufficient information to perform statistical calculations for all the cells in that zone. As a result, the entire zone will receive the NoData value on the output raster.

Example:

"ignoreNodata": true

statisticType

The statistical summary type that you wish to calculate for all the cells within each zone of the feature in the inputValueRaster.

Syntax: The input can be one of the following:

  • ALL— All of the statistics will be calculated. This is the default.
  • MEAN—Calculates the average of all cells in the value raster that belongs to the same zone as the output cell.
  • MAJORITY—Determines the majority value of all cells in the value raster that belongs to the same zone as the output cell.
  • MAXIMUM—Determines the largest value of all cells in the value raster that belongs to the same zone as the output cell.
  • MEDIAN—Finds the median value of all cells in the value raster that belongs to the same zone as the output cell.
  • MINIMUM—Finds the smallest value of all cells in the value raster that belongs to the same zone as the output cell.
  • MINORITY—Determines the minority value of all cells in the value raster that belongs to the same zone as the output cell.
  • PERCENTILE—Calculates a percentile of all cells in the value raster that belong to the same zone as the output cell. The ninetieth percentile is calculated by default. You can specify other values (from 0 to 100) using the percentileValues parameter.
  • RANGE—Finds the range of all cells in the value that belongs to the same zone as the output zone.
  • SUM—Adds the total value of all cells in the value raster that belongs to the same zone as the output cell.
  • STD—Finds the standard deviation of all cells in the value raster that belongs to the same zone as the output cell.
  • VARIETY—Finds the variety of all cells in the value raster that belongs to the same zone as the output cell.
  • MIN_MAX—Both the minimum and maximum statistics are calculated.
  • MEAN_STD—Both the mean and standard deviation statistics are calculated.
  • MIN_MAX_MEAN—The minimum, maximum and mean statistics are calculated.

If the inputValueRaster is floating-point type, the zonal calculations for MAJORITY, MEDIAN, MINORITY, PERCENTILE and VARIETY cannot be computed.

Example:

"statisticType": "MEAN"

percentileValues

Specify the percentile value to calculate. The default is 90, for the 90th percentile.

The values can range from 0 to 100. The 0th percentile is essentially equivalent to the minimum statistic, and the 100th percentile is equivalent to maximum. A value of 50 will produce approximately the same result as the median statistic.

This option is only supported if the statisticsType parameter is set to PERCENTILE or ALL.

A single or a list of Double value that can range from 0 to 100.

Example:

"percentileValues": [25, 55, 75]

processAsMultidimensional

Specify how the input rasters will be processed if they are multidimensional.

Syntax: A Boolean value as either true or false.

  • A value of true specifies that statistics will be calculated from the current slice of a multidimensional dataset. This is the default.
  • A value of false specifies that statistics will be calculated for all dimensions (such as time or depth) of a multidimensional dataset.

Example:

"processasMultidimensional": true

context

Contains additional settings that affect task execution. This task has the following settings:

  • Extent (extent): A bounding box that defines the analysis area.
  • Output Spatial Reference (outSR): The output raster will be projected into the output spatial reference.
  • Snap Raster (snapRaster): The output raster will have its cells aligned with the specified snap raster.
  • Cell Size (cellSize): The output raster will have the resolution specified by cell size.
  • Mask (mask): Only cells that fall within the analysis mask will be considered in the operation.
f

The response format. The default response format is html.

Values: html | json | pjson

Response

When you submit a request, the task assigns a unique job ID for the transaction.

{
  "jobId": "<unique job identifier>",
  "jobStatus": "<job status>"
}

After the initial request is submitted, you can use the jobId to periodically check the status of the job and messages as described in Checking job status. Once the job has successfully completed, you use the jobId to retrieve the results. To track the status, you can make a request of the following form:

https://<raster analysis tools url>/ZonalStatisticsAsTable/jobs/<jobId>

When the status of the job request is esriJobSucceeded, you can access the results of the analysis by making a request of the following form:

https://<raster analysis tools url>/ZonalStatisticsAsTable/jobs/<jobId>/results/outputTable

Example usage

Below is a sample request URL for ZonalStatisticsAsTable.

https://services.myserver.com/arcgis/rest/services/System/RasterAnalysisTools/GPServer/ZonalStatisticsAsTable/submitJob

JSON response syntax

The response returns the outputTable output parameter, which has properties for parameter name, data type and value. The content of the value is always the output tavle itemID and the feature service URL.

{
  "paramName": <parameter name>,
  "dataType": "GPString",
  "value": {
    "itemId": <item Id>,
    "url": <URL>
  }
}

JSON response example

{
 "paramName": "outputTable",
 "dataType": "GPString",
 "value": {
  "url": "https://<server name>/server/rest/services/Hosted/<service name>/FeatureServer/0",
  "itemId": "351fe8441a1a436d8001124487b02550"
 }
}