17.17. 从模型设计器开始

备注

在本课中,我们将使用模型设计器,这是一个功能强大的组件,我们可以使用它来定义工作流并运行一系列算法。

处理工具的正常会话不仅仅包括运行单个算法。通常会运行其中的几个算法以获得结果,其中一些算法的输出用作其他一些算法的输入。

使用模型设计器,可以将该工作流放入一个模型中,该模型将在一次运行中运行所有必要的算法,从而简化整个流程并使其自动化。

为了开始本课程,我们将计算一个名为地形湿度指数的参数。计算它的算法被称为 Topographic wetness index (twi)

../../../_images/twi.png

如您所见,有两个必填项: SlopeCatchment area 。还有一个可选输入,但我们不会使用它,所以我们可以忽略它。

本课程的数据仅包含一个DEM,因此我们没有任何必需的输入。然而,我们知道如何从DEM计算两者,因为我们已经看到了计算坡度和集水区面积的算法。因此,我们可以首先计算这些层,然后将它们用于TWI算法。

以下是计算2个中间层时应使用的参数对话框。

备注

坡度必须以弧度计算,而不是以度为单位。

../../../_images/slope2.png
../../../_images/area.png

这是您必须设置TWI算法的参数对话框的方式。

../../../_images/twi_filled.png

这是您将获得的结果(已使用默认的单色带伪彩色反转调色板进行渲染)。您可以使用 twi.qml 提供的款式。

../../../_images/twi_layer.png

我们现在要做的是创建一种算法,只需一个步骤就可以从DEM计算出TWI。这将节省我们的工作,以防我们以后必须从另一个DEM计算TWI层,因为我们只需要一个步骤来完成,而不是上面的三个步骤。我们需要的所有流程都可以在工具箱中找到,所以我们要做的就是定义工作流来包装它们。这就是模型设计师的用武之地。

  1. 通过在处理菜单中选择建模器的菜单项来打开建模器。

    ../../../_images/modeler.png

    创建模型需要两件事:设置它将需要的输入,以及定义它包含的算法。它们都是通过从Modeler窗口左侧的两个选项卡中添加元素来完成的: InputsAlgorithms

  2. 让我们从输入开始。在这种情况下,我们没有太多要添加的内容。我们只需要一个包含DEM的栅格层,这将是我们唯一的输入数据。

  3. 双击 Raster layer 输入后,您将看到以下对话框。

    ../../../_images/raster_input.png
  4. 在这里,我们必须定义我们想要的输入:

    1. 由于我们希望该栅格图层为DEM,因此我们将其命名为 DEM 。这是模型的用户在运行它时将看到的名称。

    2. 因为我们需要该层工作,所以我们将其定义为必需层。

    下面是应该如何配置该对话框。

    ../../../_images/raster_input_filled.png
  5. 点击 OK 输入将出现在建模器画布中。

    ../../../_images/canvas_1.png
  6. 现在让我们来看看 Algorithms 标签。

  7. 我们必须运行的第一个算法是 Slope, aspect, curvature 算法。在算法列表中找到它,双击它,您将看到如下所示的对话框。

    ../../../_images/slope_modeler.png

    此对话框与从工具箱中运行算法时可以找到的对话框非常相似,但是可以用作参数值的元素不是从当前的QGIS项目中获取的,而是从模型本身中获取的。这意味着,在这种情况下,我们不会将项目的所有栅格图层用于 Elevation 字段,但只是我们的模型中定义的那些。因为我们只添加了一个名为的栅格输入 DEM ,这将是我们将在列表中看到的唯一与 Elevation 参数。

    当算法用作模型的一部分时,该算法生成的输出的处理方式略有不同。无需选择要保存每个输出的文件路径,只需指定该输出是中间层(并且您不希望在执行模型后保留它),还是它是最终输出。在这种情况下,该算法生成的所有层都是中间层。我们将只使用其中的一个(坡度层),但我们不想保留它,因为我们只需要它来计算TWI层,这是我们想要获得的最终结果。

    如果层不是最终结果,则只需保留相应的字段即可。否则,您必须输入一个名称,该名称将用于在稍后运行模型时显示的参数对话框中标识该层。

  8. 在第一个对话框中没有太多可供选择的内容,因为我们的模型中只有一个层(我们创建的DEM输入)。实际上,对话框的默认配置在本例中是正确的,因此您只需按 OK 。这就是您现在将在Modeler画布中拥有的内容。

    ../../../_images/canvas_2.png
  9. 我们必须添加到我们的模型中的第二个算法是集水区算法。我们将使用名为 Catchment area (Paralell) 。我们将再次使用DEM层作为输入,它产生的输出都不是最终的,所以下面是如何填充相应的对话框。

    ../../../_images/area_modeler.png

    现在,您的模型应该是这样的。

    ../../../_images/canvas_3.png
  10. 最后一步是添加 Topographic wetness index 算法,配置如下。

    ../../../_images/twi_modeler.png

    在这种情况下,我们将不使用DEM作为输入,而是使用由我们先前添加的算法计算的坡度和汇流区图层。当您添加新算法时,它们生成的输出将可用于其他算法,并使用它们链接算法,从而创建工作流。

  11. 在本例中,输出 TWI Layer是最后一层,所以我们必须指明。在相应的文本框中,输入要为此输出显示的名称。

    现在我们的模型完成了,它应该是这样的。

    ../../../_images/canvas_4.png
  12. 在模型窗口的上半部分输入名称和组名。

    ../../../_images/model_name.png
  13. 点击保存它 Save 纽扣。您可以将其保存在您想要的任何位置并在以后打开它,但是如果您将其保存在Models文件夹中(这是当保存文件对话框出现时您将看到的文件夹),您的模型也将在工具箱中可用。因此,请继续使用该文件夹,并使用您喜欢的文件名保存模型。

  14. 现在关闭Modeler对话框并转到工具箱。在 Models 进入你会找到你的模型。

    ../../../_images/toolbox1.png
  15. 您可以像任何普通算法一样运行它,只需双击它即可。

    ../../../_images/model_dialog.png

    如您所见,参数对话框包含您添加到模型中的输入,以及您在添加相应算法时设置为最终的输出。

  16. 使用DEM作为输入运行它,您将只需一个步骤就可以获得TWI层。