Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello...

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 ANNO ACCADEMICO 2010-2011

description

Tesi di master di Massimo Rado

Transcript of Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello...

Page 1: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

MASTER DI SECONDO LIVELLO IN METODI ETECNICHE DI PREVENZIONE E CONTROLLO

AMBIENTALETESI SPERIMENTALE DI MASTER

Progettazione e sviluppo di un applicativoOpen 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

ANNO ACCADEMICO 2010-2011

Page 2: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

A Riccardo

Page 3: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Indice

1 Introduzione 31.1 Software proprietari utilizzati . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Un’alternativa Open Source? . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Scopo di questo lavoro . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Panoramica sugli applicativi 52.1 Progetto ETERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.1.1 Impianti radiobase, FM e TV . . . . . . . . . . . . . . . . . . . . 52.1.2 Struttura del database centralizzato . . . . . . . . . . . . . . . . 6

2.2 ArcView e RadMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.1 ArcView 3.x vs ArcGIS . . . . . . . . . . . . . . . . . . . . . . 8

2.3 Ambiente Open Source . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3.1 Sextante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3.2 Sistema geografico informativo gvSIG . . . . . . . . . . . . . . . 9

2.4 Licenze Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3 Il parere radioprotezionistico 113.1 Individuazione dell’impianto . . . . . . . . . . . . . . . . . . . . . . . . 113.2 Caricamento dello shape degli edifici . . . . . . . . . . . . . . . . . . . . 113.3 Selezione dell’area di simulazione . . . . . . . . . . . . . . . . . . . . . 113.4 Simulazione del campo elettrico . . . . . . . . . . . . . . . . . . . . . . 113.5 Criticità negli edifici . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4 Sviluppo del geoalgoritmo su Sextante 134.1 R.A.DO. : Radiating Antennas DOmain . . . . . . . . . . . . . . . . . . 134.2 Algoritmo Horizontal Field Simulator . . . . . . . . . . . . . . . . . . . 13

4.2.1 Parametri Iniziali . . . . . . . . . . . . . . . . . . . . . . . . . . 154.2.2 Funzioni getValueDegrees e getTableFromName . . . . . . . . . 174.2.3 Il cuore dell’algoritmo . . . . . . . . . . . . . . . . . . . . . . . 184.2.4 Completamento dell’algoritmo . . . . . . . . . . . . . . . . . . . 23

4.3 Ulteriori algoritmi da sviluppare . . . . . . . . . . . . . . . . . . . . . . 234.4 Un esempio pratico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

5 Questionario su RadMap 265.1 Utilizzo di funzioni in RadMap . . . . . . . . . . . . . . . . . . . . . . . 26

5.1.1 Utilizzo delle funzioni del Menù Gestione Dati . . . . . . . . . . 265.1.2 Utilizzo delle funzioni del Menù Analisi . . . . . . . . . . . . . . 28

1

Page 4: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

5.1.3 Utilizzo delle funzioni del Menù Visualizzazioni . . . . . . . . . 285.1.4 Utilizzo delle funzioni del Menù Archivio . . . . . . . . . . . . . 29

5.2 Funzionalità proposte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295.2.1 Funzionalità 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . 295.2.2 Automatismi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295.2.3 Modellizzazione di schiera di antenne . . . . . . . . . . . . . . . 31

5.3 Raggruppamento di funzioni . . . . . . . . . . . . . . . . . . . . . . . . 315.4 Tempi di attesa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315.5 Suggerimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

6 Conclusioni 356.1 Analisi dei costi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356.2 Conformità del software . . . . . . . . . . . . . . . . . . . . . . . . . . 356.3 Il futuro è ... 3D! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.4 Ringraziamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

A Codice Sorgente 38

B Questionario su RadMap 47

Bibliografia 51

2

Page 5: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Capitolo 1

Introduzione

Le agenzie regionali per la prevenzione e protezione ambientale (A.R.P.A.) hanno, tra leattività istituzionali, anche quella di valutare i valori di campo elettromagnetico prodottoda stazioni di telefonia mobile e radiotelevisive nel territorio. A tale scopo utilizzano soft-ware di simulazione che adottano opportuni modelli di calcolo previsionale di diffusionedi campo elettrico in funzione di diversi parametri caratteristici delle sorgenti.

1.1 Software proprietari utilizzatiL’ A.R.P.A Veneto (A.R.P.A.V.) in particolare adotta un software proprietario della Si-nergis, chiamato RadMap che lavora in ambiente ArcView GIS 3.3. Come sarà più chiaroin seguito, qualsiasi intenzione di apportare modifiche o evoluzioni allo stesso RadMaprichiede uno sforzo economico notevole e conseguente reticenza all’innovazione.

1.2 Un’alternativa Open Source?Costi e sviluppo sono i due principali motivi per passare ad un applicativo Open Source.Solitamente si abbina alla filosofia che porta allo sviluppo di questi software il vantaggiodella gratuità, non considerando il grande vantaggio nel disporre liberamente del codicesorgente: dando la possibilità ad ogni singolo individuo di contribuire al miglioramentodi un particolare programma, si facilita la nascita e crescita di intere comunità di ap-passionati e professionisti intorno ad ogni progetto di questo tipo garantendo, anche seinformalmente, assistenza e sviluppo, soddisfando spesso le esigenze degli utilizzatori.

Allo stato attuale si possono trovare tantissimi programmi sui più disparati campi, enello stesso settore si può disporre di molteplici alternative con caratteristiche differenti aseconda delle esigenze.

1.3 Scopo di questo lavoroCon questo lavoro, si vuole verificare se con gli strumenti e prodotti attualmente disponi-bili e realizzati dalla comunità Open Source si possa trovare o, se non disponibile, re-alizzare in tempi ragionevoli un software in grado di svolgere le funzioni necessarie ad

3

Page 6: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

A.R.P.A.V. per adempiere al suo compito istituzionale in materia di radiofrequenze, senzapiù ricorrere a prodotti proprietari con conseguenti vantaggi su diversi aspetti.

L’ambiente ritenuto più adatto per sviluppare un progetto di questo tipo è risultatoSextante, le cui caratteristiche saranno descritte successivamente in maniera dettagliata.Il tempo a disposizione e la complessità generale necessarie all’implementazione di unapplicativo del genere sono tali da non poter fornire un prodotto pronto a sostituire in totol’attuale RadMap, ma questo studio ha portato alla realizzazione di quello che è di fatto ilcuore del’algoritmo, attorno al quale si possono sviluppare tutte le altre funzioni.

4

Page 7: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Capitolo 2

Panoramica sugli applicativi

Una descrizione del’architettura informatica utilizzata in ARPAV per la raccolta, archiviazione e utilizzo dei dati radioelettrici risulta utile per capire la modalità di gestionedei dati implementata nel progetto di studio. Diverse considerazioni sono state fatteper la scelta degli applicativi Open Source, tenendo presente anche l’applicativo GISattualmente in uso.

2.1 Progetto ETEREIl progetto sviluppato da ARPAV e denominato ETERE [1] è attivo dal 2001 con lo scopodi gestire i flussi informativi inerenti le stazioni di telecomunicazioni e permettere aglioperatori dell’agenzia di disporre di dati georeferenziati per l’emissione di pareri radio-protezionistici. Il principale gestore dei dati è un database georeferenziato degli impiantipresenti sul territorio regionale condiviso tra i dipartimenti provinciali dell’Agenzia. Perquanto riguarda la struttura del database, quello che può interessare in questo contesto èche si dispone di tre diverse tabelle ognuna contenente dati diversi ma intrinsecamentelegate tra loro. Prima di elencarle è però utile menzionare i tpi di impianti esistenti e leloro principali caratteristiche.

2.1.1 Impianti radiobase, FM e TVL’impianto radiobase fornisce il servizio di telefonia mobile ed è una struttura costituitada più settori (solitamente 3) con direzione di radiazione diversa da settore a settore percoprire un intero angolo giro (nel caso più frequente di 3 settori le direzioni differisconodi 120 gradi l’una dall’altra). Ogni settore a sua volta è provvisto di uno o più servizi(GSM, DCS e/o UMTS) ognuno identificato come antenna dotata di un certo numero ditrasmettitori/portanti con determinate potenze.

Gli impianti di FM e TV sono invece caratterizzati da un’unica antenna, o una schieradi antenne, che irradia in maniera più o meno isotropa nel piano orizzontale con unapropria potenza.

In ogni caso, per poter procedere ad una simulazione del campo elettrico irradiato daqueste sorgenti, devono essere forniti i diagrammi di antenna caratterizzati da una serie divalori di attenuazione della potenza sia sul piano orizzontale che su quello verticale. Neldiagramma verticale è intrinsecamente indicato il tilt elettrico di una antenna, ottenuto

5

Page 8: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

con opportuni sfasamenti dei dipoli costituenti l’antenna stessa. Si misura in gradi e staa indicare di quanto è inclinata, nel piano verticale, la direzione di massima radiazionedel lobo principale (fig. 2.1). Questi diagrammi sono raggruppati in tabelle il cui nomedescrive 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 esempiol’antenna di modello ANT_A con servizio DCS e tilt elettrico di 6 gradi avrà i diagrammiverticale e orizzontale in una tabella denominata ANT_A-1855-6.

0

30

60

90

120

150

180

210

240

270

300

330

0

0,2

0,4

0,6

0,8

1

0

30

60

90

120

150

180

210

240

270

300

330

0 0,2 0,4 0,6 0,8 1

Figura 2.1: Esempio di diagrammi di radiazione orizzontale e verticale

Altra cosa è il tilt meccanico, che è una inclinazione fisica dell’antenna, solitamenteverso il basso per non disperdere troppo il segnale verso l’alto. Questo parametro vieneperò indicato esplicitamente negli attributi della tabella antenne.

2.1.2 Struttura del database centralizzatoRisulterà ora più chiaro il significato delle tabelle di cui dispone il database:

1. Tabella siti : contiene dati riguardanti l’impianto di telecomunicazione nel suocomplesso. In particolare si menzionano i campi

• identificatore univoco del sito;

• coordinate Gauss-Boaga fuso Ovest dell’impianto;

• quota sul livello del mare della base dell’impianto;

2. Tabella antenne: contiene i dati che caratterizzano il servizio (per la radiobase) ol’antenna (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 dell’antenna;

6

Page 9: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

• numero di trasmettitori per antenna;

• potenza per ogni trasmettitore;

• guadagno d’antenna;

• riferimento all’impianto di cui fa parte;

• riferimento al modello d’antenna;

• flag di antenna attiva (SI/NO)

3. Tabelle dei diagrammi di antenna: ad ogni modello di antenna corrisponde una diqueste tabelle fornite di

• attenuazione verticale;

• attenuazione orizzontale;

Ecco che risulta chiaro come nella tabella antenne i campi che fanno riferimento al-l’impianto e al modello d’antenna permettono di definire quante antenne ci sono su undeterminato impianto e le loro caratteristiche (fig: 2.2) .

ATT. VERTICALE

ATT. ORIZZONTALE

ANT_A−1855−6

GRADI

ATT. VERTICALE

ATT. ORIZZONTALE

GRADI

ANT_B−960−0

TABELLA SITI

QUOTA BASE IMPIANTO

COORDINATA Y

COORDINATA X

ID SITO

TABELLA ANTENNE

COORDINATA X

COORDINATA Y

TILT MECCANICO

DIREZ. IRRADIAZIONET

NUM.TRASMETTITORI

POT.TRASMETTITORE

ID SITO

MODELLO

ANTENNAALT. CENTRO ELETT.

ATTIVA

GUADAGNO

Figura 2.2: Schema semplificato delle relazioni tra tabelle del database

Ci si può domandare come mai ci siano coordinate sia nella tabella siti che nella tabellaantenne; 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 sitostanno a indicare una posizione ideale dell’impianto, dove però le singole antenne sono

7

Page 10: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

situate in posizioni diverse, distanti anche qualche metro, l’una dall’altra. Un esempio siha nel caso di una installazione in cima ad una torre piezometrica. Le coordinate del sitoindicano il centro della torre vista in pianta, mentre le coordinate delle antenne indicanopunti dislocati sul bordo di esso, perchè lì sono installabili (fig. 2.3).

POSIZIONE SITO

POSIZIONE ANTENNE

x1,y1

x3,y3

xs,ys

x2,y2

Figura 2.3: Rappresentazione schematica di installazione su una torre piezometrica

2.2 ArcView e RadMapGli operatori Arpav dislocati nei diversi dipartimenti provinciali hanno a disposizionel’applicativo ArcView, con chiave hardware per l’utilizzo esclusivo su singolo PC, pergestire i dati georeferenziati forniti dal database centrale. La vera e propria simulazioneperò può essere implementata utilizzando una libreria di algoritmi forniti da ArcGIS Spa-tial Analyst utilizzabile anch’esso tramite un’apposita chiave hardware. Il software ap-positamente commissionato da Arpav per simulare la propagazione di campo elettricoutilizza queste librerie e prende il nome di RadMap. Questo applicativo è integrato nel-l’ambiente GIS di ArcView 3.3 e mette a disposizione diverse funzioni realizzate ad hocper interrogare il database, caricare tutti i dati necessari e aggiornare lo stesso database incaso di particolari modifiche.

2.2.1 ArcView 3.x vs ArcGISE’ importante capire la netta distinzione tra ArcView 3.3 e l’omonimo applicativo sottoArcGIS, chiamato ArcGIS ArcView, che non è sempre ben compresa. Il primo è quello at-tualmente utilizzato in ARPAV e permette di scrivere estensioni personalizzate utilizzandoun linguaggio chiamato Avenue. Con tale linguaggio sono state realizzate le funzioni disimulazione di campo elettrico raggruppate sotto il nome di RadMap. ArcGIS ArcViewinvece è la versione base desktop che, come tutte le versioni più avanzate della suite ArcGIS, ha come linguaggio di programmazione per le estensioni il Visual Basic. Si puòcomprendere quindi che evolvere ad un applicativo più recente (attualmente è disponi-bile la versione ArcGIS ArcView 9.x) comporta una riscrittura del codice di RadMapda Avenue a Visual Basic1; tale lavoro richiederebbe un dispendio di risorse umane ed

1Interessanti testimonianze a riguardo si possono trovare su http///gislounge.com/why-arcview-3x-is-still-in-use/

8

Page 11: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

economico notevole.

2.3 Ambiente Open SourceCiò che si vuole sostituire con un programma equivalente Open Source è appunto RadMap,e non è stato difficile rendersi conto che non era disponibile niente di simile. Si trovano in-fatti 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 l’impiantonel territorio previsto e valutare il campo prodotto nelle abitazioni circostanti.

2.3.1 SextanteUn software dotato di una ricca libreria di tools per l’analisi geografica, programmabiliin Java, viene rilasciato come estensione di diversi sistemi informativi geografici (GIS);il suo nome è Sextante ma non aveva tra i suoi cosiddetti geoalgoritmi un simulatore dicampo elettrico. Si è scelto comunque di implementare in Sextante2 le funzioni atte asimulare 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 geografico informativo gvSIGIl grande pregio di Sextante è la facile integrazione in ambienti GIS, sia proprietariche 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 anch’esso con un sistemainformativo geografico Open Source.

Tra quelli disponibili la scelta è caduta su gvSIG che come interfaccia utente (fig.2.4)e raggruppamento logico delle funzioni si avvicina molto al già utilizzato ArcView, ren-dendo più facile un eventuale passaggio a questo ambiente per gli operatori.

Il sistema gvSIG [3] è stato realizzato dal Ministero Regionale delle Infrastrutture edei Trasporti di Valencia, e attualmente è in crescente diffusione. La versione utilizzatain questo contesto è la 1.11, la più recente, e comprende già nel pacchetto di installazionela libreria di Sextante.

2In questo lavoro è stata utilizzata la versione 0.63Qui si possono trovare i codici java dei geoalgoritmi della libreria Sextante:

http://forge.osor.eu/plugins/scmsvn/viewcvs.php/?root=sextante

9

Page 12: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Figura 2.4: Schermata di gvSIG 1.11

2.4 Licenze SoftwareSextante è prodotto sotto licenza MIT4 che permette di ridistribuire il codice senza dareimportanza 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 soft-ware libero più conosciuta e diffusa al mondo. È possibile far girare Sextante con gvSIGin quanto la licenza MIT è del tipo compatibile GPL. Il geoalgoritmo sviluppato vienerilasciato sotto licenza GPLv2.

4la dicitura da anteporre a un codice sorgente per la licenza MIT la trovate inwww.opensource.org/licenses/mit-license.php

5la dicitura da anteporre a un codice sorgente per la licenza GPL versione 2 la trovate inwww.opensource.org/licenses/GPL-2.0

10

Page 13: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Capitolo 3

Il parere radioprotezionistico

Descrivere i passi fondamentali da eseguire per una corretta simulazione del campo elet-trico aiuta nello sviluppo dell’algoritmo che dovrà svolgere questo compito.

3.1 Individuazione dell’impiantoIl primo passo è l’individuazione dell’impianto oggetto di studio. Dal database centraliz-zato si scaricano i siti georeferenziati (impianti) e con una opportuna query si selezional’impianto di interesse. È previsto che ad ogni sito siano associate le antenne con leproprie caratteristiche tra cui il modello di antenna dal quale ricavare il diagramma diradiazione.

3.2 Caricamento dello shape degli edificiLo scopo principale del parere radioprotezionistico è quello di individuare eventuali edifici abitativi o adibiti a uffici in cui il campo elettrico simulato superi una certa sogliaprevista dalla legge. Si ritiene quindi necessario caricare nella vista del progetto unoshape degli edifici nell’intorno dell’impianto. L’attributo più importante di questo shape èl’altezza degli edifici, perchè a diverse altezze dal suolo si avranno diversi valori di campoelettrico. Nella maggior parte delle situazioni in cui gli impianti sono radiobase, il campoelettrico solitamente cresce allontanandosi dal suolo.

3.3 Selezione dell’area di simulazioneSi deve scegliere un’area di analisi che corrisponderà all’estensione geografica che sidesidera coprire dalla simulazione. La scelta consueta è un quadrato di qualche centinaiodi metri di lato centrato sul sito.

3.4 Simulazione del campo elettricoA questo punto viene lanciata la vera e propria simulazione in cui, cella per cella, si cal-cola il campo elettrico prodotto dall’impianto. Tale valore dipende dai dati radioelettrici

11

Page 14: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

delle singole antenne e dalla distanza dal centro elettrico delle stesse secondo la formula:

E =

√Z0 ·P ·G ·AO ·AV

4 ·π · r2

con:

Z0= impedenza d’onda nel vuoto (377 Ω)r = distanza dal centro elettrico dell’antennaP = potenza efficace massimaG = guadagno dell’antenna nella direzione di massima radiazioneAO= attenuazione sul piano orizzontaleAV= attenuazione sul piano verticale

Questo algoritmo è un’approssimazione del campo elettrico in condizioni di campo lon-tano, nel qual caso vi è diretta proporzionalità tra campo elettrico e campo magnetico:

H =EZ0

Bisogna inoltre considerare che non vi è quasi mai una sola antenna attiva nello stessoimpianto, e che altri impianti si potrebbero voler considerare nella simulazione, sianoessi interni o esterni all’area precedentemente scelta. Si deve valutare pertanto il cam-po elettrico totale come sommatoria di tutti i contributi secondo la legge della sommaquadratica:

E =

[∑

iEi

2

] 12

con:

E = valore del campo elettrico complessivoEi= valore del campo elettrico generato dal i-esimo impianto

Per ogni cella costituente l’area di analisi va sviluppato il calcolo per ogni antenna chesi vuole considerare e sommare quadraticamente tutti i contributi. È da evidenziare chela distribuzione di campo elettrico così simulata è riferita ad un’altezza ben precisa, otte-nendo quindi una cosiddetta sezione orizzontale. Per ottenere una sezione orizzontale auna 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 parereradioprotezionistico prevede di produrre diverse sezioni orizzontali, a partire da un paiodi metri dal suolo fino a 2 metri sopra la gronda dell’edificio più alto con un passo di 3metri. Così facendo si simula il valore di campo elettrico a 2 metri di altezza da ognipiano degli edifici.

3.5 Criticità negli edificiSituazioni critiche si hanno quando la simulazione fornisce campo elettrico sopra i valorilimite imposti dalla legge all’interno degli edifici nell’intorno del sito oggetto di studio.Per evidenziare rapidamente queste criticità il programma controlla se all’interno dellesagome degli edifici dello shape caricato ci siano celle con valori di campo eccedenti ilvalore limite.

12

Page 15: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Capitolo 4

Sviluppo del geoalgoritmo su Sextante

La libreria di Sextante è attualmente molto ricca e comprende strumenti sia per l’ela-borazione elementare di dati spaziali sia per operazioni più complesse e articolate. Daltoolbox di Sextante si accede a questi geoalgoritmi raggruppati per argomenti. (fig. 4.1 ).

Se nel progetto su cui si sta lavorando non sono attive tipologie di layers richiestedall’algoritmo, quest’ultimo viene visualizzato in grigio e non selezionabile. Se tutti glialgoritmi di un intero gruppo si trovano in questo stato, il nome del gruppo stesso risultagrigio ma comunque espandibile.

Gli argomenti aiutano a identificare più velocemente il settore inerente alle opera-zioni che si vuole far eseguire sui propri dati geografici, come anche la finestra di ricer-ca. Ci sono gruppi che contengono tools specifiche per tipologia di dati, ad esempioRaster creation tools, altri invece che accorpano funzioni per uno specifico scopo, comeGeomorphometry and terrain analysis.

4.1 R.A.DO. : Radiating Antennas DOmainNel contesto del campo elettromagnetico non vi è ancora nessun algoritmo a riguardo,quindi si è pensato di creare un gruppo che contenesse l’algoritmo oggetto di questolavoro e tutti quelli futuri inerenti l’elettromagnetismo legato alla georeferenziazione. Ladenomi nazione scelta è stata Radiating Antennas DOmain cioè Settore delle AntenneRadianti .

4.2 Algoritmo Horizontal Field SimulatorLa principale funzione che si vuole implementare per poi sviluppare in futuro le altre cor-relate, è quella che effettua il calcolo del campo elettrico totale su un piano orizzontale.Come già precedentemente accennato, non vi è nessun algoritmo che svolga tale com-pito, quindi facendo riferimento ad un buon manuale realizzato dallo stesso ideatore diSextante [4] e prendendo ispirazione dai geoalgoritmi già realizzati, si è proceduto allaprogettazione e programmazione del codice. Il codice è scritto in Java ed è disponibile atutti, modificabile e ridistribuile secondo le condizioni dettate dalla GNU Public Licenseversion 2.

13

Page 16: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Figura 4.1: Raggruppamento dei geoalgoritmi nella Toolbox di Sextante

Dati necessari per il funzionamento del geoalgoritmo

Anche se pensato inizialmente per l’utilizzo in ARPAV e quindi nel contesto del databasecentralizzato del progetto ETERE, si è voluto progettarlo in modalità stand alone, cosic-ché chiunque possa utilizzarlo senza disporre di una architettura informatica prestabilita.

Si è comunque pensato di mantenere la relazione tabellare (vedi fig: 2.2) in modotale che una eventuale interfaccia futura conforme alla struttura di ETERE possa essereagevolmente implementata.

L’intero codice dell’algoritmo è riportato in appendice A. Valutiamo in dettaglio levarie parti di codice per capirne meglio le operazioni che svolge.

14

Page 17: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

4.2.1 Parametri InizialiAll’interno di una opportuna funzione prestabilita da Sextante, defineCharacteristics() sidefiniscono il nome dell’algoritmo, il gruppo a cui appartiene, la possibilità di lasciardecidere all’utente l’estensione che deve avere il raster in uscita, input, parametri e outputnecessari per poter svolgere i compiti richiesti. Gli input richiesti sono:

• layer di punti che rappresenta i siti localizzati nel territorio (la tabella degli attributicorrisponde alla tabella siti);

• tabella che contiene le informazioni sulle antenne (tabella antenne);

• una tabella per ogni modello d’antenna contenente le attenuazioni verticali e oriz-zontali (tabelle dei diagrammi d’antenna).

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 campisu cui deve lavorare; ci possono essere tre criteri e uno di questi deve essere scelto in fasedi progettazione del software:

1. Le colonne delle varie tabelle che vengono utilizzate devono essere posizionate conun ordine ben definito (ad esempio per la tabella delle antenne la prima colonnadeve corrispondere al modello d’antenna, la seconda alla direzione di radiazioneecc.);

2. Le colonne delle varie tabelle devono avere un nome ben preciso (ad esempio perla tabella delle antenne la colonna del modello d’antenna deve chiamarsi modant,quella della direzione di radiazione direz, ecc.

3. La corrispondenza tra colonne e campi si definisce alla chiamata del programma,quando vengono richiesti gli input.

Per dare maggior flessibilità all’utilizzatore si è scelto il terzo criterio, con l’unicosvantaggio che l’inserimento dei dati si dilunga, ma una volta inseriti i parametri, questisi ripresentano di default ogni qualvolta si richiama l’algoritmo. Il codice prosegue con:

15

Page 18: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

...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 Column’s name [dB]"));m_Parameters.addString(VATT, Sextante.getText("Vertical Attenuation Column’s name [dB]"));...

Vengono poi definiti gli output che genera l’algoritmo e alcuni controlli di catturadelle 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 UndefinedParentParameterNameExceptione) Sextante.addErrorToLog(e);

16

Page 19: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

4.2.2 Funzioni getValueDegrees e getTableFromNamePrima di procedere alla descrizione del vero e proprio algoritmo, è utile menzionare icompiti di due funzioni che vengono chiamate all’interno di esso.

La funzione getValueDegrees fornisce l’angolo che c’è tra 2 punti le cui cordinate x ey sono fornite in ingresso secondo la convenzione rappresentata in fig. 4.2 .

X1,Y1

X2,Y2

Figura 4.2: Convenzione di angolo tra due punti passati come argomento nella funzionegetValueDegrees

Nel caso specifico, ci interessa sapere l’angolo tra il punto rappresentante un’antennae la cella di turno alla quale verrà attribuito un valore di campo elettrico; Quest’angolo in-fatti, ci servirà per ricavare la corrispondente attenuazione in campo orizzontale attribuitaalla stessa antenna.

Di seguito il codice della funzione:

protected int getValueDegrees(final double xCell,finaldouble yCell, final double xAntenna, final doubleyAntenna) 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 specifica colonna di unatabella di cui viene passato come parametro il nome, contenuta in un array di tabelle.

Il suo utilizzo è specifico per ricavare le colonne di attenuazione verticale e orizzontaledei diagrammi di antenna richiesti. Per esteso viene riportato il codice:

private Object[] getTableFromName(final ArrayList<?>arraytable, final String sName, final int index) throwsIteratorException

17

Page 20: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

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 dell’algoritmoAll’interno della funzione predefinita processAlgorithm risiede il cuore dell’algoritmo,che si ritiene opportuno descrivere dettagliatamente.

Inizialmente vengono attribuite a delle variabili i parametri forniti all’avvio del pro-gramma dall’utente.

public boolean processAlgorithm() throwsGeoAlgorithmExecutionException 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

Page 21: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

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 definisce l’estensione 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

Page 22: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

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 identifica quanti siti sono da analiz-zare, creando una tabella temporanea nella quale vengono riassunte tutte le antenne chedevono far parte della simulazione. Nella sostanza si prende nota dell’attributo IDsitecolumn e si popola la tabella di tutti i campi della tabella antenne che si riferiscono a quelspecifico impianto.

Attenzione: se nel layer dei siti non viene fatta nessuna selezione, il programmaconsidera 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

Page 23: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

(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 filefor (indant = 0; indant < indcor; indant++)

horAttTable[indant] = ((getTableFromName(antennaschart,values[indant][1].toString()+".dbf",iFieldhatt)));

vertAttTable[indant] = ((getTableFromName

21

Page 24: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

(antennaschart,values[indant][1].toString()+".dbf",iFieldvatt)));

Si comincia ora a calcolare per ogni cella il valore di campo elettrico totale dovutoa tutte le antenne ritenute candidate alla simulazione, tenendo anche conto del flag cheindica la attivazione o meno della singola antenna (richiesta come ACTIVE column tra iparametri 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 sitesx1 = (Double) values[indant][7];y1 = (Double) values[indant][8];Point2D pointCell = extent.getWorldCoordsFromGridCoords(newGridCell(x, y, 0));

Point2D pointAntenna = newPoint2D.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

Page 25: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

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

4.2.4 Completamento dell’algoritmoNel codice non viene tenuto conto del tilt meccanico, infatti i calcoli sono eseguiti conattenuazione verticale corrispondente a O gradi. A questo valore dovrebbe essere aggiuntoun offset che però dipende dalla distanza dell’antenna sorgente; non è eccessivamentecomplicato ma richiede un pó di tempo e attenzione nella verifica della correttezza deidati.

4.3 Ulteriori algoritmi da svilupparePer poter effettuare più sezioni orizzontali a varie altezze, si può reiterare questo geoalgo-ritmo aggiungendo un controllo di altezza, dove si considera l’altezza del centro elettricodell’antenna e la quota base dell’impianto.

Un ulteriore funzione è quella del controllo di criticità degli edifici; una volta importa-to lo shape degli edifici e prodotto le diverse sezioni orizzontali, si procede con algoritmigià esistenti (per esempio quelli di visibilità) o, se è il caso, modificarli opportunamenteper raggiungere lo scopo. Per ottenere quelli che vengono indicati come profili verticali,dovrebbe essere sufficiente implementare più volte l’algoritmo per la sezione orizzontaletenendo conto di un’estensione di uscita non areale, ma lungo una linea scelta.

4.4 Un esempio praticoIn gvSIG si crea un nuovo progetto e si carica un layer di punti indicanti i siti in una certazona denominato siteslist.shp. In tab. 4.1 è riportata la sua tabella degli attributi (alcunecifre delle coordinate sono state sostituite con delle lettere per mantenere la riservatezzadelle informazioni):

Si importa anche la tabella che contiene le informazioni sulle antenne associate ai variimpianti, qui denominata antennaslist.dbf (tab. 4.2).

Per il corretto funzionamento bisogna caricare anche le tabelle dei modelli di antennaelencati 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-947-6.dbf (tab. 4.3).

Qui risulta evidente dal valore di attenuazione verticale a 6 gradi, come il tilt elettricosia pari appunto a 6.

23

Page 26: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

CODSITO Z_SITO X_SITO Y_SITO IDSITOsite1 118.0 174XX06 508YY78 120679site2 113.0 174XX20 508YY70 141319site3 113 .0 174XX20 508YY70 664360site4 113.0 174XX20 508YY70 188870site5 113.0 174XX20 508YY70 210261site6 112.0 174XX78 508YY11 112626site7 115.0 174XX72 508YY11 114628site8 113.0 174XX78 508YY11 116614

Tabella 4.1: Tabella degli attributi di siteslist.shp

ATTIVA

IDMOD

H NTX

POTTX

TILT DIREZIONE

XANT

YANT

IDSITO

GUADAGNO

1 antA-1855-6

35.0 4 10.0 0 10 174XX78 508YY11 116614 15.88

1 antB-960-0

36.0 6 10.0 0 15 174XX20 508YY71 210261 16.01

1 antA-947-6

35.0 5 10.0 0 10 174XX78 508YY11 116614 13.85

1 antA-2140-6

35.0 3 18.0 0 10 174XX78 508YY11 116614 15.98

1 antB-960-0

36.0 6 10.0 0 110 174XX20 508YY71 210261 16.01

1 antA-1855-6

35.0 4 10.0 0 110 174XX78 508YY11 116614 15.88

1 antA-947-6

35.0 5 10.0 0 110 174XX78 508YY11 116614 13.85

1 antA-2140-6

35.0 3 18.0 0 110 174XX78 508YY11 116614 15.98

1 antB-960-0

36.0 6 10.0 0 225 174XX17 508YY68 210261 16.01

1 antA-1855-6

35.0 4 10.0 0 230 174XX78 508YY11 116614 15.88

1 antA-947-6

35.0 5 10.0 0 230 174XX78 508YY11 116614 13.85

1 antA-2140-6

35.0 3 18.0 0 230 174XX78 508YY11 116614 15.98

Tabella 4.2: Tabella antennaslist.dbf

Dalla tabella antennaslist.dbf si evince che vi sono 2 siti, uno con tre antenne di-rezionate a 15, 110 e 225 rispetto al Nord, l’altro con 3 antenne per ogni settore edirezionate a 10, 110 e 230 rispetto al Nord.

Una volta a disposizione tutti i dati e prima di lanciare l’algoritmo, bisogna definirel’estensione 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 selezionatosolo quel sito e utilizzando la funzione Fixed distance buffer della libreria di Sextante, siimposta la distanza, cioè il raggio del buffer, ad esempio a 200 m., e si seleziona la casellache 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 l’unica differenza che creacirconferenze e non quadrati. In questo caso l’utente può produrre la circonferenza e poicreare un quadrato circoscritto alla circonferenza come area di analisi. Un’alternati-va è utilizzare una funzione di RadMap che da un punto selezionato sulla vista, crea unquadrato centrato su di esso. In entrambi i casi però si riportano due imprecisioni differ-enti: nel primo caso non è precisa l’area di analisi perchè l’operazione di circoscrizionealla circonferenza è manuale; nel secondo caso l’area è precisa ma non la centratura sul

24

Page 27: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

GRADO ATTODB ATTVDB0 0.0 -3.62999871 0.0 -2.47000222 0.0 -1.54999993 -0.0100002 -0.84000064 -0.0200018 -0.3400008(tab. 4.1) · · · · · · · · ·179 -36.161846 -42.441251180 -36.382721 -43.467874181 -36.53647 -41.426675· · · · · · · · ·357 -0.0500004 -8.7000092358 -0.0300002 -6.71001359 -0.0200018 -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 file siteslist.shp. Nel caso riportato, oltreal site8 si seleziona anche il site5.

Ora si lancia l’algoritmo Horizontal Field Simulator e si introducono i dati richiesti.Il risultato della simulazione è riportato in fig. 4.3 .

Figura 4.3: Output della simulazione

Si possono vedere distintamente i tre lobi prodotti dalle serie di antenne in tre direzionidiverse, e un lobo proveniente dall’altro sito selezionato, ma esterno all’area di analisi.

25

Page 28: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Capitolo 5

Questionario su RadMap

È lecito domandarsi se un sostituto di RadMap debba disporre di tutte le funzioni del suopredecessore, se alcune sono superflue o se ne servirebbero delle altre. Per avere unarisposta, è stato sottoposto un questionario (vedi App. B ) ai 20 operatori di ARPAV chesi occupano di pareri radioprotezionistici da diverso tempo. Hanno risposto 17 personesu 20, quindi un numero rappresentativo della totalità pari all’ 85%.

Il questionario si compone di quesiti sulla frequenza di utilizzo delle funzioni a dis-posizione in RadMap, sull’ utilità probabile di nuove funzioni e infine proposte e sugger-imenti ai fini di migliorare le operazioni di simulazione.

5.1 Utilizzo di funzioni in RadMapDa un’analisi accurata di questi dati si può dare la massima priorità nell’implementazionedi funzioni la cui risposta ha avuto come maggioranza Sempre e sviluppare solo per ultimele funzioni mai utilizzate dalla maggioranza degli utenti.

5.1.1 Utilizzo delle funzioni del Menù Gestione DatiIn tabella 5.1 sono riportate le risposte in percentuale sulle funzioni del Menù GestioneDati.

Si può dedurre che le funzioni Export XML siti e Import XML siti sono usate saltuariamente da qualche operatore ma per la maggior parte non vengono utilizzate. Altrefunzioni sono, da percentuali simili di utenti, o sempre utilizzati o mai. Queste situazioniapparentemente anomale si possono probabilmente spiegare col fatto che, alcune di questefunzioni 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 casoquesta funzione fosse abilitata. La funzione Aggiornamento edifici SDE è una di queste.

26

Page 29: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

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

Mai Solo in casiparticolari

Sempre

Menù: Gestione Dati1 Aggiungi Edifici* 0 0 1002 Scelta edifici di simulazione* 0 0 1003 Aggiungi storico edifici 52.94 23.53 23.534 Ricerche storico edifici 58.82 23.53 17.655 Dati edifici 17.65 17.65 64.716 Aggiornamento edifici SDE 41.18 5.88 52.947 Elimina edifici selezionati da SDE 41.18 29.41 29.418 Configuraz. ambiente di simulazione 35.29 47.06 17.659 Importa Sorgenti* 0 0 1009a – Importa solo le antenne attive 47.06 41.18 11.769b – Importa solo i siti dell’area di analisi 64.71 35.29 010 Aggiorna database 0 5.88 94.1211 Export XML siti 76.47 11.76 11.7612 Import XML siti 88.24 11.76 013 Cerca siti di interesse 64.71 17.65 17.6514 Modifica Siti 11.76 5.88 82.3515 Report Siti Selezionati 35.29 29.41 35.2916 Elimina siti non selezionati 29.41 35.29 35.2917 Nuovo modello di Antenna 0 82.35 17.6518 Crea tabella indicatori nel volume 52.94 35.29 11.7619 Aggiorna modelli di antenna locali 64.71 35.29 0

Tabella 5.1: Risposte riferite al menù Gestione Dati

27

Page 30: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

5.1.2 Utilizzo delle funzioni del Menù AnalisiIn tabella 5.2 sono riportate le risposte in percentuale sulle funzioni del Menù Analisi.

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

Mai Solo in casiparticolari

Sempre

Menù: Analisi20 Valutazione Indicatori 0 58.82 41.1821 Ricerca punti critici 47.06 41.18 11.7622 Campo orizzontale 0 17.65 82.3523 Campo Verticale 5.88 76.47 17.6524 Studio Sito* 0 0 10025 Wizard studio sito* 52.94 5.88 41.1826 Campo su Quadro Unione 76.47 23.53 027 Rimuovi Risultati 41.18 47.06 11.7628 Nuova simulazione 70.59 23.53 5.88

Tabella 5.2: Risposte riferite al menù Analisi

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

5.1.3 Utilizzo delle funzioni del Menù VisualizzazioniIn tabella 5.3 sono riportate le risposte in percentuale sulle funzioni del Menù Visualiz-zazioni.

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

Mai Solo in casiparticolari

Sempre

Menù: Visualizzazioni29 Direzioni di puntamento 0 47.06 52.9430 Altezza critica libera 23.53 76.47 031 Altezza critica entro gli edifici 5.88 11.76 82.3532 Campo su edifici 29.41 47.06 23.5333 Calcolo valore max da studio sito 58.82 23.53 17.6534 Visualizzazione Standard Edifici 35.29 11.76 52.9435 Sposta Temi In cima allla TOC 5.88 11.76 82.3536 Salva temi visibili 88.24 11.76 037 Ripristina temi visibili 82.35 17.65 038 Cambia legenda GRID 23.53 41.18 35.2939 Quadro di unione 58.82 23.53 17.65

Tabella 5.3: Risposte riferite al menù Visualizzazioni

28

Page 31: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

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

5.1.4 Utilizzo delle funzioni del Menù ArchivioIn tabella 5.3 sono riportate le risposte in percentuale sulle funzioni del Menù Archivio.

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

Mai Solo in casiparticolari

Sempre

Menù: Archivio40 Archivia simulazione 64.71 11.76 23.5341 Ripristina simulazione 70.59 11.76 17.6542 Elimina simulazione 58.82 23.53 17.6543 Salva/Ripristina simulazione 64.71 23.53 11.76

Tabella 5.4: Risposte riferite al menù Archivio

Queste funzioni risultano poco utilizzate.

5.2 Funzionalità proposteFunzionalità non disponibili in RadMap, sono state sottoposte al giudizio dei tecniciARPAV per valutare la possibile utilità o meno.

5.2.1 Funzionalità 3D

Ritieni eventuali funzionalità di rendering 3D: SI NOutili per l’analisi del parere 41.18 58.82utili per una migliore rappresentazione del parere ai destinatari 70.59 29.41

Tabella 5.5: Funzionalità 3D

5.2.2 Automatismi

In aggiunta sono stati suggeriti i seguenti automatismi:

• Importante sarebbe poter importare solo gli impianti “vicini” all’impianto da analizzare: dato un punto P(X,Y) e dato un valore numerico D>0, importa solo gliimpianti la cui distanza da P è inferiore a D;

29

Page 32: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Ritieni utili queste proposte di automatismi? (Se hai altri suggerimentiaggiungili)

SI NO

Nel produrre i layers del campo elettrico alle varie altezze, il programmaproduce automaticamente anche i layers degli edifici intersecati a talealtezza.

70.59 29.41

Al termine di ogni simulazione viene segnalato automaticamentel’eventuale superamento del limite di esposizione e/o valore diattenzione

94.12 5.88

Viene fatta la simulazione fino all’altezza di gronda (+ metri richiesti)in base ai dati dello shape degli edifici, senza dover inserire il datomanualmente

64.71 35.29

Viene prodotto il layout in automatico 88.24 11.76Non dover rinominare ogni volta la cartella del progetto come “radmap”per aprire il progetto

94.12 5.88

Disporre di una funzione che riproduce il volume di rispetto del-l’antenna/e selezionate (utile ad esempio per controllo di classe1)

76.47 23.53

Tabella 5.6: Automatismi

• Realizzazione di un report edifici in formato tabellare che riporti tutti i dati dellascheda RB1 su un’unica pagina;

• Visualizzazione automatica della pianta del sito con le antenne (analogamente aquanto fanno NFA/Emlab) per la verifica del’orientamento e della posizione (susbraccio ecc.) rispetto al centro del palo/palina/traliccio;

• Visualizzazione automatica in sezione verticale di blocchi che rappresentino le an-tenne (analogamente a quanto fanno i software Aldena NFA/Emlab) - utile soprat-tutto 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 al-tezze delle antenne dichiarate dai gestori con quelle desumibili a vista da fotografiefatte nei sopralluoghi ai siti (si potrebbero scoprire errori di qualche metro o antennemai comunicate o antenne non più presenti...);

• Inserimento di un’identificatore per collegare diversi impianti (siti) che si sa essereinstallati sullo stesso palo/traliccio e avviso automatico di eventuali differenze sullaquota 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

Page 33: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

5.2.3 Modellizzazione di schiera di antenne

Modellizzazione di schiera di antenne SI NORitieni utile uno strumento integrato per la modellizzazione di unaschiera di antenne (a partire dai dati delle singole antenne elementariinserite come antenne consuete ma con l’aggiunta dello sfasamentoper modellarle come un unico elemento correttamente anche in campovicino)

94.12 5.88

Ritieni utile visualizzare il confine tra campo vicino e campo lontanonei layer di simulazione

76.47 23.53

Tabella 5.7: Modellizzazione di schiera di antenne

5.3 Raggruppamento di funzioniNessuno ha dato un possibile raggruppamento delle funzioni di RadMap; questa domandaè stata ignorata probabilmente perché la disposizione attuale va bene, o perché non siritiene importante indicare particolari raggruppamenti.

5.4 Tempi di attesaMolte delle risposte alla richiesta di indicare quali operazioni richiedevano eccessivi tempidi attesa coincidono; vengono quindi riportate le risposte indicando a fianco il numero dioperatori che le hanno fornite.

• Apertura di RadMap (11);

• Importazione dei siti (11);

• Creazione nuovo modello di antenna (2);

• Aggiornamento edifici 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 d’antenna (1);

• Importazione di nuove antenne da file .ant (1);

31

Page 34: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

5.5 SuggerimentiI suggerimenti segnalati sul questionario sono molti e vengono qui raggruppati per argo-mento e riportati testualmente.

Togliere la necessità, ogni volta che si apre radmap, di inserire username epassword dell’utilizzatore (aggiungere, almeno, la funzione che memorizzala password una volta per tutte);

Permettere ai singoli utenti di gestire le password di accesso ad etere in modoindipendente (è inutile avere login e password uguale);

Sarebbe il massimo se si riuscisse a produrre un software opensource chelavora su piattaforma web in modo da rendere possibile l’utilizzo da qualsiasimacchina (anche per un discorso di telelavoro).

Il programma GIS alla base di RADMAP/Etere è datato. Probabilmentesarebbe meglio puntare ad un software più recente e maggiormente perfor-mante magari open source (visti i costi di Arcview e dell’estensione SpatialAnalyst);

Sarebbe il caso di modificare l’algoritmo del calcolo del campo elettrico inmodo da considerare gli sfasamenti delle antenne cioè fare le somme vetto-riali del campo elettrico generato da diverse sorgenti (in radmap attualmentei contributi al campo elettrico dovuti alle singole sorgenti cioè alle singoleantenne vengono sommati quadraticamente). In questo modo si avrebberorisultati più accurati e, in particolare si potrebbe utilizzare il software ancheper gli impianti radiotelevisivi (spesso costituiti da cortine di antenne) sen-za inserire l’antenna totale in sostituzione del sistema di antenne (che altronon è che un’ulteriore approssimazione che spesso porta a sovrastime peri-colose se ci sono edifici nelle vicinanze) e si potrebbe arricchire etere con lesingole antenne degli impianti radiotelevisivi (attualmente è necessario cari-care le antenne totali fittizie che non sono quasi mai riutilizzabili in altri sitie rimangono nel database perché non è possibile usarle solo in locale);

Mi piacerebbe che tra le extension di default si attivasse il graticules andmeasured grids o l’ECW. (più in generale mi piacerebbe che il programmamemorizzasse le estensioni d’interesse 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 mes-saggio di “avvenuta operazione con successo”.

Nella visualizzazione dei temi della CTR, mettere come default l’esclusionedei temi per noi inutili! Oggi, ogni volta che importiamo un tema CTR, dob-biamo eseguire la seguente procedura:View → Add Theme → (si selezionail tema CTR dell’area di interesse) → si clicca sul tema della CTR → Theme→ Properties → Drawing, e dal menu a discesa si escludono i layers (pernoi inutili) 15XXX, 16XXX, 17XXX, 18XXX, 19XXX, con XXX=caratteriqualsiasi;

32

Page 35: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Un tool che permetta l’importazione di ortofoto più aggiornate dai vari serviziweb disponibili;

Sarebbe utile poter inserire nuove antenne in locale anche solo per fare qualcheprova senza ricorrere ad altri software (in radmap l’inserimento di nuoveantenne dev’essere fatto per forza in etere);

Tutta una serie di strumenti messi a disposizione di chi si occupa di pareri ra-dioprotezionistici sono superficiali o non più indispensabili. Altri non hannomai funzionato (SDE edifici);

Preferirei il programma fosse un po’ più affidabile (per esempio non dovercontrollare in continuazione la corrispondenza tra scheda RB1 cartacea e RB1in etere);

Non capisco perché il gestore debba fornire gli edifici tramite mail ai sin-goli dipartimenti che devono poi farsi carico di aggiornare gli edifici SDE.Non sarebbe più semplice se i gestori caricassero direttamente gli edificidirettamente su un database?;

Mettere come default un colore preimpostato dall’utente per il puntino deltema “siti” (ad esempio, introducendo un codice-colore nel file INI). Il punti-no “siti” deve essere del colore scelto da me!;

Mettere come default tutte le figure in formato JPG, a 120 di risoluzione e100 di qualità;

Sarebbe estremamente utile poter visualizzare il campo elettrico in un’unicavisualizzazione a diverse quote: ad esempio sulla superficie degli edifici in3D (NFA 3D lo fa!) oppure, nella stessa sezione, alla quota di gronda diciascun edificio e/o alle quote del DTM più 1.5 metri nell’area 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 leggendapredefinita (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 l’interventodi noi utenti! In pratica, i “numeri che non cambiano” dovrebbero tutti esseregià definiti per default! Esempio. Con UN tasto il “Nuovo Etere” dovrebbepoter: 1.leggere il file INI, in cui (suppponiamo) sono preimpostati, tra glialtri, anche i valori: z = 1000 (ma è un esempio) a = 400 b = 1 c = 1 d = 2 e= 5 f = 6

2.importare gli impianti distanti meno di z da quello in esame;

3.importare gli edifici (nel file INI dovrà essere indicato il percorso da seguire);

4.individuare (in base al file edifici) i valori utili alla simulazione: piedeminimo, piede massimo, altezza massima, gronda massima;

33

Page 36: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

5.individuare (in base alla tabella antenne e a tutti i dati radioelettrici del-l’impianto in esame) gronda impianto, piede impianto, altezza impianto;

6.eseguire uno studio “standard”, centrato nell’impianto in esame, in un’areaquadrata di lato a, con passo orizzontale b, passo verticale c, per tutte le quotecomprese tra “piede minimo” e “gronda massima + d”;

7.produrre automaticamente, secondo un format fisso (che oggi si chiama“catasto”), la mappa di campo alla quota “piede minimo dell’impianto inesame + e” (e in più: generare il file jpg, esportarlo automaticamente nellacartella predefinita, ovviamente indicata nel file INI);

8.produrre automaticamente, secondo un format fisso (oggi ancora da definire),la mappa di campo alla quota “gronda massima + d”;

9.individuare, entro l’area di analisi, su tutti gli strati, i punti in cui il campoelettrico supera il valore di attenzione f e segnalare quali edifici contengono(all’interno del proprio volume) punti in cui il campo elettrico supera il valoredi attenzione f (in pratica, si intende eliminare la necessità di dover manual-mente ogni volta richiedere l’opzione “Altezza critica entro edifici” con ilvalore di campo impostato a 6 V/m);

10.produrre automaticamente un file di testo (odt o doc), su format preim-postato, in modo da avere un “canovaccio” del parere: in pratica, nel canovac-cio ci saranno titolo, nome impianto, codice, indirizzo, comune, il paragrafoin cui si dice che “si esprime parere favorevole”, e tutte le parti che dipendonosolo dalla denominazione e dalla localizzazione dell’impianto. Ovviamentel’utilizzatore controlla, rilegge ed eventualmente modifica, ma l’importante èche il canovaccio sia studiato in modo da andar bene, così com’è, per tutti icasi in cui in nessun edificio si superano i 6 V/m. In tal modo si avrebbe nellamaggioranza dei casi “il parere con un tasto”.

L’ORAF dovrebbe farsi carico di addestrare il personale che utilizza il pro-gramma tenendo corsi si aggiornamento periodici in cui si possa discutere dicriticità e problemi.

34

Page 37: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Capitolo 6

Conclusioni

Quali possono essere in definitiva i vantaggi per ARPAV nel promuovere e incentivarelo sviluppo di un software di questo tipo, avendo già a disposizione un applicativo con ilquale per più di 10 anni si è potuto adempiere all’attività istituzionale fino ad ora descritta?In questo capitolo non si vuole dare una risposta, ma fornire ulteriori informazioni perpermettere agli addetti ai lavori di farsi un’idea chiara e consapevole su quale sia la stradapiù saggia da intraprendere.

6.1 Analisi dei costiL’elenco di annotazioni e suggerimenti riportati in 5.5 indica la necessità di adottare unaserie di modifiche e aggiornamenti sull’applicativo RadMap, sia per migliorare l’efficien-za nell’emissione dei pareri radioprotezionistici, che per poter effettuare delle operazioniche attualmente, specialmente per gli impianti FM, sono possibili solo con l’utilizzo dialtri software come NFA 3D della ditta Aldena. Un aggiornamento non è poi così banale,vista la situazione descritta nella sez. 2.2.1. Se l’intenzione è quella di passare ad ArcGISArcView si dovrebbero acquistare nuove licenze sia per ArcView che per Spatial Analyst,oltre che riscrivere (o far riscrivere) il codice di RadMap. Per l’attuale corredo di una set-tantina di licenze ArcView e una cinquantina di licenze di Spatial Analyst1 si è stimato uncosto di più di 350.000 euro. Sono poi da tener conto il costo di manutenzione ordinariache negli ultimi 5 anni ammonta a poco più di 10.000 euro ed eventualmente evolutiva (acorpo o a consumo) le cui spese ad oggi raggiungono rispettivamente i 48.000 e 40.000euro.

6.2 Conformità del softwareUn altro aspetto da tenere in considerazione per un software utilizzato a fini istituzionali sutemi delicati come la prevenzione ambientale è la sua conformità. Ci sono caratteristicheben definite che un software deve rispettare e per quanto riguarda RadMap, prove divalidazione sono state svolte e riportate in un lavoro svolto l’anno scorso da uno studente

1Non tutte queste licenze sono utilizzate per i pareri radioprotezionistici, ma le informazioni a dispo-sizione riguardano la totalità delle licenze. È comunque utile per avere un’ordine di grandezza di quelli chepossono essere i costi da sostenere.

35

Page 38: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

dello stesso Master e lavoratore in ARPAV [5]. In questo lavoro i risultati di scenari benprecisi e descritti nella norma CEI che tratta l’argomento [6], si discostano di poco daquelli forniti dal software NFA 3D2.

Un analogo lavoro potrebbe essere fatto per valutare la conformità di questo algoritmouna volta dotato di tutte le sue funzioni. Per il momento ci si è limitati a confrontare ilcampo orizzontale ottenuto, con quello in uscita da RadMap (fig.6.1).

Figura 6.1: Campi orizzontali prodotti rispettivamente da RadMap e dal geoalgoritmo inSextante

Un serio confronto tra i due layers prodotti va fatto confrontando i valori tra le cor-rispondenti 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 corre-lazione tra 2 layers in ingresso, e più il valore di regressione lineare che fornisce è vicinoad 1, più i due layers sono simili. In questo caso la relazione lineare tra i valori di unraster e i rispettivi dell’altro raster risulta essere di

y =−0.0046+1,0016x

con coefficiente di regressione lineare R = 0.928 che si può definire un buon risultato.

6.3 Il futuro è ... 3D!Attualmente gvSIG, già dalla versione 1.10 dispone di estensioni 3D e sextante, nell’ulti-ma versione non ancora stabile, ver. 0.7, sta implementando librerie e metodi per gestirei dati geografici direttamente in 3D.

A questo punto conviene attendere che sia stabile questa versione prima di imple-mentare le altre funzioni per la simulazione del campo elettrico; con una gestione di-rettamente in 3D non si avrebbe più a che fare con spazi orizzontali intervallati in al-tezza come strati di simulazioni, ma un’intero volume è lo spazio di simulazioni, in cuivisualizzazione, calcolo e situazioni critiche potrebbero essere più agevoli e chiare.

2NFA 3D è dotato di un certificato di conformità

36

Page 39: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

6.4 RingraziamentiSi ringrazia fin d’ora tutti i colleghi in ARPAV che hanno contribuito alla riuscita di questolavoro con le preziose informazioni e i suggerimenti elargiti, dimostrando disponibilità,professionalità e volontà di migliorare la qualità del lavoro che quotidianamente svolgono.

37

Page 40: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Appendice A

Codice Sorgente

/********************************************horizontalFieldAlgorithm.javaCopyright (C) 2011 Massimo Rado

This program is free software; you can redistribute itand/or modify it under the terms of the GNU GeneralPublic License as published by the Free SoftwareFoundation; either version 2 of the License, or(at your option) any later version.

This program is distributed in the hope that it will beuseful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITYor FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.

You should have received a copy of the GNU GeneralPublic 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

Page 41: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

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 class horizontalFieldAlgorithm extends GeoAlgorithm public static final String INPUTPOINT = "INPUTPOINT";public static final String RADIUS1 = "RADIUS1";public static final String DiaOR = "DiaOR";public static final String BUFFER = "Buffer";public static final String EFIELD = "EFIELD";public static final String FIELDHATT = "FIELDHATT";public static final String FIELDVATT = "FIELDVATT";public static final String TABLERESULT = "TABLERESULT";public static final String ANTENNASTABLE= "ANTENNASTABLE";public static final String ANTENNASCHART= "AntennasChart";public static final String FIELDIDSITE = "FIELDIDSITE";public static final String FIELDANTMOD = "FIELDANTMOD";public static final String FIELDIDSITEPOINT = "FIELDIDSITEPOINT";public static final String FIELDTILT = "FIELDTILT";public static final String FIELDDIRECTION = "FIELDDIRECTION";public static final String FIELDACTIVE = "FIELDACTIVE";public static final String HATT="HATT";public static final String VATT="VATT";public static final String FIELDNTX = "FIELDNTX";public static final String FIELDPOWTX = "FIELDPOWTX";public static final String FIELDXANT = "FIELDXANT";public static final String FIELDYANT = "FIELDYANT";public static final String FIELDGAIN = "FIELDGAIN";

protected IVectorLayer point_Layer;protected IRasterLayer ras_Layer;

39

Page 42: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

//declare input characteristics@Overridepublic 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 Column’s name [dB]"));m_Parameters.addString(VATT, Sextante.getText("Vertical Attenuation Column’s name [dB]"));

addOutputRasterLayer(EFIELD, Sextante.getText("Result"));addOutputTable(TABLERESULT,"Tabella Dati");

40

Page 43: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

catch (final RepeatedParameterNameException e) Sextante.addErrorToLog(e);catch (final OptionalParentParameterException e) Sextante.addErrorToLog(e);catch (final UndefinedParentParameterNameExceptione) Sextante.addErrorToLog(e);

@Overridepublic boolean processAlgorithm() throwsGeoAlgorithmExecutionException 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

Page 44: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

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

Page 45: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

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

Page 46: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

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 filefor (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 sitesx1 = (Double) values[indant][7];y1 = (Double) values[indant][8];Point2D pointCell = extent.getWorldCoordsFromGridCoords(newGridCell(x, y, 0));

Point2D pointAntenna = newPoint2D.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

Page 47: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

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,finaldouble yCell, final double xAntenna, final doubleyAntenna) 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) throwsIteratorException 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

Page 48: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

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

Page 49: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Appendice B

Questionario su RadMap

• Da quanti mesi/anni lavori sui pareri radioprotezionistici?

___ mesi o ___ anni

• FunzioniCon che frequenza usi queste funzioni di RADMAP? (apporre una X sulla casellacorrispondente)

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

Mai Solo in casiparticolari

Sempre

Menù: Gestione Dati1 Aggiungi Edifici*2 Scelta edifici di simulazione*3 Aggiungi storico edifici4 Ricerche storico edifici5 Dati edifici6 Aggiornamento edifici SDE7 Elimina edifici selezionati da SDE8 Configurazione ambiente di simulazione9 Importa Sorgenti*9a – Importa solo le antenne attive9b – Importa solo i siti dell’area di analisi10 Aggiorna database11 Export XML siti12 Import XML siti13 Cerca siti di interesse

47

Page 50: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

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

Mai Solo in casiparticolari

Sempre

Menù: Gestione Dati14 Modifica Siti15 Report Siti Selezionati16 Elimina siti non selezionati17 Nuovo modello di Antenna18 Crea tabella indicatori nel volume19 Aggiorna modelli di antenna locali

Menù: Analisi20 Valutazione Indicatori21 Ricerca punti critici22 Campo orizzontale23 Campo Verticale24 Studio Sito*25 Wizard studio sito*26 Campo su Quadro Unione27 Rimuovi Risultati28 Nuova simulazione

Menù: Visualizzazioni29 Direzioni di puntamento30 Altezza critica libera31 Altezza critica entro gli edifici32 Campo su edifici33 Calcolo valore max da studio sito34 Visualizzazione Standard Edifici35 Sposta Temi In cima allla TOC36 Salva temi visibili37 Ripristina temi visibili38 Cambia legenda GRID39 Quadro di unione

Menù: Archivio40 Archivia simulazione41 Ripristina simulazione42 Elimina simulazione43 Salva/Ripristina simulazione

• Qualora dovesse risultare più comodo avere alcune delle funzioni sopra menzionateraggruppate in un unica schermata allora compila la tabella sottostante, altrimentipassa oltre.

Es: sarebbe comodo avere in un’unica schermata “Aggiungi Edifici” e “Scelta edi-fici di Simulazione”, quindi su un gruppo (es. Gruppo 1) scrivo i numeri corrispon-denti alle due funzioni (1, 2)

48

Page 51: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Gruppo1

Gruppo2

Gruppo3

Gruppo4

Gruppo5

Gruppo6

Gruppo7

Gruppo8

Gruppo9

• Funzionalità 3D

Ritieni eventuali funzionalità di rendering 3D: SI NOutili per l’analisi del parereutili per una migliore rappresentazione del parere ai destinatari

• Automatismi

Ritieni utili queste proposte di automatismi? (Se hai altri suggerimentiaggiungili)

SI NO

Nel produrre i layers del campo elettrico alle varie altezze, il programmaproduce automaticamente anche i layers degli edifici intersecati a talealtezza.Al termine di ogni simulazione viene segnalato automaticamentel’eventuale superamento del limite di esposizione e/o valore diattenzioneViene fatta la simulazione fino all’altezza di gronda (+ metri richiesti)in base ai dati dello shape degli edifici, senza dover inserire il datomanualmenteViene prodotto il layout in automaticoNon dover rinominare ogni volta la cartella del progetto come “radmap”per aprire il progettoDisporre di una funzione che riproduce il volume di rispetto del-l’antenna/e selezionate (utile ad esempio per controllo di classe1)

Altri Suggerimenti

• Tempi di attesa

Quali operazioni richiedono tempi di attesa secondo voi eccessivamentelunghi?

49

Page 52: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

• Modellizzazione di schiera di antenne

SI NORitieni utile uno strumento integrato per la modellizzazione di unaschiera di antenne (a partire dai dati delle singole antenne elementariinserite come antenne consuete ma con l’aggiunta dello sfasamentoper modellarle come un unico elemento correttamente anche in campovicino)Ritieni utile visualizzare il confine tra campo vicino e campo lontanonei layer di simulazione

• Altre proposte e annotazioni

50

Page 53: Progettazione e sviluppo di un applicativo OpenSource come valida alternativa al modello previsionale ETERE

Bibliografia

[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 suc-cessivo dei campi elettromagnetici a radiofrequenza: il modello previsionale ETEREintegrato 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. Verifica di conformità e confronto del modello previsionale Etere,2010

[6] Norma UNI CEI 211-10 V1. Guida alla realizzazione di una Stazione Radio Baseper rispettare i limiti di esposizione ai campi elettromagnetici in alta frequenza;Appendice G: Valutazione dei software di calcolo previsionale dei livelli di campoelettromagnetico, Aprile 2004.

51