26.5. 模型设计师

这个 model designer 允许您使用简单易用的界面创建复杂的模型。在使用地理信息系统时,大多数分析操作不是孤立的,而是操作链的一部分。使用模型设计器,可以将该操作链包装到单个流程中,以便以后使用不同的输入集执行。无论涉及多少步骤和不同的算法,一个模型都是作为单个算法执行的,节省了时间和精力。

可以从处理菜单中打开模型设计器 (Processing ► Model Designer )。

26.5.1. 模型设计器界面

../../../_images/modeler_canvas.png

图 26.18 模型设计者

在其主要部分中,建模器有一个工作画布,可以在其中构建模型的结构和它表示的工作流。

在对话框的顶部,不同的菜单和 Navigation 工具栏提供了对各种工具的访问。

26.5.1.1. 型号菜单

标签

快捷方式

导航工具栏

描述

成功 Validate Model

检查模型中使用的算法和输入是否存在。在发布模型之前非常方便。

玩 Run Model...

F5

复选框

执行模型

Reorder Model Inputs...

设置在算法对话框中向用户显示输入的顺序。

Reorder Output Layers...

设置将结果加载到项目时模型输出必须使用的特定顺序。

文件打开 Open Model...

Ctrl+O

复选框

打开一个 .model3 用于编辑或执行的文件

文件保存 Save Model

Ctrl+S

复选框

将模型另存为磁盘 .model3 文件

文件另存为 Save Model as...

Ctrl+Shift+S

复选框

将模型作为新的 .model3 文件

文件保存 Save Model in project

复选框

将模型文件嵌入到项目文件中,使其在共享项目文件时可用。

帮助内容 Edit Model Help...

复选框

用于记录模型、算法、参数和输出以及作者和版本的界面

Export ►

保存映射为图像 ► Export as Image...

复选框

将模型的图形设计保存为图像文件格式(用于说明)

另存为PDF ► Export as PDF...

将模型的图形设计保存到 PDF 文件格式(用于说明)

保存为SVG ► Export as SVG...

将模型的图形设计保存到 SVG 文件格式(用于说明)

文件保存 ► Export as Script Algorithm...

复选框

生成包含模型说明的python脚本文件

26.5.1.2. 编辑菜单

标签

快捷方式

导航工具栏

描述

选择全部 Select All

Ctrl+A

选择设计器中的所有模型组件

Snap selected components to Grid

将元素捕捉并对齐到栅格中

重做 Redo

Ctrl+Y

复选框

回滚最近取消的操作。另请参阅 Undo/Redo 面板。

撤销 Undo

Ctrl+Z

复选框

取消上一次更改。另请参阅 Undo/Redo 面板。

编辑切割 Cut

Ctrl+X

从模型中剪切选定的零部件。

文案编辑 Copy

Ctrl+C

从模型中复制选定的零部件。

编辑粘贴 Paste

Ctrl+V

将剪切或复制的零部件选择从一个模型粘贴到另一个模型或同一模型中。选定的组件将保留其原始属性和注释。

删除所选内容 Delete selected components

Del

从模型中删除零部件。

Add Group Box

在相关组件的背景中添加一个框,以便直观地对它们进行分组。在大型模型中尤其有用,以保持工作流程的整洁。

26.5.1.3. 查看菜单

标签

快捷方式

导航工具栏

描述

Zoom To ►

缩放至选定组框范围

缩放 Zoom In

Ctrl++

复选框

ZoomOut Zoom Out

Ctrl+-

复选框

ZoomActual Zoom to 100%

Ctrl+1

复选框

ZoomFullExtent Zoom Full

Ctrl+0

复选框

显示设计器当前画布中的所有组件

复选框 Show Comments

显示与模型设计器中的每个算法或输入相关联的注释

未选中 Enable Snapping

未选中 Toggle Panel Visibility

Ctrl+Tab

打开或关闭 panels 在设计器中

26.5.1.4. 嵌板

窗口的左侧是一个带有五个面板的部分,可用于将新元素添加到模型中:

  1. Model Properties: specify the name (required) of the model and the group in which it will be displayed in the Processing Toolbox

  2. Inputs :所有 input parameters 可以塑造你的模特

  3. Algorithms: the available Processing algorithms

  4. Variables :型号可以包含专用的 variables 它们是独一无二的,而且只对它们可用。模型中使用的任何表达式都可以访问这些变量。它们对于控制模型中的算法和通过改变单个变量来控制模型的多个方面很有用。可以在中查看和修改变量 Variables 面板。

  5. Undo History :此面板将记录建模器中发生的所有事情,从而很容易取消您做错的事情。

26.5.1.5. 关于可用的算法

在设计模型时,可从工具箱执行的某些算法不会出现在可用算法列表中。要包含在模型中,算法必须具有正确的语义。如果算法没有这样明确定义的语义(例如,如果不能预先知道输出层的数量),则不可能在模型中使用它,并且它不会出现在您可以在Modeler对话框中找到的算法列表中。另一方面,有些算法特定于建模者。这些算法位于‘Modeler Tools’组中。

26.5.2. 创建模型

创建模型涉及两个基本步骤:

  1. Definition of necessary inputs 。这些输入将被添加到参数窗口,因此用户可以在执行模型时设置它们的值。模型本身是一种算法,因此对于处理框架中可用的所有算法,参数窗口都是自动生成的。

  2. Definition of the workflow 。使用模型的输入数据,通过添加算法并选择它们如何使用定义的输入或由模型中的其他算法生成的输出来定义工作流。

26.5.2.1. 投入的定义

第一步是定义模型的输入。以下元素位于 Inputs Modeler窗口左侧的面板:

表 26.1 用于模型构建的参数类型列表

Annotation Layer

Authentication Configuration

Boolean

Color

Connection Name

Coordinate Operation

CRS

Database Schema

Database Table

Datetime

Distance

Duration

DXF Layers

Enum

Expression

Extent

Field Aggregates

Fields Mapper

File/Folder

Geometry

Map Layer

Map Theme

Matrix

Mesh Dataset Groups

Mesh Dataset Time

Mesh Layer

Multiple Input

Number

Point

Point Cloud Attribute

Point Cloud Layer

Print Layout

Print Layout Item

Range

Raster Band

Raster Layer

Scale

String

TIN Creation Layers

Vector Features

Vector Field

Vector Layer

Vector Tile Writer Layers

备注

将鼠标悬停在输入上将显示包含附加信息的工具提示。

当双击某个元素时,会显示一个允许您定义其特征的对话框。根据参数的不同,对话框将包含至少一个元素(描述,这是用户在执行模型时将看到的内容)。例如,当添加一个数值时,如下图所示,除了参数的描述外,还必须设置一个默认值和有效值的范围。

../../../_images/models_parameters.png

图 26.19 模型参数定义

可以将输入定义为模型的必填项,方法是选中 复选框 Mandatory 选项,并通过选中 未选中 Advanced 复选框可以将输入设置为在 Advanced 一节。当模型有许多参数,并且其中一些参数不是微不足道的,但您仍然想要选择它们时,这一点特别有用。

对于每个添加的输入,都会在建模器画布中添加一个新元素。

../../../_images/models_parameters2.png

图 26.20 模型参数

您还可以通过从列表中拖动输入类型并将其放在Modeler画布中需要它的位置来添加输入。如果您想要更改现有输入的参数,只需双击它,相同的对话框就会弹出。

当在另一个模型中使用模型时,所需的输入和输出将显示在画布中。

26.5.2.2. 工作流程的定义

在下面的示例中,我们将添加两个输入和两个算法。该模型的目的是使用将高程值从DEM栅格图层复制到线图层 Drape 算法,然后使用 Climb Along Line 算法。

Inputs 选项卡中,将两个输入选择为 Vector Layer 对于这条线路和 Raster Layer 为了DEM。现在,我们准备将算法添加到工作流中。

算法可以在 Algorithms 面板,其分组方式与处理工具箱中的分组方式大致相同。

../../../_images/models_parameters3.png

图 26.21 模型输入

要将算法添加到模型中,请双击其名称或将其拖放,就像输入一样。至于输入,您可以更改算法的描述并添加注释。添加算法时,将出现一个执行对话框,其内容与从工具箱执行算法时显示的执行面板中的内容类似。下图显示了 Drape (set Z value from raster) 以及 Climb along line 算法对话框。

../../../_images/models_parameters4.png

图 26.22 模型算法参数

正如你所看到的,但是有一些不同之处。每个参数旁边都有一个下拉菜单,允许您控制在工作流程中如何处理这些参数:

  • FieldInteger Value :允许您为参数指定静态值。根据参数类型,小部件将允许您输入数字 (5.0 ),一个字符串 (mytext ),选择加载到qgis工程或文件夹中的层(S),从列表中拾取项目,...

  • 表达式 Pre-calculated Value :打开 Expression Builder 对话框中,并允许您定义用于填充参数的表达式。模型输入与其他一些图层统计数据一起提供为 variables 和列在表达式生成器的搜索对话框的顶部。在执行子算法之前对该表达式求值一次,并在该算法的执行过程中使用该表达式。

  • 处理模式 Model Input :允许将添加到模型的输入用作参数。点击后,此选项将列出该参数的所有合适输入。

  • 处理算法 Algorithm Output :允许使用另一个算法的输出作为当前算法的输入。对于模型输入,此选项将列出该参数的所有合适输入。

  • 这个 output parameter 还在其下拉菜单中具有以下选项:

    • 为子算法添加静态输出,例如,始终将子算法的输出保存到预定义的Geopackage或Postgres图层

    • 对子算法使用基于表达式的输出值,例如根据今天的日期生成自动文件名并将输出保存到该文件

    • 使用模型输入,例如 File/Folder 用于指定输出文件或文件夹的模型输入

    • 使用另一个算法输出,例如 Create directory 算法(来自 Modeler tools )

    • 一项额外的 模型输出 Model Output 选项使算法的输出在模型中可用。如果该算法生成的层仅用作另一种算法的输入,请不要编辑该文本框。

    在下图中,您可以看到两个定义为 Model Input 和临时输出层:

    ../../../_images/models_parameters5.png

    图 26.23 算法输入和输出参数

您还会找到一个名为的附加参数 Dependencies 这在从工具箱调用算法时不可用。此参数允许您通过将一个算法显式定义为 parent 现在的那个。这将迫使 parent 要在当前算法之前执行的算法。

当您使用先前算法的输出作为算法的输入时,这将隐式地将先前算法设置为当前算法的父算法(并将相应的箭头放置在建模器画布中)。然而,在某些情况下,一种算法可能依赖于另一种算法,即使它不使用其中的任何输出对象(例如,对PostGIS数据库执行SQL语句的算法和将层导入到同一数据库中的另一种算法)。在这种情况下,只需在 Dependencies 参数,它们将以正确的顺序执行。

一旦为所有参数分配了有效值,请单击 OK 算法将被添加到画布中。它将链接到画布中的元素(算法或输入),这些元素提供用作算法输入的对象。

属性将元素拖到画布上的其他位置。 选择 Select/Move Item 工具。这有助于使模型的结构更清晰、更直观。您还可以调整元素的大小,抓住它们的边界。如果输入或算法的描述很长,这一点尤其有用。使用 View ► Enable snapping 选项选中后,可以将调整大小或位移的项目绑定到虚拟网格,以实现更直观的算法设计。

元素之间的链接会自动更新,并且您可以看到 + 按钮位于每个算法的顶部和底部。单击该按钮将列出算法的所有输入和输出,以便您可以快速概述。

../../../_images/models_model.png

图 26.24 一个完整的模型

Edit ► Add Group Box 工具,您可以添加一个可拖动的 box 到画布上。此功能在大型模型中非常有用,可以将建模器画布中的相关元素分组,并保持工作流的整洁。例如,我们可以将示例中的所有输入组合在一起:

../../../_images/model_group_box.png

图 26.25 模型组框

您可以更改框的名称和颜色。组框与以下组件一起使用时非常有用 View ► Zoom To ► 工具,允许您缩放到模型的特定部分。您还可以使用鼠标滚轮进行放大和缩小。

您可能希望更改输入的顺序以及它们在主模型对话框中的列出方式。在列表的底部 Input panel you will find the Reorder Model Inputs... 按钮,并通过单击该按钮弹出一个新对话框,允许您更改输入的顺序:

../../../_images/model_reorder_inputs.png

图 26.26 重新排序模型输入

还可以设置模型输出在将结果加载到项目时必须使用的特定顺序。这为模型创建者提供了一种在运行模型时确保在画布上对层进行逻辑排序的方法,例如将矢量层输出放置在栅格层输出上,或将点层放置在多边形层上。模型创建者还可以为输出设置可选的“Group Name”,以便使用新的组名或通过将其添加到现有组来自动对层树中的输出进行分组。在 Model menu you will find the Reorder Output Layers... 条目,然后单击它,将弹出一个新对话框,允许您更改输出层的顺序:

../../../_images/model_reorder_output_layers.png

图 26.27 对输出图层进行重新排序

还可以将注释添加到建模器中的输入或算法。这可以通过进入 Comment 选项卡,或用鼠标右键单击。在同一选项卡中,可以手动为各个模型注释设置颜色。注释仅在建模器画布中可见,在最终算法对话框中不可见;可通过停用来隐藏注释 View ► Show Comments

您可以在任何时候通过单击 开始 Run model 纽扣。当使用编辑器执行模型时,任何非默认值都将保存在输入中。这意味着稍后在编辑器中执行模型时,对话框将在随后的任何运行中预先填充这些值。

为了使用工具箱中的算法,必须保存它并关闭Modeler对话框,以允许工具箱刷新其内容。

26.5.2.3. 记录您的模型

您需要记录您的模型,这可以从建模器本身完成。按下 编辑帮助内容 :sup:`编辑模型帮助`按钮,会出现如下所示的对话框。

../../../_images/help_edition.png

图 26.28 编辑帮助

在右侧,您将看到一个简单的HTML页面,该页面使用算法的输入参数和输出的描述创建,以及一些附加项目,如模型或其作者的一般描述。此外,还有一个示例部分,您可以在其中输入您自己的定制示例,以帮助解释模型的用法。第一次打开帮助编辑器时,所有这些描述都是空的,但您可以使用对话框左侧的元素对其进行编辑。在上半部分选择一个元素,然后在下面的文本框中写下其说明。

模型帮助保存为模型本身的一部分。

26.5.3. 保存和加载模型

26.5.3.1. 保存模型

使用 文件保存 :sup:保存模型`按钮,用于保存当前模型和 |fileOpen| :sup:`打开模型`按钮打开以前保存的模型。模型随一起保存 :file:.model3` 分机。如果已从Modeler窗口保存了模型,则不会提示您输入文件名。由于已经有一个文件与该模型相关联,因此该文件将用于后续保存。

在保存模型之前,您必须在窗口上部的文本框中为其输入名称和组。

保存在中的模型 models 文件夹(提示您输入文件名以保存模型时的默认文件夹)将出现在相应分支的工具箱中。当调用工具箱时,它会搜索 models 包含的文件的文件夹 .model3 扩展,并加载它们包含的模型。由于模型本身就是一种算法,因此可以像任何其他算法一样将其添加到工具箱中。

模型也可以使用在项目文件中保存 添加到项目 :sup:保存项目中的模型`按钮。使用此方法保存的模型不会写入为 :file:.model3` 文件在磁盘上,但将嵌入到项目文件中。

项目模型可在 QgsProject文件 :guiabel:工具箱的`Project Models‘菜单和 Project ► Models 菜单项。

Models文件夹可以从处理配置对话框中设置,位于 Modeler 一群人。

从加载的模型 models 文件夹不仅出现在工具箱中,而且还出现在 Algorithms Modeler窗口的。这意味着您可以将一个模型合并为更大模型的一部分,就像其他算法一样。

模特们将出现在 Browser 面板,并可以从那里运行。

26.5.3.2. 将模型导出为Python脚本

正如我们将在后面的章节中看到的,处理算法可以从QGIS Python控制台调用,并且可以使用Python创建新的处理算法。创建这样的Python脚本的一种快捷方法是创建一个模型,然后将其导出为一个Python文件。

要执行此操作,请单击 另存为Python :sup:导出为脚本算法...`在建模器画布中或在处理工具箱中右键单击模型的名称,然后选择 |saveAsPython| :sup:`将模型导出为Python算法...

26.5.3.3. 将模型导出为图像、PDF或SVG

也可以通过单击将模型导出为图像、SVG或PDF(用于说明目的) 保存映射为图像 :sup:导出为镜像另存为PDF :sup:导出为PDF`或 |saveAsSVG| :sup:`导出为SVG

26.5.4. 编辑模型

您可以编辑当前创建的模型,重新定义工作流以及定义模型的算法和输入之间的关系。

如果您在画布中右键单击某个算法,您将看到如下所示的上下文菜单:

../../../_images/modeler_right_click.png

图 26.29 建模器右键单击

选择 Remove 选项将导致删除所选算法。仅当没有依赖于某个算法的其他算法时,才能删除该算法。也就是说,如果没有来自算法的输出在不同的算法中用作输入。如果您尝试删除有其他算法依赖的算法,将显示如下所示的警告消息:

../../../_images/cannot_delete_alg.png

图 26.30 无法删除算法

选择 Edit... 选项会显示算法的参数对话框,这样就可以更改输入和参数值。并非模型中可用的所有输入元素都将显示为可用输入。如果在模型定义的工作流中的更高级步骤中生成的层或值导致循环依赖关系,则它们将不可用。

选择新值并单击 OK 像往常一样按按钮。模型元素之间的连接将相应地在建模器画布中更改。

这个 Add comment... 允许您向算法添加注释以更好地描述行为。

一个模型可以通过停用它的一些算法来部分运行。要执行此操作,请选择 Deactivate 右键单击算法元素时出现的上下文菜单中的选项。选定的算法以及模型中依赖于该算法的所有算法将以灰色显示,并且不会作为模型的一部分执行。

../../../_images/deactivated.png

图 26.31 带有停用算法的模型

当右键单击未激活的算法时,您将看到一个 Activate 菜单选项,您可以使用该菜单选项重新激活它。