模型构建器(ModelBuilder)是一个用来创建、编辑和管理模型的应用程序。模型是将一系列地理处理工具串联在一起的工作流,它将其中一个工具的输出作为另一个工具的输入。也可以将模型构建器看成是用于构建工作流的可视化编程语言。
另一种解释:模型构建器(ModelBuilder)是创建模型和模型工具的一种方式。模型不过是链接到一起的一系列工具串和数据;其中,一个工具的输出会反馈为另一个工具的输入。当您保存模型时,该模型将变成一个模型工具。
一、模型构建器(ModelBuilder)基础
1、模型构建器(ModelBuilder)界面
模型构建器的界面结构简单,其中包含下拉菜单、工具条工具及快捷菜单选项(如下图所示)。通过右键单击可以使用整个模型或任何单个模型元素(变量、连接器或工具)的快捷菜单。在模型中用于拖动工具并将其连接到变量的空白区域称为画布,显示相互连接的工具和变量的外观及布局称为模型图。
主菜单上有六个下拉菜单,如下表所示:
| 菜单 | 描述 |
| 模型 | 包含运行、验证、查看消息、保存、打印、输入、输出和关闭模型这些选项。还可以使用此菜单删除中间数据和设置模型属性。 |
| 编辑 | 剪切、复制、粘贴、删除和选择模型元素。 |
| 插入 | 添加数据或工具、创建变量、创建标注及添加仅模型工具和迭代器。 |
| 视图 | 包含自动布局选项,此选项可将图属性对话框中指定的设置应用于模型。另外还包含缩放选项。通过自定义缩放选项可以自定义缩放百分比。可使用视图菜单上的预设缩放级别(25%、50%、75%、100%、200% 和 400%)缩放到实际大小的各个固定百分比。 |
| 窗口 | 包含的总览窗口可显示您在显示窗口中放大某部分模型时整个模型的外观。您在模型窗口的当前位置将在总览 窗口中以矩形标记。当您在模型构建器 窗口中进行导航时,该矩形也将发生相应移动。 |
| 帮助 | 访问 ArcGIS Desktop 帮助和关于 ModelBuilder 对话框。 |
ModelBuilder 具有更改模型的如下三个属性集:
模型属性——更改模型名称、标注、描述、相对路径、参数属性、模型环境、帮助和迭代。
逻辑示意图属性——更改图中元素的排列和图的整体颜色和样式。
显示属性——更改各个元素的外观和其他图形属性。
3、模型构建器基础知识
1)模型画布
模型画布是模型中的白色空白区域。
2)模型图
模型图是模型中彼此相连的工具和变量的外观和布局。
3)模型元素
模型元素主要分三个类型——工具、变量和连接符。
(1)工具
地理处理工具是模型工作流的基本组成部分。工具用于对地理数据或表格数据执行多种操作。工具被添加到模型中后,即成为模型元素。
(2)变量
变量是模型中用于保存值或对磁盘数据进行引用的元素。有以下两种类型的变量:
①数据:数据变量是包含磁盘数据的描述性信息的模型元素。数据变量中所描述的数据属性包括字段信息、空间参考和路径。
②值:值变量是诸如字符串、数值、布尔(true/false值)、空间参考、线性单位或范围等的值。值变量包含了除对磁盘数据引用之外的所有信息。
(3)连接符
连接符用于将数据和值连接到工具。连接符箭头显示了地理处理的执行方向。有以下四种类型的连接符:
①数据:数据连接符用于将数据变量和值变量连接到工具。
②环境:环境连接符用于将包含环境设置的变量(数据或值)连接到工具。工具在执行时将使用该环境设置。
③前提条件:前提条件连接符用于将变量连接到工具。只有在创建了前提条件变量的内容之后,工具才会执行。
④反馈:反馈连接符用于将某一工具的输出返回给同一工具作为输入。
4)模型流程
模型流程由一个工具和连接到此工具的所有变量组成。连接线用于表示处理的顺序。可将多个流程连接到一起以创建一个更复杂的流程。
5)中间数据
运行模型时,模型中的各个流程都会创建输出数据。其中的某些输出数据只是作为中间步骤创建,而后连接到其他流程,以协助完成最终输出的创建。由这些中间步骤生成的数据称为中间数据,通常(但并不总是)在模型运行结束后就没有任何用处了。您可以将中间数据看作是一种应在模型运行结束后即删除的临时数据。但是,当您运行一个通过模型构建器窗口构建的模型时,中间数据并不会自动删除,是否将其删除是由您决定的。
6)模型验证
模型验证是指验证所有数据元素和参数值是否有效。验证会将已运行过程重新变为准备运行状态。如果通过验证模型使处于准备运行或已运行状态的过程更改为未准备好运行状态(元素呈白色),则意味着有一个或多个输入变量无效。
(1)验证数据变量
数据变量引用磁盘上的数据并且只包含磁盘数据的描述性信息,而不包含实际数据。
例如,要素类数据变量包含磁盘上的数据的路径、要素类中的所有字段的信息列表(此要素类的方案)以及工具使用的其他相关信息。
在模型中创建数据变量时,ArcGIS 会打开数据集,提取数据的所有描述性信息,然后在数据变量中存储此信息。上述操作只在第一次创建数据变量时执行,因为抽取描述性数据非常耗时。其他备选方案,例如在打开模型进行编辑或以任意方式访问变量时抽取数据,都将导致模型构建速度变慢。随着时间的推移,数据的描述信息可能与数据的实际内容不一致。例如,您可能已从数据集中删除字段或重命名数据集。验证模型时,会出现以下情况:
①打开所有数据集并刷新数据集的描述信息。
②所有已运行过程将重新变为准备运行状态,除非数据集不再存在,或者数据集的某个属性发生更改使得工具无法再执行。通常,这种情况是由删除了字段引起的。这种情况下,变量或工具将变得无效(未准备好运行),必须打开变量或工具并提供一个新值。
要刷新“模型构建器”窗口中数据变量的内容,请单击模型 > 验证整个模型。也可以通过工具条上的验证图标进行验证。
验证会发布各工具的消息。要查看这些消息,右键单击元素,然后单击查看消息,也可以创建模型报告并在此查看消息。
(2)验证值变量
与数据变量相反,值变量(不引用磁盘上的数据)包含的是实际数据,如下所示。验证模型时,将检查每个值变量的内容,以便确定该内容是否对使用此变量的工具有效。
7)模型参数
模型参数是模型工具对话框中显示的参数。模型中的任何变量都可以转换为模型参数。
8)工作空间环境
可在模型构建器中使用以下四种工作空间环境以简化模型数据管理:
(1)当前
支持“当前工作空间”环境的工具将指定的工作空间用作地理处理工具输入和输出的默认位置。
(2)临时:
支持“临时工作空间”环境的工具可将指定的位置用作输出数据集的默认工作空间。“临时工作空间”专用于存放不愿保留的输出数据。
(3)临时文件夹
“临时文件夹”环境设置是一个文件夹位置,可用来写入基于文件的数据(如 shapefile、文本文件和图层文件)。
(4)临时 GDB
“临时 GDB”环境设置是可以用来写入临时数据的文件地理数据库的位置。
此外,存在内存工作空间,可以将地理数据库要素类和表写入系统内存,而非磁盘。
9)在模型构建器中运行模型
可在模型构建器内运行模型,也可通过模型工具对话框、Python 窗口或脚本运行。从“模型构建器”内运行模型时,既可以运行整个模型,也可以运行某些所选过程。在“模型构建器”内运行过程时,可以按照地理处理过程对话框中的步骤执行。
(1)可通过三种方法从“模型构建器”内运行模型:
①运行单个工具——选择一个工具,右键单击,然后单击运行。如果需要,也可以运行一系列过程中的前期过程。尽管一系列过程中的后期过程不会运行;但是,如果它们处于“运行”过程状态,则它们的状态会变回到“准备运行”状态。
②运行“准备运行”工具——单击模型菜单上的运行 或运行 ModelBuilder 工具条上的工具。将运行处于“准备运行”状态的所有工具。
③运行整个模型——单击模型菜单中的运行整个模型。将运行处于“准备运行”状态的所有工具。
(2)在模型构建器内运行模型时会发生什么情况?
运行模型时,将验证所有的模型变量,还将执行处于“准备运行”状态的工具。如果任意输出变量应添加至显示,则输出将被添加到 ArcMap 内容列表中。不会执行未处于“准备运行”状态或依赖于未处于“准备运行”状态工具的工具。在模型构建器内运行模型和通过工具对话框运行模型存在一些重要的不同。在“模型构建器”内运行模型时,适用以下规则:
①模型运行之间的中间数据会保留。如果为进行编辑而对模型执行了保存、关闭和重新打开操作,则此数据也会被保留。从工具对话框运行模型时,中间数据将被删除。
②流程正在运行时,工具显示为红色,流程成功执行之后,工具会变回原来带有下拉阴影的黄色。若流程失败工具的颜色仍为红色。如果需要可以将模型以当前的状态和颜色进行保存。
③添加至显示旁带有复选标记的所有输出都将被添加至显示。
④在前台执行过程时,进程将显示在地理处理过程对话框中。在“模型构建器”内运行的模型永远不会象后台过程一样执行。从工具对话框执行的模型可以在后台运行。
⑤结果不会写入结果窗口。
(3)通过模型工具对话框运行模型工具时将发生什么情况?
①打开模型工具对话框后,将针对所有作为模型参数(在模型构建器中查看此类参数时,其变量旁边有个字母 P)的模型变量创建工具对话框参数。
a)工具对话框参数标注与模型变量的名称相同。
b)工具对话框参数的默认值是模型变量的值。
c)工具对话框中参数的顺序由模型属性确定。
②打开模型工具对话框后,将验证参数值。如果值为空且需要参数,则参数的旁边将出现绿色圆点以表示需要值。如果值不为空但无效(例如,数据集或图层不存在),将显示错误消息,并且在参数的旁边将显示一个红色图标。
③运行模型工具时(通过单击确定),仅显示模型的总体进度,而不是模型内各工具或流程的进度。
④在模型构建器内运行模型和通过工具对话框运行模型存在一些重要的不同。通过工具对话框运行模型时
a)将在模型工具执行完成后删除中间数据。要保留中间数据,请取消选中各变量的中间选项,或将变量设置为模型参数。
b)默认情况下,该工具在前台执行,除非已在ArcMap中取消选中模型属性 > 常规选项卡中的在前台运行选项,并在地理处理选项中选中在后台运行。
c)只有作为模型参数的模型输出将被添加到结果窗口。
d)只有最终输出和模型参数将被添加到ArcMap的内容列表。
10)显示模型数据
可使用添加至显示选项在执行模型后将模型输入和输出自动添加到 ArcMap 内容列表中。
步骤:
①右键单击任一数据变量,然后单击添加至显示,如下所示。
要从 ArcMap 内容列表中移除输入或输出,请右键单击模型中的数据变量,然后取消选中添加至显示选项。
注:在选中添加至显示选项的情况下,工具的输出将使用变量名称添加到显示画面中。如果该模型迭代多次,并且要使用实际的唯一输出名称而非变量名称将每次迭代的输出添加至 ArcMap 中的显示画面:
a.将要显示的输出连接到收集值工具。
b.右键单击收集值的输出并选中添加至显示。
c.如果要从模型工具对话框运行模型,请将收集值的输出设为模型参数,因为系统只会将输出模型参数添加到显示画面。
注:添加至显示在模型构建器之外不起作用。如果在模型工具对话框中或 Python 窗口中运行模型工具,“添加至显示”设置将不起作用。如果在模型对话框中或 Python 窗口中运行模型时要将模型数据变量添加到显示,请将数据变量转换为模型参数,然后启用标准工具 工具条中的将地理处理操作的结果添加到显示中选项:地理处理 > 地理处理选项 > 将地理处理操作的结果添加到显示中。
11)保存模型
如果已打开现有模型进行编辑,则单击模型构建器标准 工具条上的保存按钮可保存模型。
如果所使用的新模型尚未保存到工具箱,则保存模型时会涉及创建新的工具箱或选择现有工具箱。要保存新模型,请执行以下步骤:
步骤:
①单击模型构建器标准 工具条上的保存按钮。
也可单击主菜单上的模型,然后单击保存。
②浏览至工作空间。
③单击导航窗口中的新建工具箱。
这将创建一个具有默认名称的新工具箱。另外,也可将模型保存至任一现有工具箱。
④双击工具箱以将其打开。如果正保存到一个包含工具集的现有工具箱,则可双击工具集。单击保存可以保存模型。
具有默认名称的模型被保存在工具箱中。通过右键单击目录 窗口中的模型,选择属性,然后更改常规选项卡上的名称和标注,可重命名该模型。模型名称中不允许包含空格,因为名称用于 Python 窗口和脚本,这两种情况都不允许名称中包含空格。标注将显示在目录 窗口中,且可包含空格。
要打开已保存的模型以进行后续编辑,可右键单击目录 窗口或 ArcToolbox 窗口中的模型工具,然后单击编辑。
⑤要将模型副本保存到另一个工具箱中,可单击模型构建器的模型菜单中的另存为。新名称将用作模型名称和标注。如果存在一个具有相同名称的模型,则系统会提示您为模型提供另一个名称。
二、使用模型构建器创建工具
使用模型构建器创建工具分为以下几个步骤:打开地图文档→创建模型→显示工具参数→创建模型参数→对模型元素重命名→设置模型参数顺序→设置模型参数类型→对模型参数设置过滤器→为输出数据设置符号系统→管理中间数据→更改模型的常规属性→记录模型。
以统计项目范围内的三调面积工具创建为例:我们想实现的目的是从三调数据库中得到项目区内的DLTB并重新计算面积,同时完成面积统计。
为此,我们将工作分解为如下几个流程:
①用项目区范围裁剪数据库中的DLTB图层,获取得到项目区内的DLTB;
②对裁剪得到的DLTB进行拆分多部件并修复几何;
③重新计算图斑面积、扣除面积及图斑地类面积,得到面积正确的DLTB图层;
④按坐落统计各地类面积,并将统计结果输出为表格。
那么,下面我们就按照上述流程来完成相应的模型创建。
1、打开地图文档
启动 ArcMap,打开空白地图或已有工程。
2、创建初始模型
1)打开模型构建器窗口
2)进行裁剪工具配置,即流程①的实现
(1)在分析工具中找到裁剪工具,拖入模型构建器窗口
(2)配置输入要素与裁剪要素
在模型构建器窗口中选中裁剪工具右键,选择从参数>输入要素/裁剪要素。
3)进行拆分多部件并修复几何工具配置,即流程②的实现
将拆分多部件及修复几何工具加入模型构建器中,并用连接符连接。
具体操作为:点击连接符>连接裁剪的输出要素与多部件至单部件工具,点击连接符>连接多部件至单部件的输出要素与修复几何工具
4)进行图斑面积计算配置,即流程③的实现
(1)将计算字段工具加入模型构建器中,用连接符连接修复几何的输出要素至计算字段工具,连接选项选输入表。
(2)双击计算字段工具,配置需要计算几何的字段名为TBMJ,表达式为“!Shape.Area!”,表达式类型为PYTHON_9.3。
(3)再往模型构建器中加入两个计算字段工具,用连接符顺次连接。
(4)双击计算字段工具(2),配置需要计算几何的字段名为KCMJ,表达式为“[TBMJ] * [KCXS]”,表达式类型为VB;双击计算字段工具(3),配置需要计算几何的字段名为TBDLMJ,表达式为“[TBMJ] - [KCMJ]”,表达式类型为VB。
5)进行面积统计及excel输出配置,即流程④的实现
(1)按坐落统计图斑地类面积(TBDLMJ)的配置
①将汇总统计数据(Statistics)加入模型中,并用连接符连接输出要素类(6);双击汇总统计数据工具进行如下配置:统计字段选择TBDLMJ、统计类型选择SUM,案例分组字段选择ZLDWMC、DLBM、DLMC。
②将数据透视表加入模型中,并用连接符连接;双击数据透视表工具进行如下配置:输入字段选择DLBM、DLMC,透视表字段选择ZLDWMC,值字段选择SUM_TBDLMJ。
(2)按坐落统计扣除面积(KCMJ)的配置
①将汇总统计数据(Statistics)加入模型中,并用连接符连接输出要素类(6);双击汇总统计数据工具(2)进行如下配置:统计字段选择KCMJ、统计类型选择SUM,案例分组字段选择ZLDWMC、KCDLBM。
②将数据透视表加入模型中,并用连接符连接数据透视表(2)及输出表(2);双击数据透视表(2)进行如下配置:输入字段选择KCDLBM,透视表字段选择ZLDWMC,值字段选择SUM_KCMJ。
(3)合并表并输出excel的配置
将合并工具加入模型中,并用连接符连接输出表和输出表(3),再加入表转Excel工具,并与合并后的数据连接。
3、对模型元素进行重新命名
为了方便理解,在设置模型参数前,我们先对模型中的各个步骤的变量进行重新命名。命名的时候选中相应模型元素右键重命名即可。命名后如下:
4、创建模型参数
模型参数是模型工具对话框中显示的参数。模型中的任何变量都可以转换为模型参数。如果没有设置模型参数,我们前几步设计的模型打开是无法使用的(如下图)。
对输入要素(DLTB)、裁剪要素(项目范围)、输出要素(计算面积后的DLTB)、输出表格进行模型参数设置。
具体操作为:鼠标选择相应模型元素右键>模型参数。创建后变量旁边将显示字母 P,表示此变量为模型参数。此模型参数随后也将在模型工具对话框上显示。
注:当第一个工具的输出要素未设置路径时,后续的输出中即便设置了模型参数也不能显示,因此需对第一步操作的输出定义一个路径,最好定义一个通用的根目录,这样你的模型在其他电脑才可以正常使用。
5、显示工具参数
在裁剪时有时我们需要定义 “XY 容差”参数,因此也需要为其创建模型变量。将工具添加到模型后,会自动为输入和输出数据集创建模型变量,但不会为任何其他工具参数创建模型变量。主要是为了美观,如果自动为每个工具参数都创建变量,则模型图很快就会变得难以辨别。例如,将裁剪工具添加到模型后,会自动为输出要素类参数创建变量。所有其他参数(如XY 容差)并不会作为变量自动添加到模型中。以下步骤将为XY 容差创建模型变量。
步骤:①在目录 窗口中,右键单击模型,然后单击编辑。将在“模型构建器”中打开模型。②右键单击裁剪。③单击获取变量>从参数>XY容差。此操作会将“XY容差”参数作为变量添加到模型中。再重复4的步骤即可将其添加至显示。
6、设置模型参数顺序
如果显示的参数的顺序不理想,我们可以重新排序。标准做法是按以下顺序排列参数:必需的输入数据集>影响工具执行的其他必需参数>必需的输出数据集>可选参数
操作步骤:
①在“模型构建器”中,单击模型 > 模型属性。
②单击参数选项卡。
③选择要更改顺序的参数,然后使用右侧的向上箭头和向下箭头按钮将其移动到你想显示的位置。
7、设置模型参数类型
按正确顺序设置模型参数后,需要更改参数类型。如果参数是模型中某个工具的必需参数,将无法通过以下设置将类型更改为可选。
步骤:
①在“模型构建器”中,单击模型 > 模型属性。
②单击参数选项卡。
③单击类型类别下方的单元格。将弹出一个包含两个选项的列表。如下图所示。
8、对模型参数设置过滤器
可通过对参数应用过滤器来任何参数的输入类型。比如我想让之前建立的模型要求输入要素为面要素。在以下步骤中,将通过应用过滤器来修改该参数,以使其仅接受面要素。
步骤:
①单击模型 > 模型属性。
②单击参数选项卡。
③选择输入要素,然后单击过滤器类别下方的单元格。
④选择要素类过滤器。
⑤将打开要素类 对话框。
⑥取消选中除“面”外的所有类型,然后单击确定。
⑦在模型属性 对话框上,单击确定应用过滤器即可。
9、为输出数据设置符号系统
可将模型的输出设置为包含特定的符号系统,以用来显示输出。共有两种方法:
1)使用图层符号系统文件
ArcMap内容列表添加模型输出时,可通过引用图层文件(.lyr)预定义模型输出的符号系统。
模型数据变量具有图层符号系统属性,其中,一个图层文件可被指定在向ArcMap内容列表添加该变量的符号系统时,对符号系统进行定义。步骤:
①创建图层文件,其中包含所需的符号系统。
②右键单击模型中的数据变量,然后单击属性。
③在图层符号系统选项卡上,输入图层文件的路径。
注:只有要素类、要素图层、栅格数据集、栅格图层、TIN 数据集、TIN图层、网络分析图层等数据类型的变量支持图层符号系统。对于要素类,符号系统图层文件必须是正确的几何类型(点、线或面)。也就是说,不能为点要素类变量定义面符号系统。
在 ArcGIS 9.3 之前的版本中,可将图层符号系统属性设置为图层文件或 ArcMap 内容列表中的现有图层。保存模型时,可读取符号系统并将其与模型一同存储,然后可删除图层文件,并仍然应用符号系统。在 ArcGIS 9.3 及其之后的版本中,仅可将图层符号系统属性设置为图层文件,并且每次运行模型时都必须存在图层文件。如果图层文件不存在,则模型仍会运行,但数据会使用默认符号系统进行绘制。为支持高级符号系统,此更改在 ArcGIS 9.3 中进行。
2)使用“应用图层的符号设置”工具设置符号系统
可将应用图层的符号设置工具添加到模型的末端来控制模型输出的符号系统。仅当模型输出变量为要素图层、栅格图层、TIN 图层或网络分析图层时,此工具才有效。例如,要素类变量无法连接到应用图层的符号设置工具。应首先使用创建要素图层工具将要素类转换为要素图层,然后将要素图层变量连接到应用图层的符号设置并应用现有图层中的符号系统。要根据磁盘上的数据创建栅格图层、TIN 图层或网络分析图层,还可使用一些等效工具。
3)图层符号系统文件的创建
在 ArcMap 中,打开或新建一个图层,双击这一图层打开其属性,然后单击符号系统选项卡。将符号系统更改成想要模型输出显示的方式。
单击确定。
右键单击图层,然后单击另存为图层文件。
或者您也可以运行保存至图层文件工具。
4)设置将地理处理结果添加至显示
勾选显示
10、管理中间数据
运行模型时,模型中执行的每个过程都会创建输出数据。创建的某些数据在模型运行后毫无用处,因为创建这些数据只是为了与创建新输出的另一个过程相连。此类数据称为中间数据。除最终输出之外的所有输出或者已变为模型参数的输出都将自动成为模型的中间数据。此示例中,裁剪工具的输出仅在作为多部件至单部件工具的输入时才有用,而在这之后不再使用,因此“中间”选项为选中状态。可通过取消选中“中间”选项来保存中间数据。
11、更改模型的常规属性
可对模型的名称、标注和描述进行设置。
步骤:
①在“模型构建器”界面上,单击模型 > 模型属性。
②输入“三调净面积计算及统计”作为模型名称。模型名称中不允许包含空格。
③在标签文本框中,输入“三调净面积计算及统计”。模型标签中允许包含空格。此标签用于在目录 窗口中显示模型名称。
④在描述文本框中,输入所需文本。
⑤选中存储相对路径名(不是绝对路径名) 选项,以便共享模型工具或将模型数据和模型移动到其他位置。
⑥单击确定。
⑦保存完成的模型,并退出“模型构建器”。
设置好后,打开模型如下:
12、记录模型
最好在分享模型前先对其进行记录。步骤:
①右键单击目录 窗口中的模型,然后单击项目描述。
②将打开项目描述 窗口,其中显示了 描述 页面。
③在项目描述 窗口中,单击编辑按钮。
④将打开文档编辑器以供您输入项目描述。
⑤为模型中的每一项输入相应的描述,然后单击保存按钮。下载本文