arcigs js api 查詢,使用group by 和sum 等聚合函數的使用

1.業務場景: (這裏使用的arcgis js api 版本是 3.17版本)

 最近使用arcgis js api 的時候,有這樣一種需求,需要統計map server中 不同地塊肥沃度好壞的 面積各有多少,用來做餅狀圖,比如:

好地:100畝

中等:50畝

差地:30畝

2.解決方法:

方法1:剛開始,採用的是,根據不同的肥沃度,分別去查詢,但是如果肥沃度 有幾個數據,那麼 就要查詢幾次數據,而且要分別把查出來的數據的面積進行相加,從而實現功能,但是後面發現這樣太慢了。然後就查閱官方arcgis  js api,發現有 分組查詢 ,和聚合函數的使用。下面就使用arcgis js api 提供的方法進行實現。

方法2:分析下,就不難,看出地塊的肥沃程度,需要使用group by 來進行分組查詢,然後對於面積 可以使用 sum 來進行聚合。

測試發現,要使用group by 必須指定 query.outStatistics = [ statDef ];  (statDef 是一個 StatisticDefinition對象,就是統計定義對象,這裏官方文檔中也有提到),這就是使用的前提。 下面是代碼,其實很簡單,相比第一種方法簡單多了。

queryTask = new esri.tasks.QueryTask(countiesUrl);
        query = new esri.tasks.Query();
        query.outFields = outFields;
        statDef = new esri.tasks.StatisticDefinition();
        statDef.statisticType = "sum";
        statDef.onStatisticField = "MJ";
        statDef.outStatisticName = "MJ";
		
        query.returnGeometry = false;
        query.where = "1=1";
        query.outStatistics = [ statDef ];
		query.groupByFieldsForStatistics = ["GLCS"];
        queryTask.execute(query, handleQueryResult, errorHandler);

1. new queryTask 對象

2.new query 對象

3.new statisticDefiniton 對象

4.設置query的outStatistics屬性爲 statistic Definiton ,然後定義query的 group by 字段 ,即可 

這樣 查詢出來的結果 就會有類似這樣的數據[glcs:好地,mj:50畝,glcs:中等,mj:30畝。。。。。。。。。。],

目前我發現的就是這種方法。如有其他,請指正。

3.總結:

其實就是仔細看api,多測試,就有結果了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章