Quiero acceder a la función de líneas de explosión en Python fuera de QGIS desde un script independiente.
¿Qué módulo debo cargar para usarlo?
¿Cómo puedo acceder processing
?
from qgis.core import *
layerInput = QgsVectorLayer('test.shp', 'test', 'ogr')
processing.runalg('qgis:explodelines', layerInput, 'temp.shp')
qgis
pyqgis
qgis-processing
explode
ustroetz
fuente
fuente
import processing
.Respuestas:
ACTUALIZACIÓN 24.04.2018: Vea cómo hacer esto en QGIS v3.x aquí .
Para QGIS v2.x
Finalmente encontré la forma correcta de ejecutar algoritmos de procesamiento a través de scripts PyQGIS independientes.
Con el complemento de procesamiento versión 2.2.0-2, puede probar el siguiente script:
Se pueden ubicar versiones más recientes de Processing
/usr/share/qgis/python/plugins
, por lo que es posible que deba usarlas ensys.path.append('/usr/share/qgis/python/plugins')
consecuencia.Encontré el ejemplo de trabajo en Error: Algoritmo no encontrado , que a su vez se basa en una discusión de la lista de correo Qgis-dev .
fuente
'/home/user/.qgis2/python/plugins'
. Puede encontrar la ubicación abriendo QGIS y haciendo clic enplugins/Manage and install plugins
desplazarse hacia abajo para procesar y verá la ubicación de instalación en la descripción.cannot-create-a-qpixmap
esta función independiente, pero veo que también resolvió eso en esta pregunta gis.stackexchange.com/questions/188074/…layerInput
y cambiar la línea runalg a:general.runalg(*sys.argv[1:])
sin mencionar que este script puede ser la base para el procesamiento SIG paralelo según esta pregunta: gis.stackexchange.com/questions/119961/…Hasta que llegue a trabajar de la forma genérica de hacerlo, le diré una solución alternativa.
Uso el plugin de procesamiento versión 2.2.0-2 (le sugiero que use esta versión), que está instalado en
/home/germap/.qgis2/python/plugins/
mi computadora. Debe conocer la ubicación de esta carpeta, porque importa el módulo de procesamiento desde allí.Como conoce el proveedor (
qgis
) y el algoritmo (explodelines
), puede mirar/home/germap/.qgis2/python/plugins/processing/algs/qgis/
para tomar el nombre del script de líneas de explosión:Explode.py
esta información le permite importar el algoritmo directamente a su script independiente de Python.Entonces, abra una consola Python y copie el siguiente script (uso GNU / Linux, por lo que las variables de entorno están configuradas de manera predeterminada, lo que me permite importar bibliotecas qgis y PyQt4 en un instante):
Si no recibe mensajes de error, eso es todo. La capa de salida se ha guardado en la ruta de salida que especificó (
/home/user/data/out.shp
)Nota: Con respecto a una forma genérica (es decir, llamar a algoritmos por nombre), he encontrado algunos problemas que necesito resolver antes de publicarlo. Tan pronto como lo haga funcionar, lo publicaré.
fuente