Je veux accéder à la fonction d'éclatement des lignes en Python en dehors de QGIS à partir d'un script autonome.
Quel module dois-je charger pour l'utiliser?
Comment puis-je y accéder processing
?
from qgis.core import *
layerInput = QgsVectorLayer('test.shp', 'test', 'ogr')
processing.runalg('qgis:explodelines', layerInput, 'temp.shp')
qgis
pyqgis
qgis-processing
explode
ustroetz
la source
la source
import processing
.Réponses:
MISE À JOUR 24.04.2018: Découvrez comment procéder dans QGIS v3.x ici .
Pour QGIS v2.x
Enfin trouvé la bonne façon d'exécuter des algorithmes de traitement via des scripts PyQGIS autonomes.
En utilisant le plugin de traitement version 2.2.0-2, vous pouvez essayer le script suivant:
Les versions de traitement plus récentes peuvent être localisées à
/usr/share/qgis/python/plugins
, vous devrez donc peut-être les utiliser ensys.path.append('/usr/share/qgis/python/plugins')
conséquence.J'ai trouvé l'exemple de travail dans Error: Algorithm not found , qui est à son tour basé sur une discussion sur la liste de diffusion Qgis-dev .
la source
'/home/user/.qgis2/python/plugins'
. Vous pouvez trouver l'emplacement en ouvrant QGIS et en cliquant surplugins/Manage and install plugins
faire défiler vers le bas pour le traitement et vous verrez l'emplacement d'installation dans la description.cannot-create-a-qpixmap
de cette fonction autonome, mais je vois que vous avez également résolu ce problème dans cette question gis.stackexchange.com/questions/188074/…layerInput
supprimant et en modifiant la ligne runalg en:general.runalg(*sys.argv[1:])
sans oublier que ce script peut être la base d'un traitement SIG parallèle selon cette question: gis.stackexchange.com/questions/119961/…Jusqu'à ce que j'arrive à travailler de la manière générique de le faire, je vais vous dire une solution de contournement.
J'utilise le plugin de traitement version 2.2.0-2 (je vous suggère d'utiliser cette version), qui est installé
/home/germap/.qgis2/python/plugins/
sur mon ordinateur. Vous devez connaître cet emplacement de dossier, car vous importez le module de traitement à partir de là.Puisque vous connaissez le fournisseur (
qgis
) et l'algorithme (explodelines
), vous pouvez regarder/home/germap/.qgis2/python/plugins/processing/algs/qgis/
pour prendre le nom du script d'éclatement des lignes:Explode.py
Ces informations vous permettent d'importer l'algorithme directement dans votre script autonome Python.Alors, ouvrez une console Python et copiez le script suivant (j'utilise GNU / Linux, donc les variables d'environnement sont définies par défaut, ce qui me permet d'importer des bibliothèques qgis et PyQt4 en un clin d'œil):
Si vous n'obtenez pas de messages d'erreur, c'est tout. Le calque de sortie a été enregistré dans le chemin de sortie que vous avez spécifié (
/home/user/data/out.shp
)Remarque: Concernant une méthode générique (c'est-à-dire appeler des algorithmes par leur nom), j'ai trouvé quelques problèmes que je dois résoudre avant de les publier. Dès que je le ferai fonctionner, je le posterai.
la source