ArcGIS中,每一个地理处理工具箱都是以一个托管程序集来表示的。这些托管程序集位于ArcGIS安装路径的\Dotnet\Toolboxes文件夹下。每一个工具箱程序集里都有很多的类,用不同的类来表示标准标准ArcGIS地理处理工具箱里对应的地理处理工具。在应用程序开发过程中,可以使用这些程序集中的类来建立并通过ArcEngine中的geoprocessor这个类来运行地理处理工具。
建立GP工具
建立一个地理处理类的实例,设定它的参数内容来指定该工具的输入项。必须保证所有被标记为规定参数的参数项都被正确的指定,除此之外,也可以指定被标记为可选参数的参数项。为了简化操作,每一个类都重载有一个具备多参数的构造函数,仅仅在一行代码中,就可以用所要求的参数来初始化所创建的地理处理工具。
下面的示例代码演示了如何创建Erase工具,然后设置其参数:
using ESRI.ArcGIS.Geoprocessor;
using ESRI.ArcGIS.AnalysisTools;
public void SampleEraseTool_1()
{
// 创建geoprocessor的实例
Geoprocessor GP = new Geoprocessor();
Erase eraseTool = new Erase(@"C:\Data\Input.shp", @"C:\Data\Erase.shp", @
"C:\Data\Output.shp");
// TODO: Add your code here...
}
或者使用如下方式:
using ESRI.ArcGIS.Geoprocessor;
using ESRI.ArcGIS.AnalysisTools;
public void SampleEraseTool_2()
{
Erase eraseTool = new Erase();
eraseTool.in_features = @"C:\Data\Input.shp";
eraseTool.erase_features = @"C:\Data\Erase.shp";
eraseTool.out_feature_class = @"C:\Data\output.shp";
// TODO: Add your code here...
}
运行GP工具
每一个GP工具都有各自的一组固定的参数,用于给工具的正确运行提供必要的信息。通常都有一些输入参数用来界定原始数据集,而这些数据集一般用于计算生成一个新的输出数据集。参数有一些重要的属性:
- Name——每个参数都有一个唯一的名称。
- Type——数据类型,比如要素类、整型、字符串、栅格等。
- Required——指定该参数是可选的还是必须的。
在程序中只用GP工具时,必须保证工具的参数值都被正确的指定,这样在程序运行的时候才能执行该GP工具。每一个工具的说明中都详细说明了其参数和各参数的类型。一旦给工具指定了有效的参数值,该工具就可以被执行了。
一般是以字符串或者对象来精确的指定参数值,字符串参数的常见形式是数据集的路径或其关键字。大多数的工具参数都是以一个简单的字符串来指定的,然而一些较为复杂的参数,比如空间参考,以一个对象来指定它显得更为简便。下面是一个Buffer示例,以字符串的形式指定了其输入参数、输出参数和缓冲距离。该工具的Excute方法使用null引用替代了ITrackCancel揭接口类型的参数。
using ESRI.ArcGIS.Geoprocessor;
using ESRI.ArcGIS.AnalysisTools;
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);
}
工具箱名称和命名空间
系统工具箱的名称和其对应的命名空间的关系见下表:
运行自定义GP工具
通过工具名称来执行工具