C/ Mariano Esquillor, s/n. 50018 - Zaragoza
+34 619 12 46 15
info@remot-technologies.com

Importar las herramientas de Processing (PyQGIS) en VS Code

Importar las herramientas de Processing (PyQGIS) en VS Code

QGis y VsCode logos

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.

Logo de VS Code
Logo de 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'})
Captura de pantalla de VS Code
Script de importación de processing

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.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto: