11 febbraio 2010

Da curve di livello SHP a curve di livello DWG 3D

Curve di livello tridimensionali costruite con AutoCAD Map 3D da Shapefile

Bene, eccomi a presentarti una procedura molto richiesta, che puoi seguire con il tuo AutoCAD Map 3D o con il tuo AutoCAD Civil 3D, per trasformare curve di livello in formato Shapefile (SHP) in curve di livello DWG tridimensionali.

Grazie a questa procedura potrai preparare i tuoi dati, per la creazione di un DEM, o di una Superficie con Civil 3D o per creare una Mesh con 3Ds Max. Il presupposto, naturalmente, è che lo Shapefile delle curve d livello contenga, negli attributi, l'informazione sulla quota verticale di ogni curva.

Puoi sfruttare la prima parte di questo articolo anche per vedere da vicino in che modo AutoCAD Map 3D e Civil 3D importano dati GIS, in particolare Shapefile. Ne approfitto per ricordarti che grazie alla tecnologia FDO, con Map 3D e Civil 3D puoi usare direttamente il formato SHP e perfino modificarlo.

Bene, partiamo.
Prima di tutto, per ritrovare gli stessi comandi che userò in questo articolo, scegli con la tendina in basso a destra, l'area di lavoro con barra multifunzione basata sugli strumenti. Questa è presente anche in AutoCAD Civil 3D 2010, con il nome Geospaziale basata su strumenti. Ti indicherò anche il comando da tastiera, così potrai seguirmi anche con le versioni precedenti di Map 3D e Civil 3D.

La scelta dell'area di lavoro in AutoCAD Map 3D 2010

1. Il primo passo consiste nell'importare lo Shapefile delle curve di livello in DWG.
Usa il comando di importazione in DWG dei dati GIS, che trovi nella Barra multifunzione, sotto la voce Inserisci facendo clic sull'icona Importa dati GIS. Oppure scrivi, alla riga di comando, _Mapimport. (attenzione: non dimenticare il _ iniziale).


La Barra multifunzione: evidenziato in giallo il comando Importa dati GIS. Fai clic sull'immagine per ingrandire

La prima finestra del comando, Posizione di importazione, ti chiede la posizione dello Shapefile sul disco.
Accertati di scegliere, nella parte inferiore e di fianco a Tipo file, il formato ESRI Shapefile (*.shp), tra i molti disponibili: puoi importare anche da MapInfo, Microstation ed altri formati ancora. Poi portati nella cartella adeguata, seleziona lo Shapefile e premi il bottone OK.


Nota bene che il formato SHP è un po' bizzarro, soprattutto se di solito usi il DWG. Si compone infatti di almeno tre files, di estensione .shp, .shx e .dbf (ti ricorda quacosa? Il vecchio DB III...). Accertati che ci siano tutti, perchè se uno di questi manca, non potrai utilizzare i dati.
Inoltre ogni Shapefile può contenere un solo tipo di dati: solo punti, o solo linee, o solo poligoni... Quindi è facile trovarsi ad importare diversi Shapefile. Ognuno verrà messo su di in un layer differente del tuo DWG.

La finestra Importa: evidenziato in giallo il campo per l'importazione dei Dati (attributi)

In questa seconda finestra Importa puoi fare molte cose interessanti, in futuro te ne parlerò ancora. Per realizzare la nostra procedura devi specificare che vuoi importare anche gli attributi, che contengono l'informazione sulla quota verticale di ogni curva. Quindi fai subito clic nel campo sotto Dati
Vedrai comparire un piccolo bottone, su cui fai di nuovo clic per aprire la finestra Dati degli attributi.

La finestra Dati degli attributi: è importante scegliere di creare i dati oggetto/attributi

Attiva l'opzione Crea dati oggetto, dove verranno registrati gli attributi dello Shapefile. Premendo il bottone Seleziona campi puoi vedere i campi attributo, e scegliere quali importare e con quale nome. Concludi premendo il bottone OK per tornare alla finestra Importa, dove puoi premere di nuovo il bottone OK.

Un'altra nota: Map 3D e Civil 3D li chiamano Dati oggetto, oppure Object Data, abbreviati con OD, per non confonderli con gli attributi di blocco. ArcView/ArcGIS invece li chiama attributi. Ma sono la stessa cosa.

Non stupirti se dopo l'importazione dei dati, nell'area grafica non vedi ancora nulla. Spesso e giustamente le curve di livello sono inquadrate in un sistema di coordinate,  molto lontano dallo zero. Quindi è necessario eseguire uno zoom alle estensioni per vedere il primo risultato.

Curve di livello della provincia di Como importate da SHP in DWG
Nella finestra proprietà, evidenziati in giallo, i dati oggetto/attributi. Fai clic sull'immagine per ingrandire

Ora le nostra curve di livello sono polilinee DWG, ed hanno nei dati oggetto l'informazione sulla quota. Puoi verificarlo selezionando una curva ed aprendo la finestra Proprietà come nell'immagine qui sopra. Ma le curve sono ancora 2D. Per ora salva il disegno e chiudilo.

2. Il secondo passo consiste nella trasformazione automatica delle curve di livello, in modo che ognuna di esse si porti alla quota verticale indicata nei dati oggetto/attributi che hai importato dallo Shapefile.
Questo risultato è possibile grazie alle funzioni di Query (interrogazione) dei dati DWG di Map 3D e Civil 3D.

Per interrogare, ovvero eseguire una query su di un DWG, non devi aprirlo in modo tradizionale.
Puoi invece sfruttare le funzionalità che ti permettono di associare uno o più disegni ad un progetto (un disegno vuoto) per poi eseguire le interrogazioni, chiamate Query.

Nel Riquadro attività - Area di lavoro, è possibile associare disegni per le interrogazioni (query)

Quindi inizia aprendo un disegno vuoto. Accertati che sia aperto il Riquadro attività: se non lo è, puoi aprirlo con il comando da tastiera Mapwspace, scegliendo poi l'opzione On. Nel Riquadro attività scegli la scheda Area di lavoro e premi il tasto destro del mouse sulla voce Carte: dal menu contestuale scegli Associa.  Oppure, alla riga di comando scrivi _adedrawings e poi premi il bottone Associa.


Finestra Seleziona le carte da associare.  Non dimenticarti di premere il bottone Aggiungi prima di premere OK

Nella finestra Seleziona le carte da associare individua il DWG che hai appena salvato, che ho chiamato Curve2D, premi il bottone Aggiungi, e poi OK.

Una volta associato il disegno delle curve 2D, premi ancora il tasto destro del mouse sulla voce Carte e scegli prima Zoom alle estensioni (_adezextens) e poi Vista rapida (_adeqviewdwgs). Il risultato, apparentemente, è uguale all'apertura del disegno, ma quello che vedi è un'anteprima temporanea, che scomparirà al primo regen..

Se vuoi, puoi dividere lo schermo (Barra multifunzione - Vista - Configurazioni finestra, oppure da tastiera _viewports) e scegliere viste isometriche o frontali per assicurarti che le curve di livello, grazie alle operazioni seguenti, si portino in quota. Se l'anteprima delle curve scompare, scegli di nuovo Vista rapida.

Le curve di livello viste dall'alto, in isometria e di fronte prima della trasformazione

Ora passiamo alla Query, o interrogazione sul DWG associato.


Nel Riquadro attività - Area di lavoro, è possibile definire Query

Premi il tasto destro del mouse sulla voce Query corrente nella scheda Area di lavoro del Riquadro attività (da tastiera _adequery). Dal menu contestuale scegli Definisci Anche qui si apre una finestra molto ricca ed interessante, chiamata Definisci query di carte associate, sulla quale varrà la pena di tornare. 

La finestra Definisci query di carte associate

Prima di tutto devi specificare la posizione dei dati che vuoi modificare: premi il bottone Posizione

La finestra Posizione

Immagino che le curve ti occorrano tutte, quindi scegli l'opzione Tutto e poi il bottone OK
Eventualmente puoi utilizzare le molte opzioni disponibili per limitare la Query alle curve che ricadono in un poligono, o che intersecano una polilinea o una fascia di rispetto, e così via.

La finestra Definisci query di carte associate, dopo aver scelto la posizione dei dati per la Query

Di nuovo nella finestra Definisci query di carte associate, sotto Modalità query scegli l'opzione Disegna, poi premi il bottone sulla destra Altera proprietà


La finestra Imposta alterazioni proprietà

Nella finestra Imposta alterazioni proprietà, scegli la proprietà Elevazione, poi premi il bottone Espressione


La finestra Espressione di alterazioni delle proprietà

Nella finestra Espressione di alterazioni delle proprietà apri la voce Tabelle dati oggetto, poi curve ed infine seleziona il campo QUOTANaturalmente la struttura dei dati dipende dallo Shapefile che hai importato nella prima parte. Infine premi il bottone OK.

La finestra Imposta alterazioni proprietà dopo aver creato l'espressione
 per modificare l'elevazione delle curve di livello

Ancora un attimo di attenzione. 
Nella finestra Alterazioni proprietà premi il bottone Aggiungi, e poi OK

La finestra Definisci query di carte associate
fai attenzione a premere il bottone evidenziato in giallo

Ci siamo. Non ti resta che eseguire la Query premendo il bottone Esegui Query.
Attenzione a non confonderti: se premi il bottone OK la Query viene salvata ma non eseguita. 
La puoi ritrovare facilmente premendo il tasto destro del mouse sulla voce Query corrente nella scheda Area di lavoro del Riquadro attività, scegliendo poi dal menu contestuale Definisci.

Il risultato finale: le curve di livello in 3D

Una volta eseguita la Query, magicamente, le tue curve di livello si portano in 3D. Ognuna alla propria quota. Inoltre, quella che vedi non è più una anteprima temporanea: grazie alla Query in modalità Disegno, le polilinee sono state portate nel disegno che hai aperto all'inizio. In questo modo hai creato un modello tridimensionale che puoi utilizzare per creare una Superficie con Civil 3D, o per creare una Mesh con 3Ds Max o quant'altro l'immaginazione possa inventare...


Ricordati infine di dissociare il DWG delle Curve di livello 2D (tasto destro del mouse sul disegno nell'Area di lavoro -  Dissocia), e poi di salvare il tuo disegno.

Buon lavoro con le curve di livello!
GimmiGIS

13 commenti:

Marcello ha detto...

Ciao GimmiGis!
Ho seguito attentamente la tua ottima guida, ma non sono riuscito a portare le curve di livello all'altezza Z corretta tramite l'interogazione Query.

Premetto che il punto di partenza non è prorpio lo stesso in quanto ho utilizzato un'altra sorgente (da te consigliata), per l'esattezza ASTER GDEM.
Non ho quindi i tre fies tipici del database.

1) Data connect: OK
2) Style Terrain : OK
3) Genera Curve livello : OK
4) Visualizza 3D : OK
5) Test Vertical Exag.: OK
6) >Export : FAILED

Allora ho provato questa guida ma se collego il file salvato in uno vuoto, non riesco a vedere con zoom extens le curve di livello, tantomeno la mappa raster.

Dove sbaglio?
Nelle query (espressione di alterazione delle proprietà) non trovo i tre dati relativi alle curve da cui selezionare QUOTA, ma un sacco di dati in più, (tra cui anche Thickness che dovrebbe corrispondere visto che la mia versione è in inglese).

Grazie in anticipo per la tua disponibilità

Marcello

GimmiGis ha detto...

Ciao Marcello,

Purtroppo non riesco a seguirti molto bene, ma proviamo.

Se hai generato con Map 3D le curve di livello a partire dal DEM ASTER, hai già salvato un file .SDF, il formato Autodesk.
Controlla nella finestra di creazione delle curve di livello: in basso puoi decidere tu dove salvare il file .SDF e come chiamarlo.

Prima di tutto importaro in un DWG come al punto 1 dell'articolo, solo che al posto di SHP devi scegliere SDF. Fai molta attenzione ad importare anche gli attributi, che contengono la quota verticale.

Il resto prosegue uguale...

Buon lavoro
GimmiGIS

Cristian ha detto...

Ciao GimmiGis, ti espongo un problema che ho riscontrato nella esecuzione delle procedure che hai descritto.

Ho provato ad eseguire passo passo tutto ciò ma all'atto di applicare la Query le curve di livello rimangono nella stessa posizione di prima cioè zero.

Da premettere che le isoipse sono state elaborate da Enviro del pacchetto VTerrain Project esportati i vari livelli in file shape con tutti gli annessi e connessi del corredo file.

Il procedimento per me è stato inverso ossia, possedevo una strm di una zona remota del Marocco dove mancava tutta la cartografia tecnica, elaborando il DTM dai dati in formato TIF del ASTGTM2>ritagliato la zona interessata e poi portato tutto su Enviro per la generazione del terreno, da questo con l'apposito comando ho determinato, secondo una equidistanza a mio piacere (2 metri, 5 metri e 10 metri) ho elaborato le isoipse.

E' possibile che dipenda dalla versione di Map3D (valida per 30 giorni) che mi ponga delle limitazioni o è stato elaborato male a monte di tutto cioè prima di caricare i dati su map 3D.

Ti ringrazio per l'attenzione con la speranza di riuscire a risolvere l'arcano.

Saluti.
Cristian

GimmiGis ha detto...

Ciao Cristian,

La versione id prova di Mpa 3d non ha limitazioni, se non la durata di 30 giorni.

ti assicuro che la procedura funziona: prova a controllare...

buon lavoro
GimmiGIS

Cristian ha detto...

Grazie, ho riprovato diverse volte e ci sono riuscito, sicuramente avevo dimenticato di mettere il parametro elevation su enviro e quindi in fase di esportazione in file .shp lo leggeva a quota zero.
Grazie mille per la risposta.

Saluti.
Cristian

Anonimo ha detto...

Ciao GimmiGis, ho una domanda da porti:
io ho un file dwg di una CTR quindi non ho bisogno di effettuare la trasformazione che spieghi nella prima parte; il problema è che quando arrivo al punto di cliccare sul bottone 'Espressione', non ho la voce 'Tabelle dati oggetto'.
Ho notato infatti se seleziono una curva di livello e osservo le proprietà, non trovo le informazioni sulla quota, ma trovo il valore della curva di livello nel campo 'Elevazione'.
Come devo procedere?

Grazie

Marco

GimmiGis ha detto...

Ciao Marco,

Purtroppo sembra che il DWG che stai usando non possiede l'informazione relativa alla quota.

Prova a cercare se la CTR è disponibile in SHP.

Oppure se della stessa zona è disponibile un DEM, dal quale puoi ricavare automaticamente le curve di livello

Buon lavoro

Anonimo ha detto...

Ciao GimmiGIS,
ho seguito il tuo tutorial e non ho avuto tropi problemi a finalizzare l'operazione.
Ora pero' il problema e' quando il sofware distribuisce le isoispe alle corrispettive quote, queste non sono scalate bene. Risultano molto distanti ed e' impossibile avere la percezione tridimensionale della zona in esame.
Praticamente se osservati di prospetto risultano come linee orizzontali molto distanti tra loro.
Non so se questo dipenda dal tipo di dato shp che ho scaricato.
Io personalmente ho fatto riscorso a dati presi da questo sito:
http://opendem.info/opendem_client.html
Dove e' possibile scaricare file shp ti zone di tutto il mondo.

Fammi sapere che ne pensi e se hai qualche idea per risolvere il problema.
Grazie mille per il tutorial e per l'aiuto.
Simone

GimmiGis ha detto...

Ciao Anonimo,

dipende dal campo dello Shp che hai usato per definire la quota sulla Z delle curve.

Hai controllato cosa contiene?

E' corretto che viste di fronte le curve di livello siano delle linee orizzontali distanziate tra loro. La distanza dipende da quel campo di attributi.
In quel sito può darsu che le curve di livello siano molto distanti tra loro.

Buon lavoro
GimmiGIS

Marco Mangano ha detto...

Buona sera, sto seguendo la guida per Civil 3D 2015. Riesco a fare tutto tranne che impostare la query, in quanto cliccando col tasto dx su "Query corrente" e poi definisci, non appare la finestra "Definisci query di carte associate" come da guida, ma il software mi richiede i comandi da tastiera. Come risolvere? Grazie

GimmiGis ha detto...

Ciao Marco,
Sì purtroppo hai incontrato un baco della versione 2015 di Civil 3D.
Per risolvere segui questa soluzione:
http://knowledge.autodesk.com/search-result/caas/sfdcarticles/sfdcarticles/No-dialog-box-pops-up-when-you-do-a-Map-Query-in-Civil-3D-2015.html?v=2015
Buon lavoro
GimmiGIS

Giacomo ha detto...

Buongiorno. Ho letto diverse delle guide da Lei redatte ma non sono comunque riuscito ad ovviare al mio problema. Dopo avere creato le curve di livello dal file DEM della cartografia tecnica regionale, vorrei appunto operare una correzione delle suddette semplificandole. Il problema nasce dal fatto che le curve di livello non vengono riconosciute come oggetti selezionabili ed il layer che le compete viene visualizzato solo nel riquadro attivitá ma non appunto tra i layer del file, ne riesco a inserirlo tra questi affinché mi permetta di selezionare le curve ed avviare l'azione di pulizia. In istanza quando il comando mi chiede di selezionare gli oggetti su cui operare le curve sono per il software invisibili seppur presenti in grafica.Può suggerirmi una qualche procedura per ovviare al problema?
Grazie mille per l'attenzione

GimmiGis ha detto...

Ciao Giacomo,

Prima di tutto ti informo che questo Blog è superato.
Ora mi trovi a questo indirizzo:
www.gisinfrastrutture.it

Riguardo al tuo problema, le curve di livello vengono salvate in un file esterno in formato Sdf e poi connesse, grazie a FDO, al file Dwg.
Per poterle modificare, ti conviene importarle in Dwg.
Usa Mapimport per farlo.

Buon lavoro