17.21. 使用仅限建模器的工具创建模型

备注

本课程将介绍如何使用一些仅在建模器中提供的算法来为模型提供其他功能。

本课程的目标是使用建模器创建考虑当前选择的内插算法,不仅使用选定要素,而且使用该选择的范围来创建内插的栅格层。

内插过程涉及两个步骤,在前面的课程中已经解释过了:栅格化点图层和填充栅格化后的层中显示的无数据值。如果点图层具有选择项,则将仅使用选定的点,但如果将输出范围设置为自动调整,则将使用该图层的整个范围。也就是说,该层的范围始终被视为所有要素的完整范围,而不仅仅是从选定要素计算得出的范围。我们将尝试通过在我们的模型中使用一些额外的工具来解决这个问题。

打开建模器并通过添加所需的输入来启动模型。在这种情况下,我们需要一个矢量层(仅限于点)和它的一个属性,以及我们将用于栅格化的值。

../../../_images/inputs.png

下一步是计算所选要素的范围。这就是我们可以使用的纯模型工具 Vector layer bounds 。首先,我们必须创建一个具有这些选定要素范围的层。然后,我们可以在那个层上使用这个工具。

使用选定要素的范围创建图层的一种简单方法是计算输入点图层的凸包。它将仅使用选定的点,因此凸面Shell将具有与选择相同的边界框。然后,我们可以添加 Vector layer bounds 算法,并使用凸壳层作为输入。它应该在建模器画布中显示如下所示:

../../../_images/convexhull_and_extent.png

结果来自于 Vector layer bounds 是一组四个数值和一个范围对象。在本练习中,我们将同时使用数字输出和范围。

../../../_images/extent_outputs.png

现在我们可以添加栅格化向量层的算法,使用 Vector layer bounds 算法作为输入。

填写算法的参数,如下所示:

../../../_images/rasterize3.png

画布现在应该看起来像。

../../../_images/canvas_rasterize.png

最后,使用填充栅格图层的无数据值 Close gaps 算法。

../../../_images/close_gaps1.png

现在可以保存算法并将其添加到工具箱中。您可以运行它,它将通过对输入层中的选定点进行内插来生成栅格层,并且该层将具有与所选内容相同的范围。

以下是对该算法的改进。我们在栅格化时使用了一个硬编码值作为像元大小。该值适用于我们的测试输入层,但可能不适用于其他情况。我们可以添加一个新参数,以便用户输入所需的值,但更好的方法是自动计算该值。

我们可以使用仅限建模器的计算器,并从范围坐标计算该值。例如,要创建一个固定宽度为100像素的层,我们可以在计算器中使用以下公式。

../../../_images/calculator1.png

现在我们必须编辑栅格化算法,因此它使用计算器的输出而不是硬编码值。

最终的算法应该如下所示:

../../../_images/final.png