使用 Statistics Definition() 计算多个字段中的总和
Calculate sum in several fields with StatisticsDefinition()
我在 WebAppBuilder for ArcGis 中构建了一个小部件,您可以在其中 select 一个区域并查看其中的信息,selection 基于您选择的半径,在此100 到 300 米之间的情况。
我想添加一个功能,所以我想从第一个查询结果中创建四个字段的总和到属性 table。
我在 API 统计定义 class 上找到了,所以我使用了第一个查询的结果,但它不起作用。
如果有人可以就求和查询提供一些建议,我将不胜感激。
提前致谢。
代码下方:
var myQuery = new Query();
myQuery.where = "1 = 1";
myQuery.outFields = ["POB_TOT", "EDAD0015", "EDAD1664","EDAD65_"];
myQuery.returnGeometry = true;
var myQueryTask = new QueryTask(_poblacion);
myQuery.geometry = circle;
myQuery.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;
var sumfields = new StatisticDefinition();
sumfields.statisticType = "sum";
sumfields.onStatisticField = "POB_TOT", "EDAD0015", "EDAD1664","EDAD65_";
myQuery.outStatistics = sumfields;
嗯,恐怕我们不能在onStatisticField
中传递多个字段。
这是一种设计方式,它将添加(在 sum 的情况下)特定字段的所有值。
outStatistics 仅在 layers/tables 上受支持,其中 supportsStatistics 为真。
示例-
require([
"esri/tasks/query", "esri/tasks/StatisticDefinition", ...
], function(Query, StatisticDefinition, ... ) {
var query = new Query();
var statisticDefinition = new StatisticDefinition();
statisticDefinition.statisticType = "sum";
statisticDefinition.onStatisticField = "POP2000";
statisticDefinition.outStatisticFieldName = "TotalPop";
query.outStatistics = [statisticDefinition];
...
});
来源-
https://developers.arcgis.com/javascript/3/jsapi/query-amd.html#outstatistics
https://developers.arcgis.com/javascript/3/jsapi/statisticdefinition-amd.html#outstatisticfieldname
你的情况-
var sumfields = new StatisticDefinition();
sumfields.statisticType = "sum";
sumfields.onStatisticField = "POB_TOT"; //any one numeric field
sumfields.outStatisticFieldName = "sum_Pob_Tot";
myQuery.outStatistics = [sumfields];
注意 - 但是,您需要先验证您的 GIS 图层是否已启用 StatisticDefinition
。
如果您仍然遇到问题,请分享您的 GIS 图层。
希望对您有所帮助:)
据我所知,有不同的解决方法。你不能传递多个字段但是你可以传递多个 outStatistics
在你的情况下。
所以在你的例子下面-
示例-
var sumfields1 = new StatisticDefinition();
sumfields1.statisticType = "sum";
sumfields1.onStatisticField = "POB_TOT"; //any one numeric field
sumfields1.outStatisticFieldName = "sum_Pob_Tot";
var sumfields2 = new StatisticDefinition();
sumfields2.statisticType = "sum";
sumfields2.onStatisticField = "EDAD0015"; //any one numeric field
sumfields2.outStatisticFieldName = "sum_EDAD0015";
var sumfields3 = new StatisticDefinition();
sumfields3.statisticType = "sum";
sumfields3.onStatisticField = "EDAD1664"; //any one numeric field
sumfields3.outStatisticFieldName = "sum_EDAD1664";
.
.
.
.
.
myQuery.outStatistics = [sumfields1, sumfields2, sumfields3 .... ];
这可能会解决您的问题。
如有任何疑问,欢迎随时提出。
我在 WebAppBuilder for ArcGis 中构建了一个小部件,您可以在其中 select 一个区域并查看其中的信息,selection 基于您选择的半径,在此100 到 300 米之间的情况。
我想添加一个功能,所以我想从第一个查询结果中创建四个字段的总和到属性 table。
我在 API 统计定义 class 上找到了,所以我使用了第一个查询的结果,但它不起作用。
如果有人可以就求和查询提供一些建议,我将不胜感激。
提前致谢。
代码下方:
var myQuery = new Query();
myQuery.where = "1 = 1";
myQuery.outFields = ["POB_TOT", "EDAD0015", "EDAD1664","EDAD65_"];
myQuery.returnGeometry = true;
var myQueryTask = new QueryTask(_poblacion);
myQuery.geometry = circle;
myQuery.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;
var sumfields = new StatisticDefinition();
sumfields.statisticType = "sum";
sumfields.onStatisticField = "POB_TOT", "EDAD0015", "EDAD1664","EDAD65_";
myQuery.outStatistics = sumfields;
嗯,恐怕我们不能在onStatisticField
中传递多个字段。
这是一种设计方式,它将添加(在 sum 的情况下)特定字段的所有值。
outStatistics 仅在 layers/tables 上受支持,其中 supportsStatistics 为真。
示例-
require([
"esri/tasks/query", "esri/tasks/StatisticDefinition", ...
], function(Query, StatisticDefinition, ... ) {
var query = new Query();
var statisticDefinition = new StatisticDefinition();
statisticDefinition.statisticType = "sum";
statisticDefinition.onStatisticField = "POP2000";
statisticDefinition.outStatisticFieldName = "TotalPop";
query.outStatistics = [statisticDefinition];
...
});
来源-
https://developers.arcgis.com/javascript/3/jsapi/query-amd.html#outstatistics
https://developers.arcgis.com/javascript/3/jsapi/statisticdefinition-amd.html#outstatisticfieldname
你的情况-
var sumfields = new StatisticDefinition();
sumfields.statisticType = "sum";
sumfields.onStatisticField = "POB_TOT"; //any one numeric field
sumfields.outStatisticFieldName = "sum_Pob_Tot";
myQuery.outStatistics = [sumfields];
注意 - 但是,您需要先验证您的 GIS 图层是否已启用 StatisticDefinition
。
如果您仍然遇到问题,请分享您的 GIS 图层。
希望对您有所帮助:)
据我所知,有不同的解决方法。你不能传递多个字段但是你可以传递多个 outStatistics
在你的情况下。
所以在你的例子下面-
示例-
var sumfields1 = new StatisticDefinition();
sumfields1.statisticType = "sum";
sumfields1.onStatisticField = "POB_TOT"; //any one numeric field
sumfields1.outStatisticFieldName = "sum_Pob_Tot";
var sumfields2 = new StatisticDefinition();
sumfields2.statisticType = "sum";
sumfields2.onStatisticField = "EDAD0015"; //any one numeric field
sumfields2.outStatisticFieldName = "sum_EDAD0015";
var sumfields3 = new StatisticDefinition();
sumfields3.statisticType = "sum";
sumfields3.onStatisticField = "EDAD1664"; //any one numeric field
sumfields3.outStatisticFieldName = "sum_EDAD1664";
.
.
.
.
.
myQuery.outStatistics = [sumfields1, sumfields2, sumfields3 .... ];
这可能会解决您的问题。
如有任何疑问,欢迎随时提出。