Zum Inhalt springen
QGIS
Tutorial

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.

QGIS mit geöffneter Python-Konsole unter einer Karte der Innenstadt von Denpasar auf Bali. Im Editor rechts steht ein Skript namens school_zones.py, das die Schulen reprojiziert, 100-m-Zonen um sie zieht und die Gebäude darin auswählt. Die Ausgabe links meldet, dass 864 von 7015 Gebäuden höchstens 100 m von einer Schule entfernt liegen, danach die Aufteilung nach Typ: yes 818, school 19, commercial 15, college 5. Auf der Karte erscheinen die Schulzonen als blaue Kreise und die ausgewählten Gebäude in Orange.
Die Python-Konsole in QGIS. Dieses Skript findet die Gebäude im Umkreis von 100 m um eine Schule: 864 von 7.015 in der Innenstadt von Denpasar.

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.

WoSo öffnen Sie esWofür
Python-KonsoleErweiterungen > Python-Konsole (Strg+Alt+P)Schnelle Korrekturen am geöffneten Projekt
VerarbeitungsskriptWerkzeugkiste > Skripte > Neues Skript aus Vorlage erstellen…Ein wiederverwendbares Werkzeug mit eigenen Eingaben, wie jedes andere Werkzeug in der Werkzeugkiste
PluginEin Ordner in Ihrem QGIS-ProfilEin Werkzeug mit eigenen Schaltflächen, das Sie weitergeben können
Eigenständiges SkriptReines Python oder der Befehl qgis_processAufgaben 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.

Der Skript-Editor der QGIS-Verarbeitung mit dem Anfang der Vorlage: eine Klasse namens ExampleProcessingAlgorithm, Kommentare, die erklären, dass sie einen Vektorlayer entgegennimmt und einen identischen erzeugt, die Konstanten INPUT und OUTPUT sowie eine Methode name, die myscript zurückgibt.
„Neues Skript aus Vorlage erstellen“ öffnet ein funktionierendes Beispiel zum Anpassen.

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.

Das Fenster des QGIS-Werkzeugs „Punkte in Polygon zählen“ mit kelurahan als Polygonen und schools als Punkten. Unten ist das Menü „Erweitert“ geöffnet, „Als Python-Befehl kopieren“ ist markiert, darunter folgen „Als qgis_process-Befehl kopieren“, „Als JSON kopieren“ und „Einstellungen einfügen“.
„Als Python-Befehl kopieren“ macht aus jedem von Hand eingerichteten Werkzeug eine Codezeile.

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 3QGIS 4
Kurznamen wie Qt.AlignLeftVolle Namen wie Qt.AlignmentFlag.AlignLeft
QRegExpQRegularExpression
exec_() bei Dialogenexec()

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 FehlerRichtiges Ergebnis
Chatbot, Projekt im Prompt beschrieben6 von 66 von 6
Chatbot, nur Layernamen6 von 65 von 6
KI-Agent in QGIS, nur ein Satz zur Aufgabe6 von 66 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.

QGIS mit dem Bedienfeld von AI Agent rechts. Die Anfrage lautet, den Gebäudelayer nach dem Feld building zu gestalten: commercial rot, school blau, hotel grün, house violett und alle anderen Werte hellgrau. Der Agent meldet, dass er die Gebäude gestaltet und jede Kategorie geprüft hat. Die Karte von Denpasar zeigt rote Geschäftsgebäude, ein grünes Hotel und ein violettes Haus zwischen grauen Gebäuden, im Layerfenster stehen die fünf Kategorien.
Ein Satz, und die Gebäude sind nach Typ gestaltet. Kein Code zu lesen oder einzufügen.

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:4326 ist ein Puffer von 50 Grad, weil dieses System in Grad rechnet. Reprojizieren Sie zuerst, wie in was ein KBS ist erklärt.
  • iface außerhalb von QGIS. Skripte, die außerhalb des Fensters laufen, haben kein iface. Nutzen Sie stattdessen QgsProject und processing.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.