Fino a quando non riuscirò a lavorare nel modo generico di farlo, ti dirò una soluzione alternativa.
Uso il plug-in di elaborazione versione 2.2.0-2 (ti consiglio di utilizzare questa versione), che è installato /home/germap/.qgis2/python/plugins/
sul mio computer. È necessario conoscere il percorso di questa cartella, poiché da lì si importa il modulo di elaborazione.
Dato che conosci il provider ( qgis
) e l'algoritmo ( explodelines
), puoi guardare /home/germap/.qgis2/python/plugins/processing/algs/qgis/
per prendere il nome dello script delle linee di esplosione: Explode.py
questa informazione ti consente di importare l'algoritmo direttamente nello script autonomo di Python.
Quindi, apri una console Python e copia il seguente script (uso GNU / Linux, quindi le variabili di ambiente sono impostate di default, permettendomi di importare le librerie qgis e PyQt4 in un gioco da ragazzi):
# 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)
Se non ricevi messaggi di errore, è tutto. Il livello di output è stato salvato nel percorso di output specificato ( /home/user/data/out.shp
)
Nota: per quanto riguarda un modo generico (es. Chiamare algoritmi per nome), ho riscontrato alcuni problemi che devo risolvere prima di pubblicarlo. Non appena lo farò funzionare, lo pubblicherò.
import processing
.