LOD1 building extrusion
A small Pillar 0 add-on for council planning, solar studies, line-of-sight, and urban-context demos. Polygon feature classes with a numeric height attribute render as flat-roofed 3D blocks on the existing MapLibre 2D map.
What "LOD1" means
LOD = Level Of Detail, a CityGML / OGC standard for how richly a building is represented:
| Level | What it shows | Example |
|---|---|---|
| LOD0 | 2D footprint only | The building outline on a regular map. |
| LOD1 | Footprint + height → flat-roofed prism | A box. No roof shape, no facade detail, no openings. |
| LOD2 | LOD1 + roof shape (gable / hip / mansard) | A house with a pitched roof. |
| LOD3 | LOD2 + facade detail (windows, doors, balconies) | What you see in Google Earth city models. |
| LOD4 | LOD3 + interior layout | Floor plans + walls inside. |
LOD1 is the cheapest 3D representation that is still useful. The whole city of Manchester as LOD1 is around 250k boxes; that renders in MapLibre at 60 fps on a laptop. The same city at LOD3 is gigabytes of geometry that needs Cesium and a tileset.
What ships
Stratumly already has POLYGON feature classes and an attribute schema with numeric columns. The only delta is a render mode.
Backend
- No schema change. Reuse any existing feature class with
geometry_type=POLYGONand a numeric column (height_m,floors,building_height, …). - New optional field on
feature_classes.style_json:{"fill-color": "#cccccc","extrusion": {"heightAttribute": "height_m","heightMultiplier": 1.0,"baseAttribute": "ground_level_m","minHeight": 2}} - The vector-tile cache keeps emitting the same MVT, no tile-format change.
Frontend (MapLibre)
- The layer style switches from
type: "fill"totype: "fill-extrusion"whenstyle_json.extrusionis present. - MapLibre paint properties used:
fill-extrusion-height: ['get', 'height_m']fill-extrusion-base: ['get', 'ground_level_m'](optional, sits on terrain)fill-extrusion-color: '#cccccc'fill-extrusion-opacity: 0.85
- The map needs
pitchenabled. The default 2DMapViewinitialises locked atpitch: 0; we lift the lock and add a tilt control. - The click handler reads the same properties; the inspector panel is unchanged.
Where on the map
- Pillar 0 only. No survey, no twin, no Cesium. Same
/mappage. - Toggle on the layer-panel row: a small "3D" button next to the visibility toggle. Click → re-styles the layer with extrusion mode. The setting persists on the feature class.
Edit dialog
The layer edit dialog gets a new "3D extrusion" section visible only for POLYGON layers:
- Height attribute picker. Dropdown of numeric columns from the schema.
- Multiplier. Slider 0.5–5.0 for cases where the column is in feet but you want metres, or a stylised exaggerated view.
- Base attribute picker. Optional; for buildings that sit on terrain.
- Min height. Fallback when the row's height attribute is null.
Use cases
- Council planning. "Show me the proposed development overlaid against existing massing."
- Solar / shadow studies. Combine extrusion with MapLibre's sun-position lighting (built-in) to flag overshadowing complaints.
- 5G / wireless line-of-sight. An antenna at building X needs LOS to building Y; extrusion makes the obstruction obvious.
- Cross-corridor visibility. Checking sightlines along a railway or road before greenlighting a development.
- "What fits here" mass-modelling. Drag-and-drop a polygon, set a height, see whether the proposed building dwarfs its neighbours before committing to a CAD design.
What it deliberately is NOT
- Not photogrammetry. No mesh generation from photos.
- Not LOD2+. Roof shapes, facades, windows are out of scope.
- Not the Twin. The xeokit-based Twin Studio is for designed-in-CAD elements with semantics (a column knows it's a column). LOD1 boxes are dumb extrusions: fine for context, not for engineering.
- Not BIM import. IFC / Revit conversion lives in the dedicated Twin Studio + Scan-to-BIM AI roadmap.
Status
LOD1 extrusion is a small, near-term roadmap item. It lights up automatically on any POLYGON feature class with a height column once the toggle ships. We'll prioritise it when the first council customer asks, or when sales calls flag urban-context demos as recurring asks. Not blocking any other work.