COME ESTRARRE CURVE DI LIVELLO DA UNA NUVOLA DI PUNTI

Immagine di curve di livello da nuvola di punti in cloud compare

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: LASLAZPLYBIN, 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.

Finestra di importazione di un file LAS in Cloud CompareQuando 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.

Finestra di avvertimento per la traslazione di coordinate di un file las in Cloud Compareertimento per
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.

Finestra che rappresenta una nuvola di punti nell'arera di lavoro di Cloud Compare

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.

Immagine che mostra come si crea un DEM

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.

Schermata di Cloud Compare relativa alla rasterizzazione di una nuvola di punti

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.

Immagine di Cloud Comapare in cui si vede un DEM con passo 1

 

Immagine di Cloud Comapare in cui si vede un DEM con passo 5

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.

Immagine di Cloud Compare in cui si vede la discretizzazione di un DEM

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 heightaltezza 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!

Immagine che mostra la finestra di esportazione di un DEM in Cloud Compare

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.

Immagine di Cloud Compare in cui si estraggono curve di livello da DEM

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

Immagine di Cloud Compare dove si vedono elencate le curve di livello generate a partire dal DEMSe 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.

Immagine di AutoCAD in cui sono rappresentate curve di livello generate con Cloud Compare

 

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:


 

Se pensi che possa essere utile ad altri, condividilo!Share on Facebook
Facebook
Share on LinkedIn
Linkedin
Tweet about this on Twitter
Twitter
Email this to someone
email
You may also like
Immagine che mostra marker corrispondenti a punti di appoggio in Agisoft Photoscan
FOTOGRAMMETRIA CON PHOTOSCAN PARTE 5 – PUNTI DI VINCOLO E OTTIMIZZAZIONE DEGLI ALLINEAMENTI
Immagine di una missione di volo caricata nell'app Litchi
DRONI: UNA MISSIONE DI VOLO AUTOMATICA CON THOPOS E LITCHI

Lasciami un commento!

8 Comments
  • paolo
    Mag 10,2018 at 16:17

    Bravo, ottimo post!

  • Marcello Pilia
    Apr 16,2018 at 19:54

    CLOUD COMARE, CLOUDPOINTS, CURVE DI LIVELLO, NUVOLA DI PUNTI, OPEN SOURCE, SOFTWARE, TUTORIAL

  • Marcello Pilia
    Apr 16,2018 at 19:52

    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/

  • Marcello Pilia
    Apr 16,2018 at 19:52

    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/

  • Antonio Ariano D'Elia
    Mar 20,2018 at 10:36

    articolo ed argomenti molto interessanti!.
    Complimenti e saluti
    Antonio Ariano D’Elia

    • Paolo Corradeghini
      Mar 20,2018 at 20:32

      Ciao Antonio,
      grazie mille!
      Paolo

  • Gen 26,2018 at 8:54

    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

    • Paolo Corradeghini
      Gen 26,2018 at 10:45

      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

Leave Your Comment

Your Comment*

Your Name*
Your Website

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.