Le format DWG est un format binaire propriétaire d’Autocad. Quand on veut charger des couches dans QGis à partir de ce format, plusieurs problèmes se posent.
QGis utilise la librairie GDAL pour lire/écrire les formats externes, tels que DWG.
Tout d’abord une précision: il ne faut pas confondre le format DWG et le format DXF. Souvent on trouve des références au format DWG/DXF ce qui est un abus de langage. Les deux formats sont différents. Le format DWG est le format natif du logiciel Autocad. C’est un format propriétaire et, en principe, soumis à licence. Le format DXF est un format d’exportation de données du logiciel Autocad. Il est public et non soumis à licence.
Si vous disposez de fichiers DXF, aucun des problèmes soulevés dans cet article ne s’applique.
Version de DWG
Le premier souci vient du fait qu’il en existe plusieurs versions du format DWG.
La bibliothèque GDAL utilisée par QGis, est compilée avec la bibliothèque libopencad qui gère certaines de ces versions, mais pas toutes. Vous obtiendrez alors un message de type
Dans le cas où la version est supportée par libopencad vous aurez une fenêtre de type:
Logiciel de dessin/Logiciel SIG
Dans la fenêtre précédente on voit la différence conceptuelle entre un logiciel de CAD et un logiciel SIG. Dans le logiciel de dessin, les objets sont regroupés dans des « calques », appelés « couches » dans cette fenêtre. Il ne faut pas confondre la notion de calque avec celle de couche SIG.
GDAL essaye de passer d’une notion à l’autre et c’est pourquoi vous avez dans cette fenêtre une proposition de couches SIG construite à partir des calques du fichier dessin DWG.
La première ligne propose une couche 0-FB1-archive avec 7 entités de type linéaire. Elle correspond à un calque de ce nom où le dessinateur a mis que des objets linéaires. Pour ce calque/couche il n’y a pas de problème, a priori.
Par contre, un peu plus bas, on a une couche « BORNES » avec 39 entités mais avec une géométrie de type « Geometry Collection ». Ceci veut dire en termes plus clairs que les objets dessinés sur ce calque sont de types différents: lignes, points, texte, etc…
GDAL ne peut pas créer une seule couche de type SIG à partir de ce calque sans perdre, éventuellement, des informations importantes. Pour l’instant, QGis ne gère pas des couches avec des géométries différentes (Je pense que seul Geomedia d’Intergraph gère des géométries multi-types). Si vous sélectionnez BORNES et vous cliquez OK, vous verrez une nouvelle couche dans le panneau couches, mais de type DATASET
Vous ne verrez aucune entité sur votre fenêtre cartographique. Par contre si vous ouvrez la table attributaire vous pourrez voir le contenu de ce DATASET
Vous pouvez voir que le calque original était constitué de cercles et de textes. Par contre cette couche est inutilisable dans QGis car aucune géométrie n’est associée à la couche et on ne peut donc pas l’afficher sur la carte.
Contenu des entités
L’autre problème qui se pose, mais en général quand on importe des données en provenance des logiciels CAD, est la manière de gérer la symbologie des entités. Dans un SIG la symbologie est gérée en dehors des données des entités. Elle n’est pas stockée sous forme de données, tout au plus elle peut être stockée dans des fichiers séparés comme les fichiers QML ou SLD.
Dans un fichier de dessin, les mises en formes sont des entités à part entière. Dans la liste des couches affichée plus haut vous pouvez voir un calque FAS-hachures-bati qui contient les hachures des bâtiments.
Ces couches sont inutiles lors de l’intégration dans un SIG.
Une solution de contournement
En attendant que GDAL puisse résoudre tous ces inconvénients un jour, voici une solution de contournement.
Vous pouvez installer et utiliser un programme gratuit pour transformer les fichiers DWG en DXF, avant de les charger dans QGIS.
ODA File Converter (Open Design Alliance) permet d’une part, de convertir les différentes versions de DWG vers le format DXF.
Vous pouvez le télécharger en suivant ce lien.
Une fois installé, à l’exécution vous aurez la fenêtre suivante:
Vous pouvez sélectionner la version la plus récente du format DXF car elle ne pose aucun problème d’intégration avec GDAL et QGIS. Le programme converti tous les fichiers DWG d’un répertoire, et éventuellement des sous-répertoires (si vous cochez la case Recursive folders).
Outre le fait d’avoir un fichier dans un format lisible par QGis, le programme regroupe toutes les entités en trois types d’entités: points, lignes et polygones, plus une classe Geometry Collection.
Contrairement à GDAL et Libopencad, vous verrez un nombre réduit de Geometry Collections. Seules les collections dont ODA n’arrive pas à interpréter (par exemple les CADAttdef) resteront sous forme de collections.
Les autres, comme par exemple le calque BORNES que nous avons vu plus haut, seront convertis sous forme de points pour les textes (avec un attribut TEXT) et de lignes pour les cercles.
Le résultat, si vous chargez les trois couches (Point, LineString et Polygon) sera du type:
Un travail de nettoyage pour éliminer les artefacts de dessin sera indispensable pour ne retenir que les données à proprement parler:
Vous pourrez faire ceci facilement car la table d’attributs générée contient le nom du calque d’origine pour chaque entité.
Salut
Merci pour le tuto.
A noter qu’il existe désormais des convertisseurs en ligne (https://cloudconvert.com/dwg-to-dxf) qui permettent de convertir sans avoir à installer un logiciel.
C’est exact, mais les convertisseurs ne sont gratuits que quand on n’a pas beaucoup de données…après, il faut passer à la caisse.
Blog exceptionnel !
https://www.medespoir.ch
Salut,
J’ai converti mon dossier .dwg en .dxf mais j’ai toujours le message « impossible d’ouvrir la liste des calques » qui s’affiche.
Merci de m’aider à trouver une solution
c’est super.
Merci