摘要: ArcGIS Model Builder:如何创建自定义工具箱并导出为python脚本¶ 这个例子解释了如何在ArcGIS中使用Model Builder。它包括如何创建自定义工具箱和将模型导出为python脚本的演示。 什么是ArcGIS Des...
ArcGIS Model Builder:如何创建自定义工具箱并导出为python脚本¶
这个例子解释了如何在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。缓冲区,鸟在缓冲区筑巢,报告
让我们从这个简单的逐步示例开始,来说明如何在Model Builder中构建模型。
步骤3输入工具参数¶
双击每个工具(矩形),输入以下输入和输出:
在输入每个工具的输入和输出之后,Model Builder窗口将看起来像下面的屏幕截图。然而,它看起来杂乱无章,自动布局工具可以帮助清理一切。
Model Builder示例:运行模型¶
当然,到目前为止,我们只建立了模型。为了创建报告,我们仍然需要运行模型。您可以通过单击“播放”按钮来运行模型。
运行模型之后,可以将输出要素类添加到ArcMap中,以验证它是否正确。通过双击report.xls,它列出了管道500米范围内的所有鸟巢。在这种情况下,它只是加利福尼亚秃鹰。
另一个需要注意的是,运行模型后,模型中的圆和正方形将有阴影。检查(c:\temp\)以查看它创建的每个产品(buffer、intersect和report)。
但实际上,您需要的唯一输出只是报告。缓冲区和交叉点只是临时(中间)数据集。从Model Builder窗口运行模型之后,它不会删除它创建的所有中间输出(缓冲区和相交)。
因此,如果您想重新运行模型,可以手动进入这个文件夹(“c:\temp\”)并删除这些功能类。此外,您可能需要单击“自动布局”图标旁边的“选中标记”图标来验证模型。
Model Builder工具箱:设置参数/变量¶
假设贵公司的另一个团队希望将此模型用于相同的目的。但是它们的输入数据和输出数据有完全不同的名称。
您需要它们作为参数是动态的,而不是静态输入和输出。当您将输入数据或输出数据设置为参数时,用户可以输入自己的数据并设置自己的输出路径。
如何设置模Model Builder参数?
步骤1设置输入的模型参数¶
右键单击两个输入数据集(鸟巢和管道),然后单击“模型参数”。
步骤2设置输出的模型参数¶
右键单击输出数据集(报表),然后单击“模型参数”
但是还有一件事我们必须改变——它如何处理中间数据。Arcgis Model Builder有一个名为“in u memory”的简便命令来处理它。
对于每个临时输出(buffer and intersect),我们可以将它们转换为具有‘in_memory’的临时数据集。例如,双击绿色框(pipeline_buffer)并按如下方式更改:
在这个步骤之后,您的模型应该在每个模型参数旁边都有“P”。此外,临时buffer和intersect输出应该有‘in_memory’用于输出。
删除(c:\temp\)中的所有文件。现在,当您单击“运行模型”时,它将只创建XLS报告。这是因为您将缓冲区设置为临时数据(在内存中)。
如何在ArcGIS中创建工具箱¶
既然我们已经将输入和输出设置为参数,那么如果这本身就是一个工具箱,这不是很好吗?工具箱便于共享。他们看起来很专业。它们很容易创造。
首先,让我们清空参数,这样当我们共享它时,就没有默认路径。双击Model Builder中的每个模型参数并清空它。
清空每个参数后,模型应该看起来像下面屏幕截图中的白色:
现在,您需要保存您的模型。但你需要一个工具箱来完成。单击“保存”后,单击对话框右上角的新工具箱图标。
您可以将新工具箱命名为“pipeline.tbx”。现在,双击这个新工具箱并将模型保存在工具箱中。
在ArcCatalog中,找到刚才保存此工具箱的位置。展开工具箱,以便可以看到新的工具集。
双击已创建的新工具集。现在,我们已经创建了参数并清空了它们,您现在可以动态地输入输入和输出了。
如何将模型导出为python脚本¶
自从ArcGIS 9.0以来,它已经彻底检修了从VBA到Python的编程接口。既然Python已经被证明是一个很好的工具,那么从哪里开始呢?当然,你可以从 python.org 但这对你来说是很多信息。
另一种节省时间的方法是使用Model Builder并为工作流创建模型。一旦模型开始工作,就将模型导出为脚本(模型>导出>到Python脚本)。这个导出的输出提供了一个很好的起点,您可以在这里更改Python代码,甚至包括其他的Python包。
这可能是您开始学习ArcGIS中的Python脚本的最佳方法之一。您可以看到ModelBuilder如何使用arcpy模块、脚本参数、局部变量和地理处理工具分解代码。
这些是您在ArcGIS帮助库底部看到的相同代码示例。每个地理处理工具都有一个代码示例,可以在Python窗口中使用,也可以作为该特定工具的独立脚本使用。
Model Builder迭代器¶
迭代器帮助在Model Builder中为一组输入重复一个过程。ArcgisModel Builder有不同类型的迭代器来重复过程。
例如,如果要以不同的增量为缓冲区设置多个距离,可以使用‘FOR’ 迭代器。使用现有模型中的缓冲工具,可以以不同的增量设置‘FROM’和‘TO’变量。
在上面的Model Builder窗口中,我们向模型添加了一个迭代器。这将动态设置缓冲区距离,如‘FOR’迭代器中所述。
其他可用的迭代器包括:‘while’、‘row selection’、‘feature selection’、‘multivalue’等。
ArcGIS桌面中的Model Builder¶
因为在你的工作中,时间是最重要的。你需要提供现实生活中的GIS问题的答案在颈部速度。
ARCGIS中的Model Builder自动执行您的GIS工作流。创建模型时,它可以重复执行分析。
不要一次手动运行每个工具,而应尝试下一次将它们放入模型中。
Model Builder是一种分析GIS数据的强大方法,而且节省了大量时间。