在模型构建器中集成外部程序

Python 或其他语言的脚本可集成到模型中,方法是将脚本转换为脚本工具,然后将此脚本工具添加到模型中。这可在以下情况下使用:需要使用 Python 或其他脚本语言逻辑来增强模型或在 ArcGIS 中访问外部包或程序。

本部分讨论如何在“模型构建器”环境中集成外部统计包 R。在以下描述的示例中,使用两个脚本来执行 R 功能:调用 R 资源代码的 Python 脚本,以及实际的 R 资源代码。Python 脚本调用自“模型构建器”并用作导管,实际上,它是用于组织参数并以管道形式将参数从“模型构建器”传送至 R。

此示例描述了这两个脚本的工作原理,并介绍了它们如何在 ArcGIS 环境下通过模型进行交互。您可以将以下步骤作为教程来使用,也可以仅阅读这些步骤以加深了解并在具体的项目中应用。

步骤:
  1. 下载并提取数据
  2. 在系统上安装 R
  3. 创建新模型并向模型添加脚本工具
  4. 填入脚本工具的参数
  5. 运行模型

1 - 下载并提取数据

地理处理资源中心 - 模型和脚本工具库中下载示例脚本“在 ArcGIS 10 中使用 R”。解压缩的文件夹包含四个子文件夹和一个脚本工具:Point Clustering (R Version)。

目录窗口中的 R 工具

2 - 安装 R

必须先在系统上安装 R 包,然后才能执行脚本工具。如果要将这部分作为教程来参考,或者希望在以后某个时间了解该脚本的工作原理,请仔细阅读 Readme.pdf 中的说明并按照这些说明进行操作,Readme.pdf 位于您所下载的“资源中心”脚本的 Doc 子文件夹中。R 包专用于此示例;如果您正在使用任何其他外部程序,则应该了解有关安装此软件的详细信息。

3 - 创建新模型并向模型添加脚本工具

下载的文件夹包含 R Tools 工具箱,其中包含一个脚本工具。可向此工具箱添加一个新模型,方法是右键单击新建 > 模型。这会打开一个空模型。Point Clustering (R Version) 脚本工具像任何其他地理处理工具一样,也可从目录 窗口拖动到模型中来进行添加,它还会创建一个连接到脚本工具的派生的输出数据变量。

本部分不介绍有关编写 Python 脚本和创建脚本工具的详细信息。有一个章节完整地介绍了编写 Python 脚本的详细信息,其中为您讲述了如何启动和创建脚本。要了解如何创建脚本工具,请参阅在模型中集成脚本

了解 Python 脚本示例

可对添加到模型的脚本工具进行编辑,方法是右键单击该脚本工具,然后单击编辑PointCluster.py 脚本如下所示:

Python 脚本

脚本中的代码调用 ArcGIS 中工具的输入参数,然后通过 R 脚本将这些参数传递至 R 统计包。将参数从 ArcGIS 传递至 R 时,会执行 R 程序,并且 R 程序会为通过“模型构建器”中的 Python 脚本收集的输入计算聚类。然后,重新渲染结果以在 ArcMap 中显示。

了解 R 脚本

无法在“模型构建器”中或通过目录 窗口查看 R 脚本。但该脚本位于所下载的文件的 Scripts 子文件夹中。PointCluster.r 脚本是针对本特定示例而编写和保存的,并在“模型构建器”中以外部 R 函数的形式进行调用。如果正在使用任何其他程序,则必须注意需要创建的关联文件。然后,可通过 Python 脚本调用这些为任一程序而编写的脚本并通过“模型构建器”运行这些脚本。

PointCluster.r 脚本如下所示。R 文件从基于 Python 的脚本工具获取输入的实际参数,而该脚本工具在“模型构建器”中用于收集输入的形式参数。根据所提供的输入,R 文件会执行聚类分析。这些结果随后会通过 Python 脚本被重新传递至“模型构建器”或 ArcGIS 应用程序,并在 ArcMap 中显示为应用了渲染的外观。

R 文件

4 - 填入脚本工具的参数

示例脚本根据聚类方法以及点的属性值来对输入点要素类运行聚类分析。在本示例中,将表示 911 紧急呼叫号码的点要素类用作输入。该数据位于从“资源中心”下载的 ToolData 文件夹中。原始数据将针对本示例进行修改。各点均具有一个计数值,用来表示在该点周围特定区域内的呼叫次数。计数字段用于计算使用 KMEANS_HARTIGAN 聚类方法的五个聚类。

这些输入参数通过 Python 脚本进行定义。Python 脚本工具包含一个对话框,用于在 ArcGIS 中指定输入参数。

脚本工具

5 - 运行模型

运行包含 R 脚本工具的模型时,可能会弹出一个命令行执行窗口,表示 R 包程序正在准备执行。

命令行窗口

然后,脚本会以 clusTool 库的默认窗口启动 R 统计包。

R 包的默认 clusTool 库

接着,R 包会根据由 Python 脚本工具提供的输入来计算聚类。结果会被回发,并在 ArcMap 中进行渲染和显示。

聚类工具的结果

5/10/2014