ArcGIS Model Builder:如何创建自定义工具箱并导出为python脚本

Model Builder in ArcGIS - Python Script

这个例子解释了如何在ArcGIS中使用Model Builder。它包括如何创建自定义工具箱和将模型导出为python脚本的演示。

什么是ArcGIS Desktop和ArcGIS Pro中的Model Builder

ARCGIS中的模Model Builder自动执行您的GIS工作流。例如,如果您每周运行一个报表,缓冲、交叉并生成一个透视表……那么您可以创建一个模型并每周运行它。

不是逐个运行每个工具,而是创建一个接受输入的模型,用一系列工具对其进行转换,然后输出。换句话说,Model Builder将您的输入连接到地理处理工具,并将其转换为所需的输出。

最好的部分?

在Model Builder中创建模型时,可以将其作为日常工作流的一部分运行。例如,您可以重用模型并将其共享给其他用户进行交互。

使用您自己的数据和工具,按照下面的步骤进行操作。当然,如果您有任何问题,请不要害怕在下面的评论框中提问。

Model Builder示例–如何设置第一个模型

让我们从这个简单的示例开始,了解如何在Model Builder中创建模型。假设你为一家计划在哪里修建管道的公司工作。为符合环保规定,管道距离濒危鸟巢不得超过500米。

由于工程师经常修改管道的设计,他们希望每次更改管道的对齐方式时都使用电子表格。在这份报告中,他们想知道管道是否在任何鸟巢500米以内。

模型通常至少由三个元素组成:

  • 输入数据(蓝色方块)

  • 地质处理工具(黄色圆圈)

  • 输出数据(绿色方块)

在我们的Model Builder示例中,有两个输入:

输入1。管线走向(红、黑虚线)
输入2。濒危鸟巢

下面是这些输入在地图上的样子:

Model Builder - Pipeline and Bird Nests

工具1.缓冲管道500米
工具2.将鸟巢与管道缓冲区相交
工具3.将报告生成为电子表格

输出1。缓冲区,鸟在缓冲区筑巢,报告

让我们从这个简单的逐步示例开始,来说明如何在Model Builder中构建模型。

步骤1打开Model Builder

首先,单击Model Builder图标开始创建模型。这将打开“Model Builder”窗口,让您开始添加地理处理工具。

Model Builder Icon

步骤2向Model Builder添加工具

从ArcToolbox拖放缓冲区、Intersect工具和Excel电子表格转换工具。

Model Builder Geoprocessing Tools

步骤3输入工具参数

双击每个工具(矩形),输入以下输入和输出:

BUFFER:
输入特征:管线重新对准
输出功能类:c:\temp\pipeline \u buffer.shp(确保此目录存在,或者在必要时创建一个新文件夹)
直线距离:500米
INTERSECT:
输入功能:bird nest and pipeline u buffer.shp
输出功能类:c:\temp\birdnestu intersect.shp
TABLE TO EXCEL:
输入表:birdnestu intersect.shp
输出Excel文件:C:\temp\report.xls

在输入每个工具的输入和输出之后,Model Builder窗口将看起来像下面的屏幕截图。然而,它看起来杂乱无章,自动布局工具可以帮助清理一切。

Model Builder Auto Layout

步骤4自动布局

单击“自动布局”按钮后,地理处理工具、输入和输出将在“Model Builder”窗口中重新排列整齐。

Model Builder Final Model

Model Builder示例:运行模型

当然,到目前为止,我们只建立了模型。为了创建报告,我们仍然需要运行模型。您可以通过单击“播放”按钮来运行模型。

Model Builder Run Model

运行模型之后,可以将输出要素类添加到ArcMap中,以验证它是否正确。通过双击report.xls,它列出了管道500米范围内的所有鸟巢。在这种情况下,它只是加利福尼亚秃鹰。

Model Builder Results

另一个需要注意的是,运行模型后,模型中的圆和正方形将有阴影。检查(c:\temp\)以查看它创建的每个产品(buffer、intersect和report)。

但实际上,您需要的唯一输出只是报告。缓冲区和交叉点只是临时(中间)数据集。从Model Builder窗口运行模型之后,它不会删除它创建的所有中间输出(缓冲区和相交)。

因此,如果您想重新运行模型,可以手动进入这个文件夹(“c:\temp\”)并删除这些功能类。此外,您可能需要单击“自动布局”图标旁边的“选中标记”图标来验证模型。

Model Builder工具箱:设置参数/变量

假设贵公司的另一个团队希望将此模型用于相同的目的。但是它们的输入数据和输出数据有完全不同的名称。

您需要它们作为参数是动态的,而不是静态输入和输出。当您将输入数据或输出数据设置为参数时,用户可以输入自己的数据并设置自己的输出路径。

如何设置模Model Builder参数?

步骤1设置输入的模型参数

右键单击两个输入数据集(鸟巢和管道),然后单击“模型参数”。

步骤2设置输出的模型参数

右键单击输出数据集(报表),然后单击“模型参数”

Model Builder - Model Parameter

但是还有一件事我们必须改变——它如何处理中间数据。Arcgis Model Builder有一个名为“in u memory”的简便命令来处理它。

对于每个临时输出(buffer and intersect),我们可以将它们转换为具有‘in_memory’的临时数据集。例如,双击绿色框(pipeline_buffer)并按如下方式更改:

Model Builder - InMemory

在这个步骤之后,您的模型应该在每个模型参数旁边都有“P”。此外,临时buffer和intersect输出应该有‘in_memory’用于输出。

Model Builder - Parameters Variables

删除(c:\temp\)中的所有文件。现在,当您单击“运行模型”时,它将只创建XLS报告。这是因为您将缓冲区设置为临时数据(在内存中)。

如何在ArcGIS中创建工具箱

既然我们已经将输入和输出设置为参数,那么如果这本身就是一个工具箱,这不是很好吗?工具箱便于共享。他们看起来很专业。它们很容易创造。

首先,让我们清空参数,这样当我们共享它时,就没有默认路径。双击Model Builder中的每个模型参数并清空它。

Model Builder - Empty Parameter

清空每个参数后,模型应该看起来像下面屏幕截图中的白色:

Model Builder - Save Model

现在,您需要保存您的模型。但你需要一个工具箱来完成。单击“保存”后,单击对话框右上角的新工具箱图标。

Model Builder - New Toolbox

您可以将新工具箱命名为“pipeline.tbx”。现在,双击这个新工具箱并将模型保存在工具箱中。

在ArcCatalog中,找到刚才保存此工具箱的位置。展开工具箱,以便可以看到新的工具集。

Model Builder - Pipeline Toolbox

双击已创建的新工具集。现在,我们已经创建了参数并清空了它们,您现在可以动态地输入输入和输出了。

Model Builder - Pipeline Report Tool

如何将模型导出为python脚本

自从ArcGIS 9.0以来,它已经彻底检修了从VBA到Python的编程接口。既然Python已经被证明是一个很好的工具,那么从哪里开始呢?当然,你可以从 python.org 但这对你来说是很多信息。

另一种节省时间的方法是使用Model Builder并为工作流创建模型。一旦模型开始工作,就将模型导出为脚本(模型>导出>到Python脚本)。这个导出的输出提供了一个很好的起点,您可以在这里更改Python代码,甚至包括其他的Python包。

Model Builder Export As Python Script

这可能是您开始学习ArcGIS中的Python脚本的最佳方法之一。您可以看到ModelBuilder如何使用arcpy模块、脚本参数、局部变量和地理处理工具分解代码。

这些是您在ArcGIS帮助库底部看到的相同代码示例。每个地理处理工具都有一个代码示例,可以在Python窗口中使用,也可以作为该特定工具的独立脚本使用。

Model Builder迭代器

迭代器帮助在Model Builder中为一组输入重复一个过程。ArcgisModel Builder有不同类型的迭代器来重复过程。

例如,如果要以不同的增量为缓冲区设置多个距离,可以使用‘FOR’ 迭代器。使用现有模型中的缓冲工具,可以以不同的增量设置‘FROM’和‘TO’变量。

Model Builder - For Iterator

在上面的Model Builder窗口中,我们向模型添加了一个迭代器。这将动态设置缓冲区距离,如‘FOR’迭代器中所述。

其他可用的迭代器包括:‘while’、‘row selection’、‘feature selection’、‘multivalue’等。

ArcGIS桌面中的Model Builder

因为在你的工作中,时间是最重要的。你需要提供现实生活中的GIS问题的答案在颈部速度。

ARCGIS中的Model Builder自动执行您的GIS工作流。创建模型时,它可以重复执行分析。

不要一次手动运行每个工具,而应尝试下一次将它们放入模型中。

Model Builder是一种分析GIS数据的强大方法,而且节省了大量时间。