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

来源:互联网 发布:诺诺助手是什么软件 编辑:程序博客网 时间:2024/06/05 13:32

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,多测试,就有结果了

原创粉丝点击