feat(geo): adopt Mapbox building calibration (3.1 m per level)
Owner decision: adopt the two findings from the Mapbox cross-check. - LEVEL_HEIGHT 3.2 -> 3.1 m in block_height_report.py and the Blosm --level-height default; every levels-derived building drops ~0.6 m per 6 levels, matching Mapbox. - HEIGHT_OVERRIDES for the three rear building=yes/apartments structures that Mapbox gives as single storey (3.0 m) where our 2-level fallback rendered 6.4 m blocks. - classify_height() takes an optional way_id so overrides apply; the Mapbox cross-check passes it and now reports 66 match / 6 non-building / 0 disagree. - Geometry follows: blockout regenerated at 3.1 (frontage object names preserved, 6/6 exported), frontage re-imported, DemoMap rebuilt, packaged -qaselftest PASS (walk, reset, pause, transect 0 holes, wall probe 0/35). - Docs: Art/blender/README scale table + a note that Blosm adds ~1.9 m roof mass above levels x levelHeight; TODO item closed; MEMORY records the gotcha that blockout regeneration must re-verify the element.* frontage mapping.
This commit is contained in:
1 parent
81f7cd3991
commit
1b22d551fe
37 files changed
+126
-64
No files matched your search
@@ -379,3 +379,24 @@ Scope: facts and traps that cost time to establish. Planned work lives in [TODO.
|
||||
**0.6 m lower per 6 levels** → Mapbox implies **3.1 m per level**, not 3.2.
|
||||
Worth revisiting `LEVEL_HEIGHT` if a measured storey height ever lands.
|
||||
- Its query API surface: `height`, `min_height`, `type`, `extrude` per polygon.
|
||||
|
||||
## 2026-11-09 — Mapbox calibration adopted into the blockout
|
||||
|
||||
- Owner decision: adopt Mapbox. Applied:
|
||||
- `LEVEL_HEIGHT` 3.2 → **3.1 m** in `Geo/tools/block_height_report.py`, and the
|
||||
Blosm `--level-height` default in `Art/blender/blockout/blosm_blockout.py`.
|
||||
- `HEIGHT_OVERRIDES` in block_height_report: ways 1490910971, 1492058875,
|
||||
1492747608 → 3.0 m (Mapbox single-storey; the 2-level guess gave 6.4 m).
|
||||
- `classify_height(tags, level_height, way_id)` now takes the way id so
|
||||
overrides apply; `mapbox_buildings.py` passes it, so the cross-check agrees
|
||||
with the height table.
|
||||
- Re-running the cross-check: **66 match, 6 non-building, 0 close/disagree**.
|
||||
- Geometry: blockout regenerated at 3.1 (object names preserved — the frontage
|
||||
exporter maps `element.020`/`element`/`element.019`/named buildings, all still
|
||||
present, 6/6 exported), frontage re-imported, DemoMap rebuilt, packaged build
|
||||
`-qaselftest` all PASS.
|
||||
- **Blosm adds roof mass** on top of `levels × levelHeight`: 6922 39.1 m vs table
|
||||
37.2, El Capitan Theatre 20.5 m vs 18.6 — both ~+1.9 m. That is a roof, not a
|
||||
height error; the table is the tagged height, the mesh is storey + roof.
|
||||
- Gotcha: regenerating the blockout is safe for names, but any future change to
|
||||
the import must re-verify the 6/6 frontage export and the `element.*` mapping.
|
||||
Reference in new issue
Block a user