DEV Community

Cover image for A Five-Tool Pipeline for Transit Corridor Site Models
Future Built AI
Future Built AI

Posted on

A Five-Tool Pipeline for Transit Corridor Site Models

I built a 3D site model of a 4.2-mile light-rail corridor with five tools. CADMapper supplied base geometry, Cityweft cleaned existing fabric, GenAnywhere produced station massing, PlaceMaker added street context, and InfraWorks held the review. Most of the work was units, origins, and file names.

The corridor

The study area follows a suburban arterial for 4.2 miles and includes six proposed stations. The buffer is 800 meters on each side, which catches low-rise commercial strips, parking lots, two freight spurs, a creek, and a few blocks of houses.
The goal was narrow: compare three station-area massing scenarios and see how they met the street. Nothing was a design; it was context for a review meeting.

Step 1: Base geometry with CADMapper

CADMapper exports one square kilometer at a time, so I pulled eight overlapping tiles with a 100-meter overlap and clipped them to a single corridor boundary in Rhino. The DXF included streets, building footprints, rail centerlines, and the creek.
I set the file to state plane feet and recorded the projection in a manifest before importing anything else. A known block length came out 0.4 percent off the county's measurement — close enough for context, not for track alignment. CADMapper's rail line is a single centerline, so I treated it as a placeholder, not survey geometry.

Step 2: Existing fabric with Cityweft

Cityweft handled the buildings. I exported 3DM for each station area with buildings, roofs, terrain, and roads on separate layers, then merged six files. Heights and roof shapes arrived as metadata.
About six percent of parcels had no height. I filled those from floor counts and flagged them rather than guessing silently. Cityweft's terrain was smoother than CADMapper's, so I used Cityweft for buildings and kept CADMapper as the design surface. Existing fabric stayed at a simple level of detail: extruded footprints, roof forms, no interiors.

Step 3: Station massing with GenAnywhere

For each station, I drew a box around the parcel plus 150 meters and asked for three height scenarios: three, five, and eight stories. GenAnywhere proposes volumes inside that box. The output is block massing, not architecture, which was what the comparison needed.
Two boxes needed redrawing. One crossed the arterial right-of-way; I trimmed it to the parcel line. Another included the creek buffer and put massing in the floodplain. Moving the edge fixed it.
I kept the box polygon and option name in every file name, such as st03_tall_box.dxf. That naming saved me twice.

Step 4: Street-level context with PlaceMaker

PlaceMaker added trees, ground, low walls, and the small buildings across the street. I worked in SketchUp, limited trees to 400 per station, and used white massing for internal review. One photoreal view per station went to the public meeting.
The trees are generic, but canopy size shows where the sidewalk will feel narrow and where the entrance will disappear behind foliage.

Step 5: Aggregate review in InfraWorks

InfraWorks held the whole corridor: terrain, the arterial alignment, six station boxes, existing buildings, and trees. I set the coordinate system explicitly, kept the model in feet, and checked three things: platform grade, pedestrian sightlines, and whether the massing blocked existing crossings.
The first load was slow. After decimating terrain outside station areas and instancing trees, it opened in about forty seconds on a laptop with integrated graphics.

Where it broke

A Cityweft export arrived in meters while the rest of the model was in feet, so one platform came in 3.28 times too long. Duplicate footprints at tile seams added about forty extra buildings until I removed them. One GenAnywhere box included a creek and produced massing in the floodplain. PlaceMaker's trees were heavier than the buildings in the first pass. InfraWorks cached an old terrain surface until I forced a refresh.
None of these were tool failures. They were handoff failures, and every one would have been caught by a two-minute check.

Performance notes

Terrain was decimated to two meters outside station areas, trees were instanced, materials were kept to one per category, and textures were capped at 2K. The model stayed under 300 MB.

What I'd change

Write the manifest before exporting anything. Lock units at the start. Run one box check per station before generating massing. Keep the raw exports untouched. And never use massing geometry for safety clearances or right-of-way decisions.
The pipeline is not clever. It is repeatable, which is the only reason it was useful.

Top comments (0)