In questo articolo ti spiego come estrarre curve di livello da una nuvola di punti utilizzando il software open source Cloud Compare.
LE NUVOLE DI PUNTI
Una nuvola di punti è un file in cui migliaia, centinaia di migliaia o milioni di punti nello spazio riproducono tridimensionalmente un oggetto o un paesaggio.
La puoi trovare in questi formati di file: LAS, LAZ, PLY, BIN, XYZ, ASCI (e ce ne sono anche altri…).
I rilievi aerofotogrammetrici che hanno seguito la diffusione dell’uso dei droni e la disponibilità di strumenti LiDAR a prezzi più competitivi rispetto a qualche anno fa, fanno parlare sempre più frequentemente delle nuvole di punti.
Le nominano in tanti, le elaborano parecchi tecnici e topografi (ma non solo loro), e molte software house ci hanno investito sopra delle risorse, realizzando prodotti ed applicazioni per importarle, vederle, cambiarle e gestirle.
NUVOLE DI PUNTI DA RILIEVI
Se, qualche anno fa, commissionavi un rilievo topografico quello che ti aspettavi di ricevere (e in molti casi ricevevi…) era la restituzione dell’area secondo una planimetria a curve di livello ed elementi caratteristici del territorio disegnati in un CAD dopo averli ricavati dai punti battuti sul campo.
Oggi potresti ricevere anche una nuvola di punti, una cloudpoints.
Se non ne hai mai vista una l’argomento potrebbe non interessarti ma aspetta a chiudere questo articolo!
Io credo che una nuvola di punti ti può dare accesso a molte informazioni su quello che è stato rilevato.
Se sai come aprirla, ispezionarla, modificarla e trattarla puoi ottenere molto di più di una restituzione planimetrica (spesso bidimensionale!).
E potresti farlo lavorando in completa autonomia, ricercando tu quello che ti serve sapere per il tuo lavoro e senza interfacciarti costantemente con il tecnico che ti ha fatto il rilievo.
CLOUD COMPARE
Cloud Compare è un software open source che nasce per confrontare tra loro nuvole di punti da rilievi laser scanner.
È stato poi implementato nel tempo dal suo sviluppatore con diversi strumenti e plugin avanzati e piuttosto interessanti.
Avevo scritto due articoli su come usarlo per ricavare delle sezioni da nuvole di punti.
Li trovi a questi link: una sezione da una nuvola di punti, sezioni con Cloud Compare.
Apprezzo le qualità di questo software da un po’ di tempo ma è stato solo dopo un corso di formazione organizzato dalla società genovese Gter s.r.l. e tenuto dall’Ing. Ilaria Ferrando, del Laboratorio di Geomatica della Facoltà di Ingegneria dell’Unversità di Genova, che ho percepito davvero tutte le sue potenzialità, oltre ad averne scoperto funzionalità molto interessanti.
Il fatto di essere un software open source e l’enorme comunity online che ha alle spalle (in cui cercare e trovare informazioni, tutorial e soluzione a dubbi) lo rende, a mio avviso, un software da installare e da usare!
Non credo di esagerare se dico che Cloud Compare diventerà, tra i software di gestione delle nuvole di punti, quello che QGIS è diventato nell’ambito GIS.
CURVE DI LIVELLO DA UNA NUVOLA DI PUNTI
Che cos’è una curva di livello lo sai, ma lo riscrivo.
Una curva di livello è una linea che unisce punti del terreno che hanno la stessa quota.
La differenza tra la quota dei punti di una curva di livello e la quota di quelli di una curva vicino è costante per tutte le curve di una mappa ed è l’equidistanza.
Le curve di livello si chiamano tecnicamente isoipse.
Uno dei primi articoli che ho scritto in questo blog riguardava proprio le loro caratteristiche: lo trovi a questo link.
Con le curve di livello puoi sapere dove sono gli impluvi e gli espluvi, puoi capire le pendenze di un versante o localizzare una strada…
Puoi estrarre curve di livello da una nuvola di punti ed ora provo a spiegarti come fare.
IMPORTA LA NUVOLA DI PUNTI
Il primo passo da fare è importare la nuvola di punti in Cloud Compare.
Nel momento in cui scrivo questo articolo è disponibile per il download la versione 2.10 Alpha del software.
Se ti è utile puoi scaricare a questo link una nuvola di punti su cui esercitarti.
È un pezzo di versante a valle di una cava di marmo nel bacino delle Alpi Apuane.
La nuvola proviene da un rilievo aerofotogrammetrico con drone.
Quando importerai il file (LAS), Cloud Compare ti chiederà due conferme: una riguarda le informazioni da caricare insieme ai punti e l’altra è relativa ad una traslazione (di coordinate X, Y e di quota) che ti viene consigliato di fare per evitare errori nell’elaborazione di coordinate troppo grandi (tipiche di un rilievo georeferenziato).
Confermale entrambe.
Non preoccuparti però della traslazione, è solo fittizia e quando esporterai il risultato delle elaborazioni tutto sarà come prima.
SELEZIONA LA NUVOLA DI PUNTI
Una volta importata la nuvola di punti la devi selezionare per attivare le funzioni di elaborazione.
Lo fai cliccando sull’oggetto “Cloud” che trovi nel pannello “DB Tree“, messo di default a sinistra dell’area di lavoro.
CURVE DI LIVELLO DA DEM
Per ricavare curve di livello da una nuvola di punti è necessario passare attraverso la creazione di un modello digitale di elevazione: il DEM (Digital Elevation Model).
Un DEM è una superficie statistica che associa ad ogni coppie di coordinate (X,Y) un’elevazione, una Z.
Il DEM è tipicamente riferito alla topografia terrestre ma può riguardare anche altre superfici.
Non mi addentro nella teoria delle superfici statistiche perchè non credo che sia di valore per lo scopo di questo articolo.
Se vuoi approfondire un po’ di più l’argomento avevo scritto un post sulle differenze tra DEM, DTM e DSM, che trovi a questo link.
Per aiutarti a capire un DEM ed il perchè è importante nel generare le curve di livello, mi aiuto con lo schema che vedi qui sotto.
Questa immagine è la sezione semplificata di un versante, ma tu prova ad immaginarlo intero e nelle tre dimensioni dello spazio.
Un DEM si costruisce discretizzando la superficie topografica con una maglia quadrata.
I quadrati della maglia sono tutti uguali.
Il loro lato è il passo, lo step o la risoluzione del modello digitale.
Ciascun quadrato è un pezzetto di piano orizzontale delimitato dai suoi quattro vertici (di cui sono note le coordinate X e Y) ed ha un’elevazione (un valore di Z) che, solitamente, è uguale all’elevazione media di tutti i punti che ci trovano dentro.
Il DEM è un raster, un’immagine che appare più o meno quadrettata, o pixelata, a seconda delle dimensioni dei quadrati della maglia.
Più il passo è piccolo e più accuratamente sarà rappresentato il paesaggio rilevato.
Il formato di file più comune per un DEM è il TIF.
Si può aprire con qualsiasi software GIS e mantiene al suo interno le informazioni di georeferenziazione.
GENERA IL DEM
Ora che hai un’idea di che cosa sia un DEM ti faccio vedere come si procedere per estrarre le curve di livello da nuvola di punti.
Con la nuvola selezionata vai su “Tools – Projection – Rasterize (and contour plot)“.
Ti si aprirà una nuova finestra dove puoi impostare parecchi parametri per la generazione del DEM e, dopo, delle curve di livello.
All’inizio la finestra è vuota, perchè il DEM non è stato ancora generato.
Ti dico brevemente alcune cose sulle opzioni di generazione.
GRID
La GRID è la maglia che discretizza il modello.
Lo STEP definisce la lunghezza del lato dei quadrati della maglia.
È un parametro importante, anche al fine della generazione delle curve di livello.
Se i quadrati della maglia sono piccoli il DEM approssima bene la nuvola ma le curve di livello potrebbero essere un po’ “nervose“, riproducendo elementi localizzati non interessanti o, addirittura, da non rappresentare (massi e blocchi a media pezzatura lungo il versante).
Se la maglia è fatta da quadrati grandi le curve di livello potrebbero essere più gradevoli da vedere ma rischi di perderti delle particolarità specifiche come conche o dossi che per l’analisi della corrivazione superficiale delle acque di pioggia potrebbero invece essere rilevanti.
Attenzione: Cloud Compare utilizza unità di misura implicite!
Questo vale per la generazione del DEM così come per tutte le altre operazioni sulla nuvole di punti (distanze, superfici, allineamenti, …)
L’unità di misura dipende dall’esecuzione del rilievo.
Se hai rilevato in millimetri, 1 corrisponde ad un millimetro.
Se hai rilevato in metri, 10 sono dieci metri.
Io lavoro in metri.
Qui sotto vedi tre immagini che rappresentano il DEM della nuvola di punti con passo 1 (m) e 5 (m).
Ti accorgi sicuramente come il DEM con step = 5 sia più quadrettato rispetto a quello con step = 1.
L’Active Layer è un modo di vedere il DEM.
Puoi scegliere di usare colori diversi in funzione dell’elevazione (è il caso più frequente e quello che ti faccio vedere qui), usare colori RGB èresi dai colori dei punti della nuvola di punti o ancora usare altri metodi.
Non cambia nulla nella sostanza.
Si tratta solo di una modalità di rappresentazione.
Qui sotto vedi uno zoom sul DEM generato con step di un metro, dove i punti sono i centri dei quadrati in cui si è discretizzato il modello tridimensionale.
PROJECTION
Nel box Projection decidi le informazioni su come Cloud Compare calcolerà il DEM.
Per estrarre curve di livello da nuvola di punti la direction deve rimanere la Z, perchè è nella Z che c’è l’informazione sull’elevazione.
Cell Height ti fa scegliere come vuoi calcolare l’altezza delle celle.
Io lascio solitamente indicato average height – altezza media – perchè mi permette di ridurre la possibilità di avere valori non coerenti con la realtà e dovuti ad una nuvola di punti “sporca” o ad un terreno particolarmente complesso.
Le altre due opzioni (interpolate SFs e resample input cloud) sono meno rilevanti (per questi scopi) e puoi lasciarle non segnate.
EMPTY CELLS
Empty cells è un parametro importante con cui decidi come Cloud Compare si comporta se trova un “buco” nella nuvola di punti.
Con Leave Empty gli fai lasciare il buco vuoto che, a mio avviso, è filosoficamente la scelta più corretta.
Oppure puoi dirgli di riempirlo secondo vari modi.
Tra quelli disponibili ti consiglio “interpolate” con cui il software prende le informazioni sulla quota dai punti esistenti intorno al buco e lo riempie.
Ma puoi provare comunque tutte le varie opzioni per vedere come lavora nel tuo caso.
Il tema dei buchi in una nuvola di punti non è irrilevante, anzi!
Se ricevi una nuvola da un rilievo aerofotogrammetrico (ma vale anche per uno fatto con il laser scanner) potresti volerla pulire per togliere alberi, edifici, tralicci degli elettrodotti, auto parcheggiate o altri elementi antropici, mantenendo solo le informazioni sul terreno (bare earth).
Questa operazione, che Cloud Compare ti fa fare molto bene con i suoi strumenti, è molto importante perchè irrobustisce la nuvola nei riguardi delle informazioni che vuoi mantenere (come il terreno) tuttavia lascia inevitabilmente delle zone prive di informazioni che dovrai scegliere come trattare nella generazione del DEM e delle curve di livello.
Una volta decisi tutti i parametri per la creazione del DEM clicca sul tasto rosso Update Grid e ti comparirà il modello digitale nella finestra principale.
Il DEM lo puoi esportare in un file TIF (geoTIF) andando nel pannello Export della solita finestra (è in basso) e scegliendo l’opzione Raster .
Questo file lo puoi usare all’interno di qualsiasi GIS per eventuali analisi o eleborazioni.
È un file georeferenziato!
GENERA ED ESPORTA LE CURVE DI LIVELLO
Nel riquadro in basso alla finestra che hai ancora aperto seleziona il TAB Contour plot.
Ora puoi generare ed esportare le curve di livello a partire dal DEM.
Qui devi scegliere la quota di partenza nella generazione delle curve.
Attenzione perchè si tratta della quota ricalcolata sulla base della traslazione iniziale che Cloud Compare ti ha proposto all’importazione della nuvola di punti!
Il mio consiglio è quello di arrontondare questo numero con la decina immediatamente inferiore al valore che trovi di default nella cella.
Lo step è l’equidistanza tra le curve di livello.
Min. vertex count rappresenta un indice della complessità di ciascuna curva di livello.
Ogni isoipsa è un elemento polilinea e più è alto questo valore e minore sarà il numero di vertici che la compongono.
Viceversa, un valore basso del Min. vertex count implica polilinee complesse con tanti punti.
Il mio suggerimento è ancora quello di fare vari tentativi in base alla complessità del tuo caso.
Se scegli di mettere la spunta su Colorize le curve di livello avranno colori diversi a seconda della loro elevazione.
Quando avrai impostato i parametri per la generazione delle curve clicca sul tasto Generate.
Con Export poi le esporti come elementi vettoriali.
ESPORTA LE CURVE DI LIVELLO DA CLOUD COMPARE
Se hai scelto di esportare tutte le curve di livello ti troverai il pannello DB-Tree di sinistra pieno di nuovi elementi raggruppati in una cartella che si chiama Contour Plot.
Ciascuna curva è identificata da un numero, è la sua quota.
Ti ripeto ancora una volta che questo valore non è la quota reale ma quella calcolata dalla traslazione iniziale all’importazione della nuvola di punti.
Sono tutti elementi vettoriali che puoi salvare ed importare all’interno di altri software, come un CAD.
Per esportarle seleziona tutta la cartella che le contiene e fai “Save (CTRL+S)“.
Scegli il formato di file che preferisci tra quelli disponibili (tra cui trovi il DXF e lo shapefile SHP) e dai una destinazione al file.
Se apri il file che hai appena salvato in AutoCAD vedrai le curve rappresentate come polilinee 3D con la corretta elevazione e georeferenziate.
E lo stesso ragionamento vale per il file shapefile aperto in un GIS.
Spero che questo articolo ti sia utile per estrarre curve di livello da nuvola di punti in modo semplice e veloce usando un software open source.
La nuvola di punti che ti ho messo a disposizione per il donwload (ti rimetto qui il link) non è complessa né troppo estesa.
Credo che sia piuttosto facile gestirla dalla maggior parte dei computer, senza che siano necessarie particolari prestazioni hardware.
Puoi usarla per sperimentare e fare un po’ di prove a tuo piacimento su quello che ti ho scritto.
Se hai dubbi o hai bisogno di chiarimenti specifici puoi scrivere nei commenti qui sotto.
Usa i commenti anche per consigli e suggerimenti su modalità operative che hai già sperimentato in Cloud Compare durante il tuo lavoro.
A presto!
Paolo Corradeghini
Ho pubblicato un video sul mio canale You Tube che tratta l’interpolazione di una nuvola di punti per ottenere un raster 2.5D e le curve di livello rappresentative del terreno.
Lo trovi qui:
E qui invece puoi ascoltare una puntata del podcast che parla poprio del software Cloud Compare
[spreaker type=player resource=”episode_id=17343343″ width=”100%” height=”200px” theme=”light” playlist=”false” playlist-continuous=”false” autoplay=”false” live-autoplay=”false” chapters-image=”true” episode-image-position=”right” hide-logo=”false” hide-likes=”false” hide-comments=”false” hide-sharing=”false” hide-download=”true”]
Lasciami un commento!
14 Comments
Thanks for this nice and detailed article ou CloudCompare… If possible, could you please avoid to advertise cloudcompare as being “totale gratuità” ? We are “Free” as in “freedom”, not as in “Free beer” ;). We really need the active support from our users! And that’s the exact same thing for QGIS by the way 😉
Don’t hesitate to add the link to our donation app: https://donorbox.org/support-cloudcompare
Hi Daniel, thank you for your feedback and for your work!
Sorry for my mistake, i will go through the post and change what you pointed out.
You’re absolutely right!
Thanks again!
Paolo
articolo ed argomenti molto interessanti!.
Complimenti e saluti
Antonio Ariano D’Elia
Ciao Antonio,
grazie mille!
Paolo
complimenti per il tutorial
ti segnalo un piccolo refuso a questo URL subito dopo la tua firma
http://3dmetrica.it/curve-livello-da-nuvola-punti/
complimenti per il tutorial
ti segnalo un piccolo refuso a questo URL subito dopo la tua firma
http://3dmetrica.it/curve-livello-da-nuvola-punti/
CLOUD COMARE, CLOUDPOINTS, CURVE DI LIVELLO, NUVOLA DI PUNTI, OPEN SOURCE, SOFTWARE, TUTORIAL
Bravo, ottimo post!
Ciao, ottima spiegazione, una domanda: perchè nella schermata per la generazione del DEM la casella ”interpolate sF(s)” non è attiva e quindi non riesca a selezionarla. questo è un problema perchè quando esporto il raster per metterlo nel GIS ho solo una nuvola di punti.
grazie mille
Ciao Francesco, l’opzione per l’interpolazione delle celle del DEM la trovi nella finestra immediatamente al di sotto di “Interpolate Scalar Field”, nel box “Empty cells”.
Lo scalar field è un elemento diverso dal DEM.
Con empty cells dici al software di riempire o meno i buchi della nuvola di punti.
Dopo aver generato la griglia, potrai esportare il raster del DEM oltre che generare la nuvola di punti a passo regolare.
Spero di aver capito bene la tua domanda…
In caso contrario fammi sapere.
Ciao e grazie!
Paolo
Ottimo articolo, è possibile ottenere curve di livello senza passare per il DEM? Il programma riesce a fare sezioni parallele lungo l’asse z interpolando direttamente i punti?
Grazie Damiano,
è possibile tracciare sezioni a passo regolare lungo uno dei tre assi e da lì estrarre il profilo di inviluppo che passa per i punti della nuvola all’interno di un’area di taglio.
Ti segnalo questo articolo dove spero possa trovare spunto per affrontare il tuo caso specifico: http://3dmetrica.it/sezioni-con-cloud-compare/
Va fatta un po’ di attenzione nei profili di inviluppo perchè capita che facciano confusione in corrispondenza di concavità e convessità della nuvola di punti.
Spero di averti risposto Damiano!
Ciao!
Paolo
Ciao Paolo, complimenti per l’articolo!
Vorrei porti un quesito.
Sono uno studente di ingegneria civile, e mi sto trovando a che fare con un DTM di una cava, in cui dovendo estrarre curve di livello (equidistanza 2mt), con cloud compare, mi ritrovo delle curve di livello che tengono conto non solo del reale andamento dei vari piazzali ma anche di macchinari, cumuli di terra provvisori, e blocchi di marmo.
Mi chiedevo se esiste un modo per creare curve di livello limitatamente al “reale” cantiere di cava, senza dover togliere manualmente uno per uno gli oggetti estranei con la pulizia della nuvola di punti?
Grazie in anticipo!
Ciao Daniele,
purtroppo (o per fortuna!) l’unico modo per generare curve di livello effettivamente rappresentative del terreno è quello di togliere (o classificare) i punti della nuvola che ne sono estranei…
Di default il software non può sapere che cosa è “ground” e che cosa non lo è, pertanto è l’utente a doverglielo comunicare.
Buon lavoro!
Paolo