Sei sulla pagina 1di 53

MASTER DI SECONDO LIVELLO IN METODI E TECNICHE DI PREVENZIONE E CONTROLLO AMBIENTALE

TESI SPERIMENTALE DI MASTER

Progettazione e sviluppo di un applicativo Open Source come valida alternativa al modello previsionale ETERE

Relatore: Chiar.mo Prof. Claudio Schifani Tutor: Dott. Franco Andolfato

Studente: Massimo Rado Matricola n. VR 099011

A NNO ACCADEMICO 2010-2011

A Riccardo

Indice
1 Introduzione 1.1 Software proprietari utilizzati . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Unalternativa Open Source? . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Scopo di questo lavoro . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Panoramica sugli applicativi 2.1 Progetto ETERE . . . . . . . . . . . . . . . 2.1.1 Impianti radiobase, FM e TV . . . . . 2.1.2 Struttura del database centralizzato . 2.2 ArcView e RadMap . . . . . . . . . . . . . . 2.2.1 ArcView 3.x vs ArcGIS . . . . . . . 2.3 Ambiente Open Source . . . . . . . . . . . . 2.3.1 Sextante . . . . . . . . . . . . . . . . 2.3.2 Sistema geograco informativo gvSIG 2.4 Licenze Software . . . . . . . . . . . . . . . 3 Il parere radioprotezionistico 3.1 Individuazione dellimpianto . . . . 3.2 Caricamento dello shape degli edici 3.3 Selezione dellarea di simulazione . 3.4 Simulazione del campo elettrico . . 3.5 Criticit negli edici . . . . . . . . 3 3 3 3 5 5 5 6 8 8 9 9 9 10 11 11 11 11 11 12 13 13 13 15 17 18 23 23 23 26 26 26 28

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

4 Sviluppo del geoalgoritmo su Sextante 4.1 R.A.DO. : Radiating Antennas DOmain . . . . . . . . . 4.2 Algoritmo Horizontal Field Simulator . . . . . . . . . . 4.2.1 Parametri Iniziali . . . . . . . . . . . . . . . . . 4.2.2 Funzioni getValueDegrees e getTableFromName 4.2.3 Il cuore dellalgoritmo . . . . . . . . . . . . . . 4.2.4 Completamento dellalgoritmo . . . . . . . . . . 4.3 Ulteriori algoritmi da sviluppare . . . . . . . . . . . . . 4.4 Un esempio pratico . . . . . . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

5 Questionario su RadMap 5.1 Utilizzo di funzioni in RadMap . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 Utilizzo delle funzioni del Men Gestione Dati . . . . . . . . . . 5.1.2 Utilizzo delle funzioni del Men Analisi . . . . . . . . . . . . . . 1

5.2

5.3 5.4 5.5

5.1.3 Utilizzo delle funzioni del Men Visualizzazioni 5.1.4 Utilizzo delle funzioni del Men Archivio . . . . Funzionalit proposte . . . . . . . . . . . . . . . . . . . 5.2.1 Funzionalit 3D . . . . . . . . . . . . . . . . . . 5.2.2 Automatismi . . . . . . . . . . . . . . . . . . . 5.2.3 Modellizzazione di schiera di antenne . . . . . . Raggruppamento di funzioni . . . . . . . . . . . . . . . Tempi di attesa . . . . . . . . . . . . . . . . . . . . . . Suggerimenti . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

28 29 29 29 29 31 31 31 32 35 35 35 36 37 38 47 51

6 Conclusioni 6.1 Analisi dei costi . . . . . 6.2 Conformit del software 6.3 Il futuro ... 3D! . . . . 6.4 Ringraziamenti . . . . . A Codice Sorgente B Questionario su RadMap Bibliograa

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

Capitolo 1 Introduzione
Le agenzie regionali per la prevenzione e protezione ambientale (A.R.P.A.) hanno, tra le attivit istituzionali, anche quella di valutare i valori di campo elettromagnetico prodotto da stazioni di telefonia mobile e radiotelevisive nel territorio. A tale scopo utilizzano software di simulazione che adottano opportuni modelli di calcolo previsionale di diffusione di campo elettrico in funzione di diversi parametri caratteristici delle sorgenti.

1.1 Software proprietari utilizzati


L A.R.P.A Veneto (A.R.P.A.V.) in particolare adotta un software proprietario della Sinergis, chiamato RadMap che lavora in ambiente ArcView GIS 3.3. Come sar pi chiaro in seguito, qualsiasi intenzione di apportare modiche o evoluzioni allo stesso RadMap richiede uno sforzo economico notevole e conseguente reticenza allinnovazione.

1.2 Unalternativa Open Source?


Costi e sviluppo sono i due principali motivi per passare ad un applicativo Open Source. Solitamente si abbina alla losoa che porta allo sviluppo di questi software il vantaggio della gratuit, non considerando il grande vantaggio nel disporre liberamente del codice sorgente: dando la possibilit ad ogni singolo individuo di contribuire al miglioramento di un particolare programma, si facilita la nascita e crescita di intere comunit di appassionati e professionisti intorno ad ogni progetto di questo tipo garantendo, anche se informalmente, assistenza e sviluppo, soddisfando spesso le esigenze degli utilizzatori. Allo stato attuale si possono trovare tantissimi programmi sui pi disparati campi, e nello stesso settore si pu disporre di molteplici alternative con caratteristiche differenti a seconda delle esigenze.

1.3 Scopo di questo lavoro


Con questo lavoro, si vuole vericare se con gli strumenti e prodotti attualmente disponibili e realizzati dalla comunit Open Source si possa trovare o, se non disponibile, realizzare in tempi ragionevoli un software in grado di svolgere le funzioni necessarie ad

A.R.P.A.V. per adempiere al suo compito istituzionale in materia di radiofrequenze, senza pi ricorrere a prodotti proprietari con conseguenti vantaggi su diversi aspetti. Lambiente ritenuto pi adatto per sviluppare un progetto di questo tipo risultato Sextante, le cui caratteristiche saranno descritte successivamente in maniera dettagliata. Il tempo a disposizione e la complessit generale necessarie allimplementazione di un applicativo del genere sono tali da non poter fornire un prodotto pronto a sostituire in toto lattuale RadMap, ma questo studio ha portato alla realizzazione di quello che di fatto il cuore delalgoritmo, attorno al quale si possono sviluppare tutte le altre funzioni.

Capitolo 2 Panoramica sugli applicativi


Una descrizione delarchitettura informatica utilizzata in ARPAV per la raccolta, archi viazione e utilizzo dei dati radioelettrici risulta utile per capire la modalit di gestione dei dati implementata nel progetto di studio. Diverse considerazioni sono state fatte per la scelta degli applicativi Open Source, tenendo presente anche lapplicativo GIS attualmente in uso.

2.1 Progetto ETERE


Il progetto sviluppato da ARPAV e denominato ETERE [1] attivo dal 2001 con lo scopo di gestire i ussi informativi inerenti le stazioni di telecomunicazioni e permettere agli operatori dellagenzia di disporre di dati georeferenziati per lemissione di pareri radioprotezionistici. Il principale gestore dei dati un database georeferenziato degli impianti presenti sul territorio regionale condiviso tra i dipartimenti provinciali dellAgenzia. Per quanto riguarda la struttura del database, quello che pu interessare in questo contesto che si dispone di tre diverse tabelle ognuna contenente dati diversi ma intrinsecamente legate tra loro. Prima di elencarle per utile menzionare i tpi di impianti esistenti e le loro principali caratteristiche.

2.1.1 Impianti radiobase, FM e TV


Limpianto radiobase fornisce il servizio di telefonia mobile ed una struttura costituita da pi settori (solitamente 3) con direzione di radiazione diversa da settore a settore per coprire un intero angolo giro (nel caso pi frequente di 3 settori le direzioni differiscono di 120 gradi luna dallaltra). Ogni settore a sua volta provvisto di uno o pi servizi (GSM, DCS e/o UMTS) ognuno identicato come antenna dotata di un certo numero di trasmettitori/portanti con determinate potenze. Gli impianti di FM e TV sono invece caratterizzati da ununica antenna, o una schiera di antenne, che irradia in maniera pi o meno isotropa nel piano orizzontale con una propria potenza. In ogni caso, per poter procedere ad una simulazione del campo elettrico irradiato da queste sorgenti, devono essere forniti i diagrammi di antenna caratterizzati da una serie di valori di attenuazione della potenza sia sul piano orizzontale che su quello verticale. Nel diagramma verticale intrinsecamente indicato il tilt elettrico di una antenna, ottenuto 5

con opportuni sfasamenti dei dipoli costituenti lantenna stessa. Si misura in gradi e sta a indicare di quanto inclinata, nel piano verticale, la direzione di massima radiazione del lobo principale (g. 2.1). Questi diagrammi sono raggruppati in tabelle il cui nome descrive il modello, il servizio a cui si riferisce, per quanto riguarda le antenne radiobase (GSM, DCS o UMTS), riportando la frequenza di lavoro e il tilt elettrico. Ad esempio lantenna di modello ANT_A con servizio DCS e tilt elettrico di 6 gradi avr i diagrammi verticale e orizzontale in una tabella denominata ANT_A-1855-6.
0 330 1 0,8 0,6 0,4 0,2 270 0 90 180 0 0,2 0,4 0,6 0,8 1 0 30 240 270 300

300

60

210

330

240

120

150

30

210 180

150

120 90

60

Figura 2.1: Esempio di diagrammi di radiazione orizzontale e verticale

Altra cosa il tilt meccanico, che una inclinazione sica dellantenna, solitamente verso il basso per non disperdere troppo il segnale verso lalto. Questo parametro viene per indicato esplicitamente negli attributi della tabella antenne.

2.1.2 Struttura del database centralizzato


Risulter ora pi chiaro il signicato delle tabelle di cui dispone il database: 1. Tabella siti : contiene dati riguardanti limpianto di telecomunicazione nel suo complesso. In particolare si menzionano i campi identicatore univoco del sito; coordinate Gauss-Boaga fuso Ovest dellimpianto; quota sul livello del mare della base dellimpianto; 2. Tabella antenne: contiene i dati che caratterizzano il servizio (per la radiobase) o lantenna (per FM e TV). Di questi fanno parte altezza del centro elettrico; direzione di radiazione rispetto al Nord; tilt meccanico; coordinate Gauss-Boaga fuso Ovest dellantenna; 6

numero di trasmettitori per antenna; potenza per ogni trasmettitore; guadagno dantenna; riferimento allimpianto di cui fa parte; riferimento al modello dantenna; ag di antenna attiva (SI/NO) 3. Tabelle dei diagrammi di antenna: ad ogni modello di antenna corrisponde una di queste tabelle fornite di attenuazione verticale; attenuazione orizzontale; Ecco che risulta chiaro come nella tabella antenne i campi che fanno riferimento allimpianto e al modello dantenna permettono di denire quante antenne ci sono su un determinato impianto e le loro caratteristiche (g: 2.2) .

TABELLA SITI
ID SITO COORDINATA X COORDINATA Y QUOTA BASE IMPIANTO

ANT_A18556
GRADI ATT. VERTICALE ATT. ORIZZONTALE

TABELLA ANTENNE
COORDINATA X COORDINATA Y ALT. CENTRO ELETT. TILT MECCANICO T DIREZ. IRRADIAZIONE NUM.TRASMETTITORI
ATT. ORIZZONTALE

ID SITO MODELLO
ANTENNA

ANT_B9600
ATTIVA
GRADI

GUADAGNO
ATT. VERTICALE

POT.TRASMETTITORE

Figura 2.2: Schema semplicato delle relazioni tra tabelle del database Ci si pu domandare come mai ci siano coordinate sia nella tabella siti che nella tabella antenne; potrebbe sembrare una ridondanza se i due tipi di coordinate corrispondono. Nella maggior parte dei casi cos, ma ci sono situazioni in cui le coordinate del sito stanno a indicare una posizione ideale dellimpianto, dove per le singole antenne sono 7

situate in posizioni diverse, distanti anche qualche metro, luna dallaltra. Un esempio si ha nel caso di una installazione in cima ad una torre piezometrica. Le coordinate del sito indicano il centro della torre vista in pianta, mentre le coordinate delle antenne indicano punti dislocati sul bordo di esso, perch l sono installabili (g. 2.3).
111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 x1,y1 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 xs,ys 000000 111111 000000 00000000 11111111 111111 000000 00000000 11111111 111111 11111 000000 00000 00 11 111111 11111 000000 00000 111111 11111 000000 00000 111111 11111 000000 00000 x2,y2 111111 11111 000000 00000 111111 11111 000000 00000 111111 11111 000000 00000 111111 000000 111111111111 000000000000 111111 000000 111111111111 000000000000 111111 000000 x3,y3 000000 00000 111111100000 000000011111 111111 111111100000 000000011111 111111 000000 111111100000 000000011111 111111 000000 111111100000 000000011111 111111 000000 111111100000 000000011111 111111 000000 111111100000 000000011111 111111 000000 111111100000 000000011111 111111 000000 1111111 000000011111
POSIZIONE ANTENNE POSIZIONE SITO

Figura 2.3: Rappresentazione schematica di installazione su una torre piezometrica

2.2 ArcView e RadMap


Gli operatori Arpav dislocati nei diversi dipartimenti provinciali hanno a disposizione lapplicativo ArcView, con chiave hardware per lutilizzo esclusivo su singolo PC, per gestire i dati georeferenziati forniti dal database centrale. La vera e propria simulazione per pu essere implementata utilizzando una libreria di algoritmi forniti da ArcGIS Spatial Analyst utilizzabile anchesso tramite unapposita chiave hardware. Il software appositamente commissionato da Arpav per simulare la propagazione di campo elettrico utilizza queste librerie e prende il nome di RadMap. Questo applicativo integrato nellambiente GIS di ArcView 3.3 e mette a disposizione diverse funzioni realizzate ad hoc per interrogare il database, caricare tutti i dati necessari e aggiornare lo stesso database in caso di particolari modiche.

2.2.1 ArcView 3.x vs ArcGIS


E importante capire la netta distinzione tra ArcView 3.3 e lomonimo applicativo sotto ArcGIS, chiamato ArcGIS ArcView, che non sempre ben compresa. Il primo quello attualmente utilizzato in ARPAV e permette di scrivere estensioni personalizzate utilizzando un linguaggio chiamato Avenue. Con tale linguaggio sono state realizzate le funzioni di simulazione di campo elettrico raggruppate sotto il nome di RadMap. ArcGIS ArcView invece la versione base desktop che, come tutte le versioni pi avanzate della suite Arc GIS, ha come linguaggio di programmazione per le estensioni il Visual Basic. Si pu comprendere quindi che evolvere ad un applicativo pi recente (attualmente disponibile la versione ArcGIS ArcView 9.x) comporta una riscrittura del codice di RadMap da Avenue a Visual Basic1 ; tale lavoro richiederebbe un dispendio di risorse umane ed
1 Interessanti

testimonianze a riguardo si possono trovare su http///gislounge.com/why-arcview-3x-is-

still-in-use/

economico notevole.

2.3 Ambiente Open Source


Ci che si vuole sostituire con un programma equivalente Open Source appunto RadMap, e non stato difcile rendersi conto che non era disponibile niente di simile. Si trovano infatti programmi che calcolano il campo elettrico fornendo gli opportuni dati radioelettrici, ma erano tutti a s stanti e non integrati in ambienti GIS dove georeferenziare limpianto nel territorio previsto e valutare il campo prodotto nelle abitazioni circostanti.

2.3.1 Sextante
Un software dotato di una ricca libreria di tools per lanalisi geograca, programmabili in Java, viene rilasciato come estensione di diversi sistemi informativi geograci (GIS); il suo nome Sextante ma non aveva tra i suoi cosiddetti geoalgoritmi un simulatore di campo elettrico. Si scelto comunque di implementare in Sextante2 le funzioni atte a simulare il campo elettrico per rendere tale geoalgoritmo un valido sostituto di RadMap. Vi una buona documentazione [2] per capire le basi e lo stesso realizzatore, Victor Olaya, e la comunit di appassionati hanno fornito numerosi geoalgoritmi3 per le necessit pi diverse, dai quali si pu trarre suggerimenti per crearne altri.

2.3.2 Sistema geograco informativo gvSIG


Il grande pregio di Sextante la facile integrazione in ambienti GIS, sia proprietari che Open Source: ArcGis, Glob3, OpenJUMP, BeETLe, 52North WPS, gvSIG, Grass, GeoTools. Tra questi non vi ArcView 3.3 (come precisato precedentemente ArcGis ArcView differente), quindi si ritenuto opportuno pensare di sostituire anchesso con un sistema informativo geograco Open Source. Tra quelli disponibili la scelta caduta su gvSIG che come interfaccia utente (g.2.4) e raggruppamento logico delle funzioni si avvicina molto al gi utilizzato ArcView, rendendo pi facile un eventuale passaggio a questo ambiente per gli operatori. Il sistema gvSIG [3] stato realizzato dal Ministero Regionale delle Infrastrutture e dei Trasporti di Valencia, e attualmente in crescente diffusione. La versione utilizzata in questo contesto la 1.11, la pi recente, e comprende gi nel pacchetto di installazione la libreria di Sextante.
questo lavoro stata utilizzata la versione 0.6 si possono trovare i codici java dei geoalgoritmi http://forge.osor.eu/plugins/scmsvn/viewcvs.php/?root=sextante
3 Qui 2 In

della

libreria

Sextante:

Figura 2.4: Schermata di gvSIG 1.11

2.4 Licenze Software


Sextante prodotto sotto licenza MIT4 che permette di ridistribuire il codice senza dare importanza al fatto che sia usato o meno in programmi proprietari. Il programma gvSIG rilasciato sotto licenza GPLv25 , GNU Public License versione 2. la licenza per software libero pi conosciuta e diffusa al mondo. possibile far girare Sextante con gvSIG in quanto la licenza MIT del tipo compatibile GPL. Il geoalgoritmo sviluppato viene rilasciato sotto licenza GPLv2.

dicitura da anteporre a un codice sorgente per la licenza MIT la trovate in www.opensource.org/licenses/mit-license.php 5 la dicitura da anteporre a un codice sorgente per la licenza GPL versione 2 la trovate in www.opensource.org/licenses/GPL-2.0

4 la

10

Capitolo 3 Il parere radioprotezionistico


Descrivere i passi fondamentali da eseguire per una corretta simulazione del campo elettrico aiuta nello sviluppo dellalgoritmo che dovr svolgere questo compito.

3.1 Individuazione dellimpianto


Il primo passo lindividuazione dellimpianto oggetto di studio. Dal database centralizzato si scaricano i siti georeferenziati (impianti) e con una opportuna query si seleziona limpianto di interesse. previsto che ad ogni sito siano associate le antenne con le proprie caratteristiche tra cui il modello di antenna dal quale ricavare il diagramma di radiazione.

3.2 Caricamento dello shape degli edici


Lo scopo principale del parere radioprotezionistico quello di individuare eventuali edi ci abitativi o adibiti a ufci in cui il campo elettrico simulato superi una certa soglia prevista dalla legge. Si ritiene quindi necessario caricare nella vista del progetto uno shape degli edici nellintorno dellimpianto. Lattributo pi importante di questo shape laltezza degli edici, perch a diverse altezze dal suolo si avranno diversi valori di campo elettrico. Nella maggior parte delle situazioni in cui gli impianti sono radiobase, il campo elettrico solitamente cresce allontanandosi dal suolo.

3.3 Selezione dellarea di simulazione


Si deve scegliere unarea di analisi che corrisponder allestensione geograca che si desidera coprire dalla simulazione. La scelta consueta un quadrato di qualche centinaio di metri di lato centrato sul sito.

3.4 Simulazione del campo elettrico


A questo punto viene lanciata la vera e propria simulazione in cui, cella per cella, si calcola il campo elettrico prodotto dallimpianto. Tale valore dipende dai dati radioelettrici 11

delle singole antenne e dalla distanza dal centro elettrico delle stesse secondo la formula: Z0 P G AO AV E= 4 r2 con: Z0 = impedenza donda nel vuoto (377 ) r = distanza dal centro elettrico dellantenna P = potenza efcace massima G = guadagno dellantenna nella direzione di massima radiazione AO= attenuazione sul piano orizzontale AV= attenuazione sul piano verticale Questo algoritmo unapprossimazione del campo elettrico in condizioni di campo lontano, nel qual caso vi diretta proporzionalit tra campo elettrico e campo magnetico: H= E Z0

Bisogna inoltre considerare che non vi quasi mai una sola antenna attiva nello stesso impianto, e che altri impianti si potrebbero voler considerare nella simulazione, siano essi interni o esterni allarea precedentemente scelta. Si deve valutare pertanto il campo elettrico totale come sommatoria di tutti i contributi secondo la legge della somma quadratica: [ ]1 E= con: E = valore del campo elettrico complessivo Ei = valore del campo elettrico generato dal i-esimo impianto Per ogni cella costituente larea di analisi va sviluppato il calcolo per ogni antenna che si vuole considerare e sommare quadraticamente tutti i contributi. da evidenziare che la distribuzione di campo elettrico cos simulata riferita ad unaltezza ben precisa, ottenendo quindi una cosiddetta sezione orizzontale. Per ottenere una sezione orizzontale a una diversa altezza dal suolo si ripete il calcolo precedente tenendo presente che variano, a parit di coordinate (x,y) della cella nel piano, la distanza r e il valore di AV . Il parere radioprotezionistico prevede di produrre diverse sezioni orizzontali, a partire da un paio di metri dal suolo no a 2 metri sopra la gronda delledicio pi alto con un passo di 3 metri. Cos facendo si simula il valore di campo elettrico a 2 metri di altezza da ogni piano degli edici.

Ei
i

3.5 Criticit negli edici


Situazioni critiche si hanno quando la simulazione fornisce campo elettrico sopra i valori limite imposti dalla legge allinterno degli edici nellintorno del sito oggetto di studio. Per evidenziare rapidamente queste criticit il programma controlla se allinterno delle sagome degli edici dello shape caricato ci siano celle con valori di campo eccedenti il valore limite. 12

Capitolo 4 Sviluppo del geoalgoritmo su Sextante


La libreria di Sextante attualmente molto ricca e comprende strumenti sia per lelaborazione elementare di dati spaziali sia per operazioni pi complesse e articolate. Dal toolbox di Sextante si accede a questi geoalgoritmi raggruppati per argomenti. (g. 4.1 ). Se nel progetto su cui si sta lavorando non sono attive tipologie di layers richieste dallalgoritmo, questultimo viene visualizzato in grigio e non selezionabile. Se tutti gli algoritmi di un intero gruppo si trovano in questo stato, il nome del gruppo stesso risulta grigio ma comunque espandibile. Gli argomenti aiutano a identicare pi velocemente il settore inerente alle operazioni che si vuole far eseguire sui propri dati geograci, come anche la nestra di ricerca. Ci sono gruppi che contengono tools speciche per tipologia di dati, ad esempio Raster creation tools, altri invece che accorpano funzioni per uno specico scopo, come Geomorphometry and terrain analysis.

4.1 R.A.DO. : Radiating Antennas DOmain


Nel contesto del campo elettromagnetico non vi ancora nessun algoritmo a riguardo, quindi si pensato di creare un gruppo che contenesse lalgoritmo oggetto di questo lavoro e tutti quelli futuri inerenti lelettromagnetismo legato alla georeferenziazione. La denomi nazione scelta stata Radiating Antennas DOmain cio Settore delle Antenne Radianti .

4.2 Algoritmo Horizontal Field Simulator


La principale funzione che si vuole implementare per poi sviluppare in futuro le altre correlate, quella che effettua il calcolo del campo elettrico totale su un piano orizzontale. Come gi precedentemente accennato, non vi nessun algoritmo che svolga tale compito, quindi facendo riferimento ad un buon manuale realizzato dallo stesso ideatore di Sextante [4] e prendendo ispirazione dai geoalgoritmi gi realizzati, si proceduto alla progettazione e programmazione del codice. Il codice scritto in Java ed disponibile a tutti, modicabile e ridistribuile secondo le condizioni dettate dalla GNU Public License version 2.

13

Figura 4.1: Raggruppamento dei geoalgoritmi nella Toolbox di Sextante Dati necessari per il funzionamento del geoalgoritmo Anche se pensato inizialmente per lutilizzo in ARPAV e quindi nel contesto del database centralizzato del progetto ETERE, si voluto progettarlo in modalit stand alone, cosicch chiunque possa utilizzarlo senza disporre di una architettura informatica prestabilita. Si comunque pensato di mantenere la relazione tabellare (vedi g: 2.2) in modo tale che una eventuale interfaccia futura conforme alla struttura di ETERE possa essere agevolmente implementata. Lintero codice dellalgoritmo riportato in appendice A. Valutiamo in dettaglio le varie parti di codice per capirne meglio le operazioni che svolge.

14

4.2.1 Parametri Iniziali


Allinterno di una opportuna funzione prestabilita da Sextante, deneCharacteristics() si deniscono il nome dellalgoritmo, il gruppo a cui appartiene, la possibilit di lasciar decidere allutente lestensione che deve avere il raster in uscita, input, parametri e output necessari per poter svolgere i compiti richiesti. Gli input richiesti sono: layer di punti che rappresenta i siti localizzati nel territorio (la tabella degli attributi corrisponde alla tabella siti); tabella che contiene le informazioni sulle antenne (tabella antenne); una tabella per ogni modello dantenna contenente le attenuazioni verticali e orizzontali (tabelle dei diagrammi dantenna). La prima parte di codice di questa funzione quindi: public void defineCharacteristics() { setGeneratesUserDefinedRasterOutput(true); setGroup(Sextante.getText("Radiating Antennas DOmain")); setName(Sextante.getText("Horizontal Field Simulator")); try { m_Parameters.addInputVectorLayer(INPUTPOINT, Sextante.getText("Point layer of sites"), AdditionalInfoVectorLayer.SHAPE_TYPE_POINT,true); m_Parameters.addInputTable(ANTENNASTABLE, Sextante.getText("Antennas List"), true); m_Parameters.addMultipleInput(ANTENNASCHART, Sextante.getText("Antenna Charts files"), AdditionalInfoMultipleInput.DATA_TYPE_TABLE,true); ... Il programma deve sapere a quali colonne delle tabelle inserite corrispondono i campi su cui deve lavorare; ci possono essere tre criteri e uno di questi deve essere scelto in fase di progettazione del software: 1. Le colonne delle varie tabelle che vengono utilizzate devono essere posizionate con un ordine ben denito (ad esempio per la tabella delle antenne la prima colonna deve corrispondere al modello dantenna, la seconda alla direzione di radiazione ecc.); 2. Le colonne delle varie tabelle devono avere un nome ben preciso (ad esempio per la tabella delle antenne la colonna del modello dantenna deve chiamarsi modant, quella della direzione di radiazione direz, ecc. 3. La corrispondenza tra colonne e campi si denisce alla chiamata del programma, quando vengono richiesti gli input. Per dare maggior essibilit allutilizzatore si scelto il terzo criterio, con lunico svantaggio che linserimento dei dati si dilunga, ma una volta inseriti i parametri, questi si ripresentano di default ogni qualvolta si richiama lalgoritmo. Il codice prosegue con: 15

... m_Parameters.addTableField(FIELDIDSITEPOINT, Sextante.getText("IDsite column"), INPUTPOINT); m_Parameters.addTableField(FIELDACTIVE, Sextante.getText("ACTIVE column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDANTMOD, Sextante.getText("Antenna Model column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDNTX, Sextante.getText( "Transmitters number column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDPOWTX, Sextante. getText("Power per input column"),ANTENNASTABLE); m_Parameters.addTableField(FIELDTILT,Sextante. getText("Mechanical Tilt column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDDIRECTION,Sextante. getText("Direction (from NORD)"), ANTENNASTABLE); m_Parameters.addTableField(FIELDXANT, Sextante. getText("X position column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDYANT, Sextante. getText("Y position column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDIDSITE,Sextante. getText("IDSITE column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDGAIN,Sextante. getText("Gain antenna column"), ANTENNASTABLE); m_Parameters.addString(HATT, Sextante.getText( "Horizontal Attenuation Columns name [dB]")); m_Parameters.addString(VATT, Sextante.getText( "Vertical Attenuation Columns name [dB]")); ... Vengono poi deniti gli output che genera lalgoritmo e alcuni controlli di cattura delle eccezioni. ... addOutputRasterLayer(EFIELD, Sextante.getText( "Result")); addOutputTable(TABLERESULT,"Tabella Dati"); } catch (final RepeatedParameterNameException e) { Sextante.addErrorToLog(e); } catch (final OptionalParentParameterException e) { Sextante.addErrorToLog(e); } catch (final UndefinedParentParameterNameException e) { Sextante.addErrorToLog(e); 16

} }

4.2.2 Funzioni getValueDegrees e getTableFromName


Prima di procedere alla descrizione del vero e proprio algoritmo, utile menzionare i compiti di due funzioni che vengono chiamate allinterno di esso. La funzione getValueDegrees fornisce langolo che c tra 2 punti le cui cordinate x e y sono fornite in ingresso secondo la convenzione rappresentata in g. 4.2 .
X2,Y2

X1,Y1

Figura 4.2: Convenzione di angolo tra due punti passati come argomento nella funzione getValueDegrees Nel caso specico, ci interessa sapere langolo tra il punto rappresentante unantenna e la cella di turno alla quale verr attribuito un valore di campo elettrico; Questangolo infatti, ci servir per ricavare la corrispondente attenuazione in campo orizzontale attribuita alla stessa antenna. Di seguito il codice della funzione: protected int getValueDegrees(final double xCell,final double yCell, final double xAntenna, final double yAntenna) { double degrees; degrees = Math.toDegrees(Math.atan2((xCell - xAntenna), (yCell - yAntenna))); if (degrees <0) degrees += 360; return (int) Math.round(degrees); } La funzione getTableFromName ha lo scopo di fornire una specica colonna di una tabella di cui viene passato come parametro il nome, contenuta in un array di tabelle. Il suo utilizzo specico per ricavare le colonne di attenuazione verticale e orizzontale dei diagrammi di antenna richiesti. Per esteso viene riportato il codice: private Object[] getTableFromName(final ArrayList<?> arraytable, final String sName, final int index) throws IteratorException { 17

final Object[] valuesTable; Object[] recordTable; for (int i=0;i < arraytable.size();i++){ final ITable table = (ITable) arraytable.get(i); int indTable = 0; if (table.getName().equals(sName)){ int iTableCount = (int) table.getRecordCount(); valuesTable = new Object[iTableCount]; final IRecordsetIterator iter4 = table.iterator(); while (iter4.hasNext() && setProgress(indTable, iTableCount)) { recordTable = iter4.next().getValues(); valuesTable[indTable] = recordTable[index]; indTable++; } return valuesTable; } } return null; }

4.2.3 Il cuore dellalgoritmo


Allinterno della funzione predenita processAlgorithm risiede il cuore dellalgoritmo, che si ritiene opportuno descrivere dettagliatamente. Inizialmente vengono attribuite a delle variabili i parametri forniti allavvio del programma dallutente. public boolean processAlgorithm() throws GeoAlgorithmExecutionException { final String sFields[] = { Sextante.getText("0"), Sextante.getText("1"), Sextante.getText("2"), Sextante.getText("3"), Sextante.getText("4"), Sextante.getText("5"), Sextante.getText("6"), Sextante.getText("7"), Sextante.getText("8"), Sextante.getText("9"), Sextante.getText("10") }; final Class<?> iTypes[] = { Integer.class, String.class, Double.class, Integer.class, Double.class, Integer.class, Integer.class, Double.class, Double.class, Integer.class, Double.class }; final ITable antennastable = m_Parameters. getParameterValueAsTable(ANTENNASTABLE); final int iFieldactive = m_Parameters. getParameterValueAsInt(FIELDACTIVE); final int iFieldantmod = m_Parameters. getParameterValueAsInt(FIELDANTMOD); 18

final int iFieldntx = m_Parameters. getParameterValueAsInt(FIELDNTX); final int iFieldpowtx = m_Parameters. getParameterValueAsInt(FIELDPOWTX); final int iFieldtilt = m_Parameters. getParameterValueAsInt(FIELDTILT); final int iFielddirection = m_Parameters. getParameterValueAsInt(FIELDDIRECTION); final int iFieldxant = m_Parameters. getParameterValueAsInt(FIELDXANT); final int iFieldyant = m_Parameters. getParameterValueAsInt(FIELDYANT); final int iFieldidsite = m_Parameters. getParameterValueAsInt(FIELDIDSITE); final int iFieldgain = m_Parameters. getParameterValueAsInt(FIELDGAIN); final ArrayList<?> antennaschart = m_Parameters. getParameterValueAsArrayList(ANTENNASCHART); final String Fieldhatt = m_Parameters. getParameterValueAsString(HATT); final String Fieldvatt = m_Parameters. getParameterValueAsString(VATT); ITable arr = (ITable) antennaschart.get(0); int iFieldhatt = arr.getFieldIndexByName(Fieldhatt); int iFieldvatt = arr.getFieldIndexByName(Fieldvatt); point_Layer = m_Parameters. getParameterValueAsVectorLayer(INPUTPOINT); final int iFieldidsitepoint = m_Parameters. getParameterValueAsInt(FIELDIDSITEPOINT); final IRasterLayer efield; efield = getNewRasterLayer(EFIELD,Sextante. getText("E-Field"), IRasterLayer. RASTER_DATA_TYPE_DOUBLE); final ITable tableResult = getNewTable( TABLERESULT, "tabella", iTypes, sFields); ... Si denisce lestensione del raster di uscita: GridExtent extent = new GridExtent(efield); int iNX, iNY; iNX = efield.getWindowGridExtent().getNX(); iNY = efield.getWindowGridExtent().getNY(); Si procede alle dichiarazioni delle variabili interne: setProgressText(Sextante.getText( "Interpolating")); 19

double x1,y1; int indsite = 0; Object[][] values; int idsite; int iShapeCount = point_Layer. getShapesCount(); int iRecordCount = (int) antennastable. getRecordCount(); values = new Object[iRecordCount][11]; int x, y; int indant; int indcor = 0; Object[] record; A questo punto si procede con il primo ciclo che identica quanti siti sono da analizzare, creando una tabella temporanea nella quale vengono riassunte tutte le antenne che devono far parte della simulazione. Nella sostanza si prende nota dellattributo IDsite column e si popola la tabella di tutti i campi della tabella antenne che si riferiscono a quel specico impianto. Attenzione: se nel layer dei siti non viene fatta nessuna selezione, il programma considera nella simulazione tutti i siti. Viceversa, se una o pi selezioni sono state fatte, vengono considerati i siti selezionati, e solo quelli, nella simulazione. IFeatureIterator iter2 = point_Layer.iterator(); while (iter2.hasNext() && setProgress(indsite, iShapeCount)) { IFeature featuresite = iter2.next(); idsite = Integer.parseInt(featuresite.getRecord(). getValue(iFieldidsitepoint).toString()); indant = 0; /*Creating matrix of antennas data */ final IRecordsetIterator iter3 = antennastable. iterator(); while (iter3.hasNext() && setProgress(indant, iRecordCount)) { record = iter3.next().getValues(); if (Integer.parseInt(record[iFieldidsite]. toString())==idsite && (Integer.parseInt( record[iFieldactive].toString())) > 0){ values[indcor][0] = Integer.parseInt( record[iFieldactive].toString()); values[indcor][1] = record[iFieldantmod]. toString(); values[indcor][2] = Double.parseDouble (record[2].toString()); values[indcor][3] = Integer.parseInt 20

(record[iFieldntx].toString()); values[indcor][4] = Double.parseDouble (record[iFieldpowtx].toString()); values[indcor][5] = Integer.parseInt (record[iFieldtilt].toString()); values[indcor][6] = Integer.parseInt (record[iFielddirection].toString()); values[indcor][7] = Double.parseDouble (record[iFieldxant].toString()); values[indcor][8] = Double.parseDouble (record[iFieldyant].toString()); values[indcor][9] = Integer.parseInt (record[iFieldidsite].toString()); values[indcor][10] = Double.parseDouble (record[iFieldgain].toString()); tableResult.addRecord(values[indcor]); indcor++; } indant++; } indsite++; } Con la tabella temporanea contenente i soli dati di interesse per la simulazione si pu procedere al recupero dei diagrammi di antenna corrispondenti: indcor = (int) tableResult.getRecordCount(); Object[][] horAttTable; Object[][] vertAttTable; double horAtt; double vertAtt; double horAttDB; double vertAttDB; double gain = 0; int degResult = 0; double distResult = 0; double totPow; double gainDB; horAttTable = new Object[indcor][360]; vertAttTable = new Object[indcor][360]; //select antenna model file for (indant = 0; indant < indcor; indant++) { horAttTable[indant] = ((getTableFromName (antennaschart,values[indant][1].toString()+ ".dbf",iFieldhatt))); vertAttTable[indant] = ((getTableFromName 21

(antennaschart,values[indant][1].toString()+ ".dbf",iFieldvatt))); } Si comincia ora a calcolare per ogni cella il valore di campo elettrico totale dovuto a tutte le antenne ritenute candidate alla simulazione, tenendo anche conto del ag che indica la attivazione o meno della singola antenna (richiesta come ACTIVE column tra i parametri iniziali: for (y = 0; (y < iNY) && setProgress(y, iNY); y++){ for (x = 0; x < iNX; x++) { double EFieldsqr = 0; for (indant = 0; indant < indcor; indant++) { if (Integer.parseInt(values[indant][0]. toString()) > 0){ //distance from sites x1 = (Double) values[indant][7]; y1 = (Double) values[indant][8]; Point2D pointCell = extent. getWorldCoordsFromGridCoords(new GridCell(x, y, 0)); Point2D pointAntenna = new Point2D.Double(x1,y1); degResult = getValueDegrees(pointCell. getX(), pointCell.getY(), pointAntenna. getX(), pointAntenna.getY()); distResult = pointCell.distance( pointAntenna); int newDeg = degResult - (Integer) values[indant][iFielddirection]; if (newDeg < 0 ) newDeg += 360; horAttDB = (Double) horAttTable [indant][newDeg]; horAtt = (Double) Math.pow(10, (horAttDB/10)); vertAttDB = (Double) vertAttTable [indant][0]; vertAtt = (Double) Math.pow(10, (vertAttDB/10)); gainDB = (Double) values[indant][10] + 2.14; gain = (Double) Math.pow(10,(gainDB/10)); totPow = Double.parseDouble(values[indant][3]. toString()) * Double.parseDouble(values[indant] [4].toString()); EFieldsqr = EFieldsqr +(377*totPow*vertAtt* 22

horAtt*gain/(4*Math.PI*distResult*distResult)); } efield.setCellValue(x, y, Math.sqrt(EFieldsqr)); } } } return !m_Task.isCanceled(); }

4.2.4 Completamento dellalgoritmo


Nel codice non viene tenuto conto del tilt meccanico, infatti i calcoli sono eseguiti con attenuazione verticale corrispondente a O gradi. A questo valore dovrebbe essere aggiunto un offset che per dipende dalla distanza dellantenna sorgente; non eccessivamente complicato ma richiede un p di tempo e attenzione nella verica della correttezza dei dati.

4.3 Ulteriori algoritmi da sviluppare


Per poter effettuare pi sezioni orizzontali a varie altezze, si pu reiterare questo geoalgoritmo aggiungendo un controllo di altezza, dove si considera laltezza del centro elettrico dellantenna e la quota base dellimpianto. Un ulteriore funzione quella del controllo di criticit degli edici; una volta importato lo shape degli edici e prodotto le diverse sezioni orizzontali, si procede con algoritmi gi esistenti (per esempio quelli di visibilit) o, se il caso, modicarli opportunamente per raggiungere lo scopo. Per ottenere quelli che vengono indicati come proli verticali, dovrebbe essere sufciente implementare pi volte lalgoritmo per la sezione orizzontale tenendo conto di unestensione di uscita non areale, ma lungo una linea scelta.

4.4 Un esempio pratico


In gvSIG si crea un nuovo progetto e si carica un layer di punti indicanti i siti in una certa zona denominato siteslist.shp. In tab. 4.1 riportata la sua tabella degli attributi (alcune cifre delle coordinate sono state sostituite con delle lettere per mantenere la riservatezza delle informazioni): Si importa anche la tabella che contiene le informazioni sulle antenne associate ai vari impianti, qui denominata antennaslist.dbf (tab. 4.2). Per il corretto funzionamento bisogna caricare anche le tabelle dei modelli di antenna elencati in antennaslist.dbf. In questo caso abbiamo antA-947-6.dbf, antA-1855-6.dbf, antA-2140-6.dbf e antB-960-0.dbf. Viene riportata come esempio la tabella antA-9476.dbf (tab. 4.3). Qui risulta evidente dal valore di attenuazione verticale a 6 gradi, come il tilt elettrico sia pari appunto a 6.

23

CODSITO site1 site2 site3 site4 site5 site6 site7 site8

Z_SITO 118.0 113.0 113 .0 113.0 113.0 112.0 115.0 113.0

X_SITO 174XX06 174XX20 174XX20 174XX20 174XX20 174XX78 174XX72 174XX78

Y_SITO 508YY78 508YY70 508YY70 508YY70 508YY70 508YY11 508YY11 508YY11

IDSITO 120679 141319 664360 188870 210261 112626 114628 116614

Tabella 4.1: Tabella degli attributi di siteslist.shp


ATTI VA 1 1 1 1 1 1 1 1 1 1 1 1 ID MOD antA1855-6 antB960-0 antA947-6 antA2140-6 antB960-0 antA1855-6 antA947-6 antA2140-6 antB960-0 antA1855-6 antA947-6 antA2140-6 H 35.0 36.0 35.0 35.0 36.0 35.0 35.0 35.0 36.0 35.0 35.0 35.0 N TX 4 6 5 3 6 4 5 3 6 4 5 3 POT TX 10.0 10.0 10.0 18.0 10.0 10.0 10.0 18.0 10.0 10.0 10.0 18.0 TILT 0 0 0 0 0 0 0 0 0 0 0 0 DIRE ZIONE 10 15 10 10 110 110 110 110 225 230 230 230 X ANT 174XX78 174XX20 174XX78 174XX78 174XX20 174XX78 174XX78 174XX78 174XX17 174XX78 174XX78 174XX78 Y ANT 508YY11 508YY71 508YY11 508YY11 508YY71 508YY11 508YY11 508YY11 508YY68 508YY11 508YY11 508YY11 ID SITO 116614 210261 116614 116614 210261 116614 116614 116614 210261 116614 116614 116614 GUADA GNO 15.88 16.01 13.85 15.98 16.01 15.88 13.85 15.98 16.01 15.88 13.85 15.98

Tabella 4.2: Tabella antennaslist.dbf Dalla tabella antennaslist.dbf si evince che vi sono 2 siti, uno con tre antenne direzionate a 15 , 110 e 225 rispetto al Nord, laltro con 3 antenne per ogni settore e direzionate a 10 , 110 e 230 rispetto al Nord. Una volta a disposizione tutti i dati e prima di lanciare lalgoritmo, bisogna denire lestensione che deve avere la simulazione. Solitamente la si vuole centrare su un sito, e in questo caso viene preso come oggetto di studio il sito site8. Va quindi selezionato solo quel sito e utilizzando la funzione Fixed distance buffer della libreria di Sextante, si imposta la distanza, cio il raggio del buffer, ad esempio a 200 m., e si seleziona la casella che non arrotonda il poligono risultante. In tal modo si disporr di un buffer che non circolare ma quadrato. Attenzione: In ArcView 3.3 c una analoga funzione con lunica differenza che crea circonferenze e non quadrati. In questo caso lutente pu produrre la circonferenza e poi creare un quadrato circoscritto alla circonferenza come area di analisi. Unalternativa utilizzare una funzione di RadMap che da un punto selezionato sulla vista, crea un quadrato centrato su di esso. In entrambi i casi per si riportano due imprecisioni differenti: nel primo caso non precisa larea di analisi perch loperazione di circoscrizione alla circonferenza manuale; nel secondo caso larea precisa ma non la centratura sul 24

GRADO 0 1 2 3 4 (tab. 4.1) 179 180 181 357 358 359

ATTODB 0.0 0.0 0.0 -0.0100002 -0.0200018 -36.161846 -36.382721 -36.53647 -0.0500004 -0.0300002 -0.0200018

ATTVDB -3.6299987 -2.4700022 -1.5499999 -0.8400006 -0.3400008 -42.441251 -43.467874 -41.426675 -8.7000092 -6.71001 -5.0299981

Tabella 4.3: Tabella antA-947-6.dbf sito, perch fatta su mappa e non in base alle coordinate. Si vogliono successivamente scegliere i siti che si ritengono attivi nella simulazione e che quindi devono essere selezionati nello shape le siteslist.shp. Nel caso riportato, oltre al site8 si seleziona anche il site5. Ora si lancia lalgoritmo Horizontal Field Simulator e si introducono i dati richiesti. Il risultato della simulazione riportato in g. 4.3 .

Figura 4.3: Output della simulazione

Si possono vedere distintamente i tre lobi prodotti dalle serie di antenne in tre direzioni diverse, e un lobo proveniente dallaltro sito selezionato, ma esterno allarea di analisi. 25

Capitolo 5 Questionario su RadMap


lecito domandarsi se un sostituto di RadMap debba disporre di tutte le funzioni del suo predecessore, se alcune sono superue o se ne servirebbero delle altre. Per avere una risposta, stato sottoposto un questionario (vedi App. B ) ai 20 operatori di ARPAV che si occupano di pareri radioprotezionistici da diverso tempo. Hanno risposto 17 persone su 20, quindi un numero rappresentativo della totalit pari all 85%. Il questionario si compone di quesiti sulla frequenza di utilizzo delle funzioni a disposizione in RadMap, sull utilit probabile di nuove funzioni e inne proposte e suggerimenti ai ni di migliorare le operazioni di simulazione.

5.1 Utilizzo di funzioni in RadMap


Da unanalisi accurata di questi dati si pu dare la massima priorit nellimplementazione di funzioni la cui risposta ha avuto come maggioranza Sempre e sviluppare solo per ultime le funzioni mai utilizzate dalla maggioranza degli utenti.

5.1.1 Utilizzo delle funzioni del Men Gestione Dati


In tabella 5.1 sono riportate le risposte in percentuale sulle funzioni del Men Gestione Dati. Si pu dedurre che le funzioni Export XML siti e Import XML siti sono usate saltua riamente da qualche operatore ma per la maggior parte non vengono utilizzate. Altre funzioni sono, da percentuali simili di utenti, o sempre utilizzati o mai. Queste situazioni apparentemente anomale si possono probabilmente spiegare col fatto che, alcune di queste funzioni sono presenti nel men ma non ancora implementate; pertanto un operatore pu aver risposto pensando alla situazione reale, o ipotizzando la frequenza di utilizzo nel caso questa funzione fosse abilitata. La funzione Aggiornamento edici SDE una di queste.

26

Funzione
*Queste funzioni, sebbene siano utilizzate sempre, sono state comunque riportate per completezza. Si prega di rispondere ugualmente

Mai

Solo in casi particolari 0 0 23.53 23.53 17.65 5.88 29.41 47.06 0 41.18 35.29 5.88 11.76 11.76 17.65 5.88 29.41 35.29 82.35 35.29 35.29

Sempre

1 2 3 4 5 6 7 8 9 9a 9b 10 11 12 13 14 15 16 17 18 19

Men: Gestione Dati Aggiungi Edici* 0 Scelta edici di simulazione* 0 Aggiungi storico edici 52.94 Ricerche storico edici 58.82 Dati edici 17.65 Aggiornamento edici SDE 41.18 Elimina edici selezionati da SDE 41.18 Conguraz. ambiente di simulazione 35.29 Importa Sorgenti* 0 Importa solo le antenne attive 47.06 Importa solo i siti dellarea di analisi 64.71 Aggiorna database 0 Export XML siti 76.47 Import XML siti 88.24 Cerca siti di interesse 64.71 Modica Siti 11.76 Report Siti Selezionati 35.29 Elimina siti non selezionati 29.41 Nuovo modello di Antenna 0 Crea tabella indicatori nel volume 52.94 Aggiorna modelli di antenna locali 64.71

100 100 23.53 17.65 64.71 52.94 29.41 17.65 100 11.76 0 94.12 11.76 0 17.65 82.35 35.29 35.29 17.65 11.76 0

Tabella 5.1: Risposte riferite al men Gestione Dati

27

5.1.2 Utilizzo delle funzioni del Men Analisi


In tabella 5.2 sono riportate le risposte in percentuale sulle funzioni del Men Analisi. Funzione
*Queste funzioni, sebbene siano utilizzate sempre, sono state comunque riportate per completezza. Si prega di rispondere ugualmente

Mai Men: Analisi

Solo in casi particolari 58.82 41.18 17.65 76.47 0 5.88 23.53 47.06 23.53

Sempre

20 21 22 23 24 25 26 27 28

Valutazione Indicatori Ricerca punti critici Campo orizzontale Campo Verticale Studio Sito* Wizard studio sito* Campo su Quadro Unione Rimuovi Risultati Nuova simulazione

0 47.06 0 5.88 0 52.94 76.47 41.18 70.59

41.18 11.76 82.35 17.65 100 41.18 0 11.76 5.88

Tabella 5.2: Risposte riferite al men Analisi

Da questi risultati si denota la priorit di implementare la funzione Campo Verticale rispetto ad esempio a Campo su Quadro Unione.

5.1.3 Utilizzo delle funzioni del Men Visualizzazioni


In tabella 5.3 sono riportate le risposte in percentuale sulle funzioni del Men Visualizzazioni. Funzione
*Queste funzioni, sebbene siano utilizzate sempre, sono state comunque riportate per completezza. Si prega di rispondere ugualmente

Mai

Solo in casi particolari 47.06 76.47 11.76 47.06 23.53 11.76 11.76 11.76 17.65 41.18 23.53

Sempre

29 30 31 32 33 34 35 36 37 38 39

Men: Visualizzazioni Direzioni di puntamento 0 Altezza critica libera 23.53 Altezza critica entro gli edici 5.88 Campo su edici 29.41 Calcolo valore max da studio sito 58.82 Visualizzazione Standard Edici 35.29 Sposta Temi In cima allla TOC 5.88 Salva temi visibili 88.24 Ripristina temi visibili 82.35 Cambia legenda GRID 23.53 Quadro di unione 58.82

52.94 0 82.35 23.53 17.65 52.94 82.35 0 0 35.29 17.65

Tabella 5.3: Risposte riferite al men Visualizzazioni

28

In questo Men le funzioni Salva temi visibili e Ripristina temi visibili non sono i pi gettonati, al contrario di Altezza critica entro gli edici.

5.1.4 Utilizzo delle funzioni del Men Archivio


In tabella 5.3 sono riportate le risposte in percentuale sulle funzioni del Men Archivio. Funzione
*Queste funzioni, sebbene siano utilizzate sempre, sono state comunque riportate per completezza. Si prega di rispondere ugualmente

Mai Men: Archivio

Solo in casi particolari 11.76 11.76 23.53 23.53

Sempre

40 41 42 43

Archivia simulazione Ripristina simulazione Elimina simulazione Salva/Ripristina simulazione

64.71 70.59 58.82 64.71

23.53 17.65 17.65 11.76

Tabella 5.4: Risposte riferite al men Archivio

Queste funzioni risultano poco utilizzate.

5.2 Funzionalit proposte


Funzionalit non disponibili in RadMap, sono state sottoposte al giudizio dei tecnici ARPAV per valutare la possibile utilit o meno.

5.2.1 Funzionalit 3D
Ritieni eventuali funzionalit di rendering 3D: utili per lanalisi del parere utili per una migliore rappresentazione del parere ai destinatari Tabella 5.5: Funzionalit 3D SI NO 41.18 58.82 70.59 29.41

5.2.2 Automatismi

In aggiunta sono stati suggeriti i seguenti automatismi: Importante sarebbe poter importare solo gli impianti vicini allimpianto da anali zzare: dato un punto P(X,Y) e dato un valore numerico D>0, importa solo gli impianti la cui distanza da P inferiore a D; 29

Ritieni utili queste proposte di automatismi? (Se hai altri suggerimenti aggiungili) Nel produrre i layers del campo elettrico alle varie altezze, il programma produce automaticamente anche i layers degli edici intersecati a tale altezza. Al termine di ogni simulazione viene segnalato automaticamente leventuale superamento del limite di esposizione e/o valore di attenzione Viene fatta la simulazione no allaltezza di gronda (+ metri richiesti) in base ai dati dello shape degli edici, senza dover inserire il dato manualmente Viene prodotto il layout in automatico Non dover rinominare ogni volta la cartella del progetto come radmap per aprire il progetto Disporre di una funzione che riproduce il volume di rispetto dellantenna/e selezionate (utile ad esempio per controllo di classe 1) Tabella 5.6: Automatismi

SI

NO

70.59 29.41

94.12

5.88

64.71 35.29

88.24 11.76 94.12 5.88 76.47 23.53

Realizzazione di un report edici in formato tabellare che riporti tutti i dati della scheda RB1 su ununica pagina; Visualizzazione automatica della pianta del sito con le antenne (analogamente a quanto fanno NFA/Emlab) per la verica delorientamento e della posizione (su sbraccio ecc.) rispetto al centro del palo/palina/traliccio; Visualizzazione automatica in sezione verticale di blocchi che rappresentino le antenne (analogamente a quanto fanno i software Aldena NFA/Emlab) - utile soprattutto per il controllo visivo dei dati inseriti dai gestori (altezza del centro elettrico) ma anche, soprattutto nel caso di impianti radiotelevisivi, per il confronto delle altezze delle antenne dichiarate dai gestori con quelle desumibili a vista da fotograe fatte nei sopralluoghi ai siti (si potrebbero scoprire errori di qualche metro o antenne mai comunicate o antenne non pi presenti...); Inserimento di unidenticatore per collegare diversi impianti (siti) che si sa essere installati sullo stesso palo/traliccio e avviso automatico di eventuali differenze sulla quota del piede e/o sulle coordinate dei siti che si trovano sullo stesso palo/traliccio (che dovrebbero invece essere uguali o almeno quasi uguali); Visualizzazione 3D del sito (es. traliccio/palo con antenne); Abbinare tasti funzione(o altri) programmabili per funzioni usate pi spesso; Funzione di salvataggio progetto in formato compresso 7-zip;

30

5.2.3 Modellizzazione di schiera di antenne


Modellizzazione di schiera di antenne SI NO Ritieni utile uno strumento integrato per la modellizzazione di una 94.12 5.88 schiera di antenne (a partire dai dati delle singole antenne elementari inserite come antenne consuete ma con laggiunta dello sfasamento per modellarle come un unico elemento correttamente anche in campo vicino) Ritieni utile visualizzare il conne tra campo vicino e campo lontano 76.47 23.53 nei layer di simulazione Tabella 5.7: Modellizzazione di schiera di antenne

5.3 Raggruppamento di funzioni


Nessuno ha dato un possibile raggruppamento delle funzioni di RadMap; questa domanda stata ignorata probabilmente perch la disposizione attuale va bene, o perch non si ritiene importante indicare particolari raggruppamenti.

5.4 Tempi di attesa


Molte delle risposte alla richiesta di indicare quali operazioni richiedevano eccessivi tempi di attesa coincidono; vengono quindi riportate le risposte indicando a anco il numero di operatori che le hanno fornite. Apertura di RadMap (11); Importazione dei siti (11); Creazione nuovo modello di antenna (2); Aggiornamento edici SDE (2); Aggiornamento dati (2); Operazioni di visualizzazione layout, zoom e pan quando sono caricate pi CTR (1); Salvataggio del progetto (1); Simulazione (1); Ricerca modello dantenna (1); Importazione di nuove antenne da le .ant (1);

31

5.5 Suggerimenti
I suggerimenti segnalati sul questionario sono molti e vengono qui raggruppati per argomento e riportati testualmente. Togliere la necessit, ogni volta che si apre radmap, di inserire username e password dellutilizzatore (aggiungere, almeno, la funzione che memorizza la password una volta per tutte); Permettere ai singoli utenti di gestire le password di accesso ad etere in modo indipendente ( inutile avere login e password uguale); Sarebbe il massimo se si riuscisse a produrre un software opensource che lavora su piattaforma web in modo da rendere possibile lutilizzo da qualsiasi macchina (anche per un discorso di telelavoro). Il programma GIS alla base di RADMAP/Etere datato. Probabilmente sarebbe meglio puntare ad un software pi recente e maggiormente performante magari open source (visti i costi di Arcview e dellestensione Spatial Analyst); Sarebbe il caso di modicare lalgoritmo del calcolo del campo elettrico in modo da considerare gli sfasamenti delle antenne cio fare le somme vettoriali del campo elettrico generato da diverse sorgenti (in radmap attualmente i contributi al campo elettrico dovuti alle singole sorgenti cio alle singole antenne vengono sommati quadraticamente). In questo modo si avrebbero risultati pi accurati e, in particolare si potrebbe utilizzare il software anche per gli impianti radiotelevisivi (spesso costituiti da cortine di antenne) senza inserire lantenna totale in sostituzione del sistema di antenne (che altro non che unulteriore approssimazione che spesso porta a sovrastime pericolose se ci sono edici nelle vicinanze) e si potrebbe arricchire etere con le singole antenne degli impianti radiotelevisivi (attualmente necessario caricare le antenne totali ttizie che non sono quasi mai riutilizzabili in altri siti e rimangono nel database perch non possibile usarle solo in locale); Mi piacerebbe che tra le extension di default si attivasse il graticules and measured grids o lECW. (pi in generale mi piacerebbe che il programma memorizzasse le estensioni dinteresse e le caricasse ogni volta di default); Prevedere nei campi di ricerca sito/antenne funzioni di query o ricerca; Dopo aver aggiornato il database (Aggiorna Database) sarebbe utile un messaggio di avvenuta operazione con successo. Nella visualizzazione dei temi della CTR, mettere come default lesclusione dei temi per noi inutili! Oggi, ogni volta che importiamo un tema CTR, dobbiamo eseguire la seguente procedura:View Add Theme (si seleziona il tema CTR dellarea di interesse) si clicca sul tema della CTR Theme Properties Drawing, e dal menu a discesa si escludono i layers (per noi inutili) 15XXX, 16XXX, 17XXX, 18XXX, 19XXX, con XXX=caratteri qualsiasi;

32

Un tool che permetta limportazione di ortofoto pi aggiornate dai vari servizi web disponibili; Sarebbe utile poter inserire nuove antenne in locale anche solo per fare qualche prova senza ricorrere ad altri software (in radmap linserimento di nuove antenne devessere fatto per forza in etere); Tutta una serie di strumenti messi a disposizione di chi si occupa di pareri radioprotezionistici sono superciali o non pi indispensabili. Altri non hanno mai funzionato (SDE edici); Preferirei il programma fosse un po pi afdabile (per esempio non dover controllare in continuazione la corrispondenza tra scheda RB1 cartacea e RB1 in etere); Non capisco perch il gestore debba fornire gli edici tramite mail ai singoli dipartimenti che devono poi farsi carico di aggiornare gli edici SDE. Non sarebbe pi semplice se i gestori caricassero direttamente gli edici direttamente su un database?; Mettere come default un colore preimpostato dallutente per il puntino del tema siti (ad esempio, introducendo un codice-colore nel le INI). Il puntino siti deve essere del colore scelto da me!; Mettere come default tutte le gure in formato JPG, a 120 di risoluzione e 100 di qualit; Sarebbe estremamente utile poter visualizzare il campo elettrico in ununica visualizzazione a diverse quote: ad esempio sulla supercie degli edici in 3D (NFA 3D lo fa!) oppure, nella stessa sezione, alla quota di gronda di ciascun edicio e/o alle quote del DTM pi 1.5 metri nellarea di analisi; I men andrebbero snelliti; Anche per i siti mi piacerebbe venisse visualizzata una distinzione tra FM, SRB e WiMax; Tutte le tabelle/colonne dovrebbero poter essere ordinate in ordine alfabetico; Mi piacerebbe che le CTR venissero caricate direttamente con una leggenda predenita (togliere via quei layer non indispensabili nella visualizzazione); Fornire i gestori di DTM. Forse i dati forniti risulterebbero pi coerenti; Il Nuovo Etere dovrebbe svolgere le operazioni di base senza lintervento di noi utenti! In pratica, i numeri che non cambiano dovrebbero tutti essere gi deniti per default! Esempio. Con UN tasto il Nuovo Etere dovrebbe poter: 1.leggere il le INI, in cui (suppponiamo) sono preimpostati, tra gli altri, anche i valori: z = 1000 (ma un esempio) a = 400 b = 1 c = 1 d = 2 e =5f=6 2.importare gli impianti distanti meno di z da quello in esame; 3.importare gli edici (nel le INI dovr essere indicato il percorso da seguire); 4.individuare (in base al le edici) i valori utili alla simulazione: piede minimo, piede massimo, altezza massima, gronda massima; 33

5.individuare (in base alla tabella antenne e a tutti i dati radioelettrici dellimpianto in esame) gronda impianto, piede impianto, altezza impianto; 6.eseguire uno studio standard, centrato nellimpianto in esame, in unarea quadrata di lato a, con passo orizzontale b, passo verticale c, per tutte le quote comprese tra piede minimo e gronda massima + d; 7.produrre automaticamente, secondo un format sso (che oggi si chiama catasto), la mappa di campo alla quota piede minimo dellimpianto in esame + e (e in pi: generare il le jpg, esportarlo automaticamente nella cartella predenita, ovviamente indicata nel le INI); 8.produrre automaticamente, secondo un format sso (oggi ancora da denire), la mappa di campo alla quota gronda massima + d; 9.individuare, entro larea di analisi, su tutti gli strati, i punti in cui il campo elettrico supera il valore di attenzione f e segnalare quali edici contengono (allinterno del proprio volume) punti in cui il campo elettrico supera il valore di attenzione f (in pratica, si intende eliminare la necessit di dover manualmente ogni volta richiedere lopzione Altezza critica entro edici con il valore di campo impostato a 6 V/m); 10.produrre automaticamente un le di testo (odt o doc), su format preimpostato, in modo da avere un canovaccio del parere: in pratica, nel canovaccio ci saranno titolo, nome impianto, codice, indirizzo, comune, il paragrafo in cui si dice che si esprime parere favorevole, e tutte le parti che dipendono solo dalla denominazione e dalla localizzazione dellimpianto. Ovviamente lutilizzatore controlla, rilegge ed eventualmente modica, ma limportante che il canovaccio sia studiato in modo da andar bene, cos com, per tutti i casi in cui in nessun edicio si superano i 6 V/m. In tal modo si avrebbe nella maggioranza dei casi il parere con un tasto. LORAF dovrebbe farsi carico di addestrare il personale che utilizza il programma tenendo corsi si aggiornamento periodici in cui si possa discutere di criticit e problemi.

34

Capitolo 6 Conclusioni
Quali possono essere in denitiva i vantaggi per ARPAV nel promuovere e incentivare lo sviluppo di un software di questo tipo, avendo gi a disposizione un applicativo con il quale per pi di 10 anni si potuto adempiere allattivit istituzionale no ad ora descritta? In questo capitolo non si vuole dare una risposta, ma fornire ulteriori informazioni per permettere agli addetti ai lavori di farsi unidea chiara e consapevole su quale sia la strada pi saggia da intraprendere.

6.1 Analisi dei costi


Lelenco di annotazioni e suggerimenti riportati in 5.5 indica la necessit di adottare una serie di modiche e aggiornamenti sullapplicativo RadMap, sia per migliorare lefcienza nellemissione dei pareri radioprotezionistici, che per poter effettuare delle operazioni che attualmente, specialmente per gli impianti FM, sono possibili solo con lutilizzo di altri software come NFA 3D della ditta Aldena. Un aggiornamento non poi cos banale, vista la situazione descritta nella sez. 2.2.1. Se lintenzione quella di passare ad ArcGIS ArcView si dovrebbero acquistare nuove licenze sia per ArcView che per Spatial Analyst, oltre che riscrivere (o far riscrivere) il codice di RadMap. Per lattuale corredo di una settantina di licenze ArcView e una cinquantina di licenze di Spatial Analyst1 si stimato un costo di pi di 350.000 euro. Sono poi da tener conto il costo di manutenzione ordinaria che negli ultimi 5 anni ammonta a poco pi di 10.000 euro ed eventualmente evolutiva (a corpo o a consumo) le cui spese ad oggi raggiungono rispettivamente i 48.000 e 40.000 euro.

6.2 Conformit del software


Un altro aspetto da tenere in considerazione per un software utilizzato a ni istituzionali su temi delicati come la prevenzione ambientale la sua conformit. Ci sono caratteristiche ben denite che un software deve rispettare e per quanto riguarda RadMap, prove di validazione sono state svolte e riportate in un lavoro svolto lanno scorso da uno studente
tutte queste licenze sono utilizzate per i pareri radioprotezionistici, ma le informazioni a disposizione riguardano la totalit delle licenze. comunque utile per avere unordine di grandezza di quelli che possono essere i costi da sostenere.
1 Non

35

dello stesso Master e lavoratore in ARPAV [5]. In questo lavoro i risultati di scenari ben precisi e descritti nella norma CEI che tratta largomento [6], si discostano di poco da quelli forniti dal software NFA 3D2 . Un analogo lavoro potrebbe essere fatto per valutare la conformit di questo algoritmo una volta dotato di tutte le sue funzioni. Per il momento ci si limitati a confrontare il campo orizzontale ottenuto, con quello in uscita da RadMap (g.6.1).

Figura 6.1: Campi orizzontali prodotti rispettivamente da RadMap e dal geoalgoritmo in Sextante Un serio confronto tra i due layers prodotti va fatto confrontando i valori tra le corrispondenti celle. Un utile tools a disposizione nella libreria di Sextante per questo scopo Correlation between layers del gruppo Basic tools for raster layers. Valuta la correlazione tra 2 layers in ingresso, e pi il valore di regressione lineare che fornisce vicino ad 1, pi i due layers sono simili. In questo caso la relazione lineare tra i valori di un raster e i rispettivi dellaltro raster risulta essere di y = 0.0046 + 1, 0016x con coefciente di regressione lineare R = 0.928 che si pu denire un buon risultato.

6.3 Il futuro ... 3D!


Attualmente gvSIG, gi dalla versione 1.10 dispone di estensioni 3D e sextante, nellultima versione non ancora stabile, ver. 0.7, sta implementando librerie e metodi per gestire i dati geograci direttamente in 3D. A questo punto conviene attendere che sia stabile questa versione prima di implementare le altre funzioni per la simulazione del campo elettrico; con una gestione direttamente in 3D non si avrebbe pi a che fare con spazi orizzontali intervallati in altezza come strati di simulazioni, ma unintero volume lo spazio di simulazioni, in cui visualizzazione, calcolo e situazioni critiche potrebbero essere pi agevoli e chiare.
2 NFA

3D dotato di un certicato di conformit

36

6.4 Ringraziamenti
Si ringrazia n dora tutti i colleghi in ARPAV che hanno contribuito alla riuscita di questo lavoro con le preziose informazioni e i suggerimenti elargiti, dimostrando disponibilit, professionalit e volont di migliorare la qualit del lavoro che quotidianamente svolgono.

37

Appendice A Codice Sorgente


/******************************************** horizontalFieldAlgorithm.java Copyright (C) 2011 Massimo Rado This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/> **********************************************/ package es.unex.sextante.rado; import java.awt.geom.Point2D; import java.util.ArrayList; import es.unex.sextante.additionalInfo. AdditionalInfoMultipleInput; import es.unex.sextante.additionalInfo. AdditionalInfoVectorLayer; import es.unex.sextante.core.GeoAlgorithm; import es.unex.sextante.core.Sextante; import es.unex.sextante.dataObjects.IRasterLayer; import es.unex.sextante.dataObjects.IFeature; import es.unex.sextante.dataObjects.IFeatureIterator;

38

import es.unex.sextante.dataObjects.IRecordsetIterator; import es.unex.sextante.dataObjects.IVectorLayer; import es.unex.sextante.dataObjects.ITable; import es.unex.sextante.exceptions. GeoAlgorithmExecutionException; import es.unex.sextante.exceptions.IteratorException; import es.unex.sextante.exceptions. RepeatedParameterNameException; import es.unex.sextante.exceptions. OptionalParentParameterException; import es.unex.sextante.exceptions. UndefinedParentParameterNameException; import es.unex.sextante.rasterWrappers.GridCell; import es.unex.sextante.rasterWrappers.GridExtent;

public public public public public public public public public public public public public public public public public public public public public public public public

class horizontalFieldAlgorithm extends GeoAlgorithm { static final String INPUTPOINT = "INPUTPOINT"; static final String RADIUS1 = "RADIUS1"; static final String DiaOR = "DiaOR"; static final String BUFFER = "Buffer"; static final String EFIELD = "EFIELD"; static final String FIELDHATT = "FIELDHATT"; static final String FIELDVATT = "FIELDVATT"; static final String TABLERESULT = "TABLERESULT"; static final String ANTENNASTABLE= "ANTENNASTABLE"; static final String ANTENNASCHART= "AntennasChart"; static final String FIELDIDSITE = "FIELDIDSITE"; static final String FIELDANTMOD = "FIELDANTMOD"; static final String FIELDIDSITEPOINT = "FIELDIDSITEPOINT"; static final String FIELDTILT = "FIELDTILT"; static final String FIELDDIRECTION = "FIELDDIRECTION"; static final String FIELDACTIVE = "FIELDACTIVE"; static final String HATT="HATT"; static final String VATT="VATT"; static final String FIELDNTX = "FIELDNTX"; static final String FIELDPOWTX = "FIELDPOWTX"; static final String FIELDXANT = "FIELDXANT"; static final String FIELDYANT = "FIELDYANT"; static final String FIELDGAIN = "FIELDGAIN"; point_Layer; ras_Layer;

protected IVectorLayer protected IRasterLayer

39

//declare input characteristics @Override public void defineCharacteristics() { setGeneratesUserDefinedRasterOutput(true); setGroup(Sextante.getText("Radiating Antennas DOmain")); setName(Sextante.getText("Horizontal Field Simulator")); try { m_Parameters.addInputVectorLayer(INPUTPOINT, Sextante.getText("Point layer of sites"), AdditionalInfoVectorLayer.SHAPE_TYPE_POINT,true); m_Parameters.addInputTable(ANTENNASTABLE, Sextante.getText("Antennas List"), true); m_Parameters.addMultipleInput(ANTENNASCHART, Sextante.getText("Antenna Charts files"), AdditionalInfoMultipleInput.DATA_TYPE_TABLE,true); m_Parameters.addTableField(FIELDIDSITEPOINT, Sextante.getText("IDsite column"), INPUTPOINT); m_Parameters.addTableField(FIELDACTIVE, Sextante.getText("ACTIVE column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDANTMOD, Sextante.getText("Antenna Model column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDNTX, Sextante.getText( "Transmitters number column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDPOWTX, Sextante. getText("Power per input column"),ANTENNASTABLE); m_Parameters.addTableField(FIELDTILT,Sextante. getText("Mechanical Tilt column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDDIRECTION,Sextante. getText("Direction (from NORD)"), ANTENNASTABLE); m_Parameters.addTableField(FIELDXANT, Sextante. getText("X position column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDYANT, Sextante. getText("Y position column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDIDSITE,Sextante. getText("IDSITE column"), ANTENNASTABLE); m_Parameters.addTableField(FIELDGAIN,Sextante. getText("Gain antenna column"), ANTENNASTABLE); m_Parameters.addString(HATT, Sextante.getText( "Horizontal Attenuation Columns name [dB]")); m_Parameters.addString(VATT, Sextante.getText( "Vertical Attenuation Columns name [dB]")); addOutputRasterLayer(EFIELD, Sextante.getText( "Result")); addOutputTable(TABLERESULT,"Tabella Dati"); } 40

catch (final RepeatedParameterNameException e) { Sextante.addErrorToLog(e); } catch (final OptionalParentParameterException e) { Sextante.addErrorToLog(e); } catch (final UndefinedParentParameterNameException e) { Sextante.addErrorToLog(e); } }

@Override public boolean processAlgorithm() throws GeoAlgorithmExecutionException { final String sFields[] = { Sextante.getText("0"), Sextante.getText("1"), Sextante.getText("2"), Sextante.getText("3"), Sextante.getText("4"), Sextante.getText("5"), Sextante.getText("6"), Sextante.getText("7"), Sextante.getText("8"), Sextante.getText("9"), Sextante.getText("10") }; final Class<?> iTypes[] = { Integer.class, String.class, Double.class, Integer.class, Double.class, Integer.class, Integer.class, Double.class, Double.class, Integer.class, Double.class }; final ITable antennastable = m_Parameters. getParameterValueAsTable(ANTENNASTABLE); final int iFieldactive = m_Parameters. getParameterValueAsInt(FIELDACTIVE); final int iFieldantmod = m_Parameters. getParameterValueAsInt(FIELDANTMOD); final int iFieldntx = m_Parameters. getParameterValueAsInt(FIELDNTX); final int iFieldpowtx = m_Parameters. getParameterValueAsInt(FIELDPOWTX); final int iFieldtilt = m_Parameters. getParameterValueAsInt(FIELDTILT); final int iFielddirection = m_Parameters. getParameterValueAsInt(FIELDDIRECTION); final int iFieldxant = m_Parameters. getParameterValueAsInt(FIELDXANT); final int iFieldyant = m_Parameters. getParameterValueAsInt(FIELDYANT); final int iFieldidsite = m_Parameters. getParameterValueAsInt(FIELDIDSITE); 41

final int iFieldgain = m_Parameters. getParameterValueAsInt(FIELDGAIN); final ArrayList<?> antennaschart = m_Parameters. getParameterValueAsArrayList(ANTENNASCHART); final String Fieldhatt = m_Parameters. getParameterValueAsString(HATT); final String Fieldvatt = m_Parameters. getParameterValueAsString(VATT); ITable arr = (ITable) antennaschart.get(0); int iFieldhatt = arr.getFieldIndexByName(Fieldhatt); int iFieldvatt = arr.getFieldIndexByName(Fieldvatt); point_Layer = m_Parameters. getParameterValueAsVectorLayer(INPUTPOINT); final int iFieldidsitepoint = m_Parameters. getParameterValueAsInt(FIELDIDSITEPOINT); final IRasterLayer efield; efield = getNewRasterLayer(EFIELD,Sextante. getText("E-Field"), IRasterLayer. RASTER_DATA_TYPE_DOUBLE); final ITable tableResult = getNewTable( TABLERESULT, "tabella", iTypes, sFields); GridExtent extent = new GridExtent(efield); int iNX, iNY; iNX = efield.getWindowGridExtent().getNX(); iNY = efield.getWindowGridExtent().getNY(); setProgressText(Sextante.getText( "Interpolating")); double x1,y1; int indsite = 0; Object[][] values; int idsite; int iShapeCount = point_Layer. getShapesCount(); int iRecordCount = (int) antennastable. getRecordCount(); values = new Object[iRecordCount][11]; int x, y; int indant; int indcor = 0; Object[] record; /**/ IFeatureIterator iter2 = point_Layer.iterator(); 42

while (iter2.hasNext() && setProgress(indsite, iShapeCount)) { IFeature featuresite = iter2.next(); idsite = Integer.parseInt(featuresite.getRecord(). getValue(iFieldidsitepoint).toString()); indant = 0; /*Creating matrix of antennas data */ final IRecordsetIterator iter3 = antennastable. iterator(); while (iter3.hasNext() && setProgress(indant, iRecordCount)) { record = iter3.next().getValues(); if (Integer.parseInt(record[iFieldidsite]. toString())==idsite && (Integer.parseInt( record[iFieldactive].toString())) > 0){ values[indcor][0] = Integer.parseInt( record[iFieldactive].toString()); values[indcor][1] = record[iFieldantmod]. toString(); values[indcor][2] = Double.parseDouble (record[2].toString()); values[indcor][3] = Integer.parseInt (record[iFieldntx].toString()); values[indcor][4] = Double.parseDouble (record[iFieldpowtx].toString()); values[indcor][5] = Integer.parseInt (record[iFieldtilt].toString()); values[indcor][6] = Integer.parseInt (record[iFielddirection].toString()); values[indcor][7] = Double.parseDouble (record[iFieldxant].toString()); values[indcor][8] = Double.parseDouble (record[iFieldyant].toString()); values[indcor][9] = Integer.parseInt (record[iFieldidsite].toString()); values[indcor][10] = Double.parseDouble (record[iFieldgain].toString()); tableResult.addRecord(values[indcor]); indcor++; } indant++; } indsite++; } /*Creating horizontal E-Field*/ 43

indcor = (int) tableResult.getRecordCount(); Object[][] horAttTable; Object[][] vertAttTable; double horAtt; double vertAtt; double horAttDB; double vertAttDB; double gain = 0; int degResult = 0; double distResult = 0; double totPow; double gainDB; horAttTable = new Object[indcor][360]; vertAttTable = new Object[indcor][360]; //select antenna model file for (indant = 0; indant < indcor; indant++) { horAttTable[indant] = ((getTableFromName (antennaschart,values[indant][1].toString()+ ".dbf",iFieldhatt))); vertAttTable[indant] = ((getTableFromName (antennaschart,values[indant][1].toString()+ ".dbf",iFieldvatt))); } //calculate cell by cell... for (y = 0; (y < iNY) && setProgress(y, iNY); y++){ for (x = 0; x < iNX; x++) { double EFieldsqr = 0; for (indant = 0; indant < indcor; indant++) { if (Integer.parseInt(values[indant][0]. toString()) > 0){ //distance from sites x1 = (Double) values[indant][7]; y1 = (Double) values[indant][8]; Point2D pointCell = extent. getWorldCoordsFromGridCoords(new GridCell(x, y, 0)); Point2D pointAntenna = new Point2D.Double(x1,y1); degResult = getValueDegrees(pointCell. getX(), pointCell.getY(), pointAntenna. getX(), pointAntenna.getY()); distResult = pointCell.distance( pointAntenna); int newDeg = degResult - (Integer) values[indant][iFielddirection]; if (newDeg < 0 ) 44

newDeg += 360; horAttDB = (Double) horAttTable [indant][newDeg]; horAtt = (Double) Math.pow(10, (horAttDB/10)); vertAttDB = (Double) vertAttTable [indant][0]; vertAtt = (Double) Math.pow(10, (vertAttDB/10)); gainDB = (Double) values[indant][10] + 2.14; gain = (Double) Math.pow(10,(gainDB/10)); totPow = Double.parseDouble(values[indant][3]. toString()) * Double.parseDouble(values[indant] [4].toString()); EFieldsqr = EFieldsqr +(377*totPow*vertAtt* horAtt*gain/(4*Math.PI*distResult*distResult)); } efield.setCellValue(x, y, Math.sqrt(EFieldsqr)); } } } return !m_Task.isCanceled(); } protected int getValueDegrees(final double xCell,final double yCell, final double xAntenna, final double yAntenna) { double degrees; degrees = Math.toDegrees(Math.atan2((xCell - xAntenna), (yCell - yAntenna))); if (degrees <0) degrees += 360; return (int) Math.round(degrees); } private Object[] getTableFromName(final ArrayList<?> arraytable, final String sName, final int index) throws IteratorException { final Object[] valuesTable; Object[] recordTable; for (int i=0;i < arraytable.size();i++){ final ITable table = (ITable) arraytable.get(i); int indTable = 0; if (table.getName().equals(sName)){ int iTableCount = (int) table.getRecordCount(); 45

valuesTable = new Object[iTableCount]; final IRecordsetIterator iter4 = table.iterator(); while (iter4.hasNext() && setProgress(indTable, iTableCount)) { recordTable = iter4.next().getValues(); valuesTable[indTable] = recordTable[index]; indTable++; } return valuesTable; } } return null; } }

46

Appendice B Questionario su RadMap


Da quanti mesi/anni lavori sui pareri radioprotezionistici? ___ mesi o ___ anni Funzioni Con che frequenza usi queste funzioni di RADMAP? (apporre una X sulla casella corrispondente) Funzione
*Queste funzioni, sebbene siano utilizzate sempre, sono state comunque riportate per completezza. Si prega di rispondere ugualmente

Mai Solo in casi particolari

Sempre

Men: Gestione Dati 1 2 3 4 5 6 7 8 9 9a 9b 10 11 12 13 Aggiungi Edici* Scelta edici di simulazione* Aggiungi storico edici Ricerche storico edici Dati edici Aggiornamento edici SDE Elimina edici selezionati da SDE Congurazione ambiente di simulazione Importa Sorgenti* Importa solo le antenne attive Importa solo i siti dellarea di analisi Aggiorna database Export XML siti Import XML siti Cerca siti di interesse

47

Funzione
*Queste funzioni, sebbene siano utilizzate sempre, sono state comunque riportate per completezza. Si prega di rispondere ugualmente

Mai Solo in casi particolari

Sempre

Men: Gestione Dati 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 Modica Siti Report Siti Selezionati Elimina siti non selezionati Nuovo modello di Antenna Crea tabella indicatori nel volume Aggiorna modelli di antenna locali Men: Analisi Valutazione Indicatori Ricerca punti critici Campo orizzontale Campo Verticale Studio Sito* Wizard studio sito* Campo su Quadro Unione Rimuovi Risultati Nuova simulazione Men: Visualizzazioni Direzioni di puntamento Altezza critica libera Altezza critica entro gli edici Campo su edici Calcolo valore max da studio sito Visualizzazione Standard Edici Sposta Temi In cima allla TOC Salva temi visibili Ripristina temi visibili Cambia legenda GRID Quadro di unione Men: Archivio Archivia simulazione Ripristina simulazione Elimina simulazione Salva/Ripristina simulazione

Qualora dovesse risultare pi comodo avere alcune delle funzioni sopra menzionate raggruppate in un unica schermata allora compila la tabella sottostante, altrimenti passa oltre. Es: sarebbe comodo avere in ununica schermata Aggiungi Edici e Scelta edici di Simulazione, quindi su un gruppo (es. Gruppo 1) scrivo i numeri corrispondenti alle due funzioni (1, 2)

48

Gruppo Gruppo Gruppo Gruppo Gruppo Gruppo Gruppo Gruppo Gruppo 1 2 3 4 5 6 7 8 9

Funzionalit 3D Ritieni eventuali funzionalit di rendering 3D: utili per lanalisi del parere utili per una migliore rappresentazione del parere ai destinatari Automatismi Ritieni utili queste proposte di automatismi? (Se hai altri suggerimenti aggiungili) Nel produrre i layers del campo elettrico alle varie altezze, il programma produce automaticamente anche i layers degli edici intersecati a tale altezza. Al termine di ogni simulazione viene segnalato automaticamente leventuale superamento del limite di esposizione e/o valore di attenzione Viene fatta la simulazione no allaltezza di gronda (+ metri richiesti) in base ai dati dello shape degli edici, senza dover inserire il dato manualmente Viene prodotto il layout in automatico Non dover rinominare ogni volta la cartella del progetto come radmap per aprire il progetto Disporre di una funzione che riproduce il volume di rispetto dellantenna/e selezionate (utile ad esempio per controllo di classe 1) Altri Suggerimenti SI NO SI NO

Tempi di attesa Quali operazioni richiedono tempi di attesa secondo voi eccessivamente lunghi?

49

Modellizzazione di schiera di antenne SI NO Ritieni utile uno strumento integrato per la modellizzazione di una schiera di antenne (a partire dai dati delle singole antenne elementari inserite come antenne consuete ma con laggiunta dello sfasamento per modellarle come un unico elemento correttamente anche in campo vicino) Ritieni utile visualizzare il conne tra campo vicino e campo lontano nei layer di simulazione Altre proposte e annotazioni

50

Bibliograa
[1] E. Casarotto, R. Biancotto, A. Buscato, V. Cesari, M. Rado, M. Rosa, D. Sepulcri, M. Zulianello. Approccio operativo alla valutazione preventiva e al controllo successivo dei campi elettromagnetici a radiofrequenza: il modello previsionale ETERE integrato dalla rete di monitoraggio in continuo [2] http://sextante.forge.osor.eu [3] www.gvsig.org [4] Victor Olaya. Sextante Programming Guide, Editon 1.0, Settembre 2009 [5] Matteo Bellodi. Verica di conformit e confronto del modello previsionale Etere, 2010 [6] Norma UNI CEI 211-10 V1. Guida alla realizzazione di una Stazione Radio Base per rispettare i limiti di esposizione ai campi elettromagnetici in alta frequenza; Appendice G: Valutazione dei software di calcolo previsionale dei livelli di campo elettromagnetico, Aprile 2004.

51