Wat is PyQGIS? QGIS automatiseren met of zonder code
Gepubliceerd op
PyQGIS is de manier om QGIS met Python-code aan te sturen. Alles wat je in QGIS kunt aanklikken, kun je ook als een paar regels Python schrijven: een laag laden, een tool uitvoeren, een stijl aanpassen, een kaart exporteren. Zo herhaal je dezelfde klus op honderd bestanden zonder honderd keer te klikken. Het zit in elke QGIS-installatie, dus je hoeft niets toe te voegen.

De PyQGIS Developer Cookbook schrijft dat de Python-tools "nearly identical" zijn aan de tools waarmee QGIS zelf is gebouwd, dus bijna alles is mogelijk. De meeste QGIS-plugins, de onze ook, zijn ermee geschreven.
Je hoeft de code niet meer zelf te schrijven. Een chatbot kan hem opstellen, en een agent kan de code helemaal overslaan: wij bouwen er een, AI Agent, en verderop test ik beide op dezelfde zes taken.
Waar je PyQGIS kunt draaien
Er zijn vier plekken, en elke plek past bij een ander soort klus.
| Waar | Hoe open je het | Waarvoor |
|---|---|---|
| Python-console | Plug-ins > Python-console (Ctrl+Alt+P) | Snelle ingrepen in het project dat je open hebt |
| Processing-script | Toolbox Processing > Scripts > Nieuw script maken vanuit sjabloon | Een herbruikbare tool met eigen invoer, zoals elke andere tool in de toolbox |
| Plugin | Een map in je QGIS-profiel | Een tool met eigen knoppen, om te delen met anderen |
| Zelfstandig script | Gewone Python, of de opdracht qgis_process | Klussen die zonder QGIS-venster draaien, bijvoorbeeld op een server |
De console geeft je iface, het object dat het QGIS-venster aanstuurt. Buiten QGIS bestaat het niet, en daarom is NameError: name 'iface' is not defined een van de meest gestelde PyQGIS-vragen op GIS Stack Exchange.
Een Processing-script begint met een sjabloon dat QGIS voor je invult. Jij past de invoer aan en de paar regels die het werk doen, en het script verschijnt in de toolbox als een ingebouwde tool.

Je eerste PyQGIS-script
Open de Python-console, klik op Editor tonen, selecteer een gebouwenlaag in het paneel Lagen en plak dit. Het telt de gebouwen per type:
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())
Drie objecten doen het meeste werk: QgsProject.instance() is je project, QgsVectorLayer en QgsRasterLayer zijn de lagen ervan en iface is het venster. De API-referentie somt alle klassen op.
Elke QGIS-tool vanuit Python uitvoeren
Elke tool in de Toolbox Processing draait met één regel Python, processing.run(), met dezelfde instellingen als in het venster van de tool:
import processing
result = processing.run("native:buffer", {
"INPUT": "buildings.gpkg",
"DISTANCE": 50,
"OUTPUT": "buffered.gpkg",
})
Je hoeft de namen van de instellingen niet te raden. Vul het venster van de tool één keer in en open dan onderaan Geavanceerd > Kopiëren als Python-opdracht. QGIS geeft je de exacte regel om in je script te plakken.

Dezelfde tools draaien ook zonder QGIS te openen, vanuit een terminal, met qgis_process run native:buffer. Dat is de route voor een geplande taak op een server.
Wat QGIS 4 voor PyQGIS veranderde
QGIS 4.0, uitgebracht op 6 maart 2026, stapte over op een nieuwere versie van Qt, de toolkit achter de vensters en knoppen. De QGIS-functies bleven bijna gelijk. Wat breekt is code die Qt rechtstreeks aanroept, en drie wijzigingen veroorzaken het meeste:
| QGIS 3 | QGIS 4 |
|---|---|
Korte namen zoals Qt.AlignLeft | Volledige namen, zoals Qt.AlignmentFlag.AlignLeft |
QRegExp | QRegularExpression |
exec_() bij dialoogvensters | exec() |
QGIS levert een script mee, pyqt5_to_pyqt6.py, dat het meeste hiervan voor je herschrijft, en de pyqgis4-checker vindt de rest. Scripts die alleen QGIS-tools en processing.run() gebruiken werken meestal ongewijzigd.
Kunnen ChatGPT of Claude PyQGIS voor je schrijven?
Meestal wel, als je ze over je project vertelt. Ik testte Claude Sonnet, een chatbot zoals ChatGPT, en zijn scripts liepen bij alle zes de taken zonder fout. Toen ik de lagen, velden en bestandspaden beschreef, waren alle zes de resultaten juist. Toen ik alleen de laagnamen gaf, was één van de zes stilletjes fout: het script liep, meldde niets verontrustends en vulde 396 van de 936 pixels van een hoogtekaart met een verzonnen hoogte van 0 m.
| Zonder fout uitgevoerd | Juist resultaat | |
|---|---|---|
| Chatbot, project beschreven in de prompt | 6 van 6 | 6 van 6 |
| Chatbot, alleen laagnamen | 6 van 6 | 5 van 6 |
| AI-agent in QGIS, alleen de zin met de taak | 6 van 6 | 6 van 6 |
De les is simpel. Een chatbot ziet je project niet, dus de kwaliteit van zijn code hangt af van hoe goed je het beschrijft, en een fout resultaat kan er precies zo uitzien als een goed resultaat. Er zat ook een QGIS 4-addertje onder het gras: beide scripts van de chatbot voor de afdruklay-out gebruikten de korte Qt-namen uit de tabel hierboven en zouden in QGIS 4 halverwege stoppen.
Hoe we dit meten. Op 26 september 2026, in QGIS 3.44.7, met kaartgegevens van het centrum van Denpasar op Bali: zes alledaagse taken, van gebouwen tellen tot een afdruklay-out exporteren, telkens één poging. Een resultaat telde alleen als juist wanneer een apart controlescript, geschreven vóór de runs, slaagde. Zes taken is een kleine steekproef.
Of sla de code over: een agent die de stappen uitvoert
Wij bouwen AI Agent, dus dit deel gaat over onze eigen plugin. Het is een chatpaneel in QGIS: je typt de taak, en het leest je project, voert de tools uit en controleert het resultaat. Je hoeft geen code te plakken en geen project te beschrijven.
Ik gaf het dezelfde zes taakzinnen, zonder beschrijving van het project. Alle zes waren juist, met 6,4 tot 42,8 seconden per taak en 148,8 seconden voor alle zes samen. Twee keer stopte het om te vragen voordat het een bestand schreef, en ik klikte op Toestaan. Bij de hoogtetaak waar de chatbot over struikelde, las het eerst de laag en stelde het de lege pixels juist in.

De gratis route blijft een goede: de console, Kopiëren als Python-opdracht en een chatbot brengen je ver, zolang je het resultaat controleert. Als je liever de taak beschrijft en de laag terugkrijgt, doet de agent de stappen voor je.
Probeer AI Agent gratis in QGIS, zonder creditcard
Waar mensen vastlopen
We telden de vragen onder QGIS-tutorials op YouTube: in 1.692 tutorials met reacties vragen 391 reacties onder 245 tutorials om hulp met Python of automatisering. Dezelfde drie problemen komen steeds terug:
- Laag niet gevonden.
mapLayersByName("roads")vindt niets als de naam één letter of een spatie verschilt. - Afstanden in graden. Een buffer van 50 m op een laag in
EPSG:4326is een buffer van 50 graden, omdat dat systeem in graden rekent. Projecteer eerst opnieuw, zoals uitgelegd in wat een CRS is. ifacebuiten QGIS. Scripts die buiten het venster draaien hebben geeniface. Gebruik in plaats daarvanQgsProjectenprocessing.run().
Wat je moet onthouden
PyQGIS is de Python-interface van QGIS. Het draait in de Python-console, in Processing-scripts, in plugins en buiten QGIS met qgis_process.
processing.run() voert elke QGIS-tool uit vanuit code, en Kopiëren als Python-opdracht geeft je de exacte regel uit het venster van een tool.
QGIS 4 hernoemde enkele Qt-namen, zoals Qt.AlignLeft. Code die eigen vensters bouwt heeft misschien kleine aanpassingen nodig.
In onze test met zes taken liep chatbotcode altijd, maar was ze één keer fout als het project niet was beschreven. Een agent in QGIS, zoals AI Agent, had alle zes juist op basis van alleen de taakzin.
Veelgestelde vragen
Waarvoor gebruik je PyQGIS?
Om QGIS met Python te automatiseren: lagen laden en bewerken, tools op veel bestanden uitvoeren, kaarten opmaken, afdruklay-outs bouwen en plugins of scripts schrijven die anderen kunnen hergebruiken. Het draait ook buiten het QGIS-venster, voor klussen op een server.
Is PyQGIS hetzelfde als Python?
PyQGIS is een set QGIS-tools die je vanuit Python gebruikt. Je schrijft gewone Python, en PyQGIS voegt dingen toe zoals QgsVectorLayer en processing.run(). Het zit in QGIS en gebruikt de Python die QGIS installeert.
Hoe open ik de Python-console in QGIS?
Via Plug-ins > Python-console, of met Ctrl+Alt+P. Klik op Editor tonen om langere scripts te schrijven, ze als .py-bestand op te slaan en uit te voeren met de groene pijl.
Werken mijn PyQGIS-scripts nog in QGIS 4?
Scripts die alleen QGIS-tools en processing.run() gebruiken meestal wel. Scripts die eigen vensters bouwen hebben vaak kleine aanpassingen nodig, zoals Qt.AlignmentFlag.AlignLeft in plaats van Qt.AlignLeft. Het officiële script pyqt5_to_pyqt6.py herstelt het meeste.
Kan ik QGIS automatiseren zonder Python?
Ja. De Graphical Modeler koppelt tools visueel aan elkaar en batchverwerking voert één tool uit op veel bestanden. Een AI Agent-plugin gaat verder: je typt de taak in gewone woorden en de agent voert de tools uit in je project. De onze, AI Agent, heeft een gratis abonnement.
Wil je verder, dan legt wat een AI-agent in QGIS is uit hoe agents werken en welke je kiest, en kun je AI Agent gratis proberen. Wat een CRS is behandelt het opnieuw projecteren dat de meeste scripts eerst nodig hebben, en wat QGIS MCP is laat de route zien voor gebruikers van Claude Code en Cursor.


