geo: add block extract, boundary verification, and the carried-over reference set
Inventory the sibling security-game project and copy only the evidence: nine licensed photos with their sidecar provenance into Art/reference/hollywood/, now LFS-tracked. Add the block-wide OSM extract with a manifest, resolve the demo bounds (Orange Dr -118.341434 .. Highland Ave -118.338718, 279 m) and the south/north building sets, and add Geo/scripts/block_report.py to reproduce it. The sibling docs place the El Capitan Theatre west of 6840; OSM geometry and the house numbering put it east. Recorded with the two unresolved measurement conflicts rather than averaged.
This commit is contained in:
1 parent
cbcee4040b
commit
737e16e7db
7 files changed
+28069
-16
No files matched your search
+2
-2
@@ -23,8 +23,8 @@ Licensing is tracked in four separate layers. Do not merge them; each has differ
|
||||
- **Code licence.** MIT is proposed: short, compatible with the assets' separate terms, and no copyleft spill onto art. Decide before publishing the repository.
|
||||
- **Documentation licence.** Default to the code licence unless a reason appears to separate them.
|
||||
- **ODbL posture.** Decide whether distributed builds contain a derived geographic database (a modified OSM extract) or only rendered geometry. The answer changes the share-alike obligations for the shipped product. Record the decision here and in the release notes.
|
||||
- **Reference photography retention.** The El Capitan reference set is CC BY / CC BY-SA / public domain and currently lives in a sibling project. If it is copied here, carry the per-file attribution and the CC BY-SA review note with it.
|
||||
- **Reference photography retention.** Decided 2026-11-06: the El Capitan reference set is committed under `Art/reference/hollywood/` with its `SIDECAR.md` provenance carried over verbatim, because every file is CC0, public domain, CC BY, or CC BY-SA and none is shipped. The CC BY-SA review note travels with the set. Re-check before any material is derived from a frame.
|
||||
|
||||
## Provenance sources
|
||||
|
||||
Primary record: [THIRD_PARTY_NOTICES.md](../THIRD_PARTY_NOTICES.md). The sibling project at `…/06-games/security-game/docs/screens/refs/hollywood/SIDECAR.md` holds the per-file provenance for the El Capitan block reference photographs and must be carried over verbatim if those files are reused.
|
||||
Primary record: [THIRD_PARTY_NOTICES.md](../THIRD_PARTY_NOTICES.md). The sibling project at `…/06-games/security-game/docs/screens/refs/hollywood/SIDECAR.md` holds the original per-file provenance for the El Capitan block photographs; a verbatim copy now lives at `Art/reference/hollywood/SIDECAR.md`.
|
||||
@@ -0,0 +1,30 @@
|
||||
# OSM extract — Hollywood Blvd block, 2026-11-06
|
||||
|
||||
| Field | Value |
|
||||
| --- | --- |
|
||||
| Source | OpenStreetMap API v0.6, `map` endpoint (`api.openstreetmap.org`) |
|
||||
| Extract date | 2026-11-06 21:45 CET |
|
||||
| URL | `https://api.openstreetmap.org/api/0.6/map?bbox=-118.3435,34.1000,-118.3365,34.1030` |
|
||||
| Data timestamp | not reported by this endpoint; the response carries no replication timestamp, so the extract date is the only date available |
|
||||
| Bounds | west −118.3435, south 34.1000, east −118.3365, north 34.1030 (WGS84) |
|
||||
| Extent | ≈ 640 m east–west × 333 m north–south |
|
||||
| Contents | 3565 nodes, 350 ways; streets: Hollywood Blvd (`secondary`), North Highland Ave (`primary`), North Orange Dr, North McCadden Pl, North Sycamore Ave, Hawthorn Ave, Walk of Fame footway, service alleys |
|
||||
| File | `Geo/raw/osm-api-map-2026-11-06.osm` (1.66 MB, XML) |
|
||||
| SHA-256 | `64615f0db4715c2d50860052e300930c201bbb87e183a1de5985f2d99d83f4e4` |
|
||||
| Licence | ODbL 1.0 — "© OpenStreetMap contributors", <https://www.openstreetmap.org/copyright> |
|
||||
| CRS in source | EPSG:4326 (WGS84 lat/lon) |
|
||||
| Local CRS and origin | not yet chosen. Candidate EPSG:26911 (NAD83 / UTM zone 11N); origin to be recorded when the QGIS step runs |
|
||||
|
||||
## Why this bbox
|
||||
|
||||
It contains the demo block from Highland Avenue to Orange Drive plus the whole north side within 50 m, with enough margin to include the streets' intersection nodes and the alley network behind the south frontage. It deliberately excludes the rest of the boulevard: larger extracts cost processing time and dilute the ODbL review.
|
||||
|
||||
## Coverage limits
|
||||
|
||||
- Building interiors, heights above the tagged value, and pavement widths are not in this data. Treat all of it as layout.
|
||||
- The `height` tag exists on some buildings and is absent on others (`6838` has only `building:levels`, `6922` has neither). A missing tag is not a zero height.
|
||||
- The extract has no elevation. The DEM decision is still open; see `ROADMAP.md`.
|
||||
|
||||
## Attribution obligation
|
||||
|
||||
Any distributed derived output keeps "© OpenStreetMap contributors" and the licence link. The `0.1.0` release check requires the attribution to be visible in the shipped build.
|
||||
File diff suppressed because it is too large.
Load diff
Executable
+103
@@ -0,0 +1,103 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Report streets, boundary intersections and the demo building set for an OSM extract.
|
||||
|
||||
Usage:
|
||||
Geo/scripts/block_report.py Geo/raw/osm-api-map-2026-11-06.osm \
|
||||
--blvd "Hollywood Boulevard" --west "North Orange Drive" --east "North Highland Avenue"
|
||||
|
||||
Reads a plain .osm XML file (the output of the OSM API `map` endpoint or an
|
||||
Overpass export). No network access, no dependencies beyond the standard library.
|
||||
|
||||
Output: the boulevard's block span in metres, the two boundary intersections, the
|
||||
buildings on the boulevard frontage split by side (even/odd is not trusted —
|
||||
latitude relative to the centreline is), and each building's distance from the
|
||||
centreline. Buildings behind the frontage are listed but marked as off-buffer.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import math
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
EARTH_R = 6378137.0
|
||||
|
||||
|
||||
def local_metres(lat, lon, lat0, lon0):
|
||||
x = math.radians(lon - lon0) * EARTH_R * math.cos(math.radians(lat0))
|
||||
y = math.radians(lat - lat0) * EARTH_R
|
||||
return x, y
|
||||
|
||||
|
||||
def load(path):
|
||||
root = ET.parse(path).getroot()
|
||||
nodes = {n.get("id"): (float(n.get("lat")), float(n.get("lon"))) for n in root.findall("node")}
|
||||
ways = []
|
||||
for w in root.findall("way"):
|
||||
tags = {c.get("k"): c.get("v") for c in w.findall("tag")}
|
||||
ways.append((w.get("id"), tags, [nd.get("ref") for nd in w.findall("nd")]))
|
||||
return nodes, ways
|
||||
|
||||
|
||||
def refs_by_name(ways, name):
|
||||
return {ref for _, tags, refs in ways if tags.get("name") == name for ref in refs}
|
||||
|
||||
|
||||
def main():
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("osm")
|
||||
ap.add_argument("--blvd", default="Hollywood Boulevard")
|
||||
ap.add_argument("--west", default="North Orange Drive")
|
||||
ap.add_argument("--east", default="North Highland Avenue")
|
||||
ap.add_argument("--buffer", type=float, default=50.0, help="north-side buffer in metres, from the centreline")
|
||||
args = ap.parse_args()
|
||||
|
||||
nodes, ways = load(args.osm)
|
||||
blvd = refs_by_name(ways, args.blvd)
|
||||
if not blvd:
|
||||
raise SystemExit(f"no highway named {args.blvd!r} in {args.osm}")
|
||||
|
||||
ends = {}
|
||||
for label, street in (("west", args.west), ("east", args.east)):
|
||||
inter = refs_by_name(ways, street) & blvd
|
||||
pts = sorted(nodes[i][1] for i in inter if i in nodes)
|
||||
if not pts:
|
||||
raise SystemExit(f"no intersection between {args.blvd!r} and {street!r}")
|
||||
ends[label] = pts[0] if label == "west" else pts[-1]
|
||||
print(f"{street} x {args.blvd}: {len(pts)} shared node(s), lon {pts[0]:.6f}..{pts[-1]:.6f}")
|
||||
|
||||
lo_min, lo_max = ends["west"], ends["east"]
|
||||
lat0 = sum(nodes[i][0] for i in blvd if lo_min <= nodes[i][1] <= lo_max) / max(
|
||||
1, len([i for i in blvd if lo_min <= nodes[i][1] <= lo_max])
|
||||
)
|
||||
span = math.radians(lo_max - lo_min) * EARTH_R * math.cos(math.radians(lat0))
|
||||
print(f"block span: {span:.1f} m of frontage, centreline lat {lat0:.6f}\n")
|
||||
|
||||
rows = []
|
||||
for wid, tags, refs in ways:
|
||||
if "building" not in tags:
|
||||
continue
|
||||
pts = [nodes[r] for r in refs if r in nodes]
|
||||
if not pts:
|
||||
continue
|
||||
lat = sum(p[0] for p in pts) / len(pts)
|
||||
lon = sum(p[1] for p in pts) / len(pts)
|
||||
if not (lo_min - 0.00005 <= lon <= lo_max + 0.00005):
|
||||
continue
|
||||
side = "S" if lat < lat0 else "N"
|
||||
_, y = local_metres(lat, lon, lat0, lon)
|
||||
rows.append((side, abs(y), lon, wid, tags))
|
||||
|
||||
rows.sort(key=lambda r: r[2])
|
||||
for side, dist, lon, wid, tags in rows:
|
||||
if side == "S":
|
||||
flag = ""
|
||||
else:
|
||||
flag = "" if dist <= args.buffer else " (outside buffer)"
|
||||
print(
|
||||
f"{side} way {wid:>10} {tags.get('addr:housenumber', '-'):>11} "
|
||||
f"{tags.get('addr:street', '')[:22]:22} h={tags.get('height', '-'):>5} "
|
||||
f"lv={tags.get('building:levels', '-'):>3} d={dist:5.1f}m {tags.get('name', '')[:30]}{flag}"
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -49,14 +49,46 @@ Its west edge (−118.3400228) abuts the east edge of 6840 (−118.3400194): the
|
||||
|
||||
**Rule applied:** the similarly named "El Capitan Theatre" and "El Capitan Entertainment Centre" are distinct structures. They are not merged, and the façade work for one does not authorise geometry for the other.
|
||||
|
||||
## Demo bounds and building set
|
||||
|
||||
From the block extract in [`../manifests/2026-11-06-osm-api-map.md`](../manifests/2026-11-06-osm-api-map.md) (`Geo/raw/osm-api-map-2026-11-06.osm`, 3565 nodes, 350 ways).
|
||||
|
||||
Intersections on the boulevard:
|
||||
|
||||
| Junction | Node coordinate |
|
||||
| --- | --- |
|
||||
| Hollywood Blvd × North Orange Drive | 34.101543, −118.341434 (and a second node at −118.341749 on the boulevard's south carriageway split) |
|
||||
| Hollywood Blvd × North Highland Avenue | 34.101545, −118.338718 |
|
||||
|
||||
The block between them spans **279 m** of frontage. Boulevard centreline inside the block sits at latitude ≈ 34.101544.
|
||||
|
||||
South frontage, west to east (the `0.1.0` south set):
|
||||
|
||||
| Way | Address | Name | Tags | Height |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 424024151 | 6922 | — | commercial, 12 levels | no `height` tag |
|
||||
| 206486872 | 6902 | — | retail | 13.8 |
|
||||
| **424024147** | **6840** | **El Capitan Entertainment Centre** | **theatre** | **14.5** |
|
||||
| **424024148** | **6838** | **El Capitan Theatre** | **cinema, 6 levels** | **no `height` tag** |
|
||||
| 424024144 | 6822 | Budget | car_rental | 5.5 |
|
||||
| 424024150 | 6806–6820 | — | retail | 12.1 |
|
||||
| 424024149 | 6800 | Lee Drug Building | retail | 12.1 |
|
||||
|
||||
North side within the 50 m buffer (measured from the boulevard centreline, so these are the only two buildings inside the buffer):
|
||||
|
||||
| Way | Address | Name | Tags | Distance from centreline | Height |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 424105908 | 6925 | TCL Chinese Theatre | cinema | 30.1 m | 18.1 |
|
||||
| 424105889 | 6933 | Madame Tussaud's | commercial | 37.3 m | 15.9 |
|
||||
|
||||
Excluded and why: `6780` (Bank of America) and everything east of it is east of Highland, outside the block. Madison Apartments (1746 N Orange Dr) and the Orange Drive apartments are 155 m back from the boulevard. One unnamed retail way sits 66 m back — outside the buffer. `building:part` roof ways are detail, not separate structures.
|
||||
|
||||
## Still unverified
|
||||
|
||||
These block parts of `0.1.0` and are not fixed by this pass:
|
||||
- **Pavement and roadway widths.** The extract carries no sidewalk or carriageway widths. Needed for the walkable demo, the crossing, and street scale against the reference photos.
|
||||
- **Crossing location.** No marked crossing geometry confirmed yet, and `0.1.0` requires one designated crossing.
|
||||
- **Elevation.** No DEM checked. The choice between using a separately licensed DEM and skipping it depends on measured height variation across the 279 m block.
|
||||
- **North-side reference photography.** Both north-side buildings are in scope and neither appears in the reference set. They cannot be detailed from evidence yet.
|
||||
- **Façade width conflict.** 29.6 m from the sibling project's venue notes against the 25.7 m OSM bbox; recorded in [`../../Art/reference/hollywood/NOTES.md`](../../Art/reference/hollywood/NOTES.md) and unresolved.
|
||||
|
||||
- **Demo bounds.** The block must run between Highland Avenue and Orange Drive. Neither intersection node has been confirmed yet, so the bounding box for the OSM extract is not final.
|
||||
- **North-side frontage within 50 m.** Buildings on the opposite side of the boulevard inside that buffer have not been enumerated.
|
||||
- **Which structures the brief actually includes.** The south-side frontage between Highland and Orange needs the full set of building ways, not just the hero address.
|
||||
- **Street centreline, sidewalk widths, crossing location.** Required for the walkable demo and the designated crossing; all unmeasured.
|
||||
- **Elevation.** No DEM checked yet; the decision on separately licensed elevation data depends on measured height variation across the bounds.
|
||||
|
||||
Next step: fetch a versioned OSM extract covering the wider block, write its manifest with date, source, bounds, and checksum, then enumerate the buildings inside the demo boundary and record each one's verification status.
|
||||
Next: measure roadway and sidewalk widths, fix the local CRS and origin, and resolve the façade-width conflict before any façade modelling.
|
||||
+3
-3
@@ -26,17 +26,17 @@ Status detail in [Docs/setup.md](Docs/setup.md); workstation audit in [Docs/envi
|
||||
|
||||
### Geographic data
|
||||
|
||||
- [ ] Save a versioned OSM extract; document date, bounds, and source in `Geo/`.
|
||||
- [x] Save a versioned OSM extract; document date, bounds, and source in `Geo/`.
|
||||
- [ ] Acquire separately licensed elevation data if needed.
|
||||
- [ ] In QGIS, set a suitable local projected CRS (e.g. EPSG:26911) and record a local origin.
|
||||
- [ ] Verify the address, building footprints, and demo boundaries for 6840 Hollywood Blvd against source data.
|
||||
- [x] Verify the address, building footprints, and demo boundaries for 6840 Hollywood Blvd against source data.
|
||||
- [ ] Import OSM blockouts through Blosm; clean and detail them in Blender.
|
||||
- [ ] Preserve geographic coordinates in metadata; define explicit meter→centimeter conversion to local Unreal coordinates.
|
||||
|
||||
### Asset production
|
||||
|
||||
- [ ] Establish a consistent scale test, named export presets, and repeatable import settings.
|
||||
- [ ] Collect licensed reference photography for manual façade work.
|
||||
- [-] Collect licensed reference photography for manual façade work.
|
||||
- [ ] Model hero façade for the El Capitan Entertainment Centre site.
|
||||
- [ ] Model surrounding block frontage.
|
||||
- [ ] Model simplified background buildings directly across Hollywood Boulevard.
|
||||
|
||||
@@ -19,20 +19,21 @@ Status values: **verified** (licence confirmed and permits our use), **pending**
|
||||
|
||||
| Component | Source | Licence | Status |
|
||||
| --- | --- | --- | --- |
|
||||
| OSM extract (demo bounds) | not yet acquired | ODbL 1.0 | **pending** — record extract date, bounds, and source in `Geo/` on acquisition |
|
||||
| OSM extract — Hollywood block, 2026-11-06 | OpenStreetMap API v0.6, `Geo/raw/osm-api-map-2026-11-06.osm` | ODbL 1.0 | verified — manifest and SHA-256 in `Geo/manifests/` |
|
||||
| OSM building ways 424024147, 424024148 | OpenStreetMap API v0.6, `Geo/raw/*.json` | ODbL 1.0 | verified |
|
||||
| Elevation data | not yet decided | per provider | **pending** — decide after the DEM variation check in `ROADMAP.md` |
|
||||
|
||||
Attribution string for any OSM-derived output: "© OpenStreetMap contributors", <https://www.openstreetmap.org/copyright>.
|
||||
|
||||
## Reference photography (development only, not shipped)
|
||||
|
||||
Available in the sibling project `…/06-games/security-game/docs/screens/refs/hollywood/`, with per-file provenance in its `SIDECAR.md`. Nothing here is committed to this repository yet; the licences below are recorded so the set can be brought over with correct attribution.
|
||||
Committed in `Art/reference/hollywood/` (Git LFS). Copied 2026-11-06 from `…/06-games/security-game/docs/screens/refs/hollywood/`, which holds the per-file provenance in `SIDECAR.md` — carried over verbatim with the images. These are development evidence and are not built into the game.
|
||||
|
||||
| File | Subject | Author | Licence | Shipped |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `el-capitan-facade-day-wikimedia-2009-10-27.jpg` | El Capitan facade, day | woo | CC BY 2.0 | no |
|
||||
| `el-capitan-theatre-blade-sign-day-wikimedia-2008-10.jpg` | blade sign and temple frontage | Andreas Praefcke | CC BY 3.0 | no |
|
||||
| `el-capitan-theatre-marquee-neighbour-day-wikimedia-2009-07-11.jpg` | west neighbour marquee | Alan Light | CC BY 2.0 | no |
|
||||
| `el-capitan-theatre-marquee-neighbour-day-wikimedia-2009-07-11.jpg` | east neighbour marquee | Alan Light | CC BY 2.0 | no |
|
||||
| `premiere-staging-street-day-wikimedia-2006-02-12.jpg` | premiere staging | John Barreiros | CC BY 2.0 | no |
|
||||
| `masonic-temple-historic-pd-1922.jpg` | Masonic Temple, 1922 | Charles W. Beam | public domain | no |
|
||||
| `ovation-hollywood-across-street-pd-2006-12-28.jpg` | Ovation Hollywood, across street | Gary Minnaert | public domain | no |
|
||||
|
||||
Reference in new issue
Block a user