In questo breve articolo parlerò delle funzioni personalizzate di QGIS da usare nel calcolatore di campi di QGIS.
Email presente nella mailing list QGIS-it-user
Ciao a tutti,
ho un problema che non riesco a risolvere in quanto non ho conoscenze
avanzate di programmazione Python.oggetto:
campo testuale popolato con percorsi (relativi/ assoluti) di file immagine,
es: ‘miofile_01.png’problema:
alcune volte nasce l’esigenza di popolare un campo, tramite il calcolatore
di campi, in modo automatico quindi puo’ accadere che ‘miofile_099.png’ NON
esista ma il calcolatore di campi non lo sa e quindi scrive ugualmente
‘miofile_099.png’. Il fatto che scriva un percorso che non esiste NON è un
problema ma diventa tale non appena si richiama il valore del campo stesso.Vorrei creare una funzione, da usare nel calcolatore di campi, che
controllasse l’esistenza del file per poi poterla usare in una condizione
tipo:CASE WHEN controlloFile(“campo”) is TRUE THEN 1 else 0 END
questa esigenza nasce nel compositore di stampe per evitare che compaia una
X rossa al posto dell’immagine che non esiste o che ha un percorso errato.
La soluzione è:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# crea una funzione personalizzata 'controlla' | |
# da usare nel calcolatore di campi | |
# se il path esiste il valore è TRUE altrimenti FALSE | |
from qgis.core import * | |
from qgis.gui import * | |
from os.path import * | |
@qgsfunction(args='auto', group='Custom') | |
def controlla(value1, feature, parent): | |
return os.path.exists(value1) |
per creare una nuova funzione aprire il calcolatore di campi:

selezionare il tab ‘editor delle funzioni‘, cliccare su ‘nuovo file‘ (dare un nome a piacere) e incollare lo script python di sopra, infine carica.
Ritroveremo la funzione personalizzata nel gruppo ‘custom‘

Questa funzione va usata per controllare l’esistenza di un percorso, ecco un esempio:

Note finali: questo artico chiude il cerchio ad una casistica spiegata in questo video:
ConQGIStando
donate al progetto QGIS:
se il l’articolo vi è stato utile:
https://www.paypal.me/pigrecoinfinito
fonte script python:
https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-using-python