PyQGIS · Material de apoyo

Fundamentos de PyQGIS

¿Qué es PyQGIS?

PyQGIS es el conjunto de bibliotecas (módulos) de Python que permiten interactuar con QGIS de forma programática, es decir, escribiendo código en lugar de usar únicamente los menús y botones del programa. Cuando instalas QGIS, ya viene incluido un intérprete de Python con estas bibliotecas listas para usarse: no necesitas instalar nada adicional para comenzar a programar dentro de QGIS.

¿Para qué sirve?

PyQGIS se usa principalmente para automatizar tareas repetitivas de análisis geoespacial. Por ejemplo, en vez de hacer clic manualmente 20 veces en la herramienta "Reclasificar por tabla" para 20 capas distintas, se puede escribir un script que lo haga automáticamente para todas ellas. También permite crear nuevas herramientas personalizadas que aparecen en la Caja de herramientas de procesos de QGIS, tal como lo hacen los tres ejercicios de este material.

Conceptos básicos para entenderlo

1. Programación Orientada a Objetos (POO)

PyQGIS está construido siguiendo el paradigma de POO. Esto significa que en vez de escribir instrucciones sueltas, se agrupan datos y comportamientos dentro de "moldes" llamados class (clases). Por ejemplo, cada herramienta de procesamiento que verás en los ejercicios es una clase de Python que hereda características ya definidas por QGIS.

  • Clase: un molde o plantilla que define qué datos y qué acciones tendrá algo. Ej: class MiHerramienta(QgsProcessingAlgorithm):
  • Herencia: cuando una clase nueva reutiliza y extiende el comportamiento de una clase ya existente de QGIS (como QgsProcessingAlgorithm).
  • Método: una función que pertenece a una clase, definida con def dentro de ella. Ej: def name(self):.
  • self: es la forma en que un método se refiere "a sí mismo" (al objeto actual) dentro de la clase.

2. Módulos principales de PyQGIS

  • qgis.core: contiene las clases fundamentales para trabajar con capas, geometrías y algoritmos de procesamiento.
  • qgis.processing: permite ejecutar herramientas de la Caja de herramientas (como native:slope) directamente desde código.

3. ¿Qué es un algoritmo de procesamiento (QgsProcessingAlgorithm)?

Es la forma estándar en que QGIS reconoce una "herramienta". Cualquier clase que herede de QgsProcessingAlgorithm y defina ciertos métodos obligatorios (como initAlgorithm y processAlgorithm) puede aparecer en la Caja de herramientas de procesos, con sus propios parámetros de entrada y salida, igual que cualquier herramienta nativa de QGIS.

Estructura mínima de una herramienta
class MiHerramienta(QgsProcessingAlgorithm):

    def initAlgorithm(self, config=None):
        # Aquí se declaran los parámetros de entrada y salida
        pass

    def processAlgorithm(self, parameters, context, feedback):
        # Aquí ocurre el procesamiento real (la lógica del algoritmo)
        return {}

    def name(self):
        return 'nombre_interno'

    def displayName(self):
        return 'Nombre que ve el usuario'

    def createInstance(self):
        return self.__class__()

4. Parámetros, contexto y retroalimentación (feedback)

  • Parámetros: los datos de entrada/salida que el usuario proporciona (una capa raster, un valor numérico, etc.). Se declaran en initAlgorithm.
  • Contexto (context): guarda información del entorno de ejecución, como el sistema de referencia de coordenadas activo.
  • Feedback: permite reportar el progreso al usuario (barra de progreso) y detectar si canceló la ejecución con feedback.isCanceled().

Con estas bases ya puedes avanzar a analizar los ejercicios prácticos, donde verás estos conceptos aplicados a casos reales de análisis geoespacial.

Volver a PASIG II