Рассчитать сумму в нескольких полях с помощью StatisticsDefinition()

Я построил виджет в WebAppBuilder для ArcGis, где вы можете выбрать область и просмотреть информацию, которая находится внутри нее, выбор основывается на выбранном вами радиусе, в данном случае от 100 до 300 метров.

Я хотел бы добавить функциональность, поэтому я хотел бы создать из первого результата запроса сумму четырех полей в таблице атрибутов.

В API я обнаружил класс определения статистики, поэтому использовал результат первого запроса, но он не работает.

Я был бы признателен, если бы кто-то мог дать совет по поводу суммы запроса.

Спасибо заранее.

Ниже код:

 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;

2 ответа

Решение

Как я вижу, для этого есть разные способы. Вы не можете передать несколько полей Однако вы можете передать несколько 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 .... ];

Это может решить вашу проблему.

Не стесняйтесь стрелять ваши дальнейшие запросы.

Ну, я боюсь, что мы не можем передать несколько полей в onStatisticField,

Это дизайн таким образом, что он добавит (в случае суммы) все значения определенного поля.

outStatistics поддерживается только в тех слоях / таблицах, где SupportStatistics имеет значение 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];
  ...
});

Sources-

https://developers.arcgis.com/javascript/3/jsapi/query-amd.html

https://developers.arcgis.com/javascript/3/jsapi/statisticdefinition-amd.html

В твоем случае-

var sumfields = new StatisticDefinition();
sumfields.statisticType = "sum";
sumfields.onStatisticField = "POB_TOT"; //any one numeric field
sumfields.outStatisticFieldName = "sum_Pob_Tot";   

myQuery.outStatistics = [sumfields];

Примечание. Однако сначала вам необходимо убедиться, что ваш ГИС-слой включен для StatisticDefinition или нет.

Если вы все еще сталкиваетесь с проблемой, то поделитесь своим уровнем ГИС.

Надеюсь, это поможет вам:)

Другие вопросы по тегам