博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ArcGis 统计方法
阅读量:6900 次
发布时间:2019-06-27

本文共 3612 字,大约阅读时间需要 12 分钟。

from:http://blog.sina.com.cn/s/blog_4177d50b0100fjbg.html

 

 

概述

 

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

    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());

 

}

转载地址:http://tgsdl.baihongyu.com/

你可能感兴趣的文章
新手学习编程的最佳方式是什么
查看>>
程序员零起步(四)——实习
查看>>
day6
查看>>
Aix下如何运行Java程序
查看>>
js简单总结
查看>>
隐马尔可夫HMM中viterbi算法
查看>>
ospf 协议配置方法及实例
查看>>
Python:解决中文字符串问题
查看>>
python模块之xml
查看>>
那些在学习iOS开发前就应该知道的事
查看>>
python多线程--Condition(条件对象)
查看>>
c++汉诺塔相关知识总结1
查看>>
Gym 100169A 最短路
查看>>
android 中activity调用本地service中的方法。
查看>>
强制IE浏览器或WebBrowser控件使用指定版本显示网页(转发)
查看>>
OJDBC版本区别
查看>>
中国网建之SMS
查看>>
《SQL 进阶教程》 case:练习题1-1-2 转换行列——在表头里加入汇总列
查看>>
展讯NAND Flash高级教程【转】
查看>>
DynamicPropertyAccessor Expression lambda
查看>>