GP对象的定义
private
static
IGeoProcessor2 GP =
new
GeoProcessorClass();
// using ESRI.ArcGIS.Geoprocessing;
private
static
Geoprocessor GP =
new
Geoprocessor();
// using ESRI.ArcGIS.Geoprocessor;
//1-定义GeoProcessor对象
Geoprocessor gp = new Geoprocessor();
//2-设置参数
gp.OverwriteOutput = true;
//3-设置工具箱所在的路径
gp.AddToolbox(@"F:lib_testAirportsAndGolf.tbx");
//4-设置输入参数
IVariantArray parameters = new VarArrayClass();
parameters.Add(@"F:lib_test地下水重金属数据.xlsSheet1$");
//5-执行工具
gp.Execute("ModelAnalysis", parameters, null);
【缓冲区】
Geoprocessor GP = new Geoprocessor();
GP.OverwriteOutput = true;
ESRI.ArcGIS.AnalysisTools.Buffer bufferTool = new ESRI.ArcGIS.AnalysisTools.Buffer();
bufferTool.in_features = @"E:**系统AppsDataXZQ行政区.mdbSHENGJXZQ";//输入路径
bufferTool.out_feature_class = @"E:**系统AppsDataXZQ行政区.mdbaa";//输出路径
bufferTool.buffer_distance_or_field = "SHDM";//融合字段
GP.Execute(bufferTool, null);//执行工具
【合并】
Geoprocessor geoprocessor = new Geoprocessor();
geoprocessor.OverwriteOutput = true;
ESRI.ArcGIS.AnalysisTools.Union union = new ESRI.ArcGIS.AnalysisTools.Union();
IGpValueTableObject gpValueTableObject = new GpValueTableObjectClass();//对两个要素类进行相交运算
gpValueTableObject.SetColumns(2);
object o1 = @"E:***AppsDataXZQArcCatalogTest.mdbTestss";//输入IFeatureClass 1
object o2 = @"E:***AppsDataXZQArcCatalogTest.mdbTestTestClass";//输入IFeatureClass 2
gpValueTableObject.AddRow(ref o1);
gpValueTableObject.AddRow(ref o2);
union.in_features = gpValueTableObject;
union.out_feature_class = @"E:***AppsDataXZQ行政区.mdbaaa";
geoprocessor.Execute(union, null);
IWorkspaceFactory pWorkspaceFactory;
IFeatureWorkspace pFeatureWorkspace;
IFeatureLayer pFeatureLayer;
string pFullPath = @"E:***数据库管理系统AppsDataXZQArcCatalogTest.mdbaa";
if (pFullPath == "") return;
int pIndex = pFullPath.LastIndexOf("\");
string pFilePath = pFullPath.Substring(0, pIndex); //文件路径
string pFileName = pFullPath.Substring(pIndex + 1); //文件名
//实例化ShapefileWorkspaceFactory工作空间,打开Shape文件
pWorkspaceFactory = new ShapefileWorkspaceFactory();
pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(pFilePath, 0);
//创建并实例化要素集
IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(pFileName);
pFeatureLayer = new FeatureLayer();
pFeatureLayer.FeatureClass = pFeatureClass;
pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
axMapControl1.AddLayer(pFeatureLayer);
【获取运行结果】
Geoprocessor对象通过Execute方法执行后将结果保存到指定输出路径下,通过也可以通过IGeoProcessorResult接口读取存储在内容中的结果对象,C#代码如下:
//执行图层求交运算
GeoProcessorResult pResult = (IGeoProcessorResult)gp.Execute(pIntersect, null);
IGPUtilities pGPUtil = new GPUtilitiesClass();
IFeatureClass pFC;
IQueryFilter pQF;
pGPUtil.DecodeFeatureLayer(pResult.GetOutput(0),out pFC,out pQF);
int count = pFC.FeatureCount(null); //统计Feature对象个数
IFeatureCursor pCursor = pFC.Insert(true); //提取FeatureCursor对象
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFC;
m_mapControl.Map.AddLayer(pFeatureLayer); //加载图层对象