GP工具可以直接调用ArcgisMap中工具栏的某些功能。
1.首先需要有许可证license。
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()方法,即异步运行。