silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ArcGIS 10.1 for Server 服务端查询统计 -ArcGIS API for Silverlight 实现大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

本博文编写时的软件件环境,为  arcgis server 10.1sp1 ,ArcGIS API for Silverlight 3.0,VS2010sp1 需求:我有一堆点 ,分为不同的种类,每个点都有一个value属性,我要统计某一空间范围内不同种类点的个数以及每种类型的点的value属性和。以下是数据,为10万个点分为七类。属性表如下 如果在10.1 之前的话,我们需要通过空间查询把所有符
@H_197_18@本博文编写时的软件件环境,为 

@H_197_18@arcgis server 10.1sp1,ArcGIS API for Silverlight 3.0,VS2010sp1

@H_197_18@需求:我有一堆点 ,分为不同的种类,每个点都有一个value属性,我要统计某一空间范围内不同种类点的个数以及每种类型的点的value属性和。以下是数据,为10万个点分为七类。属性表如下

@H_197_18@

ArcGIS 10.1 for Server 服务端查询统计 -ArcGIS API for Silverlight 实现


@H_197_18@

ArcGIS 10.1 for Server 服务端查询统计 -ArcGIS API for Silverlight 实现


@H_197_18@

@H_197_18@如果在10.1 之前的话,我们需要通过空间查询把所有符合条件的的要素查回来,在前端进行遍历,然后根据属性自己判断一个点要素属于哪一类的,以及计算属性值得和。代码大致如下

@H_197_18@

 Query query = new Query();
            query.ReturnGeometry = false;
            query.Geometry = geo;
            OutFields f = new OutFields();
            f.Add("value");
            f.Add("class");
            query.outFields = f;
            queryTask.ExecuteCompleted += new EventHandler<QueryEventArgs>(queryTask_ExecuteCompleted);
_DicResults = new Dictionary<String,double>();

            var graphics = from graphic in e.FeatureSet orderby graphic.Attributes["class"] SELEct graphic;
            double sum = 0;

            foreach (Graphic g in graphics)
            {
                String key = g.Attributes["class"].ToString();
                double value = Convert.ToInt32(g.Attributes["value"]);

                if (_DicResults.ContainsKey(key))
                {
                    _DicResults[key] += value;
                }
                else _DicResults.Add(key,value);

                sum += value;
            }

@H_197_18@ @H_197_18@如果使用上述方式的话查询的数据过多的话,还需要修改服务器返回到前端的最大要素的个数(认是1000),相当于求和,求数量 还容易一些,如果我计算标准差,方差的话要麻烦一些了,不过ArcGIS 10.1 for Server 在查询支持了服务端的分组统计功能,ArcGIS API 3.0 for Silverlight 开始了支持这些新功能。直接把返回我们要得到的统计结果

@H_197_18@看一下OMD

ArcGIS 10.1 for Server 服务端查询统计 -ArcGIS API for Silverlight 实现

ArcGIS 10.1 for Server 服务端查询统计 -ArcGIS API for Silverlight 实现

@H_197_18@从以上可以看出 API 与之前 不同是 查询参数增加了。其中  GroupByFieldsForStatistics  意思是以那个字段分组统计,相当于我们在sql 语句中写的 Groupby 可以为多个字段, OutStatistics代表统计方法 比如求一组内的数据的和,最大值 最小值,平均值,数量,标准差。实现如下。跟原来的查询类似 新建立一个Querytask,初始化查询查询参数Query,执行查询 在回调函数里面处理返回结果。

@H_197_18@

            queryTask = new QueryTask();
            Query query= new Query()
            {
                GroupByFieldsForStatistics = new List<String> { "class" },OutStatistics = new List<OutStatistic> { 
                    new OutStatistic(){
                        OnStatisticField = "class",OutStatisticFieldName = "count",StatisticType = StatisticType.Count
                    },new OutStatistic(){
                        OnStatisticField = "value",OutStatisticFieldName = "sum",StatisticType = StatisticType.Sum
                    }   },Geometry=geo
                           };
            query.ReturnGeometry = false;
            queryTask.ExecuteCompleted += new EventHandler<QueryEventArgs>(queryTask_ExecuteCompleted);
            queryTask.Failed += new EventHandler<TaskFailedEventArgs>(queryTask_Failed);
            queryTask.ExecuteAsync(query);
@H_197_18@以class 为字段进行分组同时计算 每种class的点的个数,然后计算每一类 class 要素的value之和,时传入的参数Geometry=geo 是自己绘制的查询范围,处理返回结果的函数如下

@H_197_18@

 void queryTask_ExecuteCompleted (object sender,QueryEventArgs E)
        {
            _DicResults = new Dictionary<String,double>();

            var graphics =  e.FeatureSet ;
            double sum = 0;
            //输出的是一个表格 形式如下 三个字段
            // class  count  sum          
            foreach (Graphic g in graphics)
            {
                String key = g.Attributes["class"].ToString();                
                double value = Convert.ToInt32(g.Attributes["sum"]);
                _DicResults.Add(key,value);
                sum += value;
            }
        }
返回的是一个表 ,Graphic的集合,一条记录就是一个graphic,这个Graphic 是没有空间信息的,只是一个属性表而已。 Demo 在线体验地址 http://tm.arcgisonline.cn/2012/0914/504.html

ArcGIS 10.1 for Server 服务端查询统计 -ArcGIS API for Silverlight 实现

大佬总结

以上是大佬教程为你收集整理的ArcGIS 10.1 for Server 服务端查询统计 -ArcGIS API for Silverlight 实现全部内容,希望文章能够帮你解决ArcGIS 10.1 for Server 服务端查询统计 -ArcGIS API for Silverlight 实现所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。