1

我在 ArcGis 的 WebAppBuilder 中构建了一个小部件,您可以在其中选择一个区域并查看其中的信息,选择基于您选择的半径,在本例中为 100 到 300 米。

我想添加一个功能,因此我想从第一个查询结果中将四个字段的总和创建到属性表中。

我在 API 上发现了 Statitics Definition 类,所以我使用了第一个查询的结果,但它不起作用。

如果有人可以就总和查询提供一些建议,我将不胜感激。

预先感谢。

代码下方:

 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;
4

2 回答 2

1

好吧,恐怕我们不能在onStatisticField.

这是这样设计的,它将添加(在sum的情况下)特定字段的所有值。

outStatistics 仅在 supportsStatistics 为 true 的层/表上受支持。

例子-

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 图层。

希望这会帮助你:)

于 2017-04-07T10:25:38.297 回答
1

正如我所看到的,有不同的解决方法。你不能传递多个字段但是你可以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 .... ];

这可能会解决您的问题。

随意拍摄您的进一步查询。

于 2017-04-07T10:46:25.253 回答