DEV Community

Cover image for Two Roads, One Plan View: Modeling Seattle's SR 99 Tunnel in 3D
GenAnywhere
GenAnywhere

Posted on

Two Roads, One Plan View: Modeling Seattle's SR 99 Tunnel in 3D

The first version of my SR 99 model looked fine from above and wrong from everywhere else. I traced the footprint from a map, extruded it, and called it done. Then I cut a section through the middle and found one road where there should have been two. The plan view had folded the upper and lower decks into a single line, and my model had believed it.
Then the project got interesting.

A plan view cannot hold a stack

Most map data describes the ground in two dimensions. A road is a line, a building is a polygon, a tunnel is a corridor. That works until the corridor carries traffic on two levels. Under downtown Seattle, both directions share the same coordinates and differ only in elevation. A flat file has nowhere to put that.
The fix is simple but deliberate. I treated the alignment as a spine with a station value, then attached a cross-section to each station. The map gave me the spine. The section gave me everything else.

What the map selection provides

I drew a polygon in GenAnywhere around the corridor, from the north portal near Seattle Center to the south portal in SODO, and included the blocks on both sides. The tool returned a massing model of the district with the tunnel represented as a buried volume.
That model was useful for context: portal mouths, surrounding buildings, the two ventilation structures, and the street grid above. It was not useful for the inside of the bore. A footprint model has no reason to know about a central slab.

The section carries the truth

The bored tunnel is roughly 57.5 feet in diameter. Inside that circle, a thick horizontal slab divides the space into an upper roadway and a lower roadway, each with two lanes. Southbound traffic runs on top; northbound runs below. Once I had that section, I could sweep it along the alignment and get a model that behaved correctly in every view.
I kept the section separate instead of baking it into the mesh. When the deck elevation changed, I edited one number and rebuilt the sweep. When a colleague wanted a section drawing, the same source worked.

Portals are where models usually drift

The north and south portals sit at different elevations and connect to different street grids. If the alignment is slightly off, the tunnel will appear to enter a building or float above the road. I checked both ends against the surface model before adding any interior detail.
The ventilation buildings deserve the same treatment. There are two, one at each end, and each connects to the bore through shafts and ducts. In the model I represented the buildings as simple volumes and the shafts as vertical connections. That was enough to test whether the stack of spaces made sense.

Three checks that caught real errors

The first check was deck separation. I measured the vertical gap between the two road surfaces at three stations and compared it with the section. My first sweep had the slab too low, which made the lower deck feel like a basement.
The second check was portal elevation. I compared the road surface at each end with the street surface above it. One portal was off by more than a meter because I had used the wrong ground sample.
The third check was shaft alignment. The ventilation shafts have to land inside the bore, not beside it. In plan view they looked correct; in section they were close to the lining. A ten-minute check saved a day of rework.

Where the model still fails

Two decks in the same footprint create z-fighting in a web viewer, and a cutaway can hide the very deck you want to show. I handled it with visibility rules: upper deck on, lower deck off, then the reverse.
The model is also not a survey product. It is a communication tool built from a map footprint and a published section. For construction, you would need as-built geometry, and for driving, you would need signs. The model is for understanding how the pieces fit.

What I would do next

I would add the emergency exits as explicit nodes rather than holes in the wall. Fifteen of them connect the bore to the surface. I would also separate the lining, the road structure, and the ventilation into layers that can be switched independently.
For now, the section sweep is enough. It turned a flat line on a map into two roads in a tube, which is what the tunnel actually is.

Top comments (0)