添加要素统计菜单项添加类成员函数添加事件响应函数出现统计结果对话框运行,点击要素统计菜单项
关键代码:
1.增加要素统计函数
publicstring Statistic(stringlayerName, stringfieldName, IMapiMap) {
//根据给定图层名称获取图层对象
DataOperatordataOperator = newDataOperator(iMap);
IFeatureLayerfeatLayer = (IFeatureLayer)dataOperator.GetLayerByName(layerName);
//获取图层数据统计对象
IFeatureClassfeatClass = featLayer.FeatureClass; IDataStatisticsdataStatistic = newDataStatistics(); IFeatureCursorfeatCursor;
featCursor = featClass.Search(null, false); ICursor cursor = (ICursor)featCursor; dataStatistic.Cursor = cursor;
//指定统计字段为面积字段,统计出最小面积、最大面积及平均面积 dataStatistic.Field = fieldName;
IStatisticsResultsstatResult;//using ESRI.ArcGIS.esriSystem; statResult = dataStatistic.Statistics; doubledMax; doubledMin; doubledMean;
dMax = statResult.Maximum; dMin = statResult.Minimum; dMean = statResult.Mean; stringsResult;
sResult = \最大面积为\ + dMax.ToString() + \最小面积为\ + dMin.ToString() + \平均面积为\ + dMean.ToString(); returnsResult; }
4. 添加要素统计事件
privatevoidmiStatistic_Click(object sender, EventArgs e) {
MapAnalysismapAnalysis = newMapAnalysis(); stringsMsg;
sMsg = mapAnalysis.Statistic(\, \, axMapControl1.Map); MessageBox.Show(sMsg); }
4.运行结果
5 实验六:栅格数据处理
6.1 实验目的
? 了解栅格数据的结构 ? 掌握创建栅格数据集的方法 ? 掌握栅格数据格式转换与镶嵌的方法 ? 掌握栅格数据的统计方法
6.2 实验内容
? 实现创建栅格数据集程序 ? 实现栅格数据格式转换程序 ? 实现栅格数据镶嵌程序 ? 实现栅格数据统计程序
6.3 实验步骤与结果
实现创建栅格数据集程序 实验思路:
获取栅格数据集主要有两个途径,一是通过接口调用已有的数据集,二是创建新的栅格数据集。本节将以在文件数据库中创建一个栅格数据集为例,展示栅格工作空间的相关组件使用。首先,需要在ArcCatalog在指定目录下创建一个文件数据库,接着再利用二次开发创建栅格数据集。实验主要包括以下几个部分:
1. 在ArcCatalog中创建一个文件地理数据库
2. 在主窗体添加控件和类库引用:在程序主窗体上添加一个菜单项“栅格
管理”,在下拉菜单中添加菜单项“创建栅格数据集”,添加引用using ESRI.ArcGIS.DataSourcesRaster
3.添加栅格工具类:该类用于管理当前项目中涉及栅格数据操作的相关功能。同时为该类导入:
using System;
usingESRI.ArcGIS.DataSourcesRaster; usingSystem.Collections.Generic; usingESRI.ArcGIS.Geodatabase; usingESRI.ArcGIS.DataSourcesGDB;
4.添加类成员函数:包括两个,一是打开一个给定文件夹的栅格工作空间函数,二是创建栅格数据集函数。
5.添加事件响应函数:为主窗体的“创建栅格数据集”菜单项生成点击事件响应函数,实现在文件数据库下创建栅格数据集。
实现流程如下:
创建文件地理数据库添加主窗体菜单项添加栅格工具类运行,创建栅格数据集添加点击事件响应函数在栅格工具类中添加函数
关键代码: 1.添加类成员函数
//打开栅格工作空间
publicIRasterWorkspaceExOpenRasterWorkspaceFromFileGDB(stringfilePath) {
IWorkspaceFactorywsFactory = newFileGDBWorkspaceFactoryClass();
IRasterWorkspaceExws = (IRasterWorkspaceEx)wsFactory.OpenFromFile(filePath,0); returnws; }
//创建栅格数据集函数
publicboolCreateRaster(stringfilePath, stringrasterName) {
IRasterWorkspaceExrasterWorksapceEx;