Qualche giorno fa un cliente mi ha contattato chiedendomi un supporto per l'upload di dati sul SINFI. Aveva provato a caricare i suoi dati ma gli era arrivato un ticket di risposta con il rigetto dei dati da parte del sistema perchè non rispettavano le direttive di upload e tra gli errori riscontrati uno faceva riferimento al fatto che i punti caricati fossero 2D anzicchè 3D.
Con questo tutorial ti spiegherò come convertire facilmente un vettore di punti 2D in uno 3D usando QGIS, in allegato all'articolo troverai anche un dataset con cui esercitarti ripercorrendo i passaggi che a breve ti esporrò.
Ho creato un vettore di punti con 100 punti random che ricadono nell'area di un DTM che ho a disposizione e che ti ho messo a disposizione nell'allegato come dicevo prima. Come vedi interrogando un punto vengono visualizzate le sole coordinate X ed Y.
Ricercando "to 3D" nella Processing Toolbox visualizzerai l'elenco di geoalgoritmi che segue:
I geoalgoritmi che userò sono:
- Drape (set z-value from raster)
- Set Z value
- v.drape
- v.to.3d
I primi due sono interni a QGIS, gli altri due sono importati da GRASS.
Drape (set z-value from raster)
Questo è un geoalgoritmo interno a QGIS che consente di estrarre la quota altimetrica da un raster, un DTM o un DSM a seconda delle esigenze di progetto, da associare ad un vettore. Verrà creato un nuovo vettore al termine del processo che avrà in se la quota altimetrica.
Set Z value
Anche questo è un geoalgoritmo interno a QGIS ma a differenza del precedente permette di inserire una quota costante per tutti i punti e non una che varia in funzione della morfologia dell'area di progetto. Al termine del processo verrà creato un nuovo vettore che contiene al suo interno la quota inserita.
Il v.drape di GRASS è molto simile a quello di QGIS nell'output ma, nell'inserimento dei dati necessari all'avvio delle operazioni di aggiunta della quota altimetrica al vettore di ingresso, permette una forte personalizzazione dei settaggi in base alle necessità. Qui puoi trovare l'elenco dei settaggi necessari al suo funzionamento. Ti invito a consultare la guida al link precedente ed ad eseguire alcuni test; sono convinto che sarai entusiasta dei risultati e delle possibilità offerte da v.drape!
GRASS v.to.3d
Mi voglio soffermare su questo geoalgoritmo di GRASS piuttosto che sul precedente perchè consente un'operazione un po' differente rispetto agli altri: importare la quota altimetrica direttamente da un field del vettore di ingresso!
In uno dei due vettori presenti nel dataset per l'esercitazione ce ne è uno che pur avendo in attribute table il field della quota non è un PointZ ma un semplice Point.
Il geoalgoritmo v.to.3d, come detto prima, consente di prelevare questo valore di quota ed usarlo per convertire in PointZ, quindi in 3D, il vettore di ingresso.
Ti invito ad approfondire tutti i parametri per il settaggio del geoalgoritmo leggendo il manuale ufficiale. Il risultato del processo è un nuovo vettore che sarà di tipo tridimensionale come puoi vedere di seguito.
Python
Sei pratico di Python? Guarda come ottenere lo stesso risoltato con questo JupyterNotebook :)