2017-03-27 33 views
1

我已經在WebAppBuilder for ArcGis中構建了一個小部件,您可以在其中選擇一個區域並查看其中的信息,該選擇基於您選擇的半徑,在此情況下100和300米。使用StatisticsDefinition()計算幾個字段的總和

我想添加一個功能,所以我想從第一個查詢結果創建四個字段的總和到屬性表中。

我在API上發現了Statitics Definition類,所以我使用了第一個查詢的結果,但它不起作用。

我很感激,如果有人可以給一些關於總和查詢的建議。

感謝advace。

代碼如下:

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; 

回答

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 .... ]; 

這可能會解決你的問題。

隨意拍攝您的進一步疑問。

1

好,恐怕我們不能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]; 
    ... 
}); 

來源 -

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層。

希望這將幫助你:)