ArcEngine开发——调用GeoProcessing工具
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工具
通过工具名称来执行工具
出处:http://www.cnblogs.com/hans_gis/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。