:: Python :: v.test_colonna :: |
---|
Si riporta di seguito uno script Python mediante il
quale, una volta scelta una copertura vettoriale e selezionata una sua colonna, è possibile
sapere la tipologia di valori contenuti nella colonna stessa.
Di per se questo script non è molto utile, ma invece la funzione test_column_type, in esso contenuta, si presta ad essere estrapolata da questo contesto ed utilizzata in applicativi ove sia necessario controllare la tipologia di colonna sulla quale effettuare delle elaborazioni. Si immagini di dover sommare i valori contenuti in una colonna e l'utente ne seleziona, sbagliando, una contenente caratteri, lo script andrebbe in errore mostrando le righe di codice interessate, quindi, un utente poco esperto non capirebbe cosa sia accaduto. Invece, mediante la funzione test_column_type si può preventivamente controllare la tipologia di valori contenuti nella colonna e, in caso di dato non conforme, segnalare l'errore all'utente mediante un apposito messaggio. Inoltre, all'interno della funzione sono effettuati dei controlli circa l'esistenza della copertura e della colonna che sono state indicate. Qualora una delle due non esista, la funzione arresta lo script e segnala l'errore riscontrato. Si riporta di seguito il codice dello script Python v.test_colonna.py: #!/usr/bin/env python #**************************************************************** #* #* MODULE: v.test_colonna, v 1.0.0 #* #* AUTHOR(S): Antonio Alliegro #* #* PURPOSE: Verifica la tipologia di una colonna #* appartenente ad una copertura vettoriale #* #* COPYRIGHT: (C) 2011 Antonio Alliegro Civil Engineer #* Salerno, Italy #* antonioall(at)libero.it #* #* First Version: 2011/07/06 #* Last Version: 2011/07/06 #* #* This program is free software under the #* GNU General Public License (>=v2). #* Read the file COPYING that comes with GRASS #* for details. #* #**************************************************************** #%module #% description: Verifica la tipologia di una colonna appartenente ad una copertura vettoriale #% keywords: vector #%end #%option #% key: map #% type: string #% gisprompt: old,vector,vector #% key_desc: nome #% description: Nome copertura vettoriale #% required: yes #%end #%option #% key: colonna #% type: string #% key_desc: nome #% description: Nome colonna su cui verificare la tipologia del dato #% required : yes #% gisprompt: old_dbcolumn,dbcolumn,dbcolumn #%end import sys, time import grass.script as grass def test_column_type(cover_name, column_name): grass.message("Estrazione informazioni dal database...") ret = grass.read_command('v.info', flags = 'c', map = cover_name, layer = None, quiet = True) if ret == "" or ret == {}: grass.fatal("") result = dict() for line in ret.splitlines(): ctype, cname = line.split('|') result[cname] = ctype grass.message('completata') try: s = result[column_name] except: s = 1 grass.fatal("La colonna <%s> non esiste." % column_name) return s #End test_column_type def main(): copertura = options['map'] colonna = options['colonna'] grass.message("--------------------------------------------") grass.message("La colonna <%s> e' del tipo: %s" % (colonna, test_column_type(copertura, colonna))) grass.message("--------------------------------------------") return 0 #End main if __name__ == "__main__": options, flags = grass.parser() sys.exit(main()) Visualizza il file sorgente di v.test_colonna.py
Argomenti correlati:
|