ArcEngine 統計方法

來源:互聯網
上載者:User

ArcEngine 統計方法

 

概述

     一般常用的統計功能例如:唯一欄位統計、資料行數統計、資料值求和統計等。

    1、基礎統計(BaseStatistics)組件用來產生和報告統計結果。

    2、IFrequencyStatistics介面提供對用來報告頻率統計的成員的訪 問。

    3、IGenerateStatistics介面提供對用來產生統計結果的成員的訪問。

    4、IStatisticsResults提供對用來報告統計結果的成員的訪問。

    可訪問的屬性有Count,Sum,Maximum,Minimum,Meanm,StandardDeviation(標準差)

     DataStatistics組件允許返回統計結果及單個欄位的唯一值。組件建立後,用來分析的資料通過IDataStatistics::Cursor屬性,以游標形式的傳入。注意ICursor的對象只能使用一次,如果要擷取多個結果,應當再次建立游標。IDataStatistics是資料統計組件中唯一的介面

1、IDataStatistics

屬性

Cursor--通過遊標來產生統計表

Field--要統計的欄位

UniqueValueCount--統計表中唯一值總數

UniqueValues--唯一值枚舉

Statistics-- IStatisticsResults對象,用於返回統計資訊

2、IStatisticsResults

屬性

Count--值總數

Maximum --最大值

Mean--算術平均值

Minimum--最小值

StandardDeviation--標準差

Sum--求和

 

樣本:唯一欄位統計,GeoDatabase沒有提供DISTINCT這樣的關鍵字進行唯一值查詢,只有通過IDataStatistics::UniqueValues方式來擷取唯一值

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

}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.