Qué es PyQGIS: automatiza QGIS con o sin código
Publicado el
PyQGIS es la forma de controlar QGIS con código Python. Todo lo que puedes hacer con un clic en QGIS también se puede escribir en unas pocas líneas de Python: cargar una capa, ejecutar una herramienta, cambiar un estilo, exportar un mapa. Así repites el mismo trabajo en cien archivos sin hacer cien clics. Viene con cada instalación de QGIS, así que no tienes que añadir nada.

El PyQGIS Developer Cookbook dice que las herramientas de Python son «casi idénticas» a las que se usan para construir el propio QGIS, así que casi todo es posible. La mayoría de los plugins de QGIS, los nuestros incluidos, están escritos con ella.
Ya no hace falta que escribas el código tú mismo. Un chatbot puede redactarlo y un agente puede prescindir del código por completo: nosotros creamos uno, AI Agent, y más abajo pruebo ambos con las mismas seis tareas.
Dónde ejecutar PyQGIS
Hay cuatro lugares, y cada uno sirve para un trabajo distinto.
| Dónde | Cómo abrirlo | Para qué sirve |
|---|---|---|
| Consola de Python | Complementos > Consola de Python (Ctrl+Alt+P) | Arreglos rápidos en el proyecto que tienes abierto |
| Script de Procesos | Caja de herramientas de Procesos > Scripts > Crear nuevo script a partir de plantilla | Una herramienta reutilizable con sus propias entradas, como cualquier otra de la caja de herramientas |
| Plugin | Una carpeta en tu perfil de QGIS | Una herramienta con sus propios botones, para compartir con otros |
| Script independiente | Python normal o el comando qgis_process | Trabajos que se ejecutan sin ventana de QGIS, por ejemplo en un servidor |
La consola te da iface, el objeto que controla la ventana de QGIS. Fuera de QGIS no existe, y por eso NameError: name 'iface' is not defined es una de las preguntas más frecuentes sobre PyQGIS en GIS Stack Exchange.
Un script de Procesos parte de una plantilla que QGIS rellena por ti. Cambias las entradas y las pocas líneas que hacen el trabajo, y el script aparece en la caja de herramientas como una herramienta más.

Tu primer script de PyQGIS
Abre la Consola de Python, haz clic en Mostrar editor, selecciona una capa de edificios en el panel Capas y pega esto. Cuenta los edificios de cada tipo:
from collections import Counter
layer = iface.activeLayer() # the layer selected in the Layers panel
counts = Counter(f["building"] for f in layer.getFeatures())
for kind, n in counts.most_common(5):
print(kind, n)
print("Total:", layer.featureCount(), "features in", layer.crs().authid())
Tres objetos hacen casi todo el trabajo: QgsProject.instance() es tu proyecto, QgsVectorLayer y QgsRasterLayer son sus capas, e iface es la ventana. La referencia de la API lista todas las clases.
Ejecutar cualquier herramienta de QGIS desde Python
Cualquier herramienta de la caja de herramientas de Procesos se puede ejecutar con una sola línea de Python, processing.run(), con los mismos parámetros que su ventana:
import processing
result = processing.run("native:buffer", {
"INPUT": "buildings.gpkg",
"DISTANCE": 50,
"OUTPUT": "buffered.gpkg",
})
No hace falta adivinar los nombres de los parámetros. Rellena una vez la ventana de la herramienta y abre Avanzado > Copiar como comando de Python en la parte inferior. QGIS te da la línea exacta para pegar en tu script.

Las mismas herramientas se ejecutan sin abrir QGIS, desde una terminal, con qgis_process run native:buffer. Es el camino para un trabajo programado en un servidor.
Qué cambió con QGIS 4 para PyQGIS
QGIS 4.0, publicado el 6 de marzo de 2026, pasó a una versión más reciente de Qt, el conjunto de herramientas que está detrás de sus ventanas y botones. Las funciones de QGIS casi no cambiaron. Lo que falla es el código que usa Qt directamente, y tres cambios causan la mayor parte:
| QGIS 3 | QGIS 4 |
|---|---|
Nombres cortos como Qt.AlignLeft | Nombres completos, como Qt.AlignmentFlag.AlignLeft |
QRegExp | QRegularExpression |
exec_() en los diálogos | exec() |
QGIS incluye un script, pyqt5_to_pyqt6.py, que reescribe la mayoría de estos cambios por ti, y el pyqgis4-checker encuentra el resto. Los scripts que solo usan herramientas de QGIS y processing.run() suelen funcionar sin cambios.
¿Puede ChatGPT o Claude escribir PyQGIS por ti?
En su mayoría sí, si le hablas de tu proyecto. Probé Claude Sonnet, un chatbot como ChatGPT, y sus scripts se ejecutaron sin errores en las seis tareas. Cuando describí las capas, los campos y las rutas de archivo, los seis resultados fueron correctos. Cuando solo di los nombres de las capas, uno de los seis salió mal sin avisar: el script se ejecutó, no imprimió nada alarmante y rellenó 396 de 936 píxeles de un mapa de elevación con una altura falsa de 0 m.
| Se ejecutó sin errores | Resultado correcto | |
|---|---|---|
| Chatbot, proyecto descrito en el prompt | 6 de 6 | 6 de 6 |
| Chatbot, solo nombres de capas | 6 de 6 | 5 de 6 |
| Agente de IA dentro de QGIS, solo la frase de la tarea | 6 de 6 | 6 de 6 |
La conclusión es sencilla. Un chatbot no ve tu proyecto, así que la calidad de su código depende de lo bien que lo describas, y un resultado erróneo puede parecer idéntico a uno correcto. Hubo además un problema con QGIS 4: los dos scripts de composición de impresión del chatbot usaban los nombres cortos de Qt de la tabla anterior y se habrían detenido a medias en QGIS 4.
Cómo lo medimos. El 26 de septiembre de 2026, en QGIS 3.44.7, con datos cartográficos del centro de Denpasar, en Bali: seis tareas cotidianas, desde contar edificios hasta exportar una composición de impresión, con un intento por tarea. Un resultado solo contaba como correcto si pasaba un script de verificación aparte, escrito antes de las ejecuciones. Seis tareas es una muestra pequeña.
O sin código: un agente que ejecuta los pasos
Nosotros creamos AI Agent, así que esta sección trata de nuestro propio plugin. Es un panel de chat dentro de QGIS: escribes la tarea, y el plugin lee tu proyecto, ejecuta las herramientas y comprueba el resultado. No hay código que pegar ni proyecto que describir.
Le di las mismas seis frases de tarea, sin describir el proyecto. Acertó las seis, con entre 6.4 y 42.8 segundos por tarea y 148.8 segundos en total. Se detuvo dos veces para preguntar antes de escribir un archivo, y yo hice clic en Permitir. En la tarea de elevación que hizo tropezar al chatbot, leyó primero la capa y asignó bien los píxeles vacíos.

La vía gratuita sigue siendo buena: la consola, Copiar como comando de Python y un chatbot te llevarán lejos, siempre que compruebes el resultado. Si prefieres describir la tarea y recibir la capa, el agente hace los pasos por ti.
Prueba AI Agent gratis en QGIS, sin tarjeta
Dónde se atasca la gente
Contamos las preguntas bajo los tutoriales de QGIS en YouTube: en 1692 tutoriales con comentarios, 391 comentarios en 245 tutoriales piden ayuda con Python o con la automatización. Los mismos tres problemas se repiten:
- Capa no encontrada.
mapLayersByName("roads")no encuentra nada si el nombre difiere en una letra o en un espacio. - Distancias en grados. Un buffer de 50 m en una capa en
EPSG:4326es un buffer de 50 grados, porque ese sistema cuenta en grados. Reproyecta primero, como se explica en qué es un SRC. ifacefuera de QGIS. Los scripts que se ejecutan fuera de la ventana no tieneniface. UsaQgsProjectyprocessing.run()en su lugar.
Qué debes recordar
PyQGIS es la interfaz de Python de QGIS. Se ejecuta en la Consola de Python, en scripts de Procesos, en plugins y fuera de QGIS con qgis_process.
processing.run() ejecuta cualquier herramienta de QGIS desde código, y Copiar como comando de Python te da la línea exacta desde la ventana de una herramienta.
QGIS 4 cambió el nombre de algunos elementos de Qt, como Qt.AlignLeft. El código que construye sus propias ventanas puede necesitar pequeños arreglos.
En nuestra prueba de seis tareas, el código del chatbot siempre se ejecutó, pero salió mal una vez cuando no se describió el proyecto. Un agente dentro de QGIS, como AI Agent, acertó las seis solo con la frase de la tarea.
Preguntas frecuentes
¿Para qué sirve PyQGIS?
Para automatizar QGIS con Python: cargar y editar capas, ejecutar herramientas sobre muchos archivos, aplicar estilos a mapas, crear composiciones de impresión y escribir plugins o scripts que otros puedan reutilizar. También se ejecuta fuera de la ventana de QGIS, para trabajos en un servidor.
¿PyQGIS es lo mismo que Python?
PyQGIS es un conjunto de herramientas de QGIS que usas desde Python. Escribes Python normal, y PyQGIS añade cosas como QgsVectorLayer y processing.run(). Viene con QGIS y usa el Python que QGIS instala.
¿Cómo abro la Consola de Python en QGIS?
Complementos > Consola de Python, o Ctrl+Alt+P. Haz clic en Mostrar editor para escribir scripts más largos, guardarlos como archivos .py y ejecutarlos con la flecha verde.
¿Mis scripts de PyQGIS siguen funcionando en QGIS 4?
Los scripts que solo usan herramientas de QGIS y processing.run() suelen funcionar. Los que construyen sus propias ventanas a menudo necesitan pequeños cambios, como Qt.AlignmentFlag.AlignLeft en lugar de Qt.AlignLeft. El script oficial pyqt5_to_pyqt6.py corrige la mayoría.
¿Puedo automatizar QGIS sin Python?
Sí. El Modelador gráfico encadena herramientas de forma visual, y la ejecución por lotes aplica una herramienta a muchos archivos. Un plugin de agente de IA va más lejos: escribes la tarea con palabras normales y ejecuta las herramientas en tu proyecto. El nuestro, AI Agent, tiene un plan gratuito.
Para seguir, qué es un agente de IA en QGIS explica cómo funcionan los agentes y cuál elegir, y AI Agent es el nuestro, para probarlo gratis. Qué es un SRC cubre la reproyección que la mayoría de los scripts necesitan primero, y qué es QGIS MCP muestra el camino para quienes usan Claude Code y Cursor.


