Choosing ezdxf, pyDWG, or ODA
A production decision guide for CAD ingestion: format coverage, DWG version support, proxy fidelity, licensing, and headless-CI suitability compared side by side.
Python · AEC · Geospatial
Production-ready patterns for building automated interoperability pipelines between CAD, GIS, and BIM systems using Python. Bridge the gap between proprietary spatial formats and open geospatial standards — without lossy guesswork.
A production decision guide for CAD ingestion: format coverage, DWG version support, proxy fidelity, licensing, and headless-CI suitability compared side by side.
Pick the right interchange format for your GIS pipeline — geometry-centric DXF versus semantic, georeferenced IFC — with worked ingestion routes for both.
Flatten Psets and quantity sets into clean key–value records with ifcopenshell.util.element — including inherited type properties and table values.
Convert between geodetic datums in Python with the Bursa–Wolf transform — numpy on ECEF and a pyproj +proj=helmert pipeline, validated on a control point.
Production-grade DXF parsing: traverse block definitions, resolve nested references, and extract vertex arrays without loading entire drawings into memory.
Use ezdxf's doc.header interface to read $INSUNITS, $MEASUREMENT, and custom variables from any DXF version — with worked examples.
The newest work covers the third ordinate, measured data, the closed authoring formats, city-scale interchange, and the engine that does the geometry in between.
A horizontal error is visible on a map; a vertical one is not. Reconcile ellipsoidal, orthometric and project heights with compound CRS definitions in pyproj.
LAS, LAZ and E57 into a spatial pipeline: scaled integer storage, the coordinate metadata processing formats discard, and registering a scan against a design model.
Where a building becomes a city object: the level-of-detail model, namespaced GML geometry, and getting an IFC model into a city model without losing its identity.
Python never reads RVT or NWD — it consumes an export. Which route preserves what, why the configuration is part of the output, and how to automate one unattended.
Shapely, trimesh and OpenCASCADE answer different questions. Compare them on dimensionality, failure behaviour and deployment weight before the first import.
A reflection fits control points as well as a rotation does, so residuals never find it. One determinant check, and the repair that belongs inside the solve.
CAD, GIS, and BIM ecosystems evolved in isolation: each has its own file structures, coordinate conventions, and geometric representations. Python has emerged as the lingua franca for bridging them — but building a pipeline that survives production traffic takes more than reading coordinates. It demands rigorous parsing, deterministic schema mapping, and survey-grade spatial alignment.
This site collects the architectural patterns, library walkthroughs, and extraction strategies needed to build interoperability pipelines that actually scale. Every page is written for engineers and integrators who need to ship. Focus areas include DXF/DWG parsing, IFC integration, coordinate transformation, vertical datums, attribute mapping, point cloud registration, batch conversion, quality control, and automation scripts. When you are choosing between libraries, interchange formats, storage targets or geometry engines, the Interoperability Decision Guides compare ezdxf, pyDWG, and ODA, weigh DXF against IFC for GIS ingestion, contrast GeoPackage with PostGIS as a storage target, and set Shapely, trimesh and OpenCASCADE against each other for the geometry in between.
Coverage now runs from the byte level — group codes, the six-byte DWG signature, EXPRESS typed values — up to city-scale interchange, and across the three families that meet in an infrastructure project: authored CAD, semantic BIM, and measured reality capture. Each page carries runnable Python, a compatibility matrix, and the named failure modes that show up in production rather than in a specification.
Architectural paradigms across CAD, GIS, and BIM — DXF entity structure, DWG limitations, IFC4x3 schema mapping, CityGML interchange, and metadata extraction.
Deep dives into ezdxf, ifcopenshell, pydwg, mesh conversion, point clouds, and Revit export paths — production-grade Python for ingesting design and survey data into clean geometric primitives.
CRS normalization, unit conversion, vertical datums, layer mapping, and scale/rotation synchronization — for reliable, survey-grade alignment across pipelines.
Choose the right library, interchange format, storage target and geometry engine for production pipelines — ezdxf vs pyDWG vs ODA, DXF vs IFC, GeoPackage vs PostGIS, and Shapely vs trimesh vs OpenCASCADE.