Vai al contenuto
QGIS
Tutorial

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.

QGIS con la Console Python aperta sotto una mappa del centro di Denpasar, a Bali. L'editor a destra contiene uno script chiamato school_zones.py che riproietta le scuole, disegna zone di 100 metri attorno a esse e seleziona gli edifici all'interno. L'output a sinistra riporta 864 of 7015 buildings are within 100 m of a school, poi yes 818, school 19, commercial 15, college 5. La mappa mostra le zone attorno alle scuole come cerchi blu e gli edifici selezionati in arancione.
La Console Python di QGIS. Questo script trova gli edifici entro 100 m da una scuola: 864 su 7.015 nel centro di Denpasar.

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.

DoveCome aprirloA cosa serve
Console PythonPlugins > Console Python (Ctrl+Alt+P)Correzioni rapide sul progetto aperto
Script di ProcessingStrumenti di Processing > Script > Crea nuovo script da modelloUno strumento riutilizzabile con i suoi input, come gli altri strumenti della casella
PluginUna cartella nel tuo profilo QGISUno strumento con i suoi pulsanti, da condividere con altri
Script autonomoPython puro, oppure il comando qgis_processLavori 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.

L'editor di script di Processing in QGIS con l'inizio del modello: una classe chiamata ExampleProcessingAlgorithm con commenti che spiegano che prende un layer vettoriale e ne crea uno identico, le costanti INPUT e OUTPUT e un metodo name che restituisce myscript.
Crea nuovo script da modello apre un esempio funzionante da modificare.

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.

La finestra dello strumento Conta punti in poligono di QGIS con kelurahan come poligoni e scuole come punti. Il menu Avanzate in basso è aperto, con Copia come comando Python evidenziato, sopra Copia come comando qgis_process, Copia come JSON e Incolla impostazioni.
Copia come comando Python trasforma qualsiasi strumento impostato a mano in una riga di codice.

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 3QGIS 4
Nomi brevi come Qt.AlignLeftNomi completi, come Qt.AlignmentFlag.AlignLeft
QRegExpQRegularExpression
exec_() sulle finestre di dialogoexec()

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 erroriRisultato corretto
Chatbot, progetto descritto nel prompt6 su 66 su 6
Chatbot, solo i nomi dei layer6 su 65 su 6
Agente AI dentro QGIS, solo la frase dell'attività6 su 66 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.

QGIS con il pannello AI Agent a destra. La richiesta chiede di applicare uno stile al layer degli edifici in base al campo building: commercial rosso, school blu, hotel verde, house viola e ogni altro valore grigio chiaro. L'agente dice di aver applicato lo stile e di aver controllato ogni categoria. La mappa di Denpasar mostra edifici commerciali rossi, un hotel verde e una casa viola tra edifici grigi, e il pannello Layer elenca le cinque categorie.
Una frase, e gli edifici sono colorati per tipo. Nessun codice da leggere o incollare.

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.
  • iface fuori da QGIS. Gli script eseguiti fuori dalla finestra non hanno iface. Usa QgsProject e processing.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.