QGIS: DXF 3D da shp (2D/3D)

Facebook è una fonte inesauribile di ispirazione, ecco un quesito posto nel gruppo pubblico ‘QGIS SICILIA‘:

ESPORTAZIONE DXF 3D
Con Grass riuscivo ad esportare le curve di livello generate all’interno del programma portandomi dietro le informazioni altimetriche. In sostanza un DXF 3d, utilizzando il comando v.out.ogr e non il v.out.dxf (che le schiacciava su quota zero). In QGis non risco a trovare il modo per uscire con un DXF 3D e non riesco neanche a trovare il comando Grass v.out.ogr. Gis 2.12.1 – Lyon su Mac osx El Capitan.

In QGIS esistono vari modi per esportare uno shapefile in DXF, utilizzando procedure native di QGIS, utilizzando il Processing o la shell di OSGEO4W:

  1. Procedure native di QGIS:
    1. da Progetto => Esportazione DXF…;
    2. selezionando il layer: Salva con nome… e poi si seleziona il formato DXF;
  2. utilizzando il Processing (geo-algoritmi GRASS):
    1. v.out.dxf;
  3. shell di OSGEO4W:
    1. ogr2ogr -f "DXF" {outfile} {infile} {-zfield ColumnWithZValue};

ognuno di queste procedure ha delle particolarità, tutte tranne due  permettono di ottenere, in output, un DXF 3D ma sotto certe ipotesi di partenza; analizziamole una per una.

Esportazione DXF …

dal menù Progetto => Esportazione DXF …

Immagine 5
finestra di dialogo Esportazione in DXF

questa procedura, nativa di QGIS, permette di esportare uno o più layer presenti nel progetto (appiattendo eventuali shapefile 3D) ottenendo solo DXF 2D.

NB: con la QGIS 2.16 L’ESPORTAZIONE IN DXF  conserva la geometria, quindi se lo shapefile di partenza è 3D si otterrà un DXF 3D!!!

Salva con nome …

selezionando un layer nella TOC e con tasto desto del mouse selezioniamo ‘salva con nome’:

Immagine 6
Finestra di dialogo – salva con nome…

questa procedure, nativa di QGIS, utilizza GDAL quindi in output otterremo la stessa natura del file di ingresso: cioè se lo shapefile è 3D otterremo un DXF 3D.

Processing:

v.out.dxf

Immagine 8
Finestra di dialogo processing – v.out.dxf

questa procedura, avviata da processing, esporta lo shapefile sempre in 2D, ma è possibile sfruttare le altre caratteristiche del processing come l’iterazione e il bacth processing.

shell di OSGEO4W e OGR2OGR:

ogr2ogr -f "DXF" {outFile} {inFile} -zfield {ColumnWithZValue}

in questo caso anche se lo shapefile è 2D è possibile avere un output 3D se la tabella degli attributi dello shape contiene una colonna con valori di quota; per esempio se utilizzassimo il comando Raster => Estrazione => Curve di livello

Immagine 9
Finestra di dialogo – Curve di livello

tabella attributi:

Immagine 10
tabella attributi con campo ALTIT

Note finali: non avendo mai usato un Mac non saprei se è possibile usare la shell e quindi OGR2OGR. Per quanto riguarda il geo-algoritmo di GRASS v.out.dxf (Processing) per come è configurato non è possibile ottenere un output 3D, ma con opportune modifiche si potrebbe raggiungere lo scopo? da Grass Gis si!!!


 

Annunci

9 pensieri su “QGIS: DXF 3D da shp (2D/3D)

    1. Ciao,
      esporta il dwg in dxf, poi lo importi in QGIS.
      Da QGIS->menu raster->interpolazione.
      cosi ottieni il dtm, per le pendenze menu raster->analisi geomorfologica->pendenza.

      ciao

      Mi piace

  1. Buonasera,
    sono architetto e neofita di QGIS, e avrei bisogno del vostro aiuto.
    Ho bisogno di convertire un file DTM della cartografia regionale toscana in un DXF 3D. Questo file poi lo importerei come terreno in ARCHLINE (parametrico tridimensionale) per generare un terreno.
    Ho Installato qgis, ed ho importato in qgis un file dtm della regione toscana (formato ASCII).
    Tramite raster-estrazione-curve di livello, ho flaggato nome attributo ed ho egnerato le curve di livello come contour linestring. selezionando le curve di livello nella finestra delle informazioni mi riporta la quota di altitudine. Ho anche installato qgis2threejs e con tale plugin posso vedere in explorer il terreno modellato in 3d. Quindi il file DTM a tutti gli effetti dovrebbe contenere la Z. A questo punto esporto in DXF, indico il nome file, simbologia simboli del vettore, codifica cp1252, SR selezionato, e nessuna spunta sulle tre opzioni in basso e clicco ok. Finita l’esportazione apro il file dxf con DWG trueview, mi appaiono le curve di livello, ma se ruoto la vista con l’orbita le curve di livello sono piatte. Ovvero ho esportato un file dxf 2d. Stesso risultato se importo il file dxf in archline tramite la procedure di formazione del terreno. Nessun terreno.
    Non riesco a capire se come poter esportare questo tipo di file DTM verso un DXF 3d. Potete aiutarmi.
    Questo è il link verso il portale della regione toscana da cui potete scaricare il file dtm:
    http://www502.regione.toscana.it/geoscopio/cartoteca.html
    Aperto il gis a dx aprire la tendina di morfologia sotto download, poi flaggare lidar, sulla mappa della regione appariranno rettangoli verdi e rossi. I rettangoli verdi sono della regione toscana, e quelli rossi del min. ambiente. Zommare su un rettangolo rosso (io ho provato questi), nella barra degli strumenti in alto prelevare la freccetta con il +verde, con la freccetta cliccare nel centro del rettangolo, si apre una finestra al cui interno ci sono i file DTM e DSM da scaricare liberamente.

    Grazie mille a tutti.
    Arcghigo

    Mi piace

    1. Ciao,
      come descritto nell’articolo dalla versione 2.16 con esporta in dxf è possibile esportare la geometria in 3D, ma la geometria deve essere 3D nel tuo caso è 2D. I valori che leggi sono nella tabella attributi e non nelle geometria.
      Come risolvere:
      1. utilizzando v.contour.step (da processing) crea curve di livello in 3D – come descritto in questo articolo: https://pigrecoinfinito.wordpress.com/2016/04/01/qgis-estrarre-curve-di-livello/
      2. trasformi le cirve di livello che hai estratto in 3D utilizzando la tabella attributi e v.to.3D sempre da processing.

      saluti

      Mi piace

  2. Buonasera Totò,
    ti ringrazio intanto della tua rapida risposta. Ho seguito il passaggio 1 ed ho estratto prima le curve di livello. Con il comando r.contour.step non riesco però a generare un layer shape. ovvero avvio r.contour.step, imposto 1 (m) su increment between countour levels, imposto il file di destinazione in contours, clicco RUN, lui fa tutti i calcoli, chiude la finestra automaticamente, ma poi a sx nel layer panel non c’è nessun shapefile generato. (stessa cosa nella cartella di destinazione). La fase due, non l’ho ancora provata.
    Non capisco dove sbaglio. ti ringrazio dell’aiuto.

    Mi piace

      1. ciao totò, ho installato la versione 3.0, e sono riuscito, solo con il comando raster-estrazione-curve di livello, ad estrarre le curve di livello 3d.
        Grazie mille ancora per l’aiuto.

        Piace a 1 persona

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

w

Connessione a %s...