Molti algoritmi di elaborazione hanno un'opzione per salvare l'output come memoria. Se eseguito dalla casella degli strumenti, funziona correttamente, perché è possibile selezionare la casella "Apri file di output dopo l'esecuzione dell'algoritmo".
Guardando il codice sorgente per QGIS, il codice per caricare il livello di memoria sembra essere definito nella funzione Postprocessing.handleAlgorithmResults
. La funzione utilizza l'accesso a un alg.outputs
elenco e procede come segue:
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:
# ...
Quando esegui algoritmi di elaborazione dalla console, c'è un modo per caricare il layer senza accedere a questo oggetto? posso correre
processing.runalg("qgis:intersection", layer1, layer2, "memory:")
o anche
processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName")
Non riesco comunque a trovare un modo per afferrare l'output risultante.