AE实现对矢量数据的字段值进行最大值、最小值、求和、平均值、方差统计:...

it2024-07-13  40

要求:需要统计的字段必须是数字类型的数据:

主要使用的核心接口有:IDataStatistics和IStaticsResults。类有:BaseStatisticsClass

思路:

由于IStaticsResults中有统计的相关属性(max、min、sum、mean等),BaseStatisticsClass为实现类,所以需要图层中的某个接口跳到IStaticsResults接口;所以使用IDataStatistics中的Statistics属性;

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.Geodatabase; namespace staticsgistest { public partial class Form1 : Form { public Form1() { ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop); InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } //min private void button1_Click(object sender, EventArgs e) { IFeatureLayer lyr = axMapControl1.Map.get_Layer(0) as IFeatureLayer; IFeatureCursor feacursor = lyr.FeatureClass.Search(null,true);//true表示只读 IDataStatistics statics = new DataStatisticsClass(); statics.Cursor = feacursor as ICursor;//传入图层中的属性表的游标 statics.Field = "cd"; IStatisticsResults iss = statics.Statistics; double count = iss.Minimum; MessageBox.Show(count.ToString()); } //max private void button2_Click(object sender, EventArgs e) { IFeatureLayer lyr = axMapControl1.Map.get_Layer(0) as IFeatureLayer; IFeatureCursor feacursor = lyr.FeatureClass.Search(null, true);//true表示只读 IDataStatistics statics = new DataStatisticsClass(); statics.Cursor = feacursor as ICursor; statics.Field = "cd"; IStatisticsResults iss = statics.Statistics; double count = iss.Maximum; MessageBox.Show(count.ToString()); } private void button3_Click(object sender, EventArgs e) { IFeatureLayer lyr = axMapControl1.Map.get_Layer(0) as IFeatureLayer; IFeatureCursor feacursor = lyr.FeatureClass.Search(null, true);//true表示只读 IDataStatistics statics = new DataStatisticsClass(); statics.Cursor = feacursor as ICursor; statics.Field = "cd"; IStatisticsResults iss = statics.Statistics; double count = iss.Sum; MessageBox.Show(count.ToString()); } private void button4_Click(object sender, EventArgs e) { IFeatureLayer lyr = axMapControl1.Map.get_Layer(0) as IFeatureLayer; IFeatureCursor feacursor = lyr.FeatureClass.Search(null, true);//true表示只读 IDataStatistics statics = new DataStatisticsClass(); statics.Cursor = feacursor as ICursor; statics.Field = "cd"; IStatisticsResults iss = statics.Statistics; double count = iss.Count; MessageBox.Show(count.ToString()); } } }
最新回复(0)