docs: pin QGIS 4.2.3 and compute the projected origin with PROJ

QGIS stable is 4.2.3 on the current KDE runtime; the stale 3.28.9 lts install
stays flagged for removal. PROJ 9.9.0 from that flatpak turns the recorded
origin into E 376515.389 / N 3774224.083 (NAD83 UTM 11N), with six control
points whose projected spans reproduce the OSM footprint measurements. Engine
decision recorded: 5.8.4 is downloading, 5.2.0 stays only as a fallback.
This commit is contained in:
zwitschi committed 2026-11-06 22:58:06 +01:00
1 parent 1c476e4fb5
commit 103042fca7
4 files changed
+32 -14

No files matched your search

+26 -7
View File
@@ -15,22 +15,41 @@ NAD83 rather than WGS84 is deliberate: it is the CRS the US national elevation a
| Definition | Hollywood Blvd × North Highland Avenue intersection node, on the boulevard centreline |
| WGS84 | lat 34.101545, lon −118.338718 |
| OSM node | the single shared node between the `Hollywood Boulevard` and `North Highland Avenue` ways in `Geo/raw/osm-api-map-2026-11-06.osm` |
| EPSG:26911 easting / northing | **to be computed** — see below |
| EPSG:26911 easting / northing | **E 376 515.389 / N 3 774 224.083** (NAD83, UTM 11N, metres) |
| Rationale | a real, data-defined, reproducible point at the demo block's east boundary; no surveyed control point exists for this project |
The origin is not "the hero building" on purpose: a building may later move a metre or two as verification corrects it, while an intersection node is fixed by the source data.
### Pending value
### How the pair was computed
The projected pair is not filled in yet because neither `pyproj` nor the PROJ command line tools are installed on this workstation (`Docs/environment.md`), and inventing a number that later disagrees with QGIS would be worse than leaving it blank. Fill it in the QGIS step:
Computed 2026-11-06 with PROJ **Rel. 9.9.0 (2026-09-15)**, taken from the QGIS 4.2.3 Flatpak, because neither `pyproj` nor the PROJ command line is installed on the host:
```bash
python3 -c "from pyproj import Transformer; \
t=Transformer.from_crs('EPSG:4326','EPSG:26911',always_xy=True); \
print(t.transform(-118.338718, 34.101545))"
P=$(ls -d ~/.local/share/flatpak/app/org.qgis.qgis/x86_64/stable/*/files | head -1)
printf -- '-118.338718 34.101545\n' | LD_LIBRARY_PATH="$P/lib" "$P/bin/proj" \
+proj=utm +zone=11 +datum=NAD83 -f '%.3f'
# 376515.389 3774224.083
```
Record the printed easting/northing back into this table and note the PROJ version used.
Reproduce it the same way, or with `pyproj` once a geo environment exists. If a future PROJ reports a different pair, the new value wins and this table is updated with the PROJ version that produced it.
## Projected control points
Optional check values, all NAD83 / UTM 11N, and the same points as local X/Y relative to the origin. Use them to confirm a transformation before trusting a blockout.
| Point | WGS84 lat, lon | Easting | Northing | Local X | Local Y |
| --- | --- | ---: | ---: | ---: | ---: |
| Hollywood × Orange Dr | 34.101543, −118.341749 | 376 235.784 | 3 774 227.529 | −279.605 | +3.446 |
| **Origin: Hollywood × Highland** | 34.101545, −118.338718 | **376 515.389** | **3 774 224.083** | 0.000 | 0.000 |
| Hero NW corner | 34.101412, −118.340299 | 376 369.380 | 3 774 211.202 | −146.009 | −12.881 |
| Hero NE corner | 34.101412, −118.340019 | 376 395.144 | 3 774 210.864 | −120.245 | −13.219 |
| Hero SW corner | 34.100919, −118.340299 | 376 368.662 | 3 774 156.533 | −146.727 | −67.550 |
| Hero SE corner | 34.100919, −118.340019 | 376 394.427 | 3 774 156.195 | −120.962 | −67.888 |
| Mid-block crossing | 34.101552, −118.340338 | 376 365.958 | 3 774 226.819 | −149.431 | +2.736 |
Cross-check: the hero's projected corners differ by 25.76 m east–west and 54.67 m north–south, matching the 25.7 × 54.9 m footprint measured in [../verification/2026-11-06-el-capitan-block.md](../verification/2026-11-06-el-capitan-block.md). The two methods agree, so the transformation and the origin are consistent.
Note the sign pattern: the whole block lies at **negative X** and the hero at **negative Y**, which is expected with the origin at the block's east boundary.
## Axis convention