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?
qgis
pyqgis
qgis-processing
BritishSteel
la source
la source
Réponses:
Vous ne savez pas vraiment pourquoi votre méthode ne fonctionne pas, mais une autre méthode consiste à utiliser à la place
None
lors de l'utilisationrunalg
car cela créera également une sortie en mémoire. Ci-dessous, j'ai défini le premier processus commeoutput_0
et appelé le résultat de celui-ci comme entrée dans le deuxième processus: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.la source
http://gis.stackexchange.com/q/76594/22646 jette plus de lumière sur runalg, runandload et la couche mémoire. Selon http://gis.stackexchange.com/a/184802 , la façon de se référer à la couche mémoire résultante dépend de la version de traitement.
la source