Plans de géomètre, relevés topographiques, plans de masse, réseaux : une grande partie des données techniques naît dans un logiciel de DAO (AutoCAD, BricsCAD, Covadis, Mensura…). Le DXF est la porte de sortie vers le SIG. Encore faut-il savoir ce qu'il contient, et ce qu'il ne contient pas.
Ce qu'est (vraiment) un DXF
Le DXF (Drawing Exchange Format) est un format texte publié par Autodesk depuis 1982. Il décrit un dessin, pas une base de données géographique :
- des entités géométriques : LINE, LWPOLYLINE, ARC, CIRCLE, SPLINE, HATCH (surfaces hachurées), TEXT, MTEXT… ;
- des calques qui organisent le dessin (BATI, VOIRIE, LIMITES…) et portent couleur et type de trait ;
- des blocs : symboles réutilisables (arbre, regard, borne) insérés par des entités INSERT, souvent avec des attributs (ATTRIB) comme le numéro de point ou l'altitude.
Le fichier est une longue suite de paires « code de groupe / valeur ». Ouvrez-en un dans un éditeur de texte, vous verrez par exemple :
0
LWPOLYLINE
8
BATI ← calque
90
4 ← nombre de sommets
70
1 ← polyligne fermée
10
942540.00 ← X du 1er sommet
20
6538116.00 ← Y du 1er sommet
Le piège principal : un DXF ne déclare jamais son système de coordonnées. Les nombres sont « des unités de dessin ». C'est à vous de savoir si le géomètre a travaillé en Lambert 93, dans une zone CC, dans l'ancien Lambert II ou… en coordonnées locales arbitraires.
Reconnaître le système d'après les coordonnées
| Ordre de grandeur des X / Y | Système probable |
|---|---|
| X entre 100 000 et 1 200 000 · Y entre 6 000 000 et 7 200 000 | Lambert 93 (EPSG:2154) |
| X autour de 1 700 000 · Y = (zone − 41) millions + 200 000 | Conique CC42 à CC50 (EPSG:3942–3950) |
| X entre 50 000 et 1 200 000 · Y entre 1 600 000 et 2 700 000 | NTF Lambert II étendu (EPSG:27572) |
| Valeurs entre −180 et 180 | Degrés WGS84 (rare en DAO) |
| Petites valeurs (0 à quelques milliers) | Repère local : non géoréférencé |
Exemple : un Y de 5 213 000 correspond à la zone CC46 (5 = 46 − 41). Notre convertisseur DXF applique exactement ce raisonnement pour proposer un système, que vous validez en superposant le dessin à la photo aérienne.
Un dessin en repère local devra être géoréférencé par transformation (au moins deux points connus), comme une image : dans QGIS, l'outil Vector Bender ou l'algorithme « Transformer (affine) » s'en chargent.
Du dessin aux couches : les choix de conversion
Un SIG range les objets par type de géométrie (points, lignes, polygones) et par attributs. Convertir un DXF impose donc des décisions :
- Polylignes fermées : bâtiments et parcelles sont dessinés comme des contours fermés. Les transformer en polygones permet d'en calculer la surface. Mais une polyligne fermée peut aussi être un simple trait (un rond-point dessiné en ligne).
- Arcs et bulges : le SIG ne connaît pas les vrais arcs ; ils sont échantillonnés en segments. 64 segments par cercle donnent une précision largement suffisante.
- Blocs : on peut les « exploser » (récupérer leurs traits) ou ne garder qu'un point d'insertion avec le nom du bloc. Pour des symboles (arbres, regards), le point est souvent plus utile.
- Textes : ils deviennent des points portant le texte en attribut. Les altitudes et numéros de points des relevés topographiques sont ainsi récupérés.
- Calque : il devient un attribut
calque, qui permet ensuite de filtrer ou de symboliser.
Convertir avec ogr2ogr
GDAL lit les DXF nativement. Il faut simplement lui déclarer le système (-a_srs), puisque le fichier ne le dit pas :
# DXF → GeoPackage, déclaré en Lambert 93
ogr2ogr -f GPKG plan.gpkg plan.dxf -a_srs EPSG:2154
# Seulement les polygones du calque BATI, reprojetés en WGS84 pour le web
ogr2ogr -f GeoJSON bati.geojson plan.dxf -a_srs EPSG:2154 -t_srs EPSG:4326 \
-where "Layer = 'BATI'" -nlt POLYGON
# Un shapefile par type de géométrie (le Shapefile n'accepte qu'un type)
ogr2ogr -f "ESRI Shapefile" points.shp plan.dxf -a_srs EPSG:2154 -where "OGR_GEOMETRY='POINT'"
ogr2ogr -f "ESRI Shapefile" lignes.shp plan.dxf -a_srs EPSG:2154 -where "OGR_GEOMETRY='LINESTRING'"
Variables d'environnement utiles du pilote DXF de GDAL :
DXF_INLINE_BLOCKS=FALSE: garder les blocs comme points au lieu de les exploser ;DXF_CLOSED_LINE_AS_POLYGON=TRUE: convertir les polylignes fermées en polygones ;DXF_ENCODING=CP1252: forcer l'encodage des accents pour les vieux fichiers.
Dans QGIS
- Glissez le DXF dans QGIS : une fenêtre propose de charger séparément points, lignes et polygones.
- Clic droit sur chaque couche → Définir le SCR de la couche → choisissez le bon système (EPSG:2154…).
- Vérifiez la superposition avec une photo aérienne (fond IGN).
- Clic droit → Exporter → Sauvegarder les entités sous… → GeoPackage.
Pour des DXF complexes, le menu Projet → Import/Export → Importer des couches depuis DWG/DXF crée un GeoPackage structuré qui conserve beaucoup mieux styles, blocs et textes.
Et le DWG ?
Le DWG est le format natif binaire et propriétaire d'AutoCAD. Deux voies libres existent :
- LibreDWG, projet GNU qui lit (et écrit en partie) le DWG. Il existe une version compilée en WebAssembly, libredwg-web, qui fonctionne directement dans le navigateur : c'est elle qu'utilise notre convertisseur DXF / DWG. Sa prise en charge reste expérimentale sur certains fichiers récents ou complexes.
- ODA File Converter (gratuit, traitement par lots), LibreCAD ou QCAD pour convertir d'abord en DXF. Choisissez une version DXF 2013 ou 2018 en ASCII. C'est la solution la plus fiable en cas d'échec.
Les plans d'architecte sont souvent dessinés en coordonnées locales (le bâtiment autour du point 0,0). Le convertisseur le détecte et propose de placer le plan à l'endroit voulu sur la carte, en précisant l'unité du dessin (mètre, centimètre, millimètre).
Contrôles avant de livrer
- Le dessin tombe au bon endroit sur la photo aérienne (à quelques centimètres près pour un plan de géomètre).
- Les surfaces calculées correspondent à celles annoncées sur le plan.
- Les textes sont lisibles (accents corrects) et rattachés au bon calque.
- Aucun calque « de mise en page » (cartouche, cadre, légende) ne s'est glissé dans les données.
Démonstration
Un plan DXF en Lambert 93 lu directement dans le navigateur, avec le moteur du convertisseur DXF / DWG de CartoForge.
À essayer : le système est deviné d'après les coordonnées (Lambert 93) et le plan tombe pile sur la photo. Déclarez-le en CC46 ou en Lambert II : avec les mêmes nombres, il atterrit loin de là, c'est le piège n°1 du DXF. Masquez ensuite des calques, comme on le ferait avant une conversion.