ArcEngine 中的数据统计 DataStatistics

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; }
    }

转载自:https://blog.csdn.net/mytudousi/article/details/31383079

You may also like...