Python · AEC · Geospatial

Python for CAD/GIS & BIM Interoperability Pipelines

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.

Start here

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.

DXF vs IFC for GIS Ingestion

Pick the right interchange format for your GIS pipeline — geometry-centric DXF versus semantic, georeferenced IFC — with worked ingestion routes for both.

Applying a Helmert 7-Parameter Transform

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.

ezdxf Deep Dive

Production-grade DXF parsing: traverse block definitions, resolve nested references, and extract vertex arrays without loading entire drawings into memory.

Recently added

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.

Vertical Datums and Height Systems

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.

Point Cloud and Reality Capture

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.

CityGML and GML Interchange

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.

Revit and Navisworks Export Paths

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.

Choosing a Geometry Engine

Shapely, trimesh and OpenCASCADE answer different questions. Compare them on dimensionality, failure behaviour and deployment weight before the first import.

Detecting Mirrored Transforms

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.

What this site covers

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.

Browse all sections

Python Parsing & Geometry 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.