De nombreux algorithmes de traitement ont une option pour enregistrer la sortie en mémoire. Si exécuté à partir de la boîte à outils, cela fonctionne très bien, car vous pouvez cocher la case "Ouvrir le fichier de sortie après l'exécution de l'algorithme".
En regardant le code source de QGIS, le code de chargement de la couche mémoire semble être défini dans la fonction Postprocessing.handleAlgorithmResults
. La fonction utilise l'accès à une alg.outputs
liste et effectue les opérations suivantes:
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:
# ...
Lorsque vous exécutez des algorithmes de traitement à partir de la console, existe-t-il un moyen de charger la couche sans accéder à cet objet? je peux courir
processing.runalg("qgis:intersection", layer1, layer2, "memory:")
ou même
processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName")
Je ne peux cependant pas trouver un moyen de saisir la sortie résultante.