How to integrate DWG data in QGis

The DWG format is an Autocad proprietary binary
format. When we want to load layers in
QGis from this format, multiple problems arise.

QGis uses the GDAL library to read / write external formats ,
such as DWG.

Firstly a clarification: do not confuse the DWG format and
DXF format. Often references for DWG / DXF
format are found which is a misuse of language. Both
formats are different . The
DWG format is the native format for Autocad software.
It
is a proprietary format and, in theory,
subject to license. The DXF format is a data
export format for Autocad software.
It
is
public and not subject to license.

If you have at your disposal DXF
files none of the problems raised in
this
article applies.

DWG version

The first concern arises from the fact that several versions
of the DWG format exist.

The GDAL library used by QGis, is compiled
with the libopencad library that manages some of these versions, but
not all . You will get a
message such as the following

In the case where the version is
supported
by libopencad you will
get a window similar to:

Drawing
Software
/ GIS Software

In the previous window we can see the conceptual difference
between
CAD and GIS software. In the drawing software , the
objects are grouped in
“layers ” in this window
. We must not confuse the layer concept with the GIS layer.

GDAL tries to move from one notion to another and
that
is why you have in
this
window
a
proposal for GIS layers built from layers of the DWG drawing file.

The first line suggest a 0-FB1-archive
layer with 7 entities of linear type . It
corresponds to a layer of that name where the designer has placed just the
linear objects . For
this layer / layer there is, a priori, no
problem.

Nevertheless, a a little further down, we
have a “BORNES” layer with 39 entities but
with a “Geometry Collection” type geometry .
This, clearly, means that the objects
drawn
on this layer are of different types : lines , points, text , etc …

GDAL cannot create a single
GIS-type layer from the layer without losing, eventually, important information.
For the time being, QGis does not support layers with different
geometries (I believe, only
Geomedia
Intergraph
manages
multi-type geometries). If you select
TERMS and click OK, you will see
a
new layer in the layers panel , but of the DATASET type

You will not see any
entity
on your cartographic
window. Nevertheless,
if
you
open
the attribute table you can
see
the contents of this DATASET

You can see
that the original layer contained circles and
text. Nevertheless, this layer
is
unusable
in
QGis because no geometry is
associated
with the layer and, therefore, we cannot  display it on the map.

Entities
 Content

The other problem that arises but,
usually, when importing data from
the CAD software, is how to manage symbology entities. In
GIS,
the symbology is managed
outside
the entities data. It is not stored as data, at the
most it can be stored
in
separated files, such as QML or SLD.

In the list of layers shown above you can
see
a FAS-hatch- built layer that contains hatches of buildings .

These layers are useless during
the integration in a GIS.

A workaround

Until GDAL can solve all
these
drawbacks
here is a workaround.

You can install and use a free
program to turn DWG files into DXF, before loading them into QGIS.

ODA File Converter (Open Design Alliance) allows converting
the different versions of DWG to the DXF format.

You can download the following
link
.

Once installed , when running it,  you will get
the following window:

You can select
the most recent version of the DXF format as it does not pose any
integration problem with GDAL and QGIS.
The program converts all the DWG files of a
directory , and possibly subdirectories (if
you
check
the Recursive folders box ).

Besides, the fact of having a
file
in
a readable format by QGis, the program groups all
entities in three types of entities : points, lines and polygons
, plus one Geometry Collection class .

Unlike GDAL and Libopencad
, you will see a reduced number of Geometry Collections.
Only the collections that ODA cannot interpret (eg CADAttdef)
will remain as collections.

Others, such as the layer TERMINALS we have discussed above,
will be converted as points for the texts (with TEXT
attribute ) and lines for the circles .

The result , if you load
the three layers (Point, LineString and Polygon) will be of the
following type:   

A cleaning job to remove drawing artefacts will be
essential to retain only the data itself:

This can be easily done since the attribute table
generated
contains
the name of the original layer for each
entity
.

Leave a Reply

Your email address will not be published. Required fields are marked *