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):
# Prepare the environment
import sys
from PyQt4.QtGui import *
from qgis.core import *
app = QApplication([])
QgsApplication.setPrefixPath("/usr", True)
QgsApplication.initQgis()
# Tell Python where you will get processing from
sys.path.append('/home/germap/.qgis2/python/plugins')
# Reference the algorithm you want to run
from processing.algs.qgis.Explode import *
alg = Explode()
# Set input and output
inLayer = QgsVectorLayer('/home/user/data/in.shp', 'input', 'ogr')
outLayer = '/home/user/data/out.shp'
alg.setParameterValue('INPUT', inLayer)
alg.setOutputValue('OUTPUT', outLayer)
# Run the algorithm
from processing.core.SilentProgress import SilentProgress
progress = SilentProgress()
alg.processAlgorithm(progress)
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.
import processing
.