17.8. 运行外部算法

备注

在这一课中,我们将学习如何使用依赖于第三方应用程序的算法,特别是Saga,它是主要的算法提供商之一。

到目前为止,我们运行的所有算法都是处理框架的一部分。也就是说,他们是 native 算法在插件中实现,并由QGIS运行,就像插件本身一样运行。然而,处理框架的最大特点之一是它可以使用来自外部应用程序的算法,并扩展这些应用程序的可能性。这样的算法被包装并包含在工具箱中,因此您可以轻松地从QGIS中使用它们,并使用QGIS数据来运行它们。

您在简化视图中看到的一些算法需要在系统中安装第三方应用程序。一个特别感兴趣的算法提供商是SAGA(自动地理空间分析系统)。首先,我们需要配置所有内容,以便QGIS可以正确地调用SAGA。这并不难,但重要的是要了解它是如何工作的。每个外部应用程序都有自己的配置,在本手册的后面我们将讨论其他一些配置,但Saga将是我们的主要后端,所以我们将在这里讨论它。

如果您使用的是Windows,使用外部算法的最佳方式是使用独立安装程序安装QGIS。它将负责安装所有需要的依赖项,包括Saga,所以如果您使用过它,就没有其他事情可做了。您可以打开设置对话框并转到 Providers/SAGA 一群人。

../../../_images/saga_config.png

Saga路径应该已经配置,并指向安装saga的文件夹。

如果您没有使用独立安装程序安装QGIS,则必须输入SAGA安装(您必须已单独安装)的路径。所需版本为Saga 2.1 [this is changing according to the releases of SAGA] 。

如果您使用的是Linux,则不必在处理配置中设置SAGA安装的路径。相反,您必须安装saga并确保saga文件夹位于PATH中,这样才能从控制台调用它(只需打开控制台并输入 saga_cmd 以检查它)。在Linux下,SAGA的目标版本也是2.1,但在某些安装(如OSGeo Live DVD)中可能只有2.0.8可用。有一些2.1包可用,但它们并不常见,可能会有一些问题,所以如果您更喜欢使用更常用、更稳定的2.0.8,您可以通过在配置对话框中启用2.0.8兼容性来实现这一点 SAGA 一群人。

../../../_images/enable208.png

一旦安装了SAGA,就可以像启动任何其他算法一样,双击SAGA算法的名称启动SAGA算法。因为我们使用的是简化的界面,所以您不知道哪些算法是基于SAGA的,还是在另一个外部应用程序中,但是如果您碰巧双击其中一个算法,而相应的应用程序没有安装,您将看到类似这样的内容。

../../../_images/missing_saga.png

在我们的例子中,假设SAGA已正确安装和配置,您应该不会看到此窗口,而是会进入参数对话框。

让我们尝试一个基于佐贺的算法,该算法称为 Split shapes layer randomly

../../../_images/split.png

使用与本课对应的项目中的Points层作为输入,并使用默认参数值,您将得到如下所示的结果(拆分是随机的,因此您的结果可能不同)。

../../../_images/split_layer.png

输入层已拆分为两个层,每个层具有相同数量的点。这一结果是由SAGA计算出来的,后来被QGIS获取并添加到QGIS项目中。

如果一切顺利,您将不会注意到这个基于SAGA的算法与我们之前运行的其他算法之间的任何差异。然而,由于某些原因,SAGA可能无法生成结果,也不能生成QGIS所期望的文件。在这种情况下,将结果添加到QGIS项目时会出现问题,并且会显示如下错误消息。

../../../_images/missing_result.png

即使正确安装了Saga(或我们从处理框架调用的任何其他应用程序),也可能会发生此类问题,并且知道如何处理它们很重要。让我们生成其中一个错误消息。

打开 Create graticule 算法,并使用下列值。

../../../_images/create_graticule.png

我们使用的宽度和高度值大于指定的范围,因此SAGA无法生成任何输出。换句话说,参数值是错误的,但直到Saga获得参数值并尝试创建经纬网时,才会对它们进行检查。因为它不能创建它,所以它不会生成预期的层,并且您将看到上面所示的错误消息。

备注

在saga>=2.2.3中,该命令将自动调整错误的输入数据,因此您不会收到错误。若要引发错误,请使用负值进行除法。

了解这类问题将帮助你解决它们,并找到正在发生的事情的解释。正如您在错误消息中看到的,执行了一项测试以检查与SAGA的连接是否正常工作,这表明算法的执行方式可能存在问题。这不仅适用于SAGA,也适用于其他外部应用程序。

在下一课中,我们将介绍处理日志,其中保存了有关地理算法运行的命令的信息,您将了解如何在出现此类问题时获取更多详细信息。