ArcEngine二次开发-调用GP工具(IGeoProcessor接口或Geoprocessor类)

GP工具可以直接调用ArcgisMap中工具栏的某些功能。
1.首先需要有许可证license。
ArcEngine二次开发-调用GP工具(IGeoProcessor接口或Geoprocessor类)_第1张图片
2.添加相关引用

using ESRI.ArcGIS.Geoprocessor;
using ESRI.ArcGIS.Geoprocessing; 
using ESRI.ArcGIS.AnalysisTools; //引用工具所在程序集

3.调用GP工具有2种方式:
(1)使用Geoprocessor类

using ESRI.ArcGIS.Geoprocessor;

Geoprocessor GP = new Geoprocessor();
                //输出文件已存在,则覆盖
                GP.OverwriteOutput = true;
                //定义工具,此处是要素图层更新工具
                ESRI.ArcGIS.AnalysisTools.Update pUpdate = new ESRI.ArcGIS.AnalysisTools.Update(); 
                //设置输入参数,既可是IFeatureLayer或IFeatureClass对象,也可是完整文件路径。
                pUpdate.in_features = inVector.Text;    
                pUpdate.update_features = updateVector.Text;   
                //输出对象,一般是输出文件名的完整文件路径
                pUpdate.out_feature_class = outResult.Text;
                //如果GP.Execute(pUpdate, null)运行失败,则可以尝试使用GP.ExecuteAsync(pUpdate)
                GP.Execute(pUpdate, null);
                //GP.ExecuteAsync(pUpdate);

(2)使用IGeoProcessor接口和GeoProcessorClass类

using ESRI.ArcGIS.Geoprocessing;

                IVariantArray pParameterArray;              

                IGeoProcessor pGP = new GeoProcessorClass();

                pParameterArray = new VarArrayClass();
                //查看工具使用参考文档,添加对应参数,一般参数值为文件路径
                pParameterArray.Add(inFeaFile);

                pParameterArray.Add(fieldName);

                pParameterArray.Add(rasterFile);

                pParameterArray.Add(strCellAssign);
                //可选参数,可设置为null
                pParameterArray.Add(null);

                pParameterArray.Add(null);
                //PolygonToRaster_conversion,即面要素图层转为栅格图层
                pGP.Execute("PolygonToRaster_conversion", pParameterArray, null); 

如果出现“对COM组件的调用返回了错误 HRESULT E_FAIL。”
首先,检查是否拥有该工具的使用许可。然后,检查输入参数设置是否正确。最后,可以尝试使用GP.ExecuteAsync()方法,即异步运行。

你可能感兴趣的:(ArcEngine二次开发-调用GP工具(IGeoProcessor接口或Geoprocessor类))