DSM, DTM e curve di livello con WebODM

Intermedio Entrambe le linee 14 min di lettura

Ultimo aggiornamento:

Testato con: WebODM 3.2.8, motore ODX / ODM 3.6.0

In questa pagina

Il modello digitale di elevazione (DEM, Digital Elevation Model) è il secondo prodotto per importanza dopo l'ortofoto ed è quello che serve per volumi, pendenze, sezioni e curve di livello. WebODM ne produce due tipi, DSM e DTM, e la scelta sbagliata è la causa più comune di volumi e quote errati. Questa guida spiega come ottenerli bene. Termini nel glossario.

1. DSM e DTM: due superfici diverse#

Il DSM (Digital Surface Model, modello digitale delle superfici) rappresenta la prima superficie che il drone vede dall'alto: tetti, chiome degli alberi, veicoli, cumuli. È ciò che la fotogrammetria misura direttamente.

Il DTM (Digital Terrain Model, modello digitale del terreno) rappresenta il suolo nudo. La fotogrammetria non lo vede sotto la vegetazione o sotto gli edifici: il DTM è quindi il risultato di un filtro che classifica i punti "terreno" e interpola il resto.

Voce DSM DTM
Cosa rappresenta Tutto ciò che è visibile dall'alto Il terreno, senza oggetti
Come nasce Direttamente dalla nuvola di punti Dalla nuvola filtrata (SMRF)
Affidabile su Superfici scoperte, tetti, cumuli di inerti Terreno aperto, scavi, aree con vegetazione bassa
Poco affidabile su Boschi fitti, centri storici densi, dove il suolo non è mai visibile
Usi tipici Volumi di cumuli, altezze degli edifici, ortofoto Curve di livello, sezioni del terreno, movimenti terra

Un volume di scavo calcolato sul DSM include la vegetazione e i mezzi parcheggiati. Una curva di livello estratta dal DSM disegna il contorno dei tetti. Prima di chiedere un DEM, chiediti quale superficie ti interessa.

2. Attivare DSM e DTM in WebODM#

Nelle opzioni del task attiva --dsm, --dtm o entrambi (predefinito: disattivati). Il preset "DSM + DTM" li accende insieme e imposta valori ragionevoli per il resto; i preset restano modificabili.

Le opzioni che governano il risultato:

Opzione Effetto
--dsm Produce odm_dem/dsm.tif
--dtm Produce odm_dem/dtm.tif e attiva la classificazione del terreno
--dem-resolution Risoluzione in cm/px del DEM (predefinito 5 cm/px)
--dem-gapfill-steps Numero di passaggi di riempimento dei buchi (predefinito 3)
--smrf-scalar, --smrf-slope, --smrf-threshold, --smrf-window Parametri del filtro terreno (vedi §3)
--pc-quality Densità della nuvola da cui il DEM è interpolato
--crop Ritaglio del bordo, come per l'ortofoto

Sulla risoluzione vale lo stesso ragionamento fatto per l'ortofoto: il DEM è interpolato dalla nuvola di punti e non può essere più dettagliato della nuvola stessa. Una --dem-resolution molto fine con --pc-quality medio produce un raster grande ma "liscio", perché tra un punto e l'altro il software interpola. Se ti serve un DEM più fitto, alza prima la qualità della nuvola (guida alla nuvola di punti), poi la risoluzione.

--dem-gapfill-steps controlla quanto il software si sforza di riempire le celle vuote (zone d'acqua, superfici senza punti). Con 0 i buchi restano come "no data"; con valori più alti vengono chiusi interpolando da distanze crescenti. Per un DTM da consegnare conviene un valore basso e dichiarare le zone senza dati, piuttosto che un riempimento che inventa terreno.

Stessa area: DSM con alberi ed edifici a sinistra, DTM filtrato a destra, in stile ipsometrico

3. Il filtro SMRF e i suoi quattro parametri#

Per costruire il DTM, ODM/ODX usa l'algoritmo SMRF (Simple Morphological Filter). L'idea: il terreno è una superficie relativamente continua, mentre oggetti e vegetazione sono "rilievi" che sporgono bruscamente da essa. Il filtro apre una finestra mobile sulla nuvola, stima la superficie del suolo e scarta ciò che sta troppo sopra.

I quattro parametri hanno un significato qualitativo che puoi usare per orientarti:

Parametro Cosa controlla Se lo aumenti
--smrf-window Dimensione massima (in metri) della finestra di analisi, cioè degli oggetti che il filtro può rimuovere Rimuove edifici e alberi più grandi, ma rischia di appiattire dossi e terrazzamenti reali
--smrf-slope Pendenza massima considerata "terreno" Tollera versanti ripidi, ma lascia passare più vegetazione bassa
--smrf-threshold Distanza verticale (in metri) sopra la superficie stimata entro cui un punto è ancora terreno Più permissivo: meno buchi nel DTM, più rumore (cespugli, auto)
--smrf-scalar Fattore che lega la soglia alla pendenza locale Rende la soglia più elastica dove il terreno è inclinato

I valori predefiniti sono pensati per un caso generico; li trovi nella documentazione delle opzioni (link in fondo). Le regolazioni tipiche:

  • Terreno pianeggiante con capannoni grandi: aumenta --smrf-window finché i tetti scompaiono dal DTM.
  • Collina o cava con fronti ripidi: aumenta --smrf-slope, altrimenti il filtro "taglia" le scarpate credendole oggetti.
  • Vegetazione erbacea bassa: abbassa --smrf-threshold per non includerla nel terreno.

Non esiste una combinazione che funziona ovunque. Il metodo corretto è cambiare un parametro alla volta, rielaborare dal passo del DEM con --rerun-from e confrontare il DTM con quote note (i tuoi GCP o check point). La guida alle opzioni e quella sui casi particolari approfondiscono.

4. Le quote: ellissoidiche o ortometriche?#

I valori nel DEM sono nell'unità e nel sistema di riferimento del task. Senza GCP, le quote derivano dal GPS del drone e sono ellissoidiche WGS 84; i capitolati e le carte italiane usano quote ortometriche (livello medio del mare), che in Italia stanno circa 37–50 m più in basso, a seconda della zona. Se il DEM ti sembra "troppo alto" di una quarantina di metri rispetto alla CTR, è quasi sempre questo.

La soluzione robusta sono GCP misurati in quote ortometriche; l'alternativa è la correzione in QGIS. Entrambe sono spiegate nella guida ai sistemi di riferimento italiani. L'opzione --gps-z-offset applica solo un offset costante e non sostituisce un modello del geoide.

5. Curve di livello con il plugin Contours#

WebODM include il plugin Contours, che estrae le isoipse direttamente dal DSM o dal DTM del task e le mostra sulla mappa 2D.

  1. Apri la mappa 2D del task e cerca il pulsante del plugin Contours nella barra degli strumenti.
  2. Scegli il DEM di partenza (DSM o DTM: per le curve del terreno serve il DTM).
  3. Imposta l'intervallo tra le curve, in metri. Un intervallo inferiore alla precisione verticale del rilievo produce curve rumorose e non aggiunge informazione: con un volo senza GCP raramente ha senso scendere sotto 1 m.
  4. Imposta la semplificazione, che smussa le linee eliminando i vertici superflui; più alta, curve più leggere e meno fedeli.
  5. Genera l'anteprima. Se il risultato ti convince, esporta.

I formati di esportazione previsti dal plugin includono formati vettoriali GIS (per esempio GeoJSON) e formati CAD (DXF); l'elenco esatto e le opzioni disponibili vanno verificati nel pannello del plugin della tua versione e nella documentazione di WebODM. Se ti serve un GeoPackage e il plugin non lo offre, esporta in GeoJSON e converti in QGIS.

Pannello del plugin Contours in WebODM con intervallo, semplificazione e menu di esportazione

Il plugin Elevation Map, sempre in WebODM, colora il DEM sulla mappa 2D con una scala di quote e una legenda: è utile per una lettura rapida, non sostituisce l'analisi in QGIS.

6. Curve di livello in QGIS#

Se preferisci lavorare fuori da WebODM, o vuoi controllare ogni parametro, QGIS fa la stessa cosa con GDAL.

  1. Carica dtm.tif in QGIS.
  2. Menu Raster → Estrazione → Curve di livello.
  3. Imposta la banda (1), l'intervallo tra le curve e il nome dell'attributo quota (per esempio ELEV).
  4. Salva in GeoPackage, Shapefile o DXF.

Prima dell'estrazione conviene lisciare il DTM (Raster → Analisi → filtri, oppure il plugin SAGA/GRASS) per evitare curve frastagliate; dopo, puoi semplificare le linee con Vettore → Geometria → Semplifica. Un vantaggio di QGIS è che puoi etichettare le curve con la quota e distinguere le curve direttrici (ogni 5 o 10 m) con uno stile diverso. Il dettaglio dello stile è nella guida esportare in QGIS.

Come verificare

Il tuo DEM è pronto se:

  • in QGIS il DTM non mostra più tetti e chiome, ma conserva scarpate e terrazzamenti reali;
  • le quote in punti noti (GCP, chiusini quotati, capisaldi) sono coerenti con il sistema di quote che il committente aspetta, e non differiscono di ~40 m;
  • le zone senza dati sono poche e dichiarate, non riempite da un terreno inventato;
  • le curve di livello non si intersecano e seguono le forme che vedi nell'ortofoto.

Problemi frequenti#

Nel DTM restano i tetti dei capannoni. La finestra SMRF è più piccola dell'edificio: aumenta --smrf-window.

Il DTM ha "crateri" al posto degli edifici. Il filtro ha tolto l'edificio ma il riempimento è insufficiente o l'area è troppo grande per interpolare: alza --dem-gapfill-steps oppure accetta il no data e gestiscilo in QGIS.

Le scarpate della cava sono state spianate. Il filtro le ha interpretate come oggetti: aumenta --smrf-slope.

Il DEM ha un effetto "ciotola" (bordi curvati). Non è un problema di filtro ma di calibrazione della camera; vedi risultati scadenti e la guida ai GCP.

Le curve di livello sono a "scalini". L'intervallo è troppo fine rispetto alla risoluzione o al rumore del DEM: aumentalo o liscia il raster.

Prossimi passi#

Fonti

Guide correlate