Was ist PyQGIS? QGIS mit Python automatisieren
Veröffentlicht am
PyQGIS ist die Python-Schnittstelle von QGIS: Damit steuern Sie QGIS mit Code. Alles, was Sie in QGIS anklicken können, lässt sich auch als wenige Zeilen Python schreiben: einen Layer laden, ein Werkzeug ausführen, einen Stil ändern, eine Karte exportieren. So wiederholen Sie dieselbe Arbeit für hundert Dateien, ohne hundertmal zu klicken. PyQGIS gehört zu jeder QGIS-Installation, Sie müssen also nichts nachinstallieren.

Das PyQGIS Developer Cookbook beschreibt die Python-Werkzeuge als „nearly identical“ mit denen, aus denen QGIS selbst gebaut ist. Fast alles ist also möglich. Die meisten QGIS-Plugins, auch unsere, sind damit geschrieben.
Den Code müssen Sie nicht mehr selbst schreiben. Ein Chatbot kann ihn entwerfen, und ein Agent kommt ganz ohne Code aus: Wir bauen einen, AI Agent, und weiter unten teste ich beide mit denselben sechs Aufgaben.
Wo Sie PyQGIS ausführen können
Es gibt vier Orte, und jeder passt zu einer anderen Aufgabe.
| Wo | So öffnen Sie es | Wofür |
|---|---|---|
| Python-Konsole | Erweiterungen > Python-Konsole (Strg+Alt+P) | Schnelle Korrekturen am geöffneten Projekt |
| Verarbeitungsskript | Werkzeugkiste > Skripte > Neues Skript aus Vorlage erstellen… | Ein wiederverwendbares Werkzeug mit eigenen Eingaben, wie jedes andere Werkzeug in der Werkzeugkiste |
| Plugin | Ein Ordner in Ihrem QGIS-Profil | Ein Werkzeug mit eigenen Schaltflächen, das Sie weitergeben können |
| Eigenständiges Skript | Reines Python oder der Befehl qgis_process | Aufgaben ohne QGIS-Fenster, etwa auf einem Server |
Die Menüpfade stehen hier so, wie die deutsche QGIS-Oberfläche sie zeigt. In der englischen heißen sie Plugins > Python Console und Processing Toolbox > Scripts > Create New Script from Template.
Die Konsole stellt Ihnen iface bereit, das Objekt, das das QGIS-Fenster steuert. Außerhalb von QGIS gibt es iface nicht. Deshalb ist NameError: name 'iface' is not defined eine der meistgestellten PyQGIS-Fragen auf GIS Stack Exchange.
Ein Verarbeitungsskript beginnt mit einer Vorlage, die QGIS für Sie ausfüllt. Sie ändern die Eingaben und die wenigen Zeilen, die die Arbeit erledigen, und das Skript erscheint in der Werkzeugkiste wie ein eingebautes Werkzeug.

Ihr erstes PyQGIS-Skript
Öffnen Sie die Python-Konsole, klicken Sie auf Editor anzeigen, wählen Sie im Layerfenster einen Gebäudelayer aus und fügen Sie diesen Code ein. Er zählt die Gebäude nach Typ:
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())
Drei Objekte erledigen den größten Teil der Arbeit: QgsProject.instance() ist Ihr Projekt, QgsVectorLayer und QgsRasterLayer sind seine Layer, und iface ist das Fenster. Die API-Referenz listet jede Klasse auf.
Jedes QGIS-Werkzeug aus Python starten
Jedes Werkzeug der Werkzeugkiste lässt sich mit einer einzigen Zeile Python starten, processing.run(), mit denselben Einstellungen wie in seinem Fenster:
import processing
result = processing.run("native:buffer", {
"INPUT": "buildings.gpkg",
"DISTANCE": 50,
"OUTPUT": "buffered.gpkg",
})
Die Namen der Einstellungen müssen Sie nicht raten. Füllen Sie das Fenster des Werkzeugs einmal aus und öffnen Sie unten Erweitert > Als Python-Befehl kopieren (englische Oberfläche: Advanced > Copy as Python Command). QGIS liefert Ihnen genau die Zeile, die Sie in Ihr Skript einfügen.

Dieselben Werkzeuge laufen auch ohne geöffnetes QGIS im Terminal, mit qgis_process run native:buffer. Das ist der Weg für eine zeitgesteuerte Aufgabe auf einem Server.
Was sich mit QGIS 4 für PyQGIS geändert hat
QGIS 4.0, veröffentlicht am 6. März 2026, wechselte auf eine neuere Version von Qt, dem Toolkit hinter den Fenstern und Schaltflächen. Die QGIS-Funktionen blieben fast gleich. Kaputt geht Code, der Qt direkt anspricht, und drei Änderungen verursachen das meiste davon:
| QGIS 3 | QGIS 4 |
|---|---|
Kurznamen wie Qt.AlignLeft | Volle Namen wie Qt.AlignmentFlag.AlignLeft |
QRegExp | QRegularExpression |
exec_() bei Dialogen | exec() |
QGIS liefert ein Skript mit, pyqt5_to_pyqt6.py, das die meisten dieser Stellen für Sie umschreibt, und der pyqgis4-checker findet den Rest. Skripte, die nur QGIS-Werkzeuge und processing.run() nutzen, laufen meist unverändert.
Können ChatGPT oder Claude PyQGIS für Sie schreiben?
Meistens ja, wenn Sie ihnen Ihr Projekt beschreiben. Ich habe Claude Sonnet getestet, einen Chatbot wie ChatGPT, und seine Skripte liefen bei allen sechs Aufgaben ohne Fehler. Wenn ich Layer, Felder und Dateipfade beschrieb, waren alle sechs Ergebnisse richtig. Bei nur den Layernamen war eines von sechs unbemerkt falsch: Das Skript lief, gab nichts Auffälliges aus und füllte 396 von 936 Pixeln eines Höhenmodells mit einer erfundenen Höhe von 0 m.
| Läuft ohne Fehler | Richtiges Ergebnis | |
|---|---|---|
| Chatbot, Projekt im Prompt beschrieben | 6 von 6 | 6 von 6 |
| Chatbot, nur Layernamen | 6 von 6 | 5 von 6 |
| KI-Agent in QGIS, nur ein Satz zur Aufgabe | 6 von 6 | 6 von 6 |
Die Lehre ist einfach. Ein Chatbot sieht Ihr Projekt nicht, die Qualität seines Codes hängt also davon ab, wie gut Sie es beschreiben, und ein falsches Ergebnis kann genauso aussehen wie ein richtiges. Dazu kam ein QGIS-4-Haken: Beide Drucklayout-Skripte des Chatbots nutzten die kurzen Qt-Namen aus der Tabelle oben und wären in QGIS 4 auf halbem Weg abgebrochen.
So haben wir gemessen. Am 26. September 2026, in QGIS 3.44.7, mit Kartendaten der Innenstadt von Denpasar auf Bali: sechs alltägliche Aufgaben, vom Zählen von Gebäuden bis zum Export eines Drucklayouts, jeweils ein Versuch. Ein Ergebnis galt nur als richtig, wenn ein separates Prüfskript bestand, das vor den Läufen geschrieben wurde. Sechs Aufgaben sind eine kleine Stichprobe.
QGIS ohne Code automatisieren: ein Agent, der die Schritte ausführt
Wir bauen AI Agent, dieser Abschnitt handelt also von unserem eigenen Plugin. Es ist ein Chat-Bedienfeld in QGIS: Sie tippen die Aufgabe, und es liest Ihr Projekt, führt die Werkzeuge aus und prüft das Ergebnis. Es gibt keinen Code einzufügen und kein Projekt zu beschreiben.
Ich habe ihm dieselben sechs Aufgabensätze gegeben, ohne Beschreibung des Projekts. Es hat alle sechs richtig gelöst, mit 6,4 bis 42,8 Sekunden pro Aufgabe und 148,8 Sekunden für alle sechs. Zweimal hat es angehalten, um vor dem Schreiben einer Datei nachzufragen, und ich habe auf „Erlauben“ geklickt. Bei der Höhenaufgabe, an der der Chatbot scheiterte, las es zuerst den Layer und setzte die leeren Pixel korrekt.

Der kostenlose Weg bleibt ein guter: Die Konsole, „Als Python-Befehl kopieren“ und ein Chatbot bringen Sie weit, solange Sie das Ergebnis prüfen. Wenn Sie lieber die Aufgabe beschreiben und den fertigen Layer bekommen, erledigt der Agent die Schritte für Sie.
AI Agent kostenlos in QGIS testen, ohne Kreditkarte
Wo man hängen bleibt
Wir haben die Fragen unter QGIS-Tutorials auf YouTube gezählt: In 1.692 Tutorials mit Kommentaren bitten 391 Kommentare unter 245 Tutorials um Hilfe bei Python oder Automatisierung. Dieselben drei Probleme kehren immer wieder:
- Layer nicht gefunden.
mapLayersByName("roads")findet nichts, wenn sich der Name um einen Buchstaben oder ein Leerzeichen unterscheidet. - Entfernungen in Grad. Ein Puffer von 50 m auf einem Layer in
EPSG:4326ist ein Puffer von 50 Grad, weil dieses System in Grad rechnet. Reprojizieren Sie zuerst, wie in was ein KBS ist erklärt. ifaceaußerhalb von QGIS. Skripte, die außerhalb des Fensters laufen, haben keiniface. Nutzen Sie stattdessenQgsProjectundprocessing.run().
Das Wichtigste in Kürze
PyQGIS ist die Python-Schnittstelle zu QGIS. Es läuft in der Python-Konsole, in Verarbeitungsskripten, in Plugins und mit qgis_process auch außerhalb von QGIS.
processing.run() führt jedes QGIS-Werkzeug aus dem Code aus, und Als Python-Befehl kopieren liefert Ihnen die genaue Zeile aus dem Fenster eines Werkzeugs.
QGIS 4 hat einige Qt-Namen umbenannt, etwa Qt.AlignLeft. Code, der eigene Fenster baut, braucht womöglich kleine Korrekturen.
In unserem Test mit sechs Aufgaben lief der Chatbot-Code immer, war aber einmal falsch, als das Projekt nicht beschrieben war. Ein Agent in QGIS wie AI Agent löste alle sechs richtig, allein aus dem Aufgabensatz.
Häufige Fragen
Wofür wird PyQGIS verwendet?
Zum Automatisieren von QGIS mit Python: Layer laden und bearbeiten, Werkzeuge auf viele Dateien anwenden, Karten gestalten, Drucklayouts bauen und Plugins oder Skripte schreiben, die andere wiederverwenden können. Es läuft auch außerhalb des QGIS-Fensters, für Aufgaben auf einem Server.
Ist PyQGIS dasselbe wie Python?
PyQGIS ist eine Sammlung von QGIS-Werkzeugen, die Sie aus Python nutzen. Sie schreiben normales Python, und PyQGIS ergänzt Dinge wie QgsVectorLayer und processing.run(). Es wird mit QGIS geliefert und nutzt das Python, das QGIS installiert.
Wie öffne ich die Python-Konsole in QGIS?
Über Erweiterungen > Python-Konsole oder mit Strg+Alt+P. Mit Editor anzeigen schreiben Sie längere Skripte, speichern sie als .py-Dateien und starten sie mit dem grünen Pfeil.
Laufen meine PyQGIS-Skripte auch in QGIS 4?
Skripte, die nur QGIS-Werkzeuge und processing.run() nutzen, laufen meist weiter. Skripte, die eigene Fenster bauen, brauchen oft kleine Änderungen, etwa Qt.AlignmentFlag.AlignLeft statt Qt.AlignLeft. Das offizielle Skript pyqt5_to_pyqt6.py behebt die meisten davon.
Kann ich QGIS ohne Python automatisieren?
Ja. Der Grafische Modellierer verkettet Werkzeuge visuell, und die Stapelverarbeitung führt ein Werkzeug auf vielen Dateien aus. Ein KI-Agent als Plugin geht weiter: Sie tippen die Aufgabe in einfachen Worten, und er führt die Werkzeuge in Ihrem Projekt aus. Unseren, AI Agent, gibt es mit einem kostenlosen Tarif.
Zum Weiterlesen: Was ein KI-Agent in QGIS ist erklärt, wie Agenten arbeiten und welchen Sie wählen sollten, und AI Agent können Sie kostenlos selbst ausprobieren. Was ein KBS ist behandelt die Reprojektion, die die meisten Skripte als Erstes brauchen, und was QGIS MCP ist zeigt den Weg für Nutzer von Claude Code und Cursor.


