ArcEngine 中的数据统计 DataStatistics

From:http://blog.csdn.net/mytudousi/article/details/31383079


ArcEngine中有许多需要数据统计的地方,例如在矢量数据唯一值渲染的时候,需要统计出该矢量数据中包含哪些惟一值,如果我们用代码读出来去遍历的话速度是很慢的,这时候就可以使用ArcEngine提供的DataStatistics类,通过该类可以很快的统计出我们要渲染的矢量数据指定字段包含的唯一值有哪些。

DataSratistics类的成员定义如下:

[csharp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. public class DataStatisticsClass : DataStatistics, IDataStatistics  
  2. {  
  3.     public DataStatisticsClass();  
  4.     public virtual bool Cancelled { get; }  
  5.     public virtual bool Continue { get; }  
  6.     //要统计的 游标,该游标就是该类要统计的目标  
  7.     public virtual ICursor Cursor { set; }  
  8.     //要统计的字段名称  
  9.     public virtual string Field { getset; }  
  10.     //采样率  
  11.     public virtual int SampleRate { getset; }  
  12.     //是否是简单统计  
  13.     public virtual bool SimpleStats { getset; }  
  14.     //得到统计的结果  
  15.     public virtual IStatisticsResults Statistics { get; }  
  16.     //唯一之的个数  
  17.     public virtual int UniqueValueCount { get; }  
  18.     //惟一值 列表  
  19.     public virtual IEnumerator UniqueValues { get; }  
  20. }  
因为统计类使用的数据源是游标ICursor,所以继承该接口FeatureCursor游标也是可以进行统计的。我们经常使用的Table和FeatureClass通过查询都可以得到游标,所以这些数据都是可以统计的,其他的一些数据通过查询只要能通过查询得到游标实例,理论上是都可以统计的。

例如我们要统计一个矢量数据中包含的惟一值,代码如下:

[csharp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. DataStatisticsClass myDataStatistics = new DataStatisticsClass();  
  2. ICursor myCursor = this._FeatureClass.Search(nullfalseas ICursor;  
  3. myDataStatistics.Cursor = myCursor;  
  4. myDataStatistics.Field = "字段名称";  
  5. IEnumerator myEnumerator = myDataStatistics.UniqueValues;  
  6. List<string> myValueList = new List<string>();  
  7. myEnumerator.Reset();  
  8. while (myEnumerator.MoveNext())  
  9.  {  
  10.     myValueList.Add(myEnumerator.Current.ToString ());  
  11.  }  
当然我们还可以得到更多的统计值,通过Statistics属性可以得到IStatisticsResults的实例,通过该实例我们可以得到一些其他的统计信息。IStatisticsResults接口的定义如下:
[csharp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. public interface IStatisticsResults  
  2. {  
  3.     //值总数  
  4.     int Count { get; }  
  5.     //最大值  
  6.     double Maximum { get; }  
  7.     //算术平均值  
  8.     double Mean { get; }  
  9.     //最小值  
  10.     double Minimum { get; }  
  11.     //标准差  
  12.     double StandardDeviation { get; }  
  13.     //和  
  14.     double Sum { get; }  
  15. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值