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工具

  通过工具名称来执行工具

posted @ 2011-05-06 22:40  百折不回  阅读(2495)  评论(0编辑  收藏  举报