19 votos

¿Cómo puedo acceder a 'procesamiento' con Python?

Quiero acceder a la función líneas en Python de explotar fuera de QGIS desde un guión independiente.

¿Qué módulo debo cargar para su uso? ¿Cómo puedo acceder a `` ?

25voto

Elliott Maynard Puntos 11

Finalmente encontró la forma correcta de ejecución de algoritmos de procesamiento a través de independiente PyQGIS secuencias de comandos.

Mediante el Procesamiento de plugin de la versión 2.2.0-2, usted puede intentar la siguiente secuencia de comandos:

# Prepare the environment
import sys
from qgis.core import *
from PyQt4.QtGui import *
app = QApplication([])
QgsApplication.setPrefixPath("/usr", True)
QgsApplication.initQgis()

# Prepare processing framework 
sys.path.append('/home/user/.qgis2/python/plugins')
from processing.core.Processing import Processing
Processing.initialize()
from processing.tools import *

# Run the algorithm
layerInput = QgsVectorLayer('test.shp', 'test', 'ogr')
general.runalg('qgis:explodelines', layerInput, 'temp.shp')

# Exit applications
QgsApplication.exitQgis()
QApplication.exit()

He encontrado el ejemplo de trabajo en Error: Algoritmo no se encuentra, que está basado a su vez en un Qgis-dev de la lista de correo de discusión.

4voto

Elliott Maynard Puntos 11

Hasta que yo llegue a trabajar de la forma genérica de hacer, voy a decirle a usted una solución.

Yo uso el plugin de Procesamiento de la versión 2.2.0-2 (sugiero el uso de esta versión), que se instala en /home/germap/.qgis2/python/plugins/ en mi equipo. Usted necesita saber la ubicación de esta carpeta, ya que importar el módulo de procesamiento de allí.

Como usted sabe, el proveedor (qgis) y el algoritmo (explodelines), se puede ver en /home/germap/.qgis2/python/plugins/processing/algs/qgis/ tomar las líneas de explosión nombre de secuencia de comandos: Explode.py Esta información permite importar el algoritmo directamente a su Python secuencia de comandos independiente.

Así, abrir una consola de Python y copiar el siguiente script (yo uso GNU/Linux, por lo que las variables de entorno se establece de forma predeterminada, lo que me permite la importación de qgis y PyQt4 bibliotecas en una brisa):

# 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 usted no recibe mensajes de error, eso es todo. La capa de salida se ha guardado en la ruta de salida especificado (/home/user/data/out.shp)

Nota: en Cuanto a una forma genérica (es decir, los algoritmos de llamadas por su nombre), me he encontrado con algunos problemas que tengo que resolver antes de publicarlo. Tan pronto como puedo conseguir que funcione, voy a publicar.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X