Desarrollar un plugin QGIS puede parecer algo reservado a programadores experimentados. En realidad, con algunas bases y un buen método, es perfectamente posible crear tus propios plugins, incluso sin una gran experiencia en programación.
En este tutorial vamos a descubrir para qué sirven los plugins QGIS, por qué son tan útiles en el día a día y, sobre todo, cómo está estructurado un plugin QGIS: qué archivos lo componen y cuál es el papel de cada uno.
Esta serie de artículos está dirigida a usuarios de QGIS que se inician en Python, a docentes, a técnicos de administraciones públicas y a todas aquellas personas que desean automatizar sus procesos o crear herramientas adaptadas a sus necesidades profesionales.
Introducción
QGIS es hoy en día uno de los SIG de código abierto más utilizados en el mundo. Su riqueza funcional es impresionante, pero lo que realmente constituye su mayor fortaleza es su capacidad de ampliación mediante plugins.
Un plugin QGIS permite añadir funcionalidades personalizadas: automatizar tareas repetitivas, crear herramientas adaptadas a un oficio concreto, probar nuevos métodos o, simplemente, facilitar el trabajo diario.
Este tutorial está pensado deliberadamente para personas sin una gran experiencia en programación. No tiene como objetivo convertirte en un desarrollador experto en Python, sino darte las bases necesarias para:
- comprender cómo funciona un plugin QGIS,
- modificar un plugin existente,
- crear tus propias herramientas simples y útiles.
La idea es aprender solo lo necesario de Python y de la arquitectura de QGIS para ganar autonomía.
¿Por qué desarrollar tus propios plugins QGIS?
Automatizar tareas repetitivas
Si utilizas QGIS con regularidad, seguramente ya has realizado varias veces las mismas operaciones:
- cargar capas,
- aplicar estilos,
- ejecutar una cadena de procesos,
- exportar resultados.
Un plugin permite agrupar todas estas acciones en un solo botón.
Adaptar QGIS a tu actividad profesional
Las necesidades de un geomático, de un docente, de un técnico de una administración o de un investigador no siempre están cubiertas por las herramientas estándar. Un plugin puede integrar:
- reglas de negocio,
- controles de coherencia,
- cálculos específicos.
Aprender programación de forma progresiva
Desarrollar un plugin QGIS es una excelente puerta de entrada a Python:
- el resultado es concreto y visual,
- los errores suelen ser fáciles de identificar,
- se puede avanzar paso a paso.
Compartir (o guardar para uso interno)
Un plugin puede ser estrictamente personal, compartirse dentro de un equipo o publicarse públicamente en el repositorio oficial de plugins de QGIS.
¿De qué está compuesto un plugin QGIS?
Un plugin QGIS es, ante todo, una carpeta que contiene varios archivos. Cada uno tiene un papel muy concreto. La buena noticia es que no es necesario comprenderlo todo en profundidad desde el principio.
Esta es la estructura mínima de un plugin:
MiPlugin/
├── __init__.py
├── metadata.txt
├── mi_plugin.py
└── resources.qrc (opcional)
Vamos a revisar estos archivos uno por uno.
El archivo init.py
Es el punto de entrada del plugin.
Su función principal es indicar a QGIS qué clase Python debe cargarse cuando el plugin se activa.
Ejemplo simplificado:
def classFactory(iface):
from .mi_plugin import MiPlugin
return MiPlugin(iface)
Por ahora, basta con recordar que:
- este archivo es obligatorio,
- establece el vínculo entre QGIS y tu código principal.
Explicación línea por línea
1️⃣ def classFactory(iface):
✔ QGIS busca obligatoriamente una función con este nombre: classFactory.
Cuando QGIS lee tu plugin, llama automáticamente a:
classFactory(iface)
y transmite:
- iface = la interfaz de QGIS (el objeto
QgisInterface).
Este objeto da acceso a:
- el lienzo del mapa (mapCanvas),
- el menú Plugins,
- las barras de herramientas,
- la capa activa,
- los mensajes y registros, etc.
➡️ Es el objeto central que permite a un plugin interactuar con QGIS.
2️⃣ from .mi_plugin import MiPlugin
El punto . significa: “en la misma carpeta que este archivo”.
QGIS carga así la clase principal desde:
mi_plugin.py
Esta clase contiene:
initGui()→ añade acciones, menús e iconos,unload()→ elimina los elementos del plugin,- las funciones de negocio (activación de herramientas, apertura de ventanas, etc.).
➡️ Es la clase raíz del plugin, la que lo controla todo.
3️⃣ return MiPlugin(iface)
QGIS espera una instancia de la clase, no la clase en sí.
Por tanto:
- se instancia la clase
MiPlugin, - se le pasa la interfaz de QGIS (
iface).
QGIS utilizará este objeto para:
- llamar a
initGui()al activar el plugin, - llamar a
unload()al desactivarlo.
➡️ Es la creación efectiva del plugin dentro de QGIS.
📌 Resumen
👉 __init__.py indica a QGIS qué clase debe usar para el plugin.
👉 La función classFactory() es obligatoria en todo plugin QGIS.
👉 iface es el acceso completo a la interfaz de QGIS.
👉 El plugin solo empieza a funcionar realmente tras la instanciación:
MiPlugin(iface)
El archivo metadata.txt
Este archivo es fundamental: sin él, QGIS no reconoce el plugin.
Contiene la información general:
- nombre del plugin,
- descripción,
- autor,
- versión,
- versión mínima de QGIS.
Ejemplo:
[general]
name=Mi primer plugin
description=Un plugin sencillo para aprender
version=0.1
author=Tu nombre
qgisMinimumVersion=3.16
Este es el archivo que aparece en el gestor de plugins de QGIS.
El archivo principal Python (por ejemplo mi_plugin.py)
Aquí se encuentra el corazón del plugin.
Normalmente contiene:
- la clase principal del plugin,
- los métodos
initGui()yunload(), - el código que añade un botón o un menú en QGIS.
De forma muy esquemática:
class MiPlugin:
def __init__(self, iface):
self.iface = iface
def initGui(self):
pass
def unload(self):
pass
No te preocupes si esto parece confuso por ahora: cada elemento se explicará progresivamente en los siguientes artículos.
Archivos opcionales pero muy habituales
Interfaces gráficas (.ui)
QGIS utiliza Qt para las interfaces gráficas. Los archivos .ui se crean con Qt Designer, sin escribir código.
Permiten construir ventanas con:
- botones,
- listas desplegables,
- campos de entrada.
Recursos (resources.qrc)
Este archivo sirve para agrupar:
- iconos,
- imágenes,
- otros recursos gráficos.
Se compila en Python para poder utilizarse dentro del plugin.
Lo que debes recordar por ahora
En esta etapa, lo esencial es comprender que:
- un plugin QGIS es una estructura de archivos, no un programa enorme y complejo,
- cada archivo tiene un papel bien definido,
- se pueden crear plugins simples y muy útiles con poco código.
¿Y en el próximo artículo?
En el próximo artículo veremos:
- cómo crear un plugin vacío con Plugin Builder,
- dónde colocar los archivos,
- cómo cargar el plugin en QGIS y probarlo.
El objetivo será obtener un primer plugin funcional, aunque todavía haga muy poco.
👉 Lo más importante no es ir rápido, sino comprender cada etapa.