04 novembre 2010

Da curve di livello a DEM tridimensionale

Come passare da così...

A così!

Bene, eccomi a presentarti una procedura molto interessante che ti permette di costruire un modello digitale di elevazione (DEM - Digital Elevation Model) a partire da curve di livello.
Naturalmente utilizzando con AutoCAD Map 3D (ed AutoCAD Civil 3D).

Ma a cosa serve un DEM?
A molte belle cose, come ti ho scritto in questo articolo, dove trovi anche un video che ti spiega passo passo come utilizzarlo. Ma l'obiezione che sento spesso è che i DEM non sono facili da trovare, e quelli disponibili hanno  risoluzione piuttosto bassa. Bene, allora perchè non costruirsi un DEM da soli?

Le curve di livello sono un punto di partenza molto interessante, perchè sono più facili da trovare, ad esempio a partire da Carte Tecniche Regionali, piuttosto che da rilievi topografici. Puoi utilizzare perfino curve di livello in formato Shapefile, come ti ho spiegato qui.

Fino a poco tempo la costruzione di un DEM era un compito riservato solo a software molto evoluti e costosi. Ora invece puoi relizzarlo con AutoCAD Map 3D (e Civil 3D) 2011, oppure con AutoCAD Map 3D 2010 dove hai già installato l'estensione Creazione Superfici.

Allora cominciamo: sono 3 semplici passaggi.

Hai a disposizione un layer di curve di livello, già in quota, in formato DWG.
Se sono in 2D, ma da qualche parte hai l'informazione della quota, puoi usare una Query di Map 3D per portarle tutte automaticamente in quota, come puoi leggere qui.

1. Prima di tutto esporta le curve di livello in Shapefile, con l'elevazione in un campo attributo.
  • Se usi l'Area di lavoro Map Classic, cerca nel menu il comando: Carta > Strumenti > Esporta 
  • Se usi l'Area di lavoro Barra multifunzione basata sugli strumenti scegli: Output > Esportazione Map 3D 
  • Alla riga di comando puoi scrivere _MAPEXPORT (non dimenticare l'underscore iniziale)
Ti appare per prima la finestra Posizione di esportazione.


In alto, di fianco a Salva in scegli la cartella dove salvare lo Shapefile.
In basso, di fianco a Nome file indica il nome, ad esempio CurveLivello.
Di fianco a Tipo file scegli ESRI Shapefile (*.shp).
Dopo aver premuto OK ti appare la finestra Esporta


Nella prima scheda, Selezione, scegli come tipo di oggetto Linea 
Effettua la selezione delle curve di livello che vuoi esportare, utilizzando le semplici opzioni disponibili.
Passa alla scheda Dati.


Premi il bottone Seleziona attributi.
Apri la voce Proprietà e seleziona il campo Elevazione.
In questo modo esporterai il valore dell'elevazione di ogni curva di livello nello Shapefile.
Premi OK per chiudere la finestra Seleziona attributi.
La terza scheda, Opzioni, non ci interessa, quindi premi il bottone OK per avviare l'esportazione.
Alla riga di comando dovresti vedere apparire un messaggio del tipo:

Comando: _mapexport
Esportazione di 481 oggetto/i su 481 selezionato/i in 0 sec.

2. Apri un disegno vuoto e connetti lo Shapefile utilizzando la tecnologia FDO.
Se non è già aperto, apri il Riquadro attività, che è fondamentale per utilizzare molte funzionalità di Map 3D:
  • Se usi l'Area di lavoro Map Classic, cerca nel menu il comando: Visualizza > Riquadro attività
  • Se usi l'Area di lavoro Barra multifunzione basata sugli strumenti scegli: Vista > Riquadro attività AutoCAD Map
  • Alla riga di comando puoi scrivere: MAPWSPACE e poi scegliere ON.
Per connettere lo Shapefile nel Riquadro Attività premi il primo bottone, Dati e poi scegli Connetti a dati


Ti apparirà la finestra Connessione dati


Nella colonna di sinistra scegli il Provider Aggiungi connessione SHP.
Poi sulla destra assegna un nome alla connessione
Individua il percorso dove hai salvato lo Shapefile che hai esportato al punto 1.
Infine premi il bottone Connetti.

Nota: per creare il DEM, basta che lo Shapefile sia connesso.
Quindi se hai fretta, puoi evitare di aggiungerlo alla carta come farò nel passaggio successivo.


Nella finestra Connessione dati, se vuoi, puoi premere il bottone Aggiungi a carta per vedere le curve di livello.

3. Crea il Modello digitale di elevazione (DEM)
  • Se usi l'Area di lavoro Map Classic, passa ad un'altra area di lavoro oppure usa la riga di comando
  • Se usi l'Area di lavoro Barra multifunzione basata sugli strumenti scegli: Crea  > Crea da punti
  • Alla riga di comando puoi scrivere: _MapCreateSurface (non dimenticare l'underscore iniziale)

Nella finestra Crea superficie premi il bottone + in alto a sinistra e scegli Connessione...
NOTA: puoi creare DEM anche da file di testo che contengano le X, Y e Z dei punti, oppure da punti già presenti nel DWG. Mi ricorda Civil 3D... :-)


Nella finestra Dati di origine seleziona le curve di livello che hai appena connesso e premi il bottone OK


Ed eccoci all'ultimo passaggio.

Inizialmente Map 3D legge i vertici delle polilinee dallo Shapefile, quindi il valore del campo Z è tutto uguale a zero. Ma noi abbiamo esportato l'elevazione delle curve di livello nel campo ELEVAZIONE.
Quindi, per indicare a Map 3D di usare il campo ELEVAZIONE, premi il bottone di fianco a Z, dove vedi ,  e scegli il campo dall'elenco degli attributi.
In basso, sotto Nome del file di output premi il piccolo bottone [...] per scegliere la cartella ed assegnare il nome al file .tiff che verrà creato.
Di fianco, sotto Nome layer assegna il nome che desideri per il layer.
Premi infine OK per creare il tuo DEM!

Ecco il DEM creato dalle curve di livello

Ora, se nel Riquadro Attività selezioni il layer che contiene il DEM, la Barra multifunzione ti presenta tutti i comandi che puoi applicare a questo tipo di layer.

Con qualche ulteriore piccolo passaggio che ti ho spiegato qui, puoi ottenere una visualizzazione molto evoluta. E poi tieni presente che ogni ulteriore layer FDO, sia raster che vettoriale, che andrai ad aggiungere con il bottone Dati - Connetti a dati verrà proiettato sul DEM, permettendoti di ottenere ottimi risultati.


Buon lavoro con curve di livello e DEM!
GimmiGIS

15 commenti:

Anonimo ha detto...

domanda:
ho fatto tutto quello che dici per creare una DEM.
problema:
mi sono creato una dem importando in .shp le curve di levello e gli argini dei fiumi.
la superficie creata però non è del tutto reale perche i punti del piano campagna sono più bassi del fiume.

Come faccio a fare una superficie che mi comprende anche i punti di quota?(c'è un comando che interseca le due DEM?)

grazie e gran bel blog
francesco

GimmiGis ha detto...

Ciao Francesco,

Purtroppo senza vedere i dati non ti posso dire perchè il piano di campagna risulta sotto il livello del fiume.

Prova a verificare le quote.

Se vuoi utilizzare i punti di quota, puoi metterli in una tabella Mdb Access e poi connetterli via ODBC.

Buon lavoro
GimmiGIS

GimmiGis ha detto...

Ciao Francesco,

Purtroppo senza vedere i dati non ti posso dire perchè il piano di campagna risulta sotto il livello del fiume.

Prova a verificare le quote.

Se vuoi utilizzare i punti di quota, puoi metterli in una tabella Mdb Access e poi connetterli via ODBC.

Buon lavoro
GimmiGIS

Alex ha detto...

premessa: sono nuovo ai dem... quindi non sono sicuro che le mie considerazioni siano corrette. Ho fatto tutto secondo il tutorial, e alla fine, in pianta, vedo effettivamente una immagine simile a quella che ha postato lei, in tonalità di verde. L'immagine è piana però, se setto il viewpoert in assonometria, vedo una superficie con proiettata sopra la montagna. in ogni caso, il file tif generato, se lo si apre, risulta bianco.. dove sbaglio?

GimmiGis ha detto...

Ciao Alex,

Non devi andare in assonometria.
Devi premere il bottone 3D che vedi in basso, appena sotto larea del disegno. Se usi Civil 3D leggi la soluzione per far apparire questo bottone nel mio articolo:

http://map3d.blogspot.com/2010/01/tre-trucchi-per-usare-map-3d-in-civil.html

Giuliano ha detto...

Ciao Gimmi,
innanzitutto complimenti per il blog, mi è stato davvero utile!
Ho però un problema che non riesco a risolvere: il mio fine ultimo è creare delle viste in sezione (sezioni territoriali) di una porzione di territorio montano. Il file di partenza è un dxf con le curve di livello. Ora ho terminato il processo per trasformare le curve di livello in DEM (come da articolo) ma quando vado su vista con nome, nuovo, sezione 3D l'unica scelta possibile è "nessuno"... Quindi in pratica non posso creare una vista sezionata del mio DEM.
Sapresti aiutarmi?
Grazie in anticipo!

GimmiGis ha detto...

Ciao Giuliano,

Lo strumento adatto per creare sezioni e profili è AutoCAD Civil 3D.

Contiene tutto Map 3D ed aggiunge le funzioni per l'ingegneria civile e la progettazione di infrastrutture.

Ti permette di costruire, dalle curve di livello, il modello TIN (a triangoli), oltre che il DEM che ho descritto in questo articolo.

Grazie al modello TIN potrai poi costruire sezioni e profili a volontà!

Ti aspetto sul mio nuovo Blog:
http://www.gisinfrastrutture.it

Buon lavoro
GimmiGIS

Anonimo ha detto...

Salve.
Sto cercando di scoprire il potenziale di AutocadMap3D. Ho un dwg con delle curve di livello, ottenute da un topografo. Seguendo la procedura (peraltro molto chiara) ottengo una superficie piana. Immagino che le mie curve non abbiano come attributo l'elevazione.
1°) Come posso attribuire alle curve l'elevazione?
2°) Esiste un altro attributo che posso sfruttare per dare la forma in 3D alla superficie?

Grazie mille per il vostro contributo.

Saluti

GimmiGis ha detto...

Ciao Anonimo,

Se il DWG contiene le curve di livello sullo zero, c'è poco da fare.
Chiedi al topografo di fornirti un file con le curve in 3D.

Oppure un SHP con l'elevazione nell'attributo.

Buon lavoro
GimmiGIS

Anonimo ha detto...
Questo commento è stato eliminato da un amministratore del blog.
Anonimo ha detto...

ciao gimmi, mi chiamo Santi e sono uno studente di architettura.
ho seguito tutti i passaggi da te consigliati, utilizzo civil 3d 2013, quando piggio il bottone 3d la figura che mi compare è sempre piana.

GimmiGis ha detto...

Ciao Santi,

La procedura che ho spiegato è con Map 3D.
Per essere sicuro di avere a disposizione tutte le funzionalità di Map 3D all'interno di Civil 3D segui i consigli che ho pubblicato in questo articolo:

http://map3d.blogspot.pt/2010/01/tre-trucchi-per-usare-map-3d-in-civil.html

Valerio ha detto...

Salve, sono un tesista di ingegneria edile architettura e mi sto occupando della creazione di un dtm su esry city engine. Ho trovato utilizzimo questo tutorial per creare una heightmap georeferenziata a partire dagli shape files delle curve di livello. Tuttavia non sono riuscito a impostare la risoluzione dell'immagine tiff che ho creato. Potrei sapere se esiste un modo per impostare questo parametro? Grazie e complimenti per il blog

GimmiGis ha detto...

Ciao Valerio,

Grazie per i complimenti!
Sai che da tempo tengo un nuovo Blog?
Mi trovi all'indirizzo:
http://www.gisinfrastrutture.it

Purtroppo non ho trovato notizie su quello che chiedi.
Ma visto che usi city engine, hai mai provato le potenzialità di InfraWorks 360?
Prova a seguire il seminario registrato che trovi qui:
http://www.gisinfrastrutture.it/2014/04/guarda-come-costruire-la-tua-citta-digitale-3d/

Buon lavoro
GimmiGIS

GimmiGis ha detto...

Ciao Valerio,

Grazie per i complimenti!
Sai che da tempo tengo un nuovo Blog?
Mi trovi all'indirizzo:
http://www.gisinfrastrutture.it

Purtroppo non ho trovato notizie su quello che chiedi.
Ma visto che usi city engine, hai mai provato le potenzialità di InfraWorks 360?
Prova a seguire il seminario registrato che trovi qui:
http://www.gisinfrastrutture.it/2014/04/guarda-come-costruire-la-tua-citta-digitale-3d/

Buon lavoro
GimmiGIS