目录
在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(), "统计信息");
}