[QGIS-es] Correr script de PyQGIS sin correr la GUI de QGIS (Windows y Linux)

Luigi Pirelli luipir en gmail.com
Dom Dic 2 12:51:34 PST 2018


leiste el contenido de initTestCase?
https://github.com/luipir/QGIS/blob/bf6162f376fad6dd44fb2f540c536b7f2371a2a3/tests/src/analysis/testqgsprocessing.cpp#L577


tiene problemas en escribir la version python de este codigo c++?

Luigi Pirelli

**************************************************************************************************
* LinkedIn: https://www.linkedin.com/in/luigipirelli
* Stackexchange: http://gis.stackexchange.com/users/19667/luigi-pirelli
* GitHub: https://github.com/luipir
* Mastering QGIS 2nd Edition:
*
https://www.packtpub.com/big-data-and-business-intelligence/mastering-qgis-second-edition
* Hire me: http://goo.gl/BYRQKg
**************************************************************************************************


On Sat, 1 Dec 2018 at 13:34, Miguel Sevilla-Callejo <msevilla00 en gmail.com>
wrote:

> Hola,
>
> Hace un tiempo que pregunté esto por el grupo de Telegram y me indicaron
> algunas maneras para Windows y no terminé de ver la forma para Linux y
> quería aprovechar la ocasión para crear y dejar este hilo en la lista de
> correos.
>
> La idea es saber qué paquetes de Python o cómo he de configurar el sistema
> para crear un script de PyQGIS y sin entrar en la GUI de QGIS corran
> aprovechando los algoritmos de procesamiento que tiene QGIS.
>
> Por lo visto no es sencillo pero quizá alguien ya lo intentó y resolvió
> con anterioridad.
>
> He intentado seguir las indicaciones de esta entrada de Stackoverflow pero
> no no me funciona:
>
>
> https://gis.stackexchange.com/questions/279874/using-qgis3-processing-algorithms-from-standalone-pyqgis-scripts-outside-of-gui/279937#279937
>
> Pego de lo comenté en Telegram aquí:
>
> Miguel Sevilla-Callejo, [09.10.18 17:40]
> entiendo que he de importar los paquetes de qgis3:
>
> from qgis.core import (
>      QgsApplication,
>      QgsProcessingFeedback,
>      QgsVectorLayer
> )
>
> Miguel Sevilla-Callejo, [09.10.18 17:40]
> pero no se como cargar el processing
>
> Miguel Sevilla-Callejo, [09.10.18 17:41]
> el post de stackoverflow en cuestion sigue con este código:
>
> # See https://gis.stackexchange.com/a/155852/4972 for details about the prefix
>
> QgsApplication.setPrefixPath('/usr', True)
> qgs = QgsApplication([], False)
> qgs.initQgis()
> # Append the path where processing plugin can be found#sys.path.append('/docs/dev/qgis/build/output/python/plugins')
> import processingfrom processing.core.Processing import Processing
> Processing.initialize()
>
>
> Miguel Sevilla-Callejo, [09.10.18 17:42]
> pero la cosa es que no termino de entender el sys.path.append que indica
> pues ahí no hay nada en mi instalación 😞
>
> Miguel Sevilla-Callejo, [09.10.18 17:42]
> alguna idea?
>
> Continúa aquí: https://t.me/qgis_es/13895
>
> Miguel Sevilla-Callejo, [09.10.18 18:15]
> parece que ya se me carga aquí la cabecera:
>
> import sysfrom qgis.core import (
>      QgsApplication,
>      QgsProcessingFeedback,
>      QgsVectorLayer
> )
>
> QgsApplication.setPrefixPath('/usr', True)
> qgs = QgsApplication([], False)
> qgs.initQgis()
>
> sys.path.append('/usr/share/qgis/python/plugins/')
> import processingfrom processing.core.Processing import Processing
> Processing.initialize()
>
> Miguel Sevilla-Callejo, [09.10.18 18:19]
> la cosa es que ahora no me carga el proceso:
>
> processing.run(
>     "native:buffer", {
>         'INPUT':dir_base + archivo_entrada, # archivo de entrada
>         'DISTANCE':0.002, # distancia del buffer 0.002 grados geográficos
>         'SEGMENTS':99, # aproximación en los giros
>         'END_CAP_STYLE':0,
>         'JOIN_STYLE':0,
>         'MITER_LIMIT':2,
>         'DISSOLVE':False, # no disolver
>         'OUTPUT':dir_base + archivo_salida # archivo de salida
>         }
>     )
>
> Miguel Sevilla-Callejo, [09.10.18 18:20]
> mensaje:
> QgsProcessingException: Error: Algorithm native:buffer not found
> Fran Raga me dijo que me faltaba
>
> import from qgis.analysis import QgsNativeAlgorithms
> Y Luiggi que:
> "cuando carga qgis desde script processing esta vacio, en el sentido que
> no hay provedores registrados
>
> hay que cargar el provedore de los native algorithms
>
> por el script en entorno linux, y esto no es nada de qgis es puro entorno
> unix... neceista que haya dos variable de entorno bien puestas
>
> LD_LIBRARY_PATH donde encontrar los .so de qgis
>
> y PYTHONPATH donde encontrar los modulos de python (sumento que PYTHONHOME
> esta ya bien por defecto)
>
> en el script clasico de qgis.bat en winzozz seria la varable PATH la
> equivalente de LD_LIBRARY_PATH
> "
> Más delentante también me dijo que: "no... no es suficiente hacer import
> de QgsNativeAlgorithms hay que registrar el provider"
> ...
>
> En fin... la verdad es que me he perdido un poco en las últimas
> explicaciones y leo que he de seguir los test en python (dónde?)...
>
> Luiggi me facilitó esto:
> https://github.com/luipir/QGIS/blob/bf6162f376fad6dd44fb2f540c536b7f2371a2a3/tests/src/analysis/testqgsprocessing.cpp
> pero, sinceremente me pierdo :-(
>
> Agradecería si alguien se toma la molestia de indicarme una fuente clara o
> indicarme cómo podría hacerlo.
>
> Si no siempre me queda correr la GUI indicándole que tras abrir ejecute el
> código del scritp con:
>
> qgis --code scriptname.py
>
> y quizá podría añadir al script (para cerrar la GUI) esto:
>
> from qgis.utils import iface
> iface.actionExit().trigger()
>
> Aunque esto no lo he hecho funcionar (se me queda la GUI abierta).
>
> Un saludo
>
> --
> *Miguel Sevilla-Callejo*
> Doctor en Geografía
> _______________________________________________
> QGIS-es mailing list
> QGIS-es en lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/qgis-es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.osgeo.org/pipermail/qgis-es/attachments/20181202/3151831b/attachment-0001.html>


Más información sobre la lista de distribución QGIS-es