import StatisticDefinition from "@arcgis/core/rest/support/StatisticDefinition.js";const StatisticDefinition = await $arcgis.import("@arcgis/core/rest/support/StatisticDefinition.js");- Inheritance
- StatisticDefinition→
Accessor
- Since
- ArcGIS Maps SDK for JavaScript 4.0
This class defines the parameters for querying a layer or layer view for statistics.
- See also
- Examples
- // query for the sum of the population in all featureslet sumPopulation = {onStatisticField: "POP_2015", // service field for 2015 populationoutStatisticFieldName: "Pop_2015_sum",statisticType: "sum"}let query = layer.createQuery();query.outStatistics = [ sumPopulation ];layer.queryFeatures(query).then(function(response){let stats = response.features[0].attributes;console.log("output stats:", stats);});// query for the average of the population change for all featureslet populationChangeDefinition = {onStatisticField: "POP_2015 - POP_2010", // service field for 2015 populationoutStatisticFieldName: "avg_pop_change_2015_2010",statisticType: "avg"}let query = layer.createQuery();query.outStatistics = [ populationChangeDefinition ];layer.queryFeatures(query).then(function(response){let stats = response.features[0].attributes;console.log("Average change:", stats.avg_pop_change_2015_2010);});
Constructors
Constructor
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| properties | | |
Properties
| Property | Type | Class |
|---|---|---|
| readonly inherited | ||
| | ||
| | ||
| | ||
| |
onStatisticField
Defines the field for which statistics will be calculated. This can be service field names or SQL expressions. See the snippets below for examples.
- Examples
- // query for the sum of the population in all featureslet sumPopulation = {onStatisticField: "POP_2015", // service field for 2015 populationoutStatisticFieldName: "Pop_2015_sum",statisticType: "sum"}let query = layer.createQuery();query.outStatistics = [ sumPopulation ];layer.queryFeatures(query).then(function(response){let stats = response.features[0].attributes;console.log("output stats:", stats);});// query for the average of the population change for all features// Notice that you can pass a SQL expression as a field name to calculate statisticslet populationChangeDefinition = {onStatisticField: "POP_2015 - POP_2010", // service field for 2015 populationoutStatisticFieldName: "avg_pop_change_2015_2010",statisticType: "avg"}let query = layer.createQuery();query.outStatistics = [ populationChangeDefinition ];layer.queryFeatures(query).then(function(response){let stats = response.features[0].attributes;console.log("Average change:", stats.avg_pop_change_2015_2010);});// query for the average of the population change grouped by regions// query result will also return an extent for each group encompassing// all features in each group.let populationChangeDefinition = {onStatisticField: "POP_2015 - POP_2010", // service field for 2015 populationoutStatisticFieldName: "avg_pop_change_2015_2010",statisticType: "avg"};let aggregatedExtent = {statisticType: "envelope-aggregate"};let query = layer.createQuery();query.groupByFieldsForStatistics = ["Region"];query.outStatistics = [ populationChangeDefinition, aggregatedExtent ];layer.queryFeatures(query).then(displayResults);
statisticParameters
- Type
- PercentileParameters | null | undefined
The parameters for percentile statistics. This property must be set when the
statisticType is set to either percentile-continuous or percentile-discrete.
- Examples
- let query = layer.createQuery();// find the median value in descending order for response_rate field// for all features stored in the layer and orderquery.outStatistics = [{statisticType: "percentile-continuous",statisticParameters: {value: 0.5,orderBy: "DESC"},onStatisticField: "response_rate",outStatisticFieldName: "Resp_rate_median"}];// query the features for the median value statistics against the values// stored in the response_rate fieldqueryFeatures(query);// Query the percentile for response time in descending order for all features in the layer// group the percentile by Division and unit fieldslet query = layer.createQuery();query.orderByFields = ["Division, Unit"];query.groupByFieldsForStatistics = ["Division, Unit"];query.outStatistics = [{statisticType: "percentile-discrete",statisticParameters: {value: 0.67,orderBy: "DESC"},onStatisticField: "response_time",outStatisticFieldName: "response_time_percentile"}];queryFeatures(query);
statisticType
- Type
- "count" | "sum" | "min" | "max" | "avg" | "stddev" | "var" | "exceedslimit" | "percentile-continuous" | "percentile-discrete" | "envelope-aggregate" | "centroid-aggregate" | "convex-hull-aggregate" | null | undefined
Defines the type of statistic.
Possible Values
| Value | Description |
|---|---|
| count | The number of features that match a specified criteria. |
| sum | The total sum of values that match a specified criteria. |
| min | The minimum value of a given field. |
| max | The maximum value of a given field. |
| avg | The average of values that match a specified criteria. |
| stddev | The standard deviation of values that match a specified criteria. |
| var | The statistical variance of values in the specified criteria. |
| percentile-continuous | An interpolated value above or below which a given percentage of values in a group of data lie. For example, the 90th percentile (value 0.9) is the value below which 90% of the data values may be found. percentile-continuous returns an interpolated value from the dataset. |
| percentile-discrete | Similar to percentile-continuous except percentile-discrete returns a data value from a dataset. |
| envelope-aggregate | Returns the spatial extent of grouped features when Query.groupByFieldsForStatistics is used. Each statistics group will have an extent representing the bounding box of all features in that group. |
| centroid-aggregate | Returns the centroid of the grouped features when Query.groupByFieldsForStatistics is used. Each statistics group will have a centroid representing the spatial center of features belonging to the group. |
| convex-hull-aggregate | Returns the convex hull of grouped features when Query.groupByFieldsForStatistics is used. Each statistics group will have a convex hull representing the smallest area containing all features in that group. |
Known Limitations
The statisticParameters must be set when calculating percentile-continuous or percentile-discrete statistics.
The percentile-continuous and percentile-discrete statistic types cannot be used with the
Query.having parameter.
The percentile-continuous and percentile-discrete statistic types are supported if capabilities.query.supportsPercentileStatistics is true.
The envelope-aggregate, centroid-aggregate and convex-hull-aggregate statistic types are not supported with ArcGIS Enterprise hosted and non-hosted feature services.
- See also
- Example
- // average of age fields by regionsconst ageStatsByRegion = new StatisticDefinition({onStatisticField: field,outStatisticFieldName: "avgAge",statisticType: "avg"});// extent encompassing all features by regionconst aggregatedExtent = new StatisticDefinition({statisticType: "envelope-aggregate",outStatisticFieldName: "aggregateExtent",});// group the statistics by Region field// get avg age by Regions and extent of each regionconst query = layer.createQuery();query.groupByFieldsForStatistics = ["Region"];query.outStatistics = [consumeStatsByRegion, aggregatedExtent];layer.queryFeatures(query).then((results) => {results.features.forEach((feature) => {if (feature.attributes.Region === "Midwest") {view.goTo(feature.aggregateGeometries.aggregateExtent);}});});
Methods
| Method | Signature | Class |
|---|---|---|
| inherited static | fromJSON(json: any): any | |
| clone(): StatisticDefinition | | |
| inherited | toJSON(): any |
fromJSON
- Signature
-
fromJSON (json: any): any
Creates a new instance of this class and initializes it with values from a JSON object
generated from an ArcGIS product. The object passed into the input json
parameter often comes from a response to a query operation in the REST API or a
toJSON()
method from another ArcGIS product. See the Using fromJSON()
topic in the Guide for details and examples of when and how to use this function.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| json | A JSON representation of the instance in the ArcGIS format. See the ArcGIS REST API documentation for examples of the structure of various input JSON objects. | |
- Returns
- any
Returns a new instance of this class.
clone
- Signature
-
clone (): StatisticDefinition
Creates a deep clone of StatisticDefinition object.
- Returns
- StatisticDefinition
A new instance of a StatisticDefinition object equal to the object used to call
.clone().
toJSON
- Signature
-
toJSON (): any
Converts an instance of this class to its ArcGIS portal JSON representation. See the Using fromJSON() guide topic for more information.
- Returns
- any
The ArcGIS portal JSON representation of an instance of this class.
Type definitions
PercentileParameters
The parameters for percentile statistics.
- See also
orderBy
- Type
- "ASC" | "DESC" | undefined
Specify ASC (ascending) or DESC (descending) to control the order of the data.
For example, in a data set of 10 values from 1 to 10, the percentile value for 0.9 with orderBy set to ascending (ASC) is 9, but
when orderBy is set to descending (DESC) the result is 2. The default is ASC.