Muchos algoritmos de procesamiento tienen una opción para guardar la salida como memoria. Si se ejecutó desde la caja de herramientas, esto funciona bien, porque puede marcar la casilla "Abrir archivo de salida después de ejecutar el algoritmo".
Mirando el código fuente de QGIS, el código para cargar la capa de memoria parece estar definido en la función Postprocessing.handleAlgorithmResults
. La función utiliza el acceso a una alg.outputs
lista y hace lo siguiente:
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:
# ...
Cuando ejecuta algoritmos de procesamiento desde la consola, ¿hay alguna forma de cargar la capa sin acceso a este objeto? puedo correr
processing.runalg("qgis:intersection", layer1, layer2, "memory:")
o incluso
processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName")
Sin embargo, no puedo encontrar una manera de obtener el resultado resultante.