Importar las herramientas de Processing (PyQGIS) en VS Code

Hace unas semanas, os enseñábamos cómo Configurar PyQGIS y VS Code de forma automática. VS Code, o Visual Studio Code, es el editor de Microsoft que está más de moda entre todos los editores de texto y, por tanto, es esencial saber configurar un entorno de desarrollo para PyQGIS. Dada la importancia y que ya sabemos cómo Configurar PyQGIS y VS Code, hoy vamos a ver cómo Importar las herramientas de Processing en Vs Code.

Pasos para añadir las herramientas de Processing a VS Code
A partir de aquí veremos cómo añadir a VS Code las herramientas de geoprocesamiento espacial de Processing. Recuerda que vamos a partir de la base de que ya tenemos correctamente configurado PyQGIS con VS Code.
Lo primero que vamos a hacer es crear un nuevo archivo o script de Python (extensión .py). Una vez tengamos nuestro archivo creado correctamente, debemos importar algunos módulos esenciales. Importamos los submódulos core y utils del módulo qgis, además del módulo sys que nos permitire el acceso a variables utilizadas o mantenidas por el intérprete.
import qgis from qgis import core from qgis.core import * from qgis import utils import sys
Con la ayuda del módulo sys, debemos establecer la ruta a los plugins de QGIS. Dentro de esta, tenemos el módulo de processing, al que después llamaremos.
sys.path.append(r'C:/OSGeo4W64/apps/qgis/python/plugins')
Vamos a llamar a la interfaz de QGIS e iniciaremos la aplicación.
qgs = QgsApplication([], False) QgsApplication.setPrefixPath("C:\OSGEO4~1\apps\qgis", True) QgsApplication.initQgis()
En este punto, debemos llamar al módulo analysys e importar los módulos de processing
from qgis import analysis from qgis.analysis import * import processing from processing.core.Processing import Processing
Para poder acceder a todas las opciones, debemos iniciar las herramientas y añadir los algoritmos de procesamiento al registro accediendo a QgsApplication(), subclase de QApplication().
Processing.initialize() QgsApplication.processingRegistry().addProvider(QgsNativeAlgorithms())
Tras añadir los algoritmos de procesamiento a la aplicación, ya tenemos todo listo para acceder a nuestro geoprocesos desde nuestra IDE, sin necesidad de entrar en QGIS.
Para comprobar que podemos acceder a los distintos geoprocesos, vamos a acceder a los algoritmos y vamos a devolver todos los algoritmos que contengan la palabra buffer.
palabra = "buffer" for alg in QgsApplication.processingRegistry().algorithms(): if palabra in alg.name() or palabra in alg.displayName(): print("{}:{} --> {}".format(alg.provider().name(), alg.name(), alg.displayName())) GDAL:buffervectors --> Buffer vectors GDAL:onesidebuffer --> One side buffer GRASS:r.buffer --> r.buffer GRASS:r.buffer.lowmem --> r.buffer.lowmem GRASS:v.buffer --> v.buffer QGIS (native c++):buffer --> Buffer QGIS (native c++):bufferbym --> Variable width buffer (by M value) QGIS (native c++):multiringconstantbuffer --> Multi-ring buffer (constant distance) QGIS (native c++):singlesidedbuffer --> Single sided buffer QGIS (native c++):taperedbuffer --> Tapered buffers QGIS (native c++):wedgebuffers --> Create wedge buffers QGIS:variabledistancebuffer --> Variable distance buffer SAGA:fixeddistancebuffer --> Fixed distance buffer SAGA:rasterbuffer --> Raster buffer SAGA:rasterproximitybuffer --> Raster proximity buffer SAGA:thresholdrasterbuffer --> Threshold raster buffer SAGA:variabledistancebuffer --> Variable distance buffer
Tal y como comentábamos, esas instrucciones nos devuelven todos los algoritmos en los que aparece la palabra buffer. Ya podemos confirmar que tenemos acceso a nuestros algoritmos y ya solo nos queda utilizarlos.
A continuación, mostramos como acceder a uno de los geoprocesos más básicos de análisis espacial, conocido como buffer o área de influencia.
processing.run("qgis:buffer", {'INPUT':'RUTA/SHP_ENTRADA.shp','DISTANCE':250,'SEGMENTS':5,'END_CAP_STYLE':0,'JOIN_STYLE':0,'MITER_LIMIT':2,'DISSOLVE':False,'OUTPUT':'RUTA/SHP_SLAIDA.shp'})
Ya tenemos todo a punto para trabajar con PyQGIS y automatizar nuestros procedimientos python desde nuestra IDE, sin necesidad de acceder a la interfaz gráfica de QGIS.
Aquí tenemos el código completo:
#Importamos módulos generales import qgis from qgis import core from qgis.core import * from qgis import utils import sys #Añadir ruta dónde encontrar algoritmos de geoprocesamiento sys.path.append(r'C:/OSGeo4W64/apps/qgis/python/plugins') #Importar módulo processing, iniciar e importar algoritmos qgs = QgsApplication([], False) QgsApplication.setPrefixPath("C:\OSGEO4~1\apps\qgis", True) QgsApplication.initQgis() #Importar módulo analysys y processing, iniciar e importar algoritmos from qgis import analysis from qgis.analysis import * ## Importar QgsNativeAlgorithms() #Importar processing import processing from processing.core.Processing import Processing #Iniciar Processing y añadir QgsNativeAlgorithms() Processing.initialize() QgsApplication.processingRegistry().addProvider(QgsNativeAlgorithms()) #Comprobamos el acceso a algoritmos, filtrando por nombre: buffer palabra = "buffer" for alg in QgsApplication.processingRegistry().algorithms(): if palabra in alg.name() or palabra in alg.displayName(): print("{}:{} --> {}".format(alg.provider().name(), alg.name(), alg.displayName())) #Ahora ya podemos utilizar nuestras funciones de processing processing.run("qgis:buffer", {'INPUT':'RUTA/SHP_ENTRADA.shp','DISTANCE':250,'SEGMENTS':5,'END_CAP_STYLE':0,'JOIN_STYLE':0,'MITER_LIMIT':2,'DISSOLVE':False,'OUTPUT':'RUTA/SHP_SLAIDA.shp'})

Esperamos que tras leer este artículo importar las herramientas de Processing (PyQGIS) en VS Code te resulte muy fácil y disfrutes de la automatización de geoprocesos. Si quieres aprender más, puedes inscribirte en los cursos que impartimos haciendo clic sobre este enlace.