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?


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.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.