Università Politecnica delle Marche Porting di

Transcript

Università Politecnica delle Marche Porting di
Università Politecnica delle Marche
FACOLTÀ DI INGEGNERIA
Corso di Laurea in Ingegneria Informatica e dell’Automazione
Dipartimento di Ingegneria dell’Informazione
Tesi di Laurea
Porting di applicazioni per l’ambiente
su firmware proprietario
Laureando: Riccardo Mataloni
Relatore: Prof. Aldo Franco Dragoni
Anno Accademico 2010 – 2011
Indice
Introduzione
2
Capitoli 1 - Delphi
3
1.1
1.2
1.3
1.4
1.5
– Presentazione del Linguaggio
– Caratteristiche
– IDE
– Versioni
– Sintassi e Struttura del Codice
3
4
5
6
9
Capitolo 2 – DiaCli
12
2.1 – Manuale
2.2 – Indici e Diagrammi
2.3 – Codice
12
14
33
Capitolo 3 – Database
38
3.1 – Popolamento del Database
39
Capitolo 4 – V.i.a.100%
44
4.1 – Manuale
4.2 – Esempio di Report
45
47
1
Introduzione
Questa tesi illustra il lavoro svolto durante il tirocinio previsto nel piano di studi
presso la Microsoftware di Ancona.
Fondata nel 1982, da Gennaio 2010 la Microsoftware è stata incorporata all'interno di
Namirial S.p.A. , società che sviluppa, distribuisce e produce software e servizi ad
alto contenuto tecnologico per Professionisti, Enti ed Aziende. La nuova Technical
Unit Microsoftware della Namirial S.p.A. opera nello sviluppo di software tecnico
rivolto ad imprese edili ed è oggi leader in Italia per la gestione della sicurezza nei
cantieri, per la contabilità lavori, la manutenzione degli edifici, la contabilità
industriale di cantiere e la termotecnica.
I programmi presi in esami saranno il DiaCli (Diagrammi Climatici) e il V.i.a.100%
(Valutazione Impatto Ambientale) entrambi sviluppati dalla società Russi Software di
Bolzano ed ora commercializzati della Namirial S.p.A. all’interno del pacchetto
“Ambiente”, nuova famiglia di software dedicata agli utenti che si occupano di
progettazione di impianti ad energie rinnovabili, delle problematiche connesse agli
studi di Impatto Ambientale e della Certificazione di Sostenibilità Ambientale.
Entrambi i programmi presentano parti di codice non ottimizzato e ormai superato (i
programmi risalgono al 2001 circa), in particolare il V.i.a.100% non veniva
supportato dai sistemi Windows Vista e Windows 7 su cui si è testato il codice
originale. Si è quindi operato un aggiornamento e ottimizzazione del vecchio codice;
nel caso del DiaCli questo ha comportato una riscrittura completa del programma
prendendo solo come modello l’interfaccia originale.
Infine si è provveduto alla creazione del database richiesto dal DiaCli che,
comprensivo degli 8035 record e quasi 80 campi, completamente compilato
raggiunge un accettabile peso di 12 Mb.
2
1 - Delphi
1.1 – Presentazione del linguaggio
Il Delphi nasce come evoluzione del "Borland Turbo Pascal". Il Pascal è un
linguaggio ad alto livello che è stato sviluppato alla fine degli anni sessanta dal
professor Niklaus Wirth a Zurigo. Il suo scopo era quello di realizzare un linguaggio
comprendente un piccolo numero di concetti fondamentali di programmazione
sufficienti ad insegnarla in forma di disciplina logica e sistematica; nello stesso
tempo voleva un linguaggio che fosse facile ed efficiente da implementare sulla
maggior parte dei calcolatori. Il suo successo nel conseguire questo obiettivo può
essere misurato dalla rapida diffusione dell'uso del PASCAL sia come linguaggio
usato nella didattica dei principi di programmazione, sia come linguaggio effettivo
per scrivere software di base ed applicativo.
L' evoluzione del Pascal negli anni successivi al suo sviluppo, lo ha portato alla
definizione della versione 7.0 (includente la v. 2.0 del Turbo Vision) completamente
orientata agli oggetti che a tutt'oggi viene ancora utilizzato per la realizzazione di
software per DOS. Con l'avvento di Windows la Borland rilasciò il Borland Pascal
pacchetto basato sul linguaggio Object Pascal, naturale evoluzione del Turbo Pascal.
La stesura di applicazioni in ambiente Windows rimaneva comunque alquanto lenta e
complessa; era necessario conoscere molto bene la programmazione in Object Pascal
e le immancabili API di Windows. Fu così che la Borland rilasciò la prima versione
del Delphi, la 1.0 appunto. Dal 1996 in poi il Delphi si è evoluto ad una velocità
impressionante.
Con il Delphi la Borland ha introdotto il concetto di sviluppo Visuale RAD (Rapid
Application Development) orientato alla gestione degli eventi come nel Visual Basic,
senza perdere però i vantaggi della compilazione Pascal. E’ da notare che il codice
scritto in Delphi è conforme all'Object Pascal di cui ha anche ereditato il numero di
versione; la versione 8.0 per Delphi 1.0, la 9.0 per Delphi 2.0 etc. Ciò è confermato
dal fatto che è possibile compilare vecchie applicazioni in Object Pascal tramite il
compilatore Delphi.
Come l'Object Pascal, il Delphi è un linguaggio GP (General Purpose) ovvero un tool
di sviluppo che permette di realizzare applicazioni di qualsiasi tipo, più o meno
complesse e tutto questo con una semplicità estrema.
Nel 2001 è stata rilasciata una versione per Linux conosciuta come Kylix (coppa
greca da vino).
3
Per ogni versione di Delphi sono disponibili tre differenti edizioni (a parte Delphi 1.0
che ne conta solamente due, Client e Server):
 Le versioni "Standard" sono, come dice il nome stesso, il livello base di
Delphi per la realizzazione di applicazioni semplici che non richiedono
l'utilizzo di database e l'accesso ad Internet, perlopiù indirizzate a studenti,
hobbisti, principianti.
 Le versioni "Developer" o "Professional" sono rivolte a coloro che utilizzano
il Delphi per lavoro e che necessitano di supporto per database e internet.
 Le versioni "Enterprise", come dice il nome, sono rivolte alle aziende che
necessitano del supporto per il controllo di versione, accesso a database sever,
internet, internazionalizzazione del software.
1.2 – Caratteristiche
Le caratteristiche degne di nota del linguaggio Delphi includono:
 La manipolazione trasparente degli oggetti tramite riferimenti/puntatori;
 Le proprietà come costrutti del linguaggio, che permettono la lettura e la
scrittura in modo trasparente attraverso l'accesso alle variabili membro.
 Proprietà di tipo "indice" e le proprietà di default che permettono un accesso
alle collezioni di oggetti in modo semplice e trasparente.
 Delegati, ossia puntatori a metodi con controllo del tipo, che vengono usati per
collegare gli eventi notificati dai componenti.
 Delegazione dell'implementazione di interfaccia ad una variabile membro o
una proprietà della classe.
 Facile implementazione di gestori per i messaggi di Windows tramite legame
tra un metodo della classe con il numero o nome del messaggio Windows da
gestire.
 Pieno supporto a Unicode.
Molte delle funzionalità precedentemente elencate sono state prima introdotte da
Delphi ed in seguito adottate anche in altri linguaggi.
Le componenti principali degli ambienti di lavoro Delphi e Kylix sono il linguaggio,
Delphi, la VCL (Visual Component Library) e CLX (Component Library for Cross
Platform), e una facile e robusta connettività ai database, combinati con un potente
IDE (Integrated Development Environment) e altri strumenti di supporto.
Fra i vari vantaggi su cui il linguaggio Delphi può contare va citata la possibilità di
compilare in un singolo eseguibile, semplificando la distribuzione e riducendo i
problemi di diverse versioni delle DLL, la disponibilità di VCL e componenti di altri
produttori insieme al codice sorgente, compilazione per diverse piattaforme dallo
4
stesso codice sorgente, oltre ad un ottimo ambiente di sviluppo di cui parleremo
successivamente
1.3 – IDE
Embarcadero RAD Studio, introdotto con il passaggio di Delphi da Codegear a
Embarcadero, è una suite completa per lo sviluppo e per sviluppare in modo visuale
GUI-intensive, data-driven application per Windows, .NET, PHP e il Web. RAD
Studio include Delphi, C++Builder, Delphi Prism, e RadPHP; fornendo un potente
supporto ad un linguaggio compilato, managed e dinamico, una connettività
eteregonea per i database, un completo framework visuale di componenti e un vasto
ecosistema di componenti di terze parti permettendo di produrre applicazioni fino a 5
volte più veloci, per Windows, Web e piattaforme database. L’ambiente di sviluppo
di RAD Studio semplifica drammaticamente e velocizza lo sviluppo di applicazioni
visuali e data- intensive per desktop GUI e touch-screen.
L’IDE include tutti gli strumenti necessari per iniziare la progettazione di
applicazioni, quali:
5
 Form Designer, una finestra vuota, detta anche scheda, in cui progettare
l’interfaccia utente (UI) dell’applicazione.
 Component palette per la visualizzazione di componenti visuali e non, che è
possibile utilizzare per progettare l’interfaccia utente.
 Object Inspector per esaminare e modificare le proprietà e gli eventi degli
oggetti.
 Object TreeView per visualizzare e modificare le relazioni logiche dei
componenti.
 Code editor per la stesura e la modifca della logica sottostante di un
programma.
 Project Manager per gestire i file che costituiscono uno o più progetti.
 Debugger integrato per ricercare e corregere gli errori nel codice.
 Molti altri strumenti, come gli editor di proprietà per modificare i valori delle
properietà di un oggetto.
 Strumenti per la riga comandi che comprendono compilatori, linker e altri
programmi di utilità.
 Complete librerie di classi con moltissimi oggetti riutilizzabili. La maggior
parte degli oggetti forniti nella libreria di classi sono accessibili nell’IDE dalla
Component palette. Per convenzione, i nomi degli oggetti nella libreria di
classi iniziano con una T, come TStatusBar. I nomi degli oggetti che
cominciano con la lettera Q sono basati sulla libreria Qt e vengono utilizzati
per applicazioni multipiattaforma.
1.4 – Versioni
Elenco Completo delle versioni rilasciate:
 Borland Delphi 1: Rilasciato nel 1995 per Windows 3.1 16 bit, fu il primo
esempio di ambiente di sviluppo RAD. Nato come successore del Turbo Pascal
e Borland Pascal, si fece subito conoscere per le performance del suo
compilatore e per la potenza del suo integrated development environment
(IDE). Il linguaggio utilizzato (Delphi) venne anche chiamato Object Pascal.
 Borland Delphi 2: Rilasciato nel 1996, permetteva di realizzare applicazioni a
32 bit e veniva venduto insieme a Delphi 1 per lo sviluppo di applicazioni a 16
bit.
 Borland Delphi 3: Rilasciato nel 1997, portava con se ancora Delphi 1 per lo
sviluppo di applicazioni a 16 bit. La versione 3.0 introduce una novità
6
interessante non presente nelle versioni precedenti: il supporto per i packages.
Al pari delle librerie DLL permettono di raggruppare del codice e permetterne
il caricamento solo quando se ne ha la necessità; e di condividere, magari con
altre applicazioni, il codice in esse contenuto.
 Borland Delphi 4: Rilasciato nel 1998.
 Borland Delphi 5: Rilasciato nel 1999.
 Kylix: la versione di Delphi per Linux, venne rilasciato nel 2001. Il Kylix, per
chi già conosce Delphi, ne è la riproduzione esatta: stessa interfaccia grafica,
stessi tools, stesse impostazioni e disposizione dei comandi. La cosa più
importante è che il codice compilato con il Kylix è nativo per Linux ovvero in
formato ELF. Per permettere il porting nella maniera più semplice possibile la
Borland ha dovuto riscrivere l'intera VCL (Visual Component Library, ovvero
la libreria dei componenti visuali di Delphi) in maniera tale che fosse
indipendente dalla piattaforma. Ciò è stato realizzato creando una nuova
libreria la CLX (si legge clix) che si basa per la parte grafica sulle librerie Qt
(oggetti multipiattaforma della trolltech) le stesse utilizzate anche per la
realizzazione della parte grafica di KDE.
 Borland Delphi 6: Rilasciato nel 2002.
 Borland Delphi 7: Rilasciato nell'agosto del 2002 è divenuta la versione più
utilizzata dalla maggior parte degli utenti. Il successo di questo ambiente di
sviluppo era dovuto alla sua stabilità, velocità e bassissime richieste di
hardware per poter funzionare degnamente. In Delphi 7 è stata introdotta la
possibilità di sviluppare anche applicazioni web.
 Borland Delphi 8: Rilasciato nel dicembre 2003, è stata l'unica versione di
Delphi che permette di compilare codice sorgente Delphi (Object Pascal)
tramite il framework .Net di Microsoft. E' stata la versione meno apprezzata
soprattutto per il fatto di non poter scrivere e compilare applicazioni native
(*.exe).
 Borland Delphi 2005: Chiamato anche Delphi 9 o Borland Developer Studio
3.0, ha finalmente riunito in un unico ambiente di sviluppo il supporto a Delphi
per Win32, Delphi per .NET e C#.
 Borland Delphi 2006: Alla fine del 2005 è stato rilasciato Delphi 2006 che
includeva la possibilità di sviluppare applicazioni in C#, Delphi.NET, Delphi
Win32 e C++ tramite un unico IDE. In febbraio del 2006, Borland annunciò la
volontà di vendere il suo IDE e la sua linea di prodotti per database. Nel
7
settembre del 2006, uno spin-off di Borland, formato per lo più dagli
sviluppatori degli IDE di Borland stessa, rilasciò la versione "Turbo" dell'IDE
che offrono solo una singola personalità, rendendo così disponibili i nuovi
prodotti Turbo Delphi per Win32, Turbo Delphi per .NET, Turbo C++ e Turbo
C#. Per ogni ambiente furono rilasciate due versioni: "Explorer" (versione
gratuita) e "Professional" (a pagamento ma ad un costo molto ridotto rispetto ai
precedenti ambienti di sviluppo). La particolarità era che la versione
"Explorer" permetteva anche lo sviluppo di applicazioni commerciali. Il 14
novembre del 2006, Borland vendette i suoi IDE a CodeGear.
 Codegear Delphi 2007: Delphi 2007 (Delphi 11), la prima versione realizzata
da CodeGear, fu rilasciato il 16 marzo del 2007. La versione 2007 ha aggiunto,
funzionalità specifiche per Windows Vista, una nuova versione di dbExpress
interamente in Object Pascal, librerie web con supporto per AJAX, e,
limitatamente alla versione .NET, i generici. Delphi 2007 è disponibile standalone, o come parte di RAD Studio 2007 (che include anche il supporto allo
sviluppo in C++). CodeGear vendette la linea di IDE appena acquisita a
Embarcadero Technologies nel 2008.
 Embarcadero Delphi 2009: Delphi 2009 (Delphi 12, nome in codice
Tiburón), aggiunse molte nuove features, tra cui la riscrittura completa della
VCL e il pieno supporto a UNICODE.
 Embarcadero Delphi 2010: Delphi 2010 (Delphi 14, nome in codice Weaver;
la versione 13 è stata saltata) è stato rilasciato il 25 agosto 2009.
 Embarcadero Delphi XE: Delphi XE (Delphi 2011/Delphi 15, nome in
codice Fulcrum) è stato rilasciato il 30 agosto 2010.
 Delphi Starter Edition: Il 27 Gennaio, 2011 Embarcadero ha annunciato la
disponibilità di una nuova Starter Edition, che ha lo scopo ad hobbisti e le
aziende in startup ad ottenere una versione con caratteristiche leggermente
ridotte ad un prezzo basso.
 Embarcadero Delphi XE2: Delphi XE2 (Delphi 2012/Delphi 16). Il 1
settembre 2011 Embarcadero ha rilasciato RAD Studio XE2 che comprendeva
Delphi XE2 con C + + Builder, Prism XE2 e RadPHP XE2. Delphi XE2
supporta la piattaforma x64. Delphi XE2 include anche una libreria
multipiattaforma chiamato FireMonkey. E aprire la strada alla portabilità delle
applicazioni Delphi a Mac OS X e Ios.
8
1.5 - Sintassi e struttura del codice
Un'applicazione Delphi consiste di due tipi di codice sorgente: una o piu' unit e un
file di programma. Le unit possono essere considerate files secondari, i quali sono
legati alla parte principale dell'applicazione, il programma, In teoria, questo e' vero.
In pratica, il file di programma e' normalmente generato automaticamente, ed ha un
ruolo secondario. Semplicemente fa partire il programma e visualizza il form
principale. Il codice del file di programma, o progetto (DPR), puo' essere editato
manualmente o manipolato tramite il Project Manager o i settaggi del Project Options
relativi al programma o ai form dell'applicazione. La struttura del file di programma
e' normalmente piu' semplice della struttura delle unit.
program Project1;
uses
Forms,
Unit1 in ‘Unit1.PAS’ {Form1DateForm};
begin
Application.Initialize;
Application.CreateForm (TForm1, Form1);
Application.Run;
end.
Le applicazioni Delphi fanno un intensivo uso delle unit, o moduli di programma. Le
unit, di fatto, sono le basi della modularizzazione nel linguaggio prima che le classi
fossero introdotte. In un'applicazione Delphi, ogni form ha una corrispondente unit
dietro ad esso anche se non è detto che ogni unit abbia una form associata. Quando si
aggiunge un nuovo form ad un progetto Delphi in realta' aggiunge una nuova unit,
che definsce la classe del nuovo form.
Il concetto di una unit e' semplice. Una unit ha un nome univoco che corrisponde al
nome del file (con estensione .PAS), una sezione d'interfaccia che dichiara cosa e'
visibile alle altre unit e una sezione d'implementazione con il codice reale e altre
dichiarazioni nascoste. Infine, la unit puo' avere una sezione di inizializzazione
(opzionale) con codice che viene eseguito quando il programma e' caricato in
memoria e una sezione di finalizzazione (opzionale) con codice che viene eseguito
quando il programma viene terminato.
Unit Unit1; {Intestazione}
Interface
Uses {Lista di unit}
Implementation
9
Uses {Lista di unit}
{Codice per la definizione di tipi,
variabili, funzioni e procedure}
Initialization
{Codice di inizializzazione della unit}
Finalization
{Codice di finalizzazione della unita}
End.
L'interfaccia di una unit puo' dichiarare numerosi elementi differenti, incluso
procedure, funzioni, varabili globali e tipi. Nelle applicazioni Delphi, i tipi di dato
sono probabilmente i piu' usati. Delphi automaticamente crea una nuova classe in una
unit ogni volta che si crea un form. Comunque, la dichiarazione di un form non e'
certamente la sola funzione delle unit in Delphi. Si possono avere ancora le unit
tradizionali, con funzioni e procedure e si possono avere unit con classi che non
hanno a che fare con i form o gli elementi visuali.
La seconda clausola uses, all'inizio della sezione d'implementazione, indica ulteriori
unit che servono solo nel codice di implementazione.
Per quanto riguarda la sintassi il Delphi, come il Pascal, usa il set di caratteri ASCII,
comprendente le lettere dalla A alla Z e dalla a a alla z, le cifre da 0 a 9 e gli altri
caratteri standard. Non fa distinzione tra maiuscole e minuscole, come il C++ o il
Java o Javascript.
Gli identificatori per variabili, costanti, procedure, ecc… possono avere una
lunghezza qualunque, non devono contenere spazi e devono iniziare con una lettere
(minuscola o maiuscola) o con un sottotratto.
I numeri possono essere scritti in forma decimale e esadecimale; quelli reali inoltre
possono essere rappresentati dalla forma esponenziale inserendo E (o e) seguito dal
numero dell’esponente.
Nel Delphi le stringhe di caratteri vengono racchiuse fra apostrofi semplici (‘); alcuni
casi particolari sono: stinga null, composta esclusivamente da due apostrofi (‘’);
presenza di apostrofi all’interno della stringa, rappresentati con un apostrofo doppio
(‘all’’interno’); stringa di un solo apostrofo, composta da quattro apostrofi
consecutivi, il primo e l’ultimo per identificare la stringa e i due centrali per il
carattere dell’apostrofo singolo (‘’’’).
I commenti vanno preceduti da // o racchiusi fra parentesi graffe {}.
Ogni singola istruzione deve terminare con il carattere ; .
Di seguito una lista degli operatori del linguaggio Delphi:
10
11
2 - DiaCli
Programma per la generazione di diagrammi ed il calcolo di indici climatici a partire
dai dati del database incluso, contenente informazioni su tutti i comuni italiani:
altitudine, quota, provincia, precipitazioni mensili, ecc….
2.1 - Manuale
GESTIONE ARCHIVIO permette di creare/aggiornare/cancellare un file dati.
La finestra relativa alla gestione dell’archivio presenta tre sezioni. Nella prima, oltre
al bottone per l’uscita, è possibile digitare il nome della Stazione da ricercare per
eventuali modifiche o cancellazioni, oppure da creare per l’inserimento di nuovi dati.
La ricerca delle stazioni già registrate è automatica ed avviene anche per lettere
parziali (per es.: digitando un’iniziale il cursore si posizionerà sulla prima stazione
nel relativo ordine alfabetico). Inoltre, utilizzando le frecce è possibile effettuare lo
scrolling dell’elenco di stazioni.
I dati relativi alla stazione indicata dal cursore sono visualizzati nell’ultima sezione
per consentire un immediato riscontro e permetterne l’aggiornamento o
l’eliminazione. Nel caso dell’aggiornamento si procederà all’inserimento dei dati da
variare posizionandosi direttamente col cursore e cliccando sulla finestra
corrispondente oppure con l’impiego di tabulazione. Al termine delle variazioni si
dovrà confermare o meno per registrare i nuovi dati.
Nel caso in cui si desidera eliminare l’intera Stazione, dati i possibili rischi d’errore,
dopo aver cliccato su “elimina” si dovrà confermare l’operazione.
IMPOSTA STAMPANTE permette l’accesso alla routine di gestione stampanti
del S.O. Windows. Pertanto è possibile selezionare diverse stampanti, modificare i
parametri di orientamento, dimensioni, alimentazione dei fogli, ecc.
12
VISUALIZZAZIONE I diagrammi visualizzabili sono i seguenti:
- Diagramma Pluviometrico
- Diagramma Termometrico
- Diagramma Termopluviometrico
- Diagramma Ombrotermico
- Climogramma Precipitazioni-Temperature
- Climogramma di Peguy
- Diagramma di Walter&Lieth
Dopo aver cliccato sul diagramma scelto viene visualizzata la relativa finestra, che
riporta due sezioni. Nella prima è possibile scegliere la Stazione da visualizzare
digitando le iniziali o effettuando lo scrolling con l’uso delle frecce. Nella seconda
sezione il grafico e le relative tabelle si aggiorneranno automaticamente. Per tornare
al Menu principale cliccare sull’icona “Uscita”.
STAMPE Analogamente a quanto visto nel paragrafo precedente, con questa
opzione è possibile stampare i seguenti diagrammi e le relative tabelle di dati:
- Diagramma Pluviometrico
- Diagramma Termometrico
- Diagramma Termopluviometrico
- Diagramma Ombrotermico
- Climogramma Precipitazioni-Temperature
- Climogramma di Peguy
- Diagramma di Walter&Lieth
Dopo aver cliccato sul diagramma scelto viene visualizzata una finestra che consente
di scegliere la Stazione da stampare digitando le iniziali o effettuando lo scrolling con
l’uso delle frecce (inizio-avanti-indietro-fine).
13
2.2 - Indici e Diagrammi
Diagramma termometrico Andamento delle T (°C) in 12 mesi
Diagramma pluviometrico Andamento delle P (mm) in 12 mesi
14
Diagramma termo-pluviometrico. Andamento congiunto delle P (mm) e T (°C) in
12 mesi
Diagramma ombrotermico Andamento congiunto delle P (mm) e T (°C) in 12 mesi,
ideato da Bagnouls & Gaussen, è tra i più utilizzati al mondo negli studi di ecologia
applicata. Il diagramma individua il periodo annuale da considerare “arido”, che è
quello in cui la curva delle precipitazioni scende al di sotto di quella delle
temperature, ossia quando la quantità delle precipitazioni è inferiore al valore doppio
della temperatura (P<2T).
15
Diagramma di Peguy Andamento congiunto delle P e T in 12 mesi, ideato da Peguy,
è utilizzato negli studi ambientali ed ecologici. Questi diagrammi riassumono
sinteticamente le condizioni termo-pluviometriche delle diverse località considerate e
sono costruiti a partire dai dati medi mensili di temperatura media e precipitazioni
cumulate. Sulle ascisse è riportata la scala delle T (°C), mentre sulle ordinate quella
delle P (mm). Dall’unione dei 12 punti relativi a ciascun mese, si ottiene un poligono
la cui forma e dimensione rappresentano le caratteristiche climatiche della stazione.
Sul diagramma è anche riportata un’area triangolare di riferimento che distingue una
situazione di clima temperato (all’interno dell’area stessa), glaciale, freddo e umido,
caldo ed arido, caldo ed umido. Il triangolo è costruito sulla base delle seguenti
coordinate dei vertici: (0 °C, 0 mm); (23, 4 °C, 40 mm); (15 °C, 200 mm). La
posizione dell’area poligonale rispetto a quella triangolare di riferimento fornisce una
rappresentazione immediata delle condizioni climatiche.
Diagramma di Walter & Lieth Andamento congiunto delle P e T in 12 mesi, ideato
da Walter & Lieth per migliorare le informazioni ottenibili dal
diagrammaombrotermico di Bagnouls & Gaussen. Il layout di questo diagramma
16
(Fig.6) è ancora in elaborazione e sarà completato nei prossimi mesi, ma la fase di
progettazione è già avviata e prevede:
1. Il diagramma riporta sull'ascissa i mesi dell'anno, sull'ordinata di destra le P
medie del periodo di riferimento e a sinistra le T medie. I valori delle T sono
riportati a scala doppia rispetto a quelli di precipitazioni (scala 1°C = 2 mm).
2. Quando i valori mensili delle precipitazioni superano i 100 mm il periodo
piovoso viene rappresentato, oltre questo valore, in nero e a scala dieci volte
più piccola di quella precedentemente adottata per le precipitazioni mensili
minori di 100 mm.
3. Legenda del grafico
17
Pluviofattore di Lang Il Pluviofattore di Lang (o Regenfaktor) mette in relazione
precipitazioni e temperature in modo estremamente semplice ma efficace. Esso è
definito come:
18
Con:
P = precipitazioni medie annue (mm)
T = temperatura media annua (°C)
Quest’indice ha un significato ecologico ed esprime l'umidità delle stazioni entro
determinati limiti di temperatura. In effetti, ove non si tenesse conto di questi
parametri termici, lo stesso valore del rapporto potrebbe risultare da valori, e quindi
da climi, diversi. Per questo motivo, è importante considerare questo indice
congiuntamente alla temperatura.
Classi climatiche secondo Lang
Umido > 160
Temperato umido 160 ÷ 100
Temperato caldo 100 ÷ 60
Semiarido 60 ÷ 40
Steppa < 40
Rapporto tra indice e caratteristiche pedologiche
Indice di De Martonne. Anche l’indice di De Martonne, o Indice di aridità di De
Martonne, mette in relazione precipitazioni e temperature in modo estremamente
semplice ed efficace. La formula proposta da De Martonne è la seguente:
19
Con:
P = precipitazioni medie annue (mm)
T = temperatura media annua (°C)
Questa formula è migliorativa rispetto a quella di Lang e tende a ridurre alcuni
inconvenienti che si verificavano applicando P/T nelle località caratterizzate da clima
freddo. Infatti, in tali situazioni, con temperature medie annue prossime a 0 °C si
hanno valori troppo elevati, mentre per valori inferiori a 0 °C si ottengono dei valori
negativi del pluviofattore di Lang.
Classi climatiche secondo De Martonne
Umido > 40
Temperato umido 40 ÷ 30
Temperato caldo 30 ÷ 20
Semiarido 20 ÷ 10
Steppa 10 ÷ 5
Deserto < 5
Rapporto tra indice e vegetazione
deserto < 5
steppa 5 ÷ 10
prateria 10 ÷ 20
macchia 20 ÷ 30
foresta di duri legnose 30 ÷ 45
foresta di aestlilignosae > 45
Indice di De Martonne MENSILE Anche l’indice mensile di De Martonne, o Indice
di aridità mensile di
De Martonne, mette in relazione precipitazioni e temperature in modo estremamente
semplice ed efficace. La formula proposta da De Martonne è la seguente:
20
Con:
p = precipitazioni medie mensili (mm)
t = temperatura media mensile (°C)
L’andamento mensile dell’indice fornisce indicazioni circa il periodo di stasi
vegetativa, infatti secondo Paterson la durata del periodo vegetativo coincide con il
numero di mesi in cui l’indice supera la soglia di 20.
Classi climatiche secondo De Martonne
Deserto < 5
Steppa circumdesertica 5 ÷ 15
Prateria 15 ÷ 20
Macchia 20 ÷ 30
Foresta > 30
Indice di De Martonne & Gottmann Anche l’indice mensile di De Martonne &
Gottmann mette in relazione precipitazioni e temperature in modo estremamente
efficace. La formula proposta da De Martonne & Gottmann è da impiegarsi
soprattutto quando non si è in presenza di zone con clima tipicamente mediterraneo
ma con climi generalmente più continentali. La formula proposta da De Martonne &
Gottmann è la seguente:
Con:
P = precipitazioni medie annue (mm)
T = temperatura media annua (°C)
p = precipitazioni medie del mese più arido (mm)
t = temperatura media del mese più arido (°C)
21
Classi climatiche secondo De Martonne & Gottmann
Umido > 40
Temperato umido 40 ÷ 30
Temperato caldo 30 ÷ 20
Semiarido 20 ÷ 10
Steppa 10 ÷ 5
Deserto < 5
Rapporto tra indice e vegetazione
deserto < 5
steppa 5 ÷ 10
prateria 10 ÷ 20
macchia 20 ÷ 30
foresta di duri legnose 30 ÷ 45
foresta di aestlilignosae > 45
Indice di Fournier L’indice di Fournier, detto anche di capacità erosiva di Fournier,
mette in relazione precipitazioni e temperature in modo estremamente efficace. La
formula proposta da De Martonne & Gottmann è da impiegarsi soprattutto quando
non si è in presenza di zone con clima tipicamente mediterraneo ma con climi
generalmente più continentali. La formula proposta da De Martonne & Gottmann è la
seguente:
Con:
p2 = precipitazioni del mese più piovoso (mm)
P = precipitazioni medie annue (mm)
Indice di Angot L’indice di Angot è utilizzato per evidenziare i regimi pluviometrici
mensili. La formula proposta da Angot è la seguente:
22
Con:
Pi = precipitazioni medie mensili (mm)
gi = numero dei giorni di ciascun mese (n)
P = precipitazioni medie annuali (mm)
Indice di Gams L’indice di Gams, o indice di continentalità igrica, mette in relazione
precipitazioni e quota ed è utilizzato soprattutto nelle aree montuose, dove i dati
termici sono spesso insufficienti. La formula proposta da Gams è la seguente:
Con:
P = precipitazioni medie annue (mm)
A = quota (m s.l.m.)
Secondo Fenaroli, con indice inferiore a 20° sussistono le condizioni favorevoli per
l'insediamento di specie vegetali termofile. Mentre con indice maggiore di 20
sussistono le condizioni favorevoli all’insediamento di specie sciafile e microterme.
In stazioni del piano montano e subalpino con un indice di continentalità superiore a
50° presentano caratteristiche ottimali per le formazioni ascrivibili al larice-cembreto,
mentre sono limitanti per abetine e peccete.
Indici di Rivas Martinez Gli indici proposti da Rivas Martinez per la sua
classificazione climatica sono di diverso tipo.
La formula proposta da Rivas Martinez per l’ indice ombrotermico annuale è la
seguente:
Con:
PM = somma delle precipitazioni medie dei mesi con temperatura T > 0° (mm)
TM = somma delle temperature medie degli stessi mesi (°C)
23
Attraverso l’indice ombrotermico di Rivas-Martinez si può definire la regione
mediterranea (IO < 1,5) oppure la regione temperata (IO >= 2).
Invece, se 1,5 < IO < 2, si rende necessario calcolare l’indice ombrotermico estivo.
La formula proposta da Rivas Martinez per l’ indice ombrotermico estivo è la
seguente:
Con:
PE = somma delle precipitazioni medie dei mesi estivi (mm)
TE = somma delle temperature medie dei mesi estivi (°C)
Attraverso gli indici ombrotermici di Rivas-Martinez si può definire il macrobioclima
della stazione, se temperato o mediterraneo. Quando IOE > 2, ci troviamo nella
macroregione temperata, negli altri casi siamo nella regione temperata quando si
verificano le seguenti condizioni.
24
Nell’ambito del macrobioclima temperato è possibile individuare una variante
submediteranea che si realizza quando durante almeno un mese estivo P i > 2Ti o
quando IOE2 < 2,5.
La formula proposta da Rivas Martinez per l’ indice di continentalità è la seguente:
Con:
TC = temperatura media del mese più caldo dell’anno (°C)
TF = temperatura media del mese più freddo dell’anno (°C)
Quest’indice consente di inquadrare il tipo di continentalità secondo lo schema di
seguito riportato.
25
La formula proposta da Rivas Martinez per l’ indice di termicità è la seguente:
Con:
T = temperatura media annua (°C)
Tmin(f) = media delle temperature minime del mese più freddo (°C)
Tmax(f) = media delle temperature massime del mese più freddo (°C)
Quest’indice è stato successivamente corretto nel seguente modo:
Con C che si calcola secondo il seguente schema:
In base al Macrobioclima di riferimento è possibile individuare i vari orizzonti e
piani, secondo lo schema di seguito riportato.
26
27
In base alla quantità di precipitazioni annuali e alla regione Macrobioclimatica di
appartenenza, secondo lo schema seguente è possibile determinare l’ombrotipo
proposto da Rivas-Martinez.
Indici di Mitrakos Gli indici proposti da Mitrakos permettono di quantificare lo
stress idrico (D) e quello termico (C), attraverso le seguenti formule.
La formula proposta da Mitrakos per lo stress idrico è la seguente:
Con:
Pn = precipitazioni medie mensili (mm)
28
La formula proposta da Mitrakos per lo stress termico è la seguente:
Con:
Tm = temperatura media minima mensile (mm)
Le due formule di D e C di Mitrakos vengono poi utilizzate per calcolare anche i
seguenti parametri:
1) WCS (winter cold stress), pari alla Sommatoria dei valori di C dei mesi
invernali:
2) YCS (year cold stress), pari alla Sommatoria dei valori di C dei 12 mesi:
3) SDS (summer drought stress), pari alla Sommatoria dei valori di D dei mesi
estivi:
4) YDS (year drought stress), pari alla Sommatoria dei valori di D dei 12 mesi:
29
Mesi aridi secondo Köppen I mesi aridi secondo la classificazione di Köppen sono
quelli in cui:
Con:
p = precipitazioni medie mensili (mm)
Mesi aridi secondo Gaussen I mesi aridi secondo la classificazione di Gaussen sono
quelli in cui:
Con:
p = precipitazioni medie mensili (mm)
t = temperature medie mensili (°C)
Quoziente pluviometrico di Emberger Il Quoziente pluviometrico di Emberger
classifica il clima mediterraneo mediante un semplice calcolo. E’ definito come:
Con:
P = precipitazioni medie annue (mm)
Tmax = media mensile delle temperature massime nel mese più caldo (°K, °C
+273,15)
Tmin = media mensile delle temperature minime nel mese più freddo (°K, °C
+273,15)
Quest’indice ha un significato per l’area mediterranea ed esprime l'umidità delle
stazioni. È importante considerare questo indice congiuntamente alla temperatura.
30
Classi climatiche secondo Emberger (Mediterraneo)
M.Umido > 90
M.Subumido 50 ÷ 90
M.Subarido 30 ÷ 50
M.Arido 20 ÷ 30
M.Sahariano < 20
Indice di aridità di Crowther Anche l’indice di Crowther, utile per la stima
dell’aridità, mette in relazione precipitazioni e temperature in modo estremamente
semplice ed efficace. La formula proposta da Crowther è la seguente:
Con:
P = precipitazione totale annua (cm)
T = temperatura media annua (°C)
Utile per valutare la necessità di irrigazione, l’indice è così classificato:
Ia < -30 = deserto
-30 < Ia < -15 = irrigazione continua (semiaridità)
-15 < Ia < 0 = irrigazione necessaria
0 < Ia < 15 = irrigazione opportuna
15 < Ia < 40 = irrigazione stagionale
Ia > 40 = autosufficienza idrica
Indice bioclimatico di J.L.Vernet Anche l’indice di J.L.Vernet è relativo alla stima
dell’aridità. L’indice mette in relazione precipitazioni e temperature in modo
proporzionale al livello di umidità. La formula proposta da Vernet è la seguente:
Con:
H = precipitazioni medie della stagione più piovosa (cm)
h = precipitazioni medie della stagione meno piovosa (cm)
P = precipitazioni medie annuali (mm)
Me = temperatura media massima estiva (°C)
31
Pe = precipitazioni medie estive
Indice igrometrico di Amann L’indice di Amann è relativo all’oceanicità del clima.
L’indice mette in relazione precipitazioni e temperature riferite all’escursione annua.
La formula proposta da Amann è la seguente:
Con:
P = precipitazioni medie annuali (mm)
T = temperatura media annuale (°C)
E = escursione termica annuale, Tluglio-Tgennaio (°C)
L’indice è così classificato:
oceanico temperato > 500
intermedio 300 ÷ 500
continentale < 300
Indice FAO L’indice FAO, detto anche FAO-UNEP o indice di aridità e
desertificazione FAO, è un indice bioclimatico che è stato introdotto in base alle
convenzioni delle Nazioni Unite. L’indice mette in relazione precipitazioni ed
evapotraspirazione. La formula proposta è la seguente:
Con:
P = precipitazioni medie annuali (mm)
ETP = evapotraspirazione media annuale (mm)
L’indice è così classificato:
clima iperarido < 0,05
clima arido 0,05 ÷ 0,2
clima semiarido 0,2 ÷ 0,5
clima subumido secco 0,5 ÷ 0,65
clima umido > 0,65
Inoltre si avrà:
- desertificazione se Ia < 0,03
- nessun rischio di desertificazione se Ia > 0,75
32
2.3 - Codice
Estratto del codice dall’unità per la gestione dell’archivio “Archivio”:
unit Archivio;
interface
uses
Windows, Messages, SysUtils,
Controls, Forms,
Dialogs, DB, ADODB, Grids,
ExtCtrls, Common, Mask,
jpeg, DBTables;
type
TGArchivio = class(TForm)
DBGrid1: TDBGrid;
Source: TDataSource;
Panel1: TPanel;
Label1: TLabel;
RicStazione: TEdit;
DatabaseButton: TPanel;
Navigator: TDBNavigator;
33
Variants,
Classes,
Graphics,
DBGrids,
DBCtrls,
StdCtrls,
ShowPanel: TPanel;
Temperature: TGroupBox;
Precipitazioni: TGroupBox;
ChangeBtn: TButton;
NewBtn: TButton;
DeleteBtn: TButton;
OkBtn: TButton;
IgnoreBtn: TButton;
lbStazione: TLabel;
metri: TLabel;
lbQuota: TLabel;
Image1: TImage;
Image2: TImage;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
Tempprec: TADOTable;
PDBEdit0: TDBEdit;
PDBEdit11: TDBEdit;
PDBEdit1: TDBEdit;
PDBEdit2: TDBEdit;
PDBEdit3: TDBEdit;
PDBEdit4: TDBEdit;
PDBEdit5: TDBEdit;
PDBEdit6: TDBEdit;
PDBEdit7: TDBEdit;
PDBEdit8: TDBEdit;
PDBEdit9: TDBEdit;
PDBEdit10: TDBEdit;
TDBEdit0: TDBEdit;
TDBEdit11: TDBEdit;
34
TDBEdit1: TDBEdit;
TDBEdit2: TDBEdit;
TDBEdit3: TDBEdit;
TDBEdit4: TDBEdit;
TDBEdit5: TDBEdit;
TDBEdit6: TDBEdit;
TDBEdit7: TDBEdit;
TDBEdit8: TDBEdit;
TDBEdit9: TDBEdit;
TDBEdit10: TDBEdit;
Quota: TDBEdit;
Stazione: TDBEdit;
procedure RicStazioneChange(Sender: TObject);
procedure NewBtnClick(Sender: TObject);
procedure ChangeBtnClick(Sender: TObject);
procedure OkBtnClick(Sender: TObject);
procedure IgnoreBtnClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure
FormClose(Sender:
TObject;
var
TCloseAction);
procedure DeleteBtnClick(Sender: TObject);
Action:
private
{ Private declarations }
public
{ Public declarations }
end;
var
GArchivio: TGArchivio;
ArrayTemp: array [0 .. 11] of TDBEdit;
ArrayPrec: array [0 .. 11] of TDBEdit;
S: string;
implementation
{$R *.dfm}
procedure TGArchivio.ChangeBtnClick(Sender: TObject);
begin
ChangeMode(NewBtn, ChangeBtn, DeleteBtn, OkBtn, IgnoreBtn,
ArrayTemp, ArrayPrec, Stazione, Quota, DBGrid1, RicStazione,
Navigator);
Tempprec.edit; Stazione.setFocus;
end;
procedure TGArchivio.DeleteBtnClick(Sender: TObject);
35
begin
if
Messagedlg('Cancellare
il
record
mtConfirmation, mbYesNo, 0)= mryes then
Tempprec.Delete;
end;
procedure TGArchivio.FormClose(Sender:
TCloseAction);
begin
GArchivio.Free
end;
TObject;
selezionato?',
var
Action:
procedure TGArchivio.FormCreate(Sender: TObject);
var
i: integer;
begin Tempprec.sort:='Stazione ASC';
Tempprec.Open;
for i := 0 to 11 do
begin
ArrayTemp[i] := FindComponent(Format('TDBEdit%d', [i])) as
TDBEdit;
ArrayPrec[i] := FindComponent(Format('PDBEdit%d', [i])) as
TDBEdit;
end;
end;
procedure TGArchivio.IgnoreBtnClick(Sender: TObject);
begin
ChangeMode(NewBtn, ChangeBtn, DeleteBtn, OkBtn, IgnoreBtn,
ArrayTemp, ArrayPrec, Stazione, Quota, DBGrid1, RicStazione,
Navigator);
Tempprec.Cancel;
end;
procedure TGArchivio.NewBtnClick(Sender: TObject);
begin
ChangeMode(NewBtn, ChangeBtn, DeleteBtn, OkBtn, IgnoreBtn,
ArrayTemp, ArrayPrec, Stazione, Quota, DBGrid1, RicStazione,
Navigator);
Tempprec.Append; Stazione.setFocus;
end;
procedure TGArchivio.OkBtnClick(Sender: TObject);
begin
try
ChangeMode(NewBtn, ChangeBtn, DeleteBtn, OkBtn, IgnoreBtn,
ArrayTemp, ArrayPrec, Stazione, Quota, DBGrid1, RicStazione,
Navigator);
Tempprec.Post; Tempprec.sort:='Stazione ASC';
except
Messagedlg('Errore! Dati mancanti o stazione già esistente',
mtError, [mbOK], 0);
36
ChangeMode(NewBtn, ChangeBtn, DeleteBtn, OkBtn, IgnoreBtn,
ArrayTemp, ArrayPrec, Stazione, Quota, DBGrid1, RicStazione,
Navigator);
end;
end;
procedure TGArchivio.RicStazioneChange(Sender: TObject);
begin
Tempprec.Locate('Stazione', RicStazione.Text,
[loCaseInsensitive, loPartialKey])
end;
end.
37
3 - Database
Il database è stato creato a partire dai dati disponibili sul sito dell’E.N.E.A. (Ente
per le Nuove tecnologie, l’Energia e l’Ambiente) all’indirizzo
clisun.casaccia.enea.it/ per quanto riguarda le temperature
38
Scheda ENEA per Ancona
Per le informazioni relative alle precipitazioni si è usato il database già completo
fornito dalla società Microsoftware.
3.1 - Popolamento del Database
Il procedimento seguito per la popolazione del database è il seguente:
1. Scaricamento di un file .txt per ognuno dei 120 comuni
2. Inserimento dei dati contenuti nei file .txt scaricati per mezzo di un semplice
programma:
procedure TForm1.Button2Click(Sender: TObject);
var
dati: TStringList;
str: string;
i, inizio, length: integer;
miss: boolean;
begin
dati := TStringList.Create;
length := 6;
TempPrec.Open;
TempPrec.First;
while not TempPrec.eof do
begin
miss := false;
39
try
dati.LoadFromFile('C:\Users\Riccardo\Downloads\Dati
DIaCLI\'+TempPrec.Fieldbyname('Stazione').Value+'.txt');
except
miss := true;
end;
if not miss then
begin
TempPrec.Edit;
str := dati[2];
str:= stringreplace(str, '.',',', [rfReplaceAll]);
for i := 0 to 11 do begin
TempPrec.fields.FieldByNumber(i + 68).Value :=
strtofloat(copy(str, 10 + length*i, length));
end;
str := '';
str := dati[4];
str:= stringreplace(str, '.',',', [rfReplaceAll]);
for i := 0 to 11 do
TempPrec.fields.FieldByNumber(i + 56).Value :=
strtofloat(copy(str, 10 + length*i, length));
str := '';
end;
dati.Clear;
TempPrec.Next;
end;
end;
3. Calcolo per estrapolazione dei valori relativi alle province mancanti per mezzo
della normativa UNI 10349-1994:
40
Anche in questo caso si è sviluppata una semplice applicazione per automatizzare il
procedimento:
procedure TForm1.Button1Click(Sender: TObject);
var
i, vicino, delta: integer;
temp, min, latT, latS, longT, longS: double;
begin
TempPrec.Open;
Stazioni.Open;
repeat
if TempPrec.FieldByName('MaxEstrGennaio').isNull then
begin
min := 50.67;
longT := TempPrec.FieldValues['Longitudine'];
latT := TempPrec.FieldValues['Latitudine'];
case TempPrec.FieldByName('Zona').Value of
1:
delta := 178;
2:
delta := 200;
3:
delta := 147;
4:
delta := 174;
5:
delta := 192;
end;
Stazioni.First;
repeat
begin
41
if (TempPrec.FieldByName('Zona').Value =
Stazioni.FieldByName('Zona').Value) then
begin
if not(Stazioni.FieldByName('MaxEstrGennaio').isNull)
then
begin
longS := Stazioni.FieldValues['Longitudine'];
latS := Stazioni.FieldValues['Latitudine'];
temp := sqrt(power(longT - longS, 2) + power(latT latS, 2));
if (temp < min) then
begin
min := temp;
vicino := Stazioni.FieldValues['ID'];
end;
end;
end;
Stazioni.Next;
end;
until Stazioni.eof;
Stazioni.Locate('ID', vicino, []);
TempPrec.Edit;
i := 0;
for i := 56 to 79 do
begin
TempPrec.fields.FieldByNumber(i).Value :=
Roundto(Stazioni.fields.FieldByNumber(i).Value ((TempPrec.FieldByName('Quota').Value Stazioni.FieldByName('Quota')
.Value) / delta), -2);
end;
end;
TempPrec.Next;
until TempPrec.eof;
end;
Il risultato finale è il database voluto contenente tutti i dati richiesti dalle funzioni del
programma riferiti a tutti gli 8094 comuni italiani:
42
43
4 - V.I.A.100%
Programma per la Valutazione di Impatto Ambientali della Russi Software.
La valutazione di impatto ambientale è una procedura amministrativa di supporto
per l'autorità decisionale finalizzato a individuare, descrivere e valutare gli impatti
ambientali prodotti dell'attuazione di un determinato progetto. La procedura di VIA
è normata come strumento di supporto decisionale tecnico-amministrativo. Nella
procedura di VIA la valutazione sulla compatibilità ambientale di un determinato
progetto è svolta dalla pubblica amministrazione, che si basa sia sulle informazioni
fornite dal proponente del progetto, sia sulla consulenza data da altre strutture della
pubblica amministrazione, sia sulla partecipazione della gente e dei gruppi sociali.
In questo contesto con "impatto ambientale" si intende un effetto causato da un
evento, un'azione o un comportamento sullo stato di qualità delle componenti
ambientali (non necessariamente componenti naturali). Gli impatti ambientali (da
non confondere con inquinamenti o degradi o pressioni ambientali) mostrano quali
modifiche di stato ambientale possono produrre le azioni e le pressioni antropiche.
Nella VIA si cerca quindi di stimare quali sono gli impatti, cioè le modifiche, positive
o negative, degli stati ambientali di fatto, indotti dall'attuazione di un determinato
progetto. Un obiettivo importante delle procedure di VIA è quello di favorire la
partecipazione della gente nei processi decisionali sull'approvazione dei progetti.
La procedura di VIA è un insieme di:






dati tecnico-scientifici su stato, struttura e funzionamento dell'ambiente;
dati su caratteristiche economiche e tecnologiche dei progetti;
previsioni sul comportamento dell'ambiente e interazioni tra progetto e
componenti ambientali;
procedure tecnico-amministrative;
istanze partecipative e decisionali (partecipazione pubblica);
sintesi e confronto fra costo del progetto e dei suoi impatti e benefici
diretti/indiretti del progetto.
Nella VIA sono valutati e computati impatti ambientali diretti o indiretti, a breve o
lungo
termine,
permanenti
o
temporanei,
singoli
o
cumulativi.
La VIA viene effettuata considerando i seguenti fattori ambientali, anche in
correlazione tra di loro:


essere umano, fauna e flora;
suolo, acqua, aria, fattori climatici e paesaggio;
44

beni materiali e patrimonio culturale.
È evidente che, dovendo confrontare in termini monetari benefici e danni apportati da
un progetto a questi fattori, un aspetto molto delicato è l'attribuzione di un valore
economico ad essi. Per fare un esempio semplificato, nella VIA di una attività molto
inquinante andrà dato un valore all'aumento dei posti di lavoro così come al probabile
aumento di malattie nei residenti, ed i due valori andranno confrontati.
4.1 – Manuale
CREA FILE FATTORI La fase di creazione del file permette di creare archivi
specifici e archivi-tipo che, col tempo, vanno a realizzare una vera e propria banca
dati di liste di fattori. Si richiede il numero dei fattori da registrare nel file e, per
ognuno di loro, una relativa descrizione. Al termine si potranno registrare in un file i
dati inseriti.
In seguito è possibile inserire, modificare, visualizzare e stampare l’intera lista dei
fattori.
Al nome del file viene automaticamente assegnata l’estensione .FAT.
CREAZIONE FILE COMPONENTI La fase di creazione del file componenti è
del tutto analoga a quella del file fattori descritta al punto precedente.
Anche questo file potrà essere modificato come quello relativo ai fattori in momenti
successivi alla creazione.
In questo caso l’estensione dei file sarà .CMP
CALCOLA Per il calcolo degli impatti elementari vengono offerte due differenti
procedure.
La prima, valuta l’impatto elementare mediante un modello matriciale con valori
d’influenza A=2B, B=2C e C=1; mentre l’influenza complessiva di tutti i valori è pari
a 10. E’ una procedura semplificata ed è da preferire se non si è particolarmente
esperti.
La seconda, valuta l’impatto elementare mediante un modello matriciale con al
massimo 7 valori d’influenza, tutti variabili. Anche l’influenza complessiva di tutti i
valori prescelti è variabile.
Dopo aver digitato le specifiche relative alla descrizione dell’opera, alla località , alla
data e al redattore della V.I.A., si dovrà inserire il nome del file componenti e del file
45
fattori.
Il programma permette anche il calcolo dei valori minimi e massimi degli impatti
elementari per fornire un confronto con i risultati ottenuti.
Nel caso di matrici a più livelli di correlazione, la fase relativa all’assegnazione delle
magnitudo minima, propria e massima, che si sviluppa per ogni singolo fattore, è
direttamente seguita dalla richiesta di input relativa al numero dei livelli di
correlazione (per es. 4: A, B, C, D); ai loro coefficienti moltiplicativi (per es. A=2B,
B=2C, C=2D, D=1) e alla sommatoria (per es. 10).
La procedura di programma prosegue con l’assegnazione dei livelli di correlazione,
effettuata per ogni componente. In caso di assenza di correlazione si dovrà digitare
“0”.
Terminata questa fase di inserimento compariranno all’interno di una finestra i
risultati degli impatti elementari relativi ad ogni componente. E’ possibile scorrere
l’elenco utilizzando le frecce poste sul lato destro del riquadro.
A questo punto viene offerta sia l’opzione di stampa che quella di registrazione (dopo
la registrazione è sempre possibile stampare il file utilizzando la procedura descritta
al paragrafo 7). L’estensione dei file risultato è .RIS e la destinazione (drive e/o
directory) può essere prescelta con modalità analoghe alla fase di ricerca.
GRAFICO La rappresentazione grafica dei file elaborati avviene mediante il
caricamento del file progetto prescelto dopo averne eseguito il calcolo degli impatti
elementari.
Il grafico è del tipo ad istogrammi paralleli, con le componenti in ascissa e gli impatti
elementari in ordinata (Impatti elementari minimi, propri e massimi).
46
4.2 - Esempio di Report
Ecco un esempio dei dati in uscita al termine dell’elaborazione della valutazione di
impatto ambientale:
47
File Progetto:
48
49
50
51
52
53
File Componenti:
54
File Fattori:
55
File Grafico:
56