Commit Graph
11 Commits
Author SHA1 Message Date
zwitschi 63aa0adf1c feat(geo): cross-check block heights against Mapbox building data
New Geo/tools/mapbox_buildings.py (stdlib urllib) Tilequeries
mapbox-streets-v8 / layer building at each building centroid and merges
height/min_height/type with our OSM height + source (tag > levels > guess,
reusing block_height_report.classify_height). Reports matches, close calls,
disagreements (sorted worst first), our-only and mapbox-only cases, and writes
optional JSON.

First run over 72 buildings: 58 match, 5 close, 3 disagree, 6 non-building.
- Mapbox independently classifies our roof/canopy/shelter volumes as roof,
  canopy or shelter -> corroborates the 0.1.2 finding.
- The 3 disagreements are rear building=yes/apartments structures rendering at
  our 2-level guess (6.4 m) vs Mapbox's 3.0 m.
- Every levels x 3.2 m building is ~0.6 m per 6 levels taller than Mapbox
  implies, i.e. Mapbox suggests 3.1 m per level. Recorded, not applied.

classify_height() now also treats building=canopy as a non-building volume
(found by this cross-check), with tests.

Data handling: Mapbox terms restrict persisting/redistributing their data, so
.gitignore covers Geo/raw/mapbox-cache/ and Geo/verification/*mapbox*; the tool
refuses to cache a response containing the token, and the token is never written
to the cache, report or JSON. Token comes from the ignored .env.

Also: 17 new tests (29 total) for the compare/nearest/centroid/render helpers
and the canopy rule; Geo/README inventory row; architecture 05 + architecture.md
tools table updated per the new upkeep rule.
2026-11-08 16:31:29 +01:00
zwitschi 5ab8b556f3 docs: move task list to TODO.md and keep ROADMAP.md as plan
Split the former ROADMAP.md checklists into TODO.md, which now holds
all actionable work and progress marks. ROADMAP.md keeps milestone
goals, scope, and release gates as prose with no checkboxes.

Update AGENTS.md, Docs/, Geo/README.md, MEMORY.md, and README.md to
point to the new file roles.
2026-11-07 15:17:10 +01:00
zwitschi 386d4bee78 geo: one tool directory, one unit boundary, per-asset provenance
Geo/tools/ is now every geographic script, with Geo/README.md documenting each
one; the Blender-side builders moved beside their outputs in Art/blender/*/ and
import their helpers from Geo/tools/osm_common.py.

That module gains to_unreal_local() and to_blender_local(): the only place in the
repository that multiplies metres by 100, so a second silent scale cannot be
introduced. block_height_report.py adds height provenance for the block — 3 of
15 buildings have no height data and render at a placeholder 6.4 m.
asset_metadata.py writes and audits <asset>.geo.json sidecars; four now exist
(hero-facade, terrain, street, blockout) and the audit recomputes each centre from
the origin, failing anything that disagrees.
2026-11-07 12:28:26 +01:00
zwitschi 101db3f2a4 chore: prepare repository for Gitea publication 2026-11-07 11:08:04 +01:00
zwitschi 72a50d8074 docs: resolve the hero façade width at 25.75 m
The OSM north edge measures 25.74 m, the sibling notes' own column spacing
(5 bays x 4.96 m + one column) gives 25.70 m, and the photo framing agrees.
The 29.6 m figure has no derivation and is dropped rather than averaged. The
neighbour outlines overlap by 0.1-0.3 m, so they are traced shared walls, not
approximate bubbles.
2026-11-06 23:26:40 +01:00
zwitschi 6cded45e2a geo: sample seven cross-sections from the DEM
Gutters sit at -10 m south and +10..12 m north, a ~2% crown between them, and
the envelope runs 0.6-1.0 m per section. Gutter spacing independently confirms
the 20.9 m carriageway measured from the crossing. The sharpest breaks are
0.09-0.12 m/m, so 3DEP does not resolve a kerb upstand: kerb height stays a
recorded assumption rather than a derived value.
2026-11-06 23:02:50 +01:00
zwitschi d97fcc7ad4 geo: acquire the 3DEP 1 m DEM window in EPSG:26911
550x350 m clipped to the block, already in the project CRS, 984 KB, committed
through LFS. Verified against the service's own point query and the earlier
probe: 115.911/119.422/117.593 m, agreement within 6 cm.

Adds Geo/scripts/dem_stats.py, a stdlib tiled-TIFF reader, because GDAL cannot
run on the host and the exported raster is tiled rather than strip-organised.
2026-11-06 23:01:21 +01:00
zwitschi 65fb3759c9 geo: measure block elevation and pick the DEM source
Probe 22 points with the USGS 3DEP point service: walkable surfaces span
115.65-119.59 m, a 3.94 m relief, so elevation data is required by the AGENTS
rule. Grade falls ~3.3 m eastward over the 279 m block (1.2%) and the north
sidewalk sits 0.4-0.7 m above the south. 3DEP 1 m is public domain and becomes
the chosen source; the tile itself is still to be downloaded.

Factored the shared OSM helpers into Geo/scripts/osm_common.py so the street
profile and the elevation probe read the same geometry.
2026-11-06 22:43:13 +01:00
zwitschi 255c1a9e86 geo: measure the block street profile and fix the local CRS and origin
New Geo/scripts/street_profile.py measures the 279.4 m block centreline, the
three signalised crossings (20.9-25.9 m across), sidewalk centrelines at 12.6 m
and 13.6 m, and per-building setbacks of 13.0-15.8 m. Derived sidewalk widths
of ~4.0 m south and ~5.3 m north cross-check against the mapped centrelines.

Geo/manifests/local-origin.md fixes EPSG:26911 and the Highland intersection
node as origin, defines the axes and the x100 metre-to-centimetre rule, and
leaves the projected pair blank because PROJ is not installed here.

Records the lane-count discrepancy (4 tagged lanes over a 20.9 m carriageway).
2026-11-06 22:23:44 +01:00
zwitschi cbcee4040b geo: verify the El Capitan Entertainment Centre address and footprint
Nominatim plus the OSM API confirm 6840 Hollywood Blvd as way 424024147
(Hollywood Masonic Temple, Q3139424), footprint ~1387 m2. The neighbouring
El Capitan Theatre is a separate way with a different amenity and size, so the
two stay distinct structures. Raw responses are checksummed in Geo/raw/.
2026-11-06 21:42:31 +01:00
zwitschi eceaff1397 chore: scaffold repository and record 0.1.0 setup state
Create Game/, Art/, Geo/, Tools/, Docs/ with LFS and ignore rules, record the
workstation audit, toolchain pins, setup checklist, release checks, and
licensing policy. ROADMAP 0.1.0 environment tasks marked to match verified state.
2026-11-06 21:20:57 +01:00