许多处理算法可以选择将输出保存为内存。如果从工具箱运行,则可以正常工作,因为您可以选中“运行算法后打开输出文件”框。
查看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")
但是,我找不到一种方法来获取结果输出。