我是靠谱客的博主 追寻大象,最近开发中收集的这篇文章主要介绍AE中的统计方法(转),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一般常用的统计功能例如:唯一字段统计、数据行数统计、数据值求和统计等。

    1、基础统计(BaseStatistics)组件用来生成和报告统计结果。
    2、IFrequencyStatistics接口提供对用来报告频率统计的成员的访 问。
    3、IGenerateStatistics接口提供对用来生成统计结果的成员的访问。
    4、IStatisticsResults提供对用来报告统计结果的成员的访问。 
    可访问的属性有Count,Sum,Maximum,Minimum,Meanm,StandardDeviation(标准差)
 
     DataStatistics组件允许返回统计结果及单个字段的唯一值。组件创建后,用来分析的数据通过IDataStatistics::Cursor属性,以光标形式的传入。注意ICursor的对象只能使用一次,如果要获取多个结果,应当再次创建光标。IDataStatistics是数据统计组件中唯一的接口
 
1、IDataStatistics
 
属性
Cursor--通过游标来生成统计表
Field--要统计的字段 
UniquueCount--统计表中唯一值总数
Uniquues--唯一值枚举
Statistics-- IStatisticsResults对象,用于返回统计信息
 
2、IStatisticsResults
属性
Count--值总数 
Maximum --最大值
Mean--算术平均值
Minimum--最小值 
StandardDeviation--标准差
 
Sum--求和 
示例:唯一字段统计,GeoDatabase没有提供DISTINCT这样的关键字进行唯一值查询,只有通过IDataStatistics::Uniquues方式来获取唯一值
public void IDataStatistics_Example(IFeatureClass featureClass)
    {
        ICursor cursor = (ICursor)featureClass.Search(null, false);

        IDataStatistics dataStatistics = new DataStatisticsClass();
        dataStatistics.Field = "PIP_SIZE";

        dataStatistics.Cursor = cursor;

        //求唯一值

        System.Collections.IEnumerator enumerator = dataStatistics.Uniquues;
        enumerator.Reset();

        while (enumerator.MoveNext())
        {
            object myObject = enumerator.Current;
            Console.WriteLine("Value - {0}", myObject.ToString());

        }

       //求算术平均值

        cursor = (ICursor)featureClass.Search(null, false);
        dataStatistics.Cursor = cursor;
        ESRI.ArcGIS.esriSystem.IStatisticsResults statisticsResults = dataStatistics.Statistics;
        Console.WriteLine("mean value - {0}", statisticsResults.Mean);

    }
通过接口说明和示例可以看出,统计信息是基于数字字段的统计。
另外,关于查询与统计接口,还有IQueryDef、IQueryFilterDefinition、ITable等。例子如下:
   //IQueryDef Example

   public void IQueryDef_Example(IWorkspace workspace)

    {
        IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;
        //create query definition
        IQueryDef queryDef = featureWorkspace.CreateQueryDef();
        //provide list of tables to join
        queryDef.Tables = "datesjoin,dudatest";
        //retrieve the fields from all tables
        queryDef.SubFields = "sde.datesjoin.dt_field = sde.dudates.dt_field";
        //set up join
        queryDef.WhereClause = "datesjoin.dt_field = dudates.dt_field";

        //Create FeatureDataset. Note the use of .OpenFeatureQuery.
        //The name "MyJoin" is the name of the restult of the query def and
        //is used in place of a feature class name.
        IFeatureDataset featureDataset = featureWorkspace.OpenFeatureQuery("MyJoin", queryDef);
        //open layer to test against
        IFeatureClassContainer featureClassContainer = (IFeatureClassContainer)featureDataset;
        IFeatureClass featureClass = featureClassContainer.get_ClassByName("MyJoin");

    }

    //IQueryFilterDefinition PostfixClause Example

    public void IQueryFilterDefinition_PostfixClause_Example(IFeatureClass featureClass)
    {
        //this function uses the PostfixClause property to append an Order By clause to the query.
        IQueryFilter queryFilter = new QueryFilterClass();
        queryFilter.SubFields = "FULLNAME";
        queryFilter.WhereClause = "OBJECTID > 10";
        IQueryFilterDefinition queryFilterDefinition = (IQueryFilterDefinition)queryFilter;
        queryFilterDefinition.PostfixClause = "ORDER BY FULLNAME";
        IFeatureCursor featureCursor = featureClass.Search(queryFilter, true);
        int fieldIndex = featureCursor.FindField("FULLNAME");
        IFeature feature = featureCursor.NextFeature();
        while (feature != null)
        {
            Console.WriteLine("The value of the {0} field is {1)", featureCursor.Fields.get_Field(fieldIndex).Name, feature.get_Value(fieldIndex));
            feature = featureCursor.NextFeature();
        }
    }

  //ITable Example

  Public Void ITable_Example(IFeatureClass featureClass)
  {
    ITable pTable = featureClassas ITable;

    Console.WriteLine("The Row Count is:{0}",pTable.RowCount.Tostring());
  }

   更多GIS开发相关问题请加入 GIS开发学习QQ交流群 192251607 共同交流学习!

转载于:https://www.cnblogs.com/hl137510705/p/9266750.html

最后

以上就是追寻大象为你收集整理的AE中的统计方法(转)的全部内容,希望文章能够帮你解决AE中的统计方法(转)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部