基于C#的AE二次开发调用GP实现要素类的擦除功能实例
我的开发环境为ArcGIS Engine 10.2与Visual studio2010,主地图名称为axMapControl1,如果变动则需要修改(注意相关事件的添加与动态链接库的引入)。
示例代码:
private void 擦除工具ToolStripMenuItem_Click(object sender, EventArgs e)
{
//创建一个Geoprocessor工具类
Geoprocessor geoprocessor = new Geoprocessor();
try
{
//工具执行后有文件输出,所以为true
geoprocessor.OverwriteOutput = true;
//调用擦除工具
ESRI.ArcGIS.AnalysisTools.Erase eraseTool = new ESRI.ArcGIS.AnalysisTools.Erase();
//获取矢量图层图层一(高耦合)
IFeatureLayer pIFeatureLayer01 = axMapControl1.get_Layer(0) as IFeatureLayer;
//获取矢量图层图层二(高耦合)
IFeatureLayer pIFeatureLayer02 = axMapControl1.get_Layer(1) as IFeatureLayer;
//输入IFeatureClass1 作为源图层
eraseTool.in_features = pIFeatureLayer01.FeatureClass;
//输入IFeatureClass2 作为目标图层(擦除图层)
eraseTool.erase_features = pIFeatureLayer02.FeatureClass;
//擦除执行后的SHP文件输出路径(确保该路径文件夹存在,否则会报错)
String filepath = @"c:\\dat\\shp\\";
//擦除执行后的SHP文件输出名称(如果当前已存在该SHP文件,会覆盖原来的文件)
eraseTool.out_feature_class = filepath + "eraserShapefile01.shp";
//执行GP工具
geoprocessor.Execute(eraseTool, null);
//将生成结果添加到地图中,并优先显示
axMapControl1.AddShapeFile(filepath, "eraserShapefile01");
axMapControl1.MoveLayerTo(0, 0);
}
catch (Exception ex)
{
//如果出错,输出GP内部错误信息
object sev = null;
string msgs = geoprocessor.GetMessages(ref sev);
MessageBox.Show(msgs);
}
}