Utiliser la couche mémoire comme entrée et / ou sortie avec runalg?

9

Une couche mémoire peut-elle être utilisée comme entrée et / ou sortie avec runalg ?

Avec runandload, cela fonctionne:

 processing.runandload("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\dissolved.shp")

Les paramètres 2 et 3 sont les couches d'entrée, qui sont déjà en mémoire, et le paramètre 3 est la couche de sortie, qui est écrite en mémoire et utilisée dans l'outil suivant (Dissoudre). Cela fonctionne bien, mais lorsque j'essaie d'utiliser la même logique avec runalg , ma couche fusionnée en mémoire ne semble pas être créée, car l'outil Dissoudre ne s'exécute jamais. Les éléments suivants, par exemple, ne fonctionneraient pas:

 processing.runalg("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\datenschrott\dissolved.shp")

Puis-je supposer que runalg n'accepte pas les couches qui sont en mémoire ou qu'il ne peut pas en produire?

BritishSteel
la source

Réponses:

4

Vous ne savez pas vraiment pourquoi votre méthode ne fonctionne pas, mais une autre méthode consiste à utiliser à la place Nonelors de l'utilisation runalgcar cela créera également une sortie en mémoire. Ci-dessous, j'ai défini le premier processus comme output_0et appelé le résultat de celui-ci comme entrée dans le deuxième processus:

output_0 = processing.runalg("qgis:mergevectorlayers",["memory:bufferOne", "memory:bufferTwo"], None)
processing.runandload("qgis:dissolve", output_0['OUTPUT'], True, '', r"D:\PythonTesting\dissolved.shp")

Résultat:

Résultat


Testé sur QGIS 2.16.0-Nødebo avec le plugin Processing v2.12.2.

Notez que qgis:mergevectorlayers nécessite désormais une liste de couches d'entrée.

Joseph
la source