ArcEngine 中的数据统计 DataStatistics

本文介绍了如何使用ArcEngine的DataStatistics类来高效地统计矢量数据中指定字段的唯一值,通过实例代码演示了统计过程,并解释了DataStatistics类的主要成员和使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

DataSratistics类的成员定义如下:

    public class DataStatisticsClass : DataStatistics, IDataStatistics
    {
        public DataStatisticsClass();
        public virtual bool Cancelled { get; }
        public virtual bool Continue { get; }
        //要统计的 游标,该游标就是该类要统计的目标
        public virtual ICursor Cursor { set; }
        //要统计的字段名称
        public virtual string Field { get; set; }
        //采样率
        public virtual int SampleRate { get; set; }
        //是否是简单统计
        public virtual bool SimpleStats { get; set; }
        //得到统计的结果
        public virtual IStatisticsResults Statistics { get; }
        //唯一之的个数
        public virtual int UniqueValueCount { get; }
        //惟一值 列表
        public virtual IEnumerator UniqueValues { get; }
    }
因为统计类使用的数据源是游标ICursor,所以继承该接口FeatureCursor游标也是可以进行统计的。我们经常使用的Table和FeatureClass通过查询都可以得到游标,所以这些数据都是可以统计的,其他的一些数据通过查询只要能通过查询得到游标实例,理论上是都可以统计的。

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

DataStatisticsClass myDataStatistics = new DataStatisticsClass();
ICursor myCursor = this._FeatureClass.Search(null, false) as ICursor;
myDataStatistics.Cursor = myCursor;
myDataStatistics.Field = "字段名称";
IEnumerator myEnumerator = myDataStatistics.UniqueValues;
List<string> myValueList = new List<string>();
myEnumerator.Reset();
while (myEnumerator.MoveNext())
 {
    myValueList.Add(myEnumerator.Current.ToString ());
 }
当然我们还可以得到更多的统计值,通过Statistics属性可以得到IStatisticsResults的实例,通过该实例我们可以得到一些其他的统计信息。IStatisticsResults接口的定义如下:
    public interface IStatisticsResults
    {
        //值总数
        int Count { get; }
        //最大值
        double Maximum { get; }
        //算术平均值
        double Mean { get; }
        //最小值
        double Minimum { get; }
        //标准差
        double StandardDeviation { get; }
        //和
        double Sum { get; }
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值