GP可以理解成是跑ToolBox中工具的代理,实现的过程是先将工具参数设置好,之后将GP参数设置好,就可以执行了。
每个GP工具都有一组固定的参数(a fixed set of parameters)。
GP除了可以跑Esri定义的Tools,还可以跑用户自定义的模块或脚本工具。以下分两种方式来操作,一是跑ESRI的工具,另一是跑用户自定义的模块或脚本工具。
一:ESRI的工具
ESRI提供的工具有:
Toolbox names |
Namespaces |
3D Analyst tools |
ESRI.ArcGIS.Analyst3DTools |
Analysis tools |
ESRI.ArcGIS.AnalysisTools |
Conversion tools |
ESRI.ArcGIS.ConversionTools |
Data Management tools |
ESRI.ArcGIS.DataManagementTools |
Cartography tools |
ESRI.ArcGIS.CartographyTools |
Coverage tools |
ESRI.ArcGIS.CoverageTools |
Geocoding tools |
ESRI.ArcGIS.GeocodingTools |
Geostatistical Analyst tools |
ESRI.ArcGIS.GeostatisticalAnalystTools |
Linear Referencing tools |
ESRI.ArcGIS.LinearReferencingAnalystTools |
Multidimension tools |
ESRI.ArcGIS.MultidimensionTools |
Network Analyst tools |
ESRI.ArcGIS.NetworkAnalystTools |
Samples |
ESRI.ArcGIS.SamplesTools |
Spatial Analyst tools |
ESRI.ArcGIS.SpatialAnalystTools |
Spatial Statistics tools |
ESRI.ArcGIS.SpatialStatisticsTools |
Code Snippet
实现对FeatureLayer生成缓冲区,并保存的功能
//第一步设置Buffer参数
IFeatureLayerpINFeaLyr = GetFeaLyr(pMap, "QSJZD_H_320482"); //获取要生成缓冲区的FeatureLayer
ESRI.ArcGIS.AnalysisTools.Bufferbuffer = new ESRI.ArcGIS.AnalysisTools.Buffer();
buffer.in_features= pINFeaLyr;//可以是指定的图层,也可以是指定的路径,如果是路径,一定是FullName
buffer.out_feature_class= @"E:\研究生工作\注记压盖与定位\04Data\temp\buffer.shp";//输出路径,切记文件目录要实际存在,但Buffer.shp是导出的文件名
buffer.buffer_distance_or_field= "10 METERS";//属性字段名或制定距离,制定距离时一定注意,数字和单位之间必须有空格
buffer.dissolve_option= "ALL";//ALL表明缓冲区重叠时,融合
//第二步设置GP参数
Geoprocessorgp = new Geoprocessor();
gp.OverwriteOutput= true; //覆盖原有文件并重写
//第三步执行GP
gp.Execute(buffer, null);
二:运行自定义的工具(该代码来源AEHelper)
publicvoid SampleCalculateBestPathTool()
{
// Initialize the geoprocessor.
Geoprocessor GP = new Geoprocessor();
// Add the BestPath toolbox.
GP.AddToolbox(@"C:\SanDiego\BestPath.tbx");
// Generate the array of parameters.
IVariantArrayparameters = new VarArrayClass();
parameters.Add(@"C:\SanDiego\source.shp");
parameters.Add(@"C:\SanDiego\destination.shp");
parameters.Add(@"C:\SanDiego\bestpath.shp");
// Execute the model tool by name.
GP.Execute("CalculateBestPath", parameters, null);
}