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;
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.
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 → Sostituisci ( shortcut 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:
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ù Impostazioni → Opzioni →
Sistema → Percorsi SVG (nell'esempio del video i simboli
sono nella cartella DWG2SVG).
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)
(8) https://docs.italia.it/italia/piano-triennale-ict/codice-amministrazione-digitale-docs/it/v2017-12-13/index.html (Codice dell'Amministrazione Digitale)
(9)
https://sites.google.com/view/opendataformazione/home
(sito informativo e formativo in tema di open data o dati
aperti)
Autore : Daniele Samez