17.12. 定义数据区

备注

在这一课中,我们将学习如何定义范围,这是一些算法所需要的,特别是栅格算法。

一些算法需要一个范围来定义它们执行的分析要覆盖的区域,通常还需要定义结果层的范围。

当需要一个范围时,可以通过输入定义它的四个值(最小X、最小Y、最大X、最大Y)来手动定义它,但也有其他更实用、更有趣的方法。我们将在这一课中看到它们的全部内容。

首先,让我们打开一个需要定义范围的算法。打开 Rasterize 算法,该算法从矢量层创建栅格层。

../../../_images/rasterize1.png

除最后两个参数外,所有参数都用于定义要栅格化的层,并配置栅格化过程的工作方式。另一方面,最后两个参数定义输出层的特征。这意味着它们定义了覆盖的区域(不一定与输入向量层覆盖的区域相同)和分辨率/单元大小(无法从向量层推断,因为向量层没有单元大小)。

您可以做的第一件事是输入前面解释的4个定义值,用逗号分隔。

../../../_images/type.png

这不需要任何额外的解释。虽然这是最灵活的选择,但在某些情况下也不太实用,这就是实现其他选项的原因。要访问它们,您必须单击范围文本框右侧的按钮。

../../../_images/menu1.png

让我们看看他们每个人都做了些什么。

第一个选项是 Use layer/canvas extent ,它将显示如下所示的选择对话框。

../../../_images/layer.png

您可以在此处选择画布的范围(当前缩放覆盖的范围),或选择任何可用层的扩展。选择它并单击 OK ,文本框中将自动填充相应的值。

第二个选项是 Select extent on canvas 。在这种情况下,算法对话框消失,您可以在QGIS画布上单击并拖动以定义所需的范围。

../../../_images/extent_drag.png

松开鼠标按钮后,该对话框将重新出现,文本框中已有与定义的范围相对应的值。

最后一个选项是 Use min covering extent from input layers ,这是默认选项。这将计算用于运行算法的所有层的最小覆盖范围,并且不需要在文本框中输入任何值。在单输入图层的情况下,就像我们正在运行的算法一样,通过在中选择相同的输入图层可以获得相同的范围 Use layer/canvas extent 我们已经看过了。但是,当有多个输入层时,最小覆盖范围不对应于任何输入层范围,因为它是从所有输入层范围一起计算得出的。

我们将使用最后一种方法来执行我们的栅格化算法。

填写参数对话框,如下图所示,然后按 OK

../../../_images/parameters.png

备注

在这种情况下,最好使用 Integer (1 byte) 而不是一个 Floating point (4 byte) ,因为 NAME 是一个最大值为64的整数。这将导致更小的文件大小和更快的计算。

您将得到一个栅格化的层,它正好覆盖了原始矢量层所覆盖的区域。

../../../_images/result.png

在某些情况下,最后一种选择, Use min covering extent from input layers ,可能不可用。这将发生在那些没有输入层而只有其他类型的参数的算法中。在这种情况下,您必须手动输入值或使用任何其他选项。

请注意,如果存在选择,则该图层的范围是整个要素集的范围,即使仅对选定的项目执行栅格化,也不会使用该选择来计算范围。在这种情况下,您可能希望根据所选内容实际创建一个新层,然后将其用作输入。