Рассчитать сумму в нескольких полях с помощью 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
или нет.
Если вы все еще сталкиваетесь с проблемой, то поделитесь своим уровнем ГИС.
Надеюсь, это поможет вам:)