Cos'è PyQGIS: automatizza QGIS con o senza codice
Pubblicato il
PyQGIS è il modo di controllare QGIS con il codice Python. Tutto quello che puoi fare con un clic in QGIS puoi scriverlo anche in poche righe di Python: caricare un layer, eseguire uno strumento, cambiare uno stile, esportare una mappa. Così ripeti lo stesso lavoro su cento file senza fare cento clic. È incluso in ogni installazione di QGIS, quindi non devi aggiungere nulla.

Il PyQGIS Developer Cookbook afferma che gli strumenti Python sono "quasi identici" a quelli con cui è costruito QGIS stesso, quindi si può fare praticamente tutto. La maggior parte dei plugin di QGIS, i nostri compresi, è scritta con PyQGIS.
Non devi più scrivere il codice da solo. Un chatbot può abbozzarlo e un agente può saltare del tutto il codice: ne sviluppiamo uno, AI Agent, e più avanti metto alla prova entrambi sulle stesse sei attività.
Dove eseguire PyQGIS
Ci sono quattro posti, e ognuno è adatto a un lavoro diverso.
| Dove | Come aprirlo | A cosa serve |
|---|---|---|
| Console Python | Plugins > Console Python (Ctrl+Alt+P) | Correzioni rapide sul progetto aperto |
| Script di Processing | Strumenti di Processing > Script > Crea nuovo script da modello | Uno strumento riutilizzabile con i suoi input, come gli altri strumenti della casella |
| Plugin | Una cartella nel tuo profilo QGIS | Uno strumento con i suoi pulsanti, da condividere con altri |
| Script autonomo | Python puro, oppure il comando qgis_process | Lavori che girano senza finestra di QGIS, per esempio su un server |
La console ti mette a disposizione iface, l'oggetto che controlla la finestra di QGIS. Fuori da QGIS non esiste, ed è per questo che NameError: name 'iface' is not defined è una delle domande su PyQGIS più frequenti su GIS Stack Exchange.
Uno script di Processing parte da un modello che QGIS compila al posto tuo. Cambi gli input e le poche righe che fanno il lavoro, e lo script compare negli strumenti di Processing come uno strumento integrato.

Il tuo primo script PyQGIS
Apri la Console Python, fai clic su Mostra editor, seleziona un layer di edifici nel pannello Layer e incolla questo codice. Conta gli edifici di ogni 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())
Tre oggetti fanno gran parte del lavoro: QgsProject.instance() è il tuo progetto, QgsVectorLayer e QgsRasterLayer sono i suoi layer e iface è la finestra. La documentazione API elenca ogni classe.
Eseguire qualsiasi strumento di QGIS da Python
Ogni strumento di Processing può essere eseguito con una sola riga di Python, processing.run(), con le stesse impostazioni della sua finestra:
import processing
result = processing.run("native:buffer", {
"INPUT": "buildings.gpkg",
"DISTANCE": 50,
"OUTPUT": "buffered.gpkg",
})
Non serve indovinare i nomi delle impostazioni. Compila una volta la finestra dello strumento, poi apri Avanzate > Copia come comando Python in basso. QGIS ti dà la riga esatta da incollare nello script.

Gli stessi strumenti girano anche senza aprire QGIS, da terminale, con qgis_process run native:buffer. È la strada giusta per un lavoro pianificato su un server.
Cosa è cambiato in QGIS 4 per PyQGIS
QGIS 4.0, uscito il 6 marzo 2026, è passato a una versione più recente di Qt, il toolkit alla base di finestre e pulsanti. Le funzioni di QGIS sono rimaste quasi uguali. A rompersi è il codice che usa Qt direttamente, e tre cambiamenti ne causano la maggior parte:
| QGIS 3 | QGIS 4 |
|---|---|
Nomi brevi come Qt.AlignLeft | Nomi completi, come Qt.AlignmentFlag.AlignLeft |
QRegExp | QRegularExpression |
exec_() sulle finestre di dialogo | exec() |
QGIS include uno script, pyqt5_to_pyqt6.py, che riscrive la maggior parte di queste voci per te, e il pyqgis4-checker trova il resto. Gli script che usano solo gli strumenti di QGIS e processing.run() di solito funzionano senza modifiche.
ChatGPT o Claude possono scrivere PyQGIS per te?
Per lo più sì, se gli descrivi il tuo progetto. Ho testato Claude Sonnet, un chatbot come ChatGPT, e i suoi script sono girati senza errori in tutte e sei le attività. Quando ho descritto layer, campi e percorsi dei file, tutti e sei i risultati erano corretti. Quando ho indicato solo i nomi dei layer, uno dei sei era sbagliato senza segnalarlo: lo script è girato, non ha stampato nulla di allarmante e ha riempito 396 pixel su 936 di una mappa di elevazione con una falsa quota di 0 m.
| Eseguito senza errori | Risultato corretto | |
|---|---|---|
| Chatbot, progetto descritto nel prompt | 6 su 6 | 6 su 6 |
| Chatbot, solo i nomi dei layer | 6 su 6 | 5 su 6 |
| Agente AI dentro QGIS, solo la frase dell'attività | 6 su 6 | 6 su 6 |
La lezione è semplice. Un chatbot non vede il tuo progetto, quindi la qualità del suo codice dipende da quanto bene lo descrivi, e un risultato sbagliato può sembrare identico a uno giusto. C'era anche un'insidia legata a QGIS 4: entrambi gli script del chatbot per i layout di stampa usavano i nomi brevi di Qt della tabella qui sopra e si sarebbero fermati a metà in QGIS 4.
Come abbiamo misurato. Il 26 settembre 2026, in QGIS 3.44.7, con dati cartografici del centro di Denpasar, a Bali: sei attività di tutti i giorni, dal conteggio degli edifici all'esportazione di un layout di stampa, un tentativo ciascuna. Un risultato contava come corretto solo se superava uno script di verifica separato, scritto prima delle esecuzioni. Sei attività sono un campione piccolo.
Oppure salta il codice: un agente che esegue i passaggi
Sviluppiamo AI Agent, quindi questa sezione parla del nostro plugin. È un pannello di chat dentro QGIS: scrivi l'attività, e lui legge il tuo progetto, esegue gli strumenti e controlla il risultato. Non c'è codice da incollare e nessun progetto da descrivere.
Gli ho dato le stesse sei frasi, senza alcuna descrizione del progetto. Le ha risolte tutte e sei correttamente, impiegando tra 6,4 e 42,8 secondi per attività e 148,8 secondi in totale. Si è fermato due volte per chiedere l'autorizzazione prima di scrivere un file, e ho fatto clic su Consenti. Nell'attività di elevazione in cui il chatbot ha sbagliato, ha letto prima il layer e ha impostato correttamente i pixel vuoti.

La strada gratuita resta ottima: la console, Copia come comando Python e un chatbot ti porteranno lontano, purché tu controlli il risultato. Se preferisci descrivere l'attività e ottenere il layer, l'agente esegue i passaggi al posto tuo.
Prova AI Agent gratis in QGIS, senza carta
Dove ci si blocca
Abbiamo contato le domande sotto i tutorial di QGIS su YouTube: su 1.692 tutorial con commenti, 391 commenti in 245 tutorial chiedono aiuto su Python o sull'automazione. Tornano sempre gli stessi tre problemi:
- Layer non trovato.
mapLayersByName("roads")non trova nulla se il nome differisce di una lettera o di uno spazio. - Distanze in gradi. Un buffer di 50 m su un layer in
EPSG:4326è un buffer di 50 gradi, perché quel sistema conta in gradi. Riproietta prima, come spiegato in cos'è un SR. ifacefuori da QGIS. Gli script eseguiti fuori dalla finestra non hannoiface. UsaQgsProjecteprocessing.run().
Cosa ricordare
PyQGIS è l'interfaccia Python di QGIS. Gira nella Console Python, negli script di Processing, nei plugin e, fuori da QGIS, con qgis_process.
processing.run() esegue qualsiasi strumento di QGIS da codice, e Copia come comando Python ti dà la riga esatta dalla finestra di uno strumento.
QGIS 4 ha rinominato alcuni nomi di Qt, come Qt.AlignLeft. Il codice che costruisce finestre proprie può richiedere piccole correzioni.
Nel nostro test su sei attività, il codice del chatbot è sempre girato, ma è risultato sbagliato una volta quando il progetto non era descritto. Un agente dentro QGIS, come AI Agent, le ha risolte tutte e sei correttamente dalla sola frase dell'attività.
Domande frequenti
A cosa serve PyQGIS?
A automatizzare QGIS con Python: caricare e modificare layer, eseguire strumenti su molti file, applicare stili alle mappe, creare layout di stampa e scrivere plugin o script che altri possono riutilizzare. Gira anche fuori dalla finestra di QGIS, per i lavori su un server.
PyQGIS è la stessa cosa di Python?
PyQGIS è un insieme di strumenti di QGIS che usi da Python. Scrivi normale codice Python, e PyQGIS aggiunge elementi come QgsVectorLayer e processing.run(). È incluso in QGIS e usa il Python che QGIS installa.
Come si apre la Console Python in QGIS?
Plugins > Console Python, oppure Ctrl+Alt+P. Fai clic su Mostra editor per scrivere script più lunghi, salvarli come file .py ed eseguirli con la freccia verde.
I miei script PyQGIS funzionano ancora in QGIS 4?
Gli script che usano solo gli strumenti di QGIS e processing.run() di solito sì. Quelli che costruiscono finestre proprie spesso richiedono piccole modifiche, come Qt.AlignmentFlag.AlignLeft al posto di Qt.AlignLeft. Lo script ufficiale pyqt5_to_pyqt6.py ne corregge la maggior parte.
Posso automatizzare QGIS senza Python?
Sì. Il Modellatore grafico collega gli strumenti in modo visuale, e l'elaborazione batch esegue uno strumento su molti file. Un plugin con un agente AI va oltre: scrivi l'attività con parole semplici ed esegue gli strumenti nel tuo progetto. Il nostro, AI Agent, ha un piano gratuito.
Per approfondire, cos'è un agente AI in QGIS spiega come funzionano gli agenti e come sceglierne uno, e AI Agent è il nostro, da provare gratis. Cos'è un SR tratta la riproiezione di cui la maggior parte degli script ha bisogno per prima cosa, e cos'è QGIS MCP mostra la strada per chi usa Claude Code e Cursor.


