使用内存层作为Runalg的输入和/或输出?


9

可以将存储层用作runalg的输入和/或输出吗?

使用runandload可以使它工作:

 processing.runandload("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\dissolved.shp")

参数2和3是输入层,它们已经在内存中,参数3是输出层,它被写入内存并在以下工具(Dissolve)中使用。这可以正常工作,但是当我尝试对runalg使用相同的逻辑时,似乎未创建我在内存中的合并层,因为Dissolve工具从不运行。例如,以下内容将不起作用:

 processing.runalg("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\datenschrott\dissolved.shp")

我可以假设runalg要么不接受内存中的图层,要么不输出任何图层?


Answers:


4

不能完全确定为什么您的方法不起作用,但是另一种方法是在使用None时改为使用,runalg因为这也会在内存中创建输出。下面,我将第一个流程定义为output_0,并将其结果称为第二个流程的输入:

output_0 = processing.runalg("qgis:mergevectorlayers",["memory:bufferOne", "memory:bufferTwo"], None)
processing.runandload("qgis:dissolve", output_0['OUTPUT'], True, '', r"D:\PythonTesting\dissolved.shp")

结果:

结果


在带有处理插件v2.12.2的QGIS2.16.0-Nødebo上进行了测试。

请注意, qgis:mergevectorlayers 现在需要输入图层列表。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.