Un’analisi di visibilità consente di stabilire quali sono le porzioni di paesaggio visibili da un osservatore posto in un determinato luogo ed ad una determinata quota. Questo tipo di analisi è importante per tantissimi campi ed applicabile a varie scale.
Viene utilizzata, ad esempio, per verificare l’impatto visivo di una pala eolica; un altro campo di applicazione può essere l’individuazione dei corridoi di tiro in una scena di un crimine giusto per fare un esempio su un campo in cui a volte potrebbero essere impegnati i GIS.
Dato fondamentale per questo tipo di analisi è il DEM. A prescindere dalla tipologia di DEM a nostra disposizione(DSM o DTM) di rilievo è la sua risoluzione spaziale. Man mano che diminuisce la risoluzione del DEM aumentano le risorse necessarie al PC per elaborare il risultato. L’impegno di risorse varia ulteriormente anche in funzione del raggio di influenza impostato, ad esempio, considerando un DSM con un celsize di 1m ci vorranno meno risorse per l’elaborazione dell’analisi di visibilità se si usa un raggio di influenza di 1km rispetto ad usarne uno da 10km.
Per questo articolo userò il DEM20 dell’Ispra, un DTM con celsize di 20m scaricabile liberamente da qui. Per l’elaborazione userò QGIS ed il geoalgoritmo r.viewshed di GRASS GIS. Tecnicamente questa operazione si chiama proprio VIEWSHED e tutti i migliori software GIS dovrebbero essere in grado di effettuare questo tipo di analisi. Ulteriore dato di input è il punto di osservazione che per comodità ho inserito fisicamente nella TOC ma, come vedrai in seguito, per l’analisi ti servono solo le sue coordinate.
Come primo passo dobbiamo ricercare nel Processing Toolbox il nostro geoalgoritmo. Come puoi vedere basta scrivere le prime lettere di r.viewshed per ottenere subito in evidenza ciò che cerchiamo.
Se ti stai chiedendo come mai mi siano comparsi due risultati, il motivo è perchè ho già usato r.viewshed in precedenza e quindi compare in Recently used. La GUI per QGIS si presenta come da immagine che segue, ti spiegherò solo alcuni dei settaggi da usare, quelli più comunemente usati, per gli altri ti rimando alla guida ufficiale del geoalgoritmo che ti ho condiviso prima.
L’elevazione, punto 1, come dice il nome fa riferimento al DEM che dovrà usare r.viewshed per l’elaborazione; ho inserito ovviamente quello usato in questo articolo.
Le coordinate del POI, punto 2, sono le coordinate del punto con cui avviare l’elaborazione. E’ possibile inserirle sia manualmente che catturarle dal canvas cliccando sui tre punti a destra del riquadro di testo.
Il raggio di visibilità, punto 3, è la massima distanza che si vuole indagare dal punto di osservazione. In questo test ho impostato 10km sorvolando su alcuni fattori come il fatto che la superficie terrestre curva oltre i 5km di distanza dal punto di osservazione; ciò significa che come le navi all’orizzonte spariscono a partire dalla chiglia, anche l’analisi di visibilità è influenzata da questo fattore. Altro parametro che ho escluso è l’effetto di rifrazione della luce dovuto all’atmosfera, in base al quale il risultato cambia anche sensibilmente, ti invito a fare dei test usando il dataset allegato a questo articolo.
Veniamo al punto 4, è banalmente il quantitativo di RAM massimo che può impegnare il geoalgoritmo. Riprendendo quanto detto ad inizio articolo sulla risoluzione, devi ricordare che risoluzione e RAM sono inversamente proporzionali. Scegli tu in base al DEM che usi ma soprattutto alla massima RAM del tuo PC quale combinazione è migliore. Io l’ho impostata a circa ¼ del totale della RAM che ho a disposizione, non è una regola fissa ma se hai altri programmi in funzione non dedicando ad r.viewshed tutta la RAM potrai continuare ad utilizzarli.
Il punto 5 fa riferimento al tipo di output dell’elaborazione. Questo sarà sempre un raster ma siccome non avevo necessità di visualizzare le parti di paesaggio non visibili ho preferito risparmiare tempo ad avere in output solo quelle visibili. In alternativa avrei dovuto spuntare il riquadro superiore per ottenere sia la aree visibili che quelle non visibili e poi avrei dovuto effettuare una maschera con il Raster Calculator per avere il risultato desiderato.
Il resto dei parametri sono opzionali, altri impostati di default ma, come ho detto in precedenza, nella guida sono molto ben spiegati. A questo punto possiamo avviare la nostra analisi cliccando su Run.
Ti starai chiedendo quale è il target di questa elaborazione?
Vogliamo capire se la spiaggia di Positano è visibile dal POI che ha le coordinate impostate nel geoalgoritmo.
Ci troviamo infatti in Costiera Amalfitana, in un punto del Monte Gambera a 526 m.s.l.m.
RICORDA CHE il risultato di un’analisi di visibilità è fortemente influenzato dal celsize del DEM, ciò significa che al diminuire del celsize aumenta la qualità dell’elaborazione finale. A parità di settaggi un DEM con un celsize da 1m restituisce un elaborato di qualità molto superiore rispetto ad un DEM con un celsize da 20m.
Ecco il risultato dell’elaborazione:
Come si può vedere dal punto scelto non è possibile vedere la spiaggia di Positano poichè non rientra in nessuna area a scala di blu. Da quel punto importanti porzioni di costa non sono visibili.
Il risultato è reale? Per la risoluzione del DEM usato si.
Si può migliorare? Certo! Ma serve un DEM a risoluzione minore.
Nel dataset allegato trovi tutti i dati che ho usato per questo articolo ed altri 10 POI con cui poter testare altri settaggi e raggi di visibilità.
Ad esempio: cosa è possibile vedere a pochi km a largo di Sorrento(POI 5) in un raggio di 10km?
Python
Sei pratico di Python? Guarda come ottenere lo stesso risoltato con questo JupyterNotebook :)