ArcGIS Engine中调用GP的两种方法

第一种:

//添加命名空间
 using ESRI.ArcGIS.esriSystem;
 using ESRI.ArcGIS.Geoprocessor;
 
//实现button click方法
 private void button1_Click(object sender, EventArgs e)
 {
 //构造Geoprocessor
 Geoprocessor gp = new Geoprocessor();
 //设置参数
 ESRI.ArcGIS.AnalysisTools.Intersect intersect = new ESRI.ArcGIS.AnalysisTools.Intersect();
 intersect.in_features = @"F:\foshan\Data\wuqutu_b.shp;F:\foshan\Data\world30.shp";
 intersect.out_feature_class = @"E:\intersect.shp";
 intersect.join_attributes = "ONLY_FID";
 //执行Intersect工具
 RunTool(gp, intersect, null);
 }
 
private void RunTool(Geoprocessor geoprocessor, IGPProcess process, ITrackCancel TC)
 {
 // Set the overwrite output option to true
 geoprocessor.OverwriteOutput = true;
 
try
 {
 geoprocessor.Execute(process, null);
 ReturnMessages(geoprocessor);
}
 catch (Exception err)
 {
 Console.WriteLine(err.Message);
 ReturnMessages(geoprocessor);
 }
 }
 
// Function for returning the tool messages.
 private void ReturnMessages(Geoprocessor gp)
 {
 string ms = "";
 if (gp.MessageCount > 0)
 {
 for (int Count = 0; Count <= gp.MessageCount - 1; Count++)
 {
 ms += gp.GetMessage(Count);
 }

 

第二种:

//1-定义GeoProcessor对象
 Geoprocessor gp = new Geoprocessor();
 object sev = null;
 //2-设置参数
 gp.OverwriteOutput = true;
 //3-设置工具箱所在的路径
 gp.AddToolbox(@"F:\lib_test\AirportsAndGolf.tbx");
 //4-设置输入参数
 IVariantArray parameters = new VarArrayClass();
 parameters.Add(@"F:\lib_test\地下水重金属数据.xls\Sheet1$");
 parameters.Add("`YEAR` = 2009");
 parameters.Add("W20111");
 parameters.Add(@"F:\lib_test\temp.gdb\tempwww");
 
//5-执行工具
 gp.Execute("ModelAnalysis", parameters, null);

 

ESRI官方帮助例子:

using ESRI.ArcGIS.Geoprocessor;
using ESRI.ArcGIS.AnalysisTools;
using ESRI.ArcGIS.esriSystem;
 
public void SampleBufferTool()
{
 
  // Initialize the geoprocessor. 
  Geoprocessor GP = new Geoprocessor();
 
  ESRI.ArcGIS.AnalysisTools.Buffer bufferTool = new
    ESRI.ArcGIS.AnalysisTools.Buffer();
 
  bufferTool.in_features = @"D:\St_Johns\data.mdb\roads_Buffer";
  bufferTool.out_feature_class = @"D:\St_Johns\data.mdb\roads";
  bufferTool.buffer_distance_or_field = "distance";
 
  GP.Execute(bufferTool, null);
}

 
public void SampleCalculateBestPathTool()
{
 
  // Initialize the geoprocessor.
  Geoprocessor GP = new Geoprocessor();
 
  // Add the BestPath toolbox.
  GP.AddToolbox(@"C:\SanDiego\BestPath.tbx");
 
  // Generate the array of parameters.
  IVariantArray parameters = 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);
}

参考地址:
http://resources.esri.com/help/9.3/ArcGISDesktop/dotnet/c4ff8b68-0410-435f-b8e5-682d5cea47cf.htm

转自:https://blog.csdn.net/lysc_forever/article/details/7674332

 

posted @ 2019-05-16 17:12  ParanoiaApe  阅读(870)  评论(0编辑  收藏  举报