Visualizzazione post con etichetta DWG. Mostra tutti i post
Visualizzazione post con etichetta DWG. Mostra tutti i post

martedì 25 gennaio 2022

Come importare in QGIS simboli vettoriali in formato .DWG e attraverso Inkscape e Notepad++ convertirli in formato .SVG personalizzabile.

Convertire simboli vettoriali dal formato .DWG a quello .SVG utilizzando QGIS per aprire file .DWG e Inkscape per trasformarli in file .SVG

Di seguito viene descritta una strategia in sei mosse per trasformare uno o più simboli dal formato .DWG a quello .SVG per QGIS .

1.0 Software richiesti

QGIS 3.XX (1), Inkscape (2), Notepad++ (3), eventualmente DoublecadXTv5 (4) o DWG TrueView  (5) per convertire i file .DWG più recenti.

2.0 Breve descrizione sul significato degli acronimi utilizzati in questo articolo

I file .DWG e .DXF sono due formati vettoriali di file, sviluppati da AutoDesk, utilizzati per memorizzare disegni tecnici realizzati con programmi CAD (Computer Aided Design).
Il formato file .DWG, che è di tipo binario, viene utilizzato per archiviare dati e metadati di progettazione bi e tridimensionale nei prodotti AutoDesk e in quelli di terzi su licenza.
Il problema con tali formati proprietari è che le loro specifiche complete non risultano disponibili in forma pubblica e aperta.
Per le versioni meno recenti del formato DWG (2000 e 2004) esiste la libreria del consorzio no-profit "Open Design Alliance" (ODA) che permette a QGIS di leggere e scrivere file DWG e DXF direttamente.
Al fine di consentire l'interoperabilità dei dati tra diversi programmi CAD, AutoDesk ha reso pubbliche alcune specifiche, però solo del formato DXF (Drawing Exchange Format), in modo da permettere agli sviluppatori di implementare librerie parzialmente compatibili. 
Un simbolo SVG (Scalable Vector Graphics) è un'immagine vettoriale bidimensionale che descrive un disegno utilizzando il formato XML.
L'XML è un linguaggio di markup, simile al linguaggio HTML, che utilizza un insieme di regole per la codifica dei documenti tramite tag e adotta un formato testuale leggibile con qualsiasi editor di testo come "Blocco note" o "Notepad++" . 

3.0 Aprire un file .DWG in QGIS

Grazie alla campagna portata avanti dal consorzio senza fini di lucro "Open Design Alliance" (ODA), risulta possibile importare direttamente in QGIS, dalla versione 2.18 in poi, file .DWG attraverso il procedimento descritto nel manuale online al  capitolo "13.1.3.4 Importare file DXF o DWG" (6)  che di seguito cerco di riassumere:
1) Nella barra dei menù selezionare : Progetto  Importa/Esporta  Importa Vettori da DWG/DXF  e nella nuova finestra specificare quanto segue.
2) In Target Package scrivere il nome di un nuovo un Geopackage o selezionare l'icona con i 3 puntini  per accedere alla cartella più appropriata 
3) In Disegno di provenienza cliccare sul pulsante Importa per selezionare il file DWG desiderato e facendo attenzione di controllare che il CRS sia quello adatto.
4) Se necessario, selezionare ✅ Espandi riferimenti di blocco e ✅ Usa curve.
5) Impostare il Nome del gruppo di tua scelta
6) Deselezionare i layer CAD indesiderati
7) Selezionare preferibilmente l'opzione ✅ Fondi layer

L'animazione più sotto riportata descrive con più efficacia questi semplici passaggi :

Per vederla a schermo pieno clicca sull'animazione.

Se il simbolo si trova all'interno di una legenda, copiare ed incollare in un nuovo layer solo il simbolo che vogliamo convertire. 
Un aspetto da tenere in considerazione è legato alla questione dei eventuali diritti di terzi, per cui se i simboli sono stati reperiti presso librerie pubbliche (CC-BY-SA ecc.) non ci dovrebbero essere problemi nel loro utilizzo mentre se sono contenuti all'interno di in un progetto commissionato da una P.A. dovrebbero essere già di tipo aperto per il principio Open Data by default, espresso nelle disposizioni contenute negli artt. 12/c.2 e 52/c.3 del C.A.D., altrimenti il permesso va richiesto all'autore.

Alcune note aggiuntive per riuscire a importare disegni DWG più complessi:
  • se per realizzare il disegno in .DWG sono state utilizzate alcune delle funzioni speciali dei prodotti AutoCAD o altri componenti aggiuntivi, allora potrebbero verificarsi delle criticità nel procedimento di importazione in QGIS;
  • per migliorare la compatibilità è preferibile utilizzare file DWG che fanno riferimento alle versioni 2000 o 2004 di AutoCAD, a questa pagina trovate due metodi per identificarli. Nel caso non siano leggibili provate a convertirli con il prodotto gratuito DWG TrueView (© AutoDeskInc. );
  • siccome la struttura di un layer CAD differisce da quella tipica adottata nei GIS, la rappresentazione del disegno CAD in QGIS potrebbe avvenire con un layout molto simile all'originale ma con alcune limitazioni su annotazioni, quote, etichette e tratteggi;
  • normalmente, in un disegno CAD, diversi tipi di geometrie o di oggetti, come punti, linee, archi e immagini, possono coesistere in un unico layer, mentre in un layer GIS, di solito, ogni tipologia di modelli (raster o vettoriale) e di geometrie (principalmente punti, linee o poligoni) devono appartenere a diversi layer. In generale, la differenza principale tra CAD e GIS risiede nella topologia, ovvero nelle relazioni spaziali reciproche tra gli oggetti, strutturalmente presente nei GIS mentre nei CAD ciò non avviene. Infatti, in un layer CAD, le geometrie (linee, polilinee, punti, ecc.) non hanno relazioni spaziali tra di loro e neanche tabelle contenenti attributi associati;
  • nel processo di importazione i dati vengono convertiti in diversi layer GIS sulla base delle geometrie contenute nel layer CAD. Il testo del DWG viene convertito in punti con stringhe di testo memorizzate nella tabella degli attributi, mentre la maggior parte delle geometrie viene posta in un unico layer delle linee se è stata abilitata l'opzione Fondi layer ;
  • se le coordinate grafiche utilizzate nel layer CAD sono arbitrarie, ipotesi piuttosto frequente, in fase di importazione in QGIS conviene assegnare lo stesso S.R. del progetto e successivamente effettuare la georeferenziazione utilizzando il plugin VectorBender ;
  • nel caso in cui l'importazione del file DWG non raggiungesse i risultati attesi è meglio salvare il file DWG in DXF con il programma CAD e quindi in QGIS trascinarlo dal pannello del Browser e rilasciarlo nell’area mappa. Tale procedura potrebbe preservare la maggior parte degli stili. Per importare il DXF in QGIS è possibile utilizzare, in alternativa allo strumento nativo, il plugin AnotherDXFImporter che contiene anche un modulo per la georeferenziazione rapida;
A questo punto possiamo salvare il file in formato DXF, ad esempio selezionando il layer con il simbolo, poi tasto DX del mouse, Esporta  Salva Elementi come... e scegliere il formato DXF, come rappresentato nella seguente animazione :

Clicca sull'immagine per vederla a schermo pieno.

4.0 Passiamo ora a Inkscape

Se non l'avete ancora fatto, procuratevi una copia di Inkscape, lo trovate a questo link .
Esiste anche la versione "portable" che non richiede installazione (2). 
Se per caso l'interfaccia non risulta configurata in lingua italiana : Edit  Preferences  Interface  Language  Scorrere la lista fino a Italian (it). Chiudere Inkscape e riavviare l'applicativo.
 
Per importare il simbolo .DXF, andare nel menù  File → Importa (shortcut CTRL+I) e selezionare nella finestra "Input DXF" l'opzione ✅ Automatic scaling to size A4 .
Una volta importato il simbolo, selezionarlo e ridimensionarlo a 100 x 100 pixel, previo blocco del lucchetto posto sulla barra degli strumenti.
Aprire il menù Modifica selezionare Ridimensiona la pagina alla selezione. In alternativa, si può usare la scorciatoia Ctrl+Shift+R 

Tips per il corretto funzionamento della rotazione del simbolo
Se il punto centrale del simbolo non coincide con il centro del riquadro 100x100 pixel, ovvero è asimmetrico rispetto al centro allora ci potrebbero essere dei comportamenti indesiderati quando si applica un angolo di rotazione. 
Per ovviare a ciò, provare a disegnare un quadrato invisibile 100x100 pixel e posizionare il simbolo in una posizione qualsiasi all'interno del riquadro, anche in un punto non simmetrico ovvero non baricentrico (vedi post riportato tra le Fonti).

Quindi, File  Salva come  digitare il nome con cui salvare il simbolo e nella combo box Salva come al posto del formato Inkscape SVG selezionare il formato SVG puro
Abbiamo finito con Inkscape e lo possiamo chiudere.


Di seguito riporto il video dell'animazione più sopra per eventuali fermi immagine e comunque non serve che alzate il volume perché tanto l'audio non c'è  📢.


5.0 Ultima modifica con Notepad++

Il nostro simbolo sarebbe in teoria pronto per essere utilizzato in QGIS, ma, il codice standard prodotto con Inkscape non permette a QGIS di modificare il colore di riempimento e lo spessore del tratto. Quindi, anche se il nostro simbolo risulta leggibile, QGIS non permette di modificare nessuna delle precedenti proprietà nello stile del simbolo (esiste però una soluzione parziale che vedremo più avanti).
Per rendere modificabile il nostro simbolo SVG in QGIS bisogna accedere al codice XML dell'SVG e modificare alcune righe. La procedura è piuttosto semplice ma prima di procedere è bene effettuare una copia di backup del file nel caso che qualcosa vada storto.

Aprire il file .SVG appena creato con Notepad++ e, dopo le prime righe di intestazione del codice XML, cercare all'interno uno o più tag che iniziano con  <path e finiscono con /> e al cui interno contengono tre righe che iniziano per :

d=" (seguito da alcune serie di parametri)
        style=" (seguito da alcune serie di parametri)
        id=" (seguito da alcune serie di parametri)

Individuate tutte le righe che iniziano con il tag style= e che all'interno contengono il tag stroke, come ad esempio le seguenti:

style="fill:none;stroke:#000000;stroke-width:0.125841" 
oppure
style="stroke:#000000;stroke-width:0.5"

sostituitele con la seguente riga XML:

fill="param(fill) #fff" stroke="param(outline) #000" stroke-width="param(outline-width) 0.2"

operazione facilmente realizzabile in Notepad++ attraverso l'opzione del menù di comando Cerca  Sostituiscishortcut CTRL+H).

Il tag "fill" descrive il colore di riempimento del simbolo (#fff=colore bianco di default), "stroke" assegna il colore del bordo del simbolo (#000=colore nero di default) e "stroke-width" assegna lo spessore del bordo (0.2 di defalut).
 
Alla fine salvare il file sovrascrivendo l'originale.

Anche in questo video non serve alzare il volume dell'audio in quanto non c'é 😉

5.1 Procedimento alternativo al punto precedente by Korto

Nel mese di marzo 2022, sul gruppo telegram QGIS.it, è stato postato dallo sviluppatore di plugin Korto alias Giulio Fattori un breve tutorial, veramente ben fatto, che descrive un procedimento alternativo per la modifica del codice XML del simbolo SVG che può sostituire quanto sopra descritto a partire dal paragrafo finale del punto 4 fino al punto 5.
In pratica, dopo avere digitato il nome con cui salvare il simbolo, attraverso l'opzione del menù di comando File → Salva come, nella combo box Salva come al posto del formato Inkscape SVG selezionare il formato SVG ottimizzato
Per il resto del procedimento rimando alla visione dell'ottimo tutorial di Korto:

Segnalo anche un tutorial, meno recente, di Pigrecoinfinito alias Totò Fiandaca che affronta lo stesso argomento:

 

6.0 Utilizziamo in nostro simbolo in QGIS

Vediamo come utilizzare il nostro nuovo simbolo in QGIS, ricordandoci di impostare il percorso della cartella nella quale abbiamo salvato il simbolo .SVG andando nel menù ImpostazioniOpzioniSistemaPercorsi SVG (nell'esempio del video i simboli sono nella cartella DWG2SVG).


 Segue il video della precedente animazione ma anche questa senza l'audio :


Un'altra modalità per utilizzare i simboli personalizzati è quella di incorporarli direttamente all'interno dello stesso progetto (.qgs o .qgz) in modo da renderli fruibili anche su altre postazioni di QGIS. Per fare ciò esistono diversi procedimenti, il più semplice dei quali consiste nel selezionare, nella combo box della freccia posta a fianco del percorso del simbolo, l'opzione Incorpora simbolo, come risulta dalla seguente animazione:



Se non abbiamo effettuato correttamente le modifiche al codice XML del simbolo SVG, come descritte al punto precedente e quindi, ci troviamo con le caselle del Colore di riempimento e quella del Colore del tratto entrambe non selezionabili (in colore grigetto), esiste una soluzione che permette di modificare solo il colore del simbolo attraverso l'opzione Effetti disegno, presente in fondo alla finestra dello stile del layer, operazione meglio descritta nella pagina che potete trovare a questo link:

Verifichiamo il corretto funzionamento della rotazione del simbolo:



7.0 Considerazioni finali

Nella fase iniziale di stesura di questo articolo, avevo trovato soltanto tutorial e post che prevedevano l'utilizzo programmi CAD proprietari per trasformare file DWG in SVG, ma gli sviluppatori di QGIS sono sempre un passo avanti e, con molto piacere, ho scoperto che non solo questa funzionalità era già stata implementata in QGIS (11) ma era stata anche documentata e tradotta nel manuale in italiano (6). 
Ad ogni modo, se c'è ancora qualcuno che si trova più a suo agio nel lavorare con i software CAD, come ad esempio DoubleCadXT5 (© 2021 IMSI Design LLC.) o AutoCAD (© AutoDeskInc.), invece di imparare ad utilizzare meglio QGIS,  ecco alcuni brevi suggerimenti.
In DoubleCadXT5 o in AutoCAD prima di procedere alla selezione del simbolo è necessario esplodere il blocco nel quale, eventualmente, risultano contenenti i simboli presenti nella legenda del progetto. 
Per copiare il singolo simbolo in un nuova finestra in DoubleCadXT5 (Edit  Copy ...e nel nuovo disegno vuoto Paste) o AutoCAD (utilizzando il DesignCenter, riga di comando, digitare: ADC), per incollarlo nel nuovo disegno utilizzare preferibilmente la posizione origine degli assi (0,0), e salvarlo in formato .DXF senza effettuare alcun'altra operazione (tipo convertire le singole linee in polilinea).
Se invece, dobbiamo esportare una mappa disegnata in CAD che fa uso di coordinate arbitrarie, conviene prima assegnare delle coordinate georiferite alla mappa in CAD. Il procedimento è piuttosto semplice, anche se dal punto di vista cartografico non proprio ortodosso, e consiste nel aprire in AutoCAD, oltre al disegno in DWG anche un layer DXF che abbia le coordinate impostate nel sistema di riferimento desiderato, come ad esempio la CTRN in RDN2008-TM33, relativa all'area in questione. Quindi da riga di comando si digita align (o allinea in italiano) + [invio] e si seguono le istruzioni a video, in modo da rototraslare il disegno CAD su due punti omologhi del layer DXF con coordinate georiferite ed infine si esporta in DXF solo il layer contenente il disegno CAD .


(1) https://qgis.org/it/site/forusers/download.html (Software GIS open source) 
(2) https://inkscape.org/release/inkscape-1.1.1/  (Software open source per la grafica vettoriale) 
(3) https://notepad-plus-plus.org/ (Software open source per modificare codice e testi)
(4) https://www.turbocad.com/content/doublecad-xt-v5 (Software CAD proprietario ma con possibilità di ottenere gratuitamente la licenza) 
(5) https://www.autodesk.com/viewers (Visualizzatore proprietario di AutoDeskInc. )
(9) https://sites.google.com/view/opendataformazione/home (sito informativo e formativo in tema di open data o dati aperti) 



Autore : Daniele Samez


Post più visualizzati