基于C#的ArcEngine二次开发教程(14):矢量数据字段值统计【最大值、最小值、平均值、求和、方差】

目录

1 ArcMap为线要素添加长度字段并统计

2 接口说明

2.1 IDataStatistics接口

2.2 IStatisticsResults接口

2.3 FeatureClass类

3 源码实现

3.1 求最小值

3.2 求和

3.3 平均值

3.4 最小值

3.5 方差

4 效果演示


在ArcGIS应用中,经常需要获取某一字段的统计信息,本博文就此问题进行讲解

1 ArcMap为线要素添加长度字段并统计

2 接口说明

2.1 IDataStatistics接口

其中IDataStatistics.Statistics方法,返回IStatisticsResults接口类型

2.2 IStatisticsResults接口

2.3 FeatureClass类

根据对象模型图,该类是一个不可创建类,需要使用IFeatureLayer.FeatureClass属性来创建

3 源码实现

3.1 求最小值

        private void 最大值ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IFeatureLayer myLayer = axMapControl1.get_Layer(0) as IFeatureLayer;
            IFeatureCursor myFeaClass = myLayer.FeatureClass.Search(null, true);
            IDataStatistics sta = new DataStatisticsClass();
            sta.Cursor = myFeaClass as ICursor;
            sta.Field = "长度";
            IStatisticsResults res = sta.Statistics;
            MessageBox.Show("最小值 = " + res.Maximum.ToString(),"统计信息");
        }

3.2 求和

        private void 最小值ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IFeatureLayer myLayer = axMapControl1.get_Layer(0) as IFeatureLayer;
            IFeatureCursor myFeaClass = myLayer.FeatureClass.Search(null, true);
            IDataStatistics sta = new DataStatisticsClass();
            sta.Cursor = myFeaClass as ICursor;
            sta.Field = "长度";
            IStatisticsResults res = sta.Statistics;
            MessageBox.Show("求和 = " + res.Sum.ToString(), "统计信息");
        }

3.3 平均值

        private void 平均值ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IFeatureLayer myLayer = axMapControl1.get_Layer(0) as IFeatureLayer;
            IFeatureCursor myFeaClass = myLayer.FeatureClass.Search(null, true);
            IDataStatistics sta = new DataStatisticsClass();
            sta.Cursor = myFeaClass as ICursor;
            sta.Field = "长度";
            IStatisticsResults res = sta.Statistics;
            MessageBox.Show("平均值 = " + res.Mean.ToString(), "统计信息");
        }

3.4 最小值

        private void 最小值ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IFeatureLayer myLayer = axMapControl1.get_Layer(0) as IFeatureLayer;
            IFeatureCursor myFeaClass = myLayer.FeatureClass.Search(null, true);
            IDataStatistics sta = new DataStatisticsClass();
            sta.Cursor = myFeaClass as ICursor;
            sta.Field = "长度";
            IStatisticsResults res = sta.Statistics;
         }

3.5 方差

        private void 方差ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IFeatureLayer myLayer = axMapControl1.get_Layer(0) as IFeatureLayer;
            IFeatureCursor myFeaClass = myLayer.FeatureClass.Search(null, true);
            IDataStatistics sta = new DataStatisticsClass();
            sta.Cursor = myFeaClass as ICursor;
            sta.Field = "长度";
            IStatisticsResults res = sta.Statistics;
            MessageBox.Show("标准差 = " + res.StandardDeviation.ToString(), "统计信息");

        }

4 效果演示

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小薛引路

喜欢的读者,可以打赏鼓励一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值