许多处理算法可以选择将输出保存为内存。如果从工具箱运行,则可以正常工作,因为您可以选中“运行算法后打开输出文件”框。
查看QGIS的源代码,似乎在函数中定义了用于加载内存层的代码Postprocessing.handleAlgorithmResults
。该函数使用对alg.outputs
列表的访问权,并执行以下操作:
for out in alg.outputs:
progress.setPercentage(100 * i / float(len(alg.outputs)))
if out.hidden or not out.open:
continue
if isinstance(out, (OutputRaster, OutputVector, OutputTable)):
try:
if out.value.startswith('memory:'):
layer = out.memoryLayer # NOTE!!
QgsMapLayerRegistry.instance().addMapLayers([layer]) # NOTE!!
else:
# ...
当您从控制台运行处理算法时,是否可以在不访问该对象的情况下加载图层?我可以跑
processing.runalg("qgis:intersection", layer1, layer2, "memory:")
甚至
processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName")
但是,我找不到一种方法来获取结果输出。