@johnmorrisdotca/kyogijo-stadiums 0.45.3 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/NOTICE.md +9 -2
  3. package/dist/areas.d.ts +4 -0
  4. package/dist/areas.js +33 -1
  5. package/dist/cityctx.belmont-park.data.d.ts +3 -0
  6. package/dist/cityctx.belmont-park.data.js +1802 -0
  7. package/dist/cityctx.data.d.ts +10 -1
  8. package/dist/cityctx.data.js +11 -2
  9. package/dist/cityctx.js +19 -1
  10. package/dist/cityctx.meadowlands.data.d.ts +3 -0
  11. package/dist/cityctx.meadowlands.data.js +820 -0
  12. package/dist/cityctx.montreal-city.data.d.ts +3 -0
  13. package/dist/cityctx.montreal-city.data.js +2899 -0
  14. package/dist/cityctx.montreal-downtown.data.d.ts +3 -0
  15. package/dist/cityctx.montreal-downtown.data.js +3004 -0
  16. package/dist/cityctx.montreal-olympic.data.d.ts +3 -0
  17. package/dist/cityctx.montreal-olympic.data.js +2562 -0
  18. package/dist/cityctx.nyc-bronx.data.d.ts +3 -0
  19. package/dist/cityctx.nyc-bronx.data.js +1671 -0
  20. package/dist/cityctx.nyc-brooklyn.data.d.ts +3 -0
  21. package/dist/cityctx.nyc-brooklyn.data.js +3485 -0
  22. package/dist/cityctx.nyc-flushing.data.d.ts +3 -0
  23. package/dist/cityctx.nyc-flushing.data.js +865 -0
  24. package/dist/cityctx.nyc-midtown.data.d.ts +3 -0
  25. package/dist/cityctx.nyc-midtown.data.js +2438 -0
  26. package/dist/crowd.d.ts +26 -3
  27. package/dist/district.js +1 -1
  28. package/dist/draw.js +2 -2
  29. package/dist/flythrough.dom.d.ts +2 -0
  30. package/dist/flythrough.dom.js +2 -2
  31. package/dist/stadiums.d.ts +51 -7
  32. package/dist/stadiums.data.js +60 -0
  33. package/dist/stadiums.js +40 -6
  34. package/dist/stadiums.osm.data.js +224 -2
  35. package/dist/strings.core.d.ts +2 -0
  36. package/dist/strings.en.js +1 -1
  37. package/dist/strings.ja.js +1 -1
  38. package/dist/turn.kit.d.ts +14 -1
  39. package/dist/turn.kit.js +19 -0
  40. package/dist/turn.style.js +20 -3
  41. package/dist/venue.js +3 -1
  42. package/dist/venue.real.d.ts +45 -1
  43. package/dist/venue.real.js +245 -21
  44. package/dist/venue.ribbed.d.ts +18 -0
  45. package/dist/venue.ribbed.js +199 -0
  46. package/dist/venues/american-airlines-center.data.js +1 -1
  47. package/dist/venues.d.ts +2 -2
  48. package/dist/venues.data.js +1 -1
  49. package/dist/version.d.ts +1 -1
  50. package/dist/version.js +1 -1
  51. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,49 @@ All notable changes to this project are written here. The format follows
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.47.0] - 2026-10-30
11
+
12
+ ### Added
13
+
14
+ - **The Olympic Stadium's shell is the building's: 38 ribs, glazed bays and a low white roof (SPX-811).** In place of a plain tall drum under a low lens, the shell is 38 concrete consoles (34 anchored to the ground, 4 fixed to the tower: the French article) round the building's outline, each a curved wing that stands out at its foot and sweeps in to a ring, a glazed bay between each pair (a podium and three bands of glass), white roof panels climbing from the glazing to the ring, and a membrane closing the ring in a low cone, its crown the 52 metres over the field the English article gives. The stands are fitted inside the shell's sweep (`RIBBED_STANDS`), so no row stands out through the roof; the ring's height, the ribs' flare and the bays' profile are ours, from Commons photographs (`src/venue.ribbed.ts`, `RealShell.dome.ribs`, `StadiumRoof` data `ribs` and `top`). Compared with Commons photographs from the plaza, across the river, from Mount Royal and from below the tower (sheets in the backups folder, `2026-10-30-olympic-shell`). Left as it is, honestly: the real ribs are bigger and more curved, the real membrane is pleated and the real tower has about forty cables where the drawing has five.
15
+ - **The Montreal Tower's foot is at the rim, it flares and its back curves.** The shaft is twelve horizontal sections between a steep front, from where the mapped axis meets the building's rim to the observatory, and a back that sweeps down from the top in a long curve and flattens along the ground behind the foot; a fan of five cables replaces the three; no plinth. Height, top and axis are the sources' as before.
16
+ - **How the Olympic Stadium's field lies, to the nearest 45 degrees (SPX-811).** Nothing maps the field and no article gives a bearing, but the English Wikipedia's list of Montreal's ballparks names a street at first base (Pierre-De Coubertin), left field (Sherbrooke), third base (Pie-IX) and right field (Viau), which bound the stadium on its north, south, west and east: home plate is in the north-west corner and centre field to the south-east, 135 degrees. The new basis is `streets` (`StadiumOsm.axis.basis`, `orientation` in the facts, `said.stadiumStreets` in English and Japanese); the drawing says it is an inference and draws the arrow to north. The seats still fit (49,756 of 49,757).
17
+ - **Speed checks per device class (SPX-774).** Three Playwright projects, each a job of its own on the public repository's free CI (`device-desk`: Chromium 1280 by 800, ratio 1, held at `high`; `device-mid-phone`: WebKit, 390 by 844, ratio 3, `medium`; `device-slow-android`: Chromium 412 by 915, ratio 2.6, CPU slowed 6 times, `low`) open every district preset (all twelve, the New York and Montreal ones among them) and the venues page's 3D view and hold each to budgets (`e2e/budgets.device.mjs`, `e2e/device.budgets.json`, `e2e/device.lib.mjs`, docs/quality.md): exact counts that no runner changes (layers, those drawn, elements, the memory the layers take at the device's ratio, the biggest layer; budget = measured plus 15 percent) and a ratio of a step of the turn to the end of its frame over a reference scene measured beside it with the same CPU slowing (budget = twice what it measured, at least one more). The tier is pinned in the address, because `auto` steps down on a slow runner and a step changes what is counted. A test checks that every preset of the page has a budget. About 25 to 45 seconds each on a laptop, one to two minutes with the build on the runner; the three run beside the six demo jobs and add no time to the longest of them. `DEVICE_MEASURE=file.jsonl` writes what each page measured, to make the budgets again.
18
+
19
+ ### Changed
20
+
21
+ - The Olympic Stadium's district view is 1,096 planes at `high` (775 at `medium`, 424 at `low`), down from 1,111 (870, 519), and 146 more elements (4,503 against 4,357). At the lower tiers the ribs' outer faces and the ring's lip are left out as small parts, and at the coarsest cut there are 19 ribs.
22
+ - The package's `dist/` grows by 17.5 KB (5.4 KB gzipped) of script and data: the new shell builder 12.8 KB, the tower and the shell's hook 2 KB, the stadiums' facts 0.4 KB, the rest style and words; no dependency is added.
23
+ - `scripts/readme-pictures.mjs`: the stadiums page's Olympic picture is taken from the end-on viewpoint, so the tower is seen in profile.
24
+
25
+ ## [0.46.0] - 2026-10-30
26
+
27
+ ### Added
28
+
29
+ - **Five stadiums and nine areas of surroundings on the east coast (SPX-654, SPX-653).** Each stadium is the building OpenStreetMap maps, the field lying as the map or the outline says, and a bowl of the seats its article gives ([the east coast](./docs/stadiums.md#the-east-coast)): **Yankee Stadium** (46,537 seats, home plate facing 75.6 degrees from the mapped infield), **Citi Field** (41,922, 14.5 degrees from the mapped grass fitted to the fence), **MetLife Stadium** (82,500 for the NFL's field and 80,663 for a soccer pitch, lying along 166.5 degrees as the mapped pitch does, with no roof, as its article says), **Barclays Center**, the first hall of the basketball court (`sport: "nba"`, 17,732 seats, the court along the building's long axis, an inference the drawing says) and **the Olympic Stadium of Montreal** (49,757 seats for baseball, a fixed roof drawn as a low lens, and **the Montreal Tower**, 165 metres, inclined at 45 degrees, leaning over the bowl in 3D from a broad foot to the observatory over the bowl, with slits, a plinth and cables to the roof: its height, its top (the observatory) and its foot (its funicular line) are OpenStreetMap's, the curve and widths ours). Madison Square Garden, UBS Arena and the Bell Centre were already real venues and now have surroundings. Each stadium adds 1.7 to 3.4 KB of data (0.9 to 1.5 KB gzipped).
30
+ - **Their surroundings, one file each, read only when the venue is shown** ([New York and Montreal](./docs/district.md#new-york-and-montreal)): Midtown (round Madison Square Garden), the Bronx, Flushing Meadows, Brooklyn, the Meadowlands, Belmont Park, downtown Montreal, Olympic Park and the city between Montreal's two venues, 36 to 129 KB each as data (14 to 42 KB gzipped). Outlines, streets, water, parks and trees are OpenStreetMap's (ODbL 1.0); New York's heights are the roof heights of the City of New York's Building Footprints (NYC Open Data, read on 2026-10-30; the City's Open Data Law asks that the source and the version be named and changes said, and the City gives no warranty), which give a height to 94 to 99 buildings in a hundred. More than two of New York's venues in one choice take no surroundings (they lie tens of kilometres apart). Four presets on the district page: New York Midtown, New York's six venues at their real distances, Montreal's Olympic Stadium and its tower, and the Bell Centre with the Olympic Stadium.
31
+ - `StadiumConfigId` has `nba`; a stadium kind `park` can have a `fixed` roof (drawn as the dome's lens) and a `tower`; `RealShell.tower`, `towerPlanes`, `MOST_DETAIL_AREAS`, `CITYCTX_DETAIL`. The generators read a later day's OpenStreetMap file beside the earlier days' (`pnpm stadiums:fetch <date>` carries the earlier Wikidata and Wikipedia files forward; `pnpm cityctx` reads each file from the newest day that has it, and `minArea` and `exclude` in `scripts/cityctx.data.json` keep a dense area small and a building a venue draws itself out of the context).
32
+ - **Roofs are cut away from above and whole from the street (SPX-695).** A roof of a real venue now fades by how high the eye is (`Plane.cut`): from straight above it is cut away to a ghost so the bowl shows, whole at the main camera and below, and whole again at a street's eye whatever side it is on. Before, a roof was as solid from overhead as from the side and gave way only by side.
33
+ - **Lumen Field's canopies are arched and the stadium has its tower (SPX-696).** OpenStreetMap's `roof:shape=round` for both canopies is read (`shape`) and drawn as a convex arc in three pieces across; the canopies are a firmer white and the walls under them rise to the canopy's back edge, so the outside of each roof is one face to the crest. A 13-storey tower stands at the open north end with its vertical scoreboard on the face towards the field (`endTower` in the stadium's data: the storeys are the article's, the size and the place ours).
34
+ - **T-Mobile Park's roof runs on rails and its facade is a brick tone (SPX-696).** A girder along the north and the south side at the roof's lowest height on four columns each, stays when the roof is open; the walls are a brick tone (the brief's: the article does not say it).
35
+ - **The American Airlines Center has a barrel-vaulted roof (SPX-695).** The article says its roof looks like a Quonset hut; the `barrel` kind of roof is a round arch over the rink's short axis (`barrelAt`, `BARREL_RISE`), and the venue's `roof.kind` is `barrel`, documented. Every other arena keeps the lid, marked ours.
36
+ - **Cost.** The package grows by 13.1 KB (3.8 KB gzipped) of script and data in the files these changes touch (the roof builder 8.4 KB, the tower, rails and brick, the cutaway, the barrel) and the demo by 1.2 KB of style (`check-pill.css`, 0.6 KB gzipped); no dependency is added. In the district of Seattle's three venues the 3D view holds 170 more elements (every other ray of a fine cut for the canopies, and a column of the rails two strips crossed, are what keep it inside the page's budget of 8,400), and the bundle budgets hold.
37
+ - Tests: `src/roof.test.ts` (the cutaway; every real venue and stadium, with the roof on and off, at low, auto and high detail, every roof plane cut away from above and finite); Lumen Field's arcs, wall heights and tower, T-Mobile Park's rails and facade; the barrel.
38
+ - **A Roof pill on every demo page with a 3D view of a venue, kept in the address (SPX-695).** The stadiums, district, halls and fly-through pages had a checkbox or none; each now has a pill in the demo's control style (48 px, pressed when on, light and dark, wrapping on a phone), under the one name `roof`: off until asked where the reader looks at the field (venues, home, stadiums, halls: `roof=1`), on until taken off among streets and in flight (district, fly-through: `roof=0`). The venues page and the home page's featured arena already had their Roof chip. The checkbox of each page that had one (`label.check`) is drawn as that pill, from the one file `demo/check-pill.css`; it is still a checkbox for a keyboard, a screen reader and a test.
39
+ - **The roof and the walls are two choices on the stadiums and district pages.** Roof and Walls are separate pills (`roof`, `walls` in the address), so a roof can be taken off with the walls standing, and a roof asked for on the stadiums page brings the walls it stands on (which can then be taken off). An older `roof=1` with no `walls` is the walls and the roof, as it was.
40
+ - `FlythroughOptions.roof` (true when left out): `false` keeps the roof off for the whole flight with the walls standing; the demo's page has the pill and `roof=0`.
41
+ - Tests: `e2e/roof.demo.mjs` (every page's pill is a pill and is kept in, and read from, the address).
42
+
43
+ - A page listing the thirty-two NHL arenas: the roof each draws, what open sources say of its shape, and the one photo each still needs (`docs/roof-photos-needed.md`).
44
+
45
+ ### Fixed
46
+
47
+ - The stadiums page's "Roof open (3D)" label read "none, open to the air": two words of its table shared the key `open`.
48
+
49
+ ### Changed
50
+
51
+ - An open-air stadium of the stadium kind (`roof.kind: "open"`) is drawn with no roof in 3D; before, every stadium of that kind had a lid.
52
+
10
53
  ## [0.45.3] - 2026-10-30
11
54
 
12
55
  ### Changed
package/NOTICE.md CHANGED
@@ -45,11 +45,13 @@ picture or code of the sources is copied; each source is named here so that the
45
45
  | `arenas`: each arena's names, years, city, seats, rink sizes, Wikidata item and coordinates | The infobox and the text of the English Wikipedia article of each arena, at the revision cited below (the names with the years the article dates them, the year it opened, closed and was pulled down, the seats for ice hockey and for basketball, a rink's length and width where the article gives them in a sentence of its own); the name in Japanese from the title of its Japanese article or written for the package; the Wikidata item (CC0) that each article is linked to and its coordinates (P625) | Facts. The articles are CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/); none of their text, tables or images is used |
46
46
  | `venues`: the outline of each NHL arena's building, how its rink lies in it and the building's height (`VENUE_OSM`, `src/venues.osm.data.ts`) | OpenStreetMap, through the Overpass API: the closed way (or the relation of a building drawn in two ways) tagged with the venue's Wikidata item (and the ice, where it is mapped), read on 2026-10-20, with the raw answers kept in `data-sources/venues/2026-10-20/`; the outline is simplified to a metre, and the way the rink lies is worked out from it (`coreOf`, `src/venues.geo.ts`) | ODbL 1.0, (c) OpenStreetMap contributors (https://www.openstreetmap.org/copyright): a derived database, kept in its own file and offered under the ODbL; a drawing made from it is a produced work and carries the credit (`VENUE_ATTRIBUTION`) |
47
47
  | `venues`: each venue's seats for ice hockey, number of seating tiers and kind of roof (`VENUE_DATA`, `src/venues.data.ts`) | The item of Wikidata (the capacity P1083 and the sport it applies to P641) and the English Wikipedia article of each arena, at the revision cited below, in `data-sources/venues/2026-10-20/` as read; the facts are numbers and words of our own, with what was read in a few words | Wikidata's data is CC0; the facts read from the articles are facts, with the articles credited here (CC BY-SA 4.0) |
48
- | `stadiums`: the outline of each stadium's building, the roof OpenStreetMap maps over it (its heights, the opening in it or its canopies), the pitches or the infield, and how the field lies, worked out from the opening, the pitches or the infield and the outline (`STADIUM_OSM`, `src/stadiums.osm.data.ts`) | OpenStreetMap, through the Overpass API: the closed way tagged with the stadium's Wikidata item and the multipolygon of its roof (BC Place), or the way or relation of the building, the roof parts, the pitches, the infield or the grass of the field named in `scripts/stadiums.data.json` (Lumen Field, T-Mobile Park, Tokyo Dome, Korakuen Hall, Koshien Stadium), read on 2026-10-20, with the raw answers kept in `data-sources/stadiums/2026-10-20/`; the outline is simplified to a metre, and the way the field lies is worked out from the opening, the pitches or the infield (`smallestBox`, `src/venues.geo.ts`; a ballpark's way out to centre field is the one of four where its fence lies inside the outline, or the heading and home plate at which its published fence lies nearest the mapped grass of the field (Koshien Stadium), or, where nothing maps it, not known, and the heading is the one in which fence and stands fit the outline best (Tokyo Dome)) | ODbL 1.0, (c) OpenStreetMap contributors (https://www.openstreetmap.org/copyright): a derived database, kept in its own file and offered under the ODbL; a drawing made from it is a produced work and carries the credit (`VENUE_ATTRIBUTION`) |
48
+ | `stadiums`: the outline of each stadium's building, the roof OpenStreetMap maps over it (its heights, the opening in it or its canopies), the pitches or the infield, and how the field lies, worked out from the opening, the pitches or the infield and the outline (`STADIUM_OSM`, `src/stadiums.osm.data.ts`) | OpenStreetMap, through the Overpass API: the closed way tagged with the stadium's Wikidata item and the multipolygon of its roof (BC Place), or the way or relation of the building, the roof parts, the pitches, the infield or the grass of the field named in `scripts/stadiums.data.json` (Lumen Field, T-Mobile Park, Tokyo Dome, Korakuen Hall, Koshien Stadium, and from 2026-10-30 Yankee Stadium, Citi Field, MetLife Stadium, the Olympic Stadium of Montreal with the footprint of its tower, and Barclays Center), read on 2026-10-20 and 2026-10-30, with the raw answers kept in `data-sources/stadiums/2026-10-20/` and `data-sources/stadiums/2026-10-30/`; the outline is simplified to a metre, and the way the field lies is worked out from the opening, the pitches or the infield (`smallestBox`, `src/venues.geo.ts`; a ballpark's way out to centre field is the one of four where its fence lies inside the outline, or the heading and home plate at which its published fence lies nearest the mapped grass of the field (Koshien Stadium), or, where nothing maps it, not known, and the heading is the one in which fence and stands fit the outline best (Tokyo Dome)) | ODbL 1.0, (c) OpenStreetMap contributors (https://www.openstreetmap.org/copyright): a derived database, kept in its own file and offered under the ODbL; a drawing made from it is a produced work and carries the credit (`VENUE_ATTRIBUTION`) |
49
49
  | `stadiums`: each stadium's seats for each configuration, number of seating bowls, kind of roof and the size of its opening (`STADIUM_DATA`, `src/stadiums.data.ts`) | The item of Wikidata (the capacity P1083, the coordinates P625 and the labels in English and Japanese that name a hall) and the English Wikipedia article of each stadium, at the revision cited below, and the Japanese article of the three stadiums of Japan, at the revision cited in [NOTICE.ja.md](./NOTICE.ja.md#実在のスタジアム), in `data-sources/stadiums/2026-10-20/` as read; the facts are numbers and words of our own, with what was read in a few words (and, for a fact leaning on a sentence, the phrase the archive must hold) | Wikidata's data is CC0; the facts read from the articles are facts, with the articles credited here (CC BY-SA 4.0) |
50
50
  | `walk`: the ground a crowd outside a district's venues may stand on and what stops it (`WALK_DATA`, `src/walk.data.ts`): paths and sidewalks, plazas, squares, parks and platforms, and carriageways, cycle tracks, railways, water and buildings, as lines with a width and as rings | OpenStreetMap, through the Overpass API: every way and relation of the highways, buildings, railways, water, squares, parks and platforms within 350 metres of the district's venues, read on 2026-10-22, with the raw answer kept in `data-sources/walk/2026-10-22/`; laid flat in metres, simplified to 30 centimetres and written in quarter-metres, by the rules of `scripts/walk-rules.mjs` (no name, id or tag is copied) | ODbL 1.0, (c) OpenStreetMap contributors (https://www.openstreetmap.org/copyright): a derived database, kept in its own file and offered under the ODbL; a crowd or a drawing made from it is a produced work and carries the credit (`VENUE_ATTRIBUTION`) |
51
51
  | `plateau`: the buildings round Tokyo Dome City (`TOKYO_DOME_CITY`, `src/plateau.data.ts`): each building's roof-edge outline simplified to 0.6 metres on a half-metre grid, its height and, for a pitched LOD2 roof, the rise of the roof | Project PLATEAU, the Ministry of Land, Infrastructure, Transport and Tourism's (MLIT) 3D city model of Bunkyo ward, 2025 edition (product specification 5.0, CityGML, https://www.geospatial.jp/ckan/dataset/plateau-13105-bunkyo-ku-2025), read on 2026-10-22: the buildings within 500 metres of the middle of the district, with the raw fields kept in `data-sources/plateau/2026-10-22/` (`pnpm plateau:fetch`, `pnpm plateau`) | PLATEAU Site Policy (https://www.mlit.go.jp/plateau/site-policy/), clause 3: free use, commercial use included, compatible with CC BY 4.0 and the Public Data License 1.0; the source is credited and the data says it was edited and not made by MLIT (`PLATEAU_ATTRIBUTION`: "Project PLATEAU, Ministry of Land, Infrastructure, Transport and Tourism (MLIT), https://www.mlit.go.jp/plateau/ (3D city model of Bunkyo ward, 2025 edition), simplified and edited by Kyogijo Stadiums; not made by MLIT"); the copyright of a ward's data belongs to its local government. Kept in its own file, apart from the OpenStreetMap data (ODbL) and the CC0 files |
52
52
  | `cityctx`: the surroundings of the venues of Seattle (`SEATTLE_SODO`, `SEATTLE_CENTER`, `SEATTLE_CITY`) and the land cover and trees round Vancouver's (`VANCOUVER_NATURE`), in `src/cityctx.data.ts`: buildings (outline, height, for a pitched roof its rise), streets, railways, sidewalks and paths as lines with a width, water, green and wood outlines, and single trees | OpenStreetMap, through the Overpass API: the buildings (with their `height` and `building:levels`), the highways and railways, the tree nodes and rows within the radius of each area, read on 2026-10-22, the raw answers kept in `data-sources/cityctx/2026-10-22/` (`pnpm cityctx:fetch`, `pnpm cityctx:vox`, `pnpm cityctx`); laid flat in metres, simplified and put on a grid of half a metre (two metres for Seattle's city view) | OpenStreetMap's data is ODbL 1.0 (https://opendatacommons.org/licenses/odbl/1-0/), credited "(c) OpenStreetMap contributors, ODbL 1.0, openstreetmap.org/copyright"; the file is a derived database kept in its own file, apart from the CC0 files and from PLATEAU's data |
53
+ | `cityctx`: the surroundings of New York's venues (`NYC_MIDTOWN`, `NYC_BRONX`, `NYC_FLUSHING`, `NYC_BROOKLYN`), of the Meadowlands (`MEADOWLANDS`), of Belmont Park (`BELMONT_PARK`) and of Montreal's (`MONTREAL_DOWNTOWN`, `MONTREAL_OLYMPIC`, `MONTREAL_CITY`), one file each (`src/cityctx.<area>.data.ts`): buildings, streets, railways, sidewalks and paths, water, green and wood outlines, and single trees | OpenStreetMap, through the Overpass API (the buildings with their `height` and `building:levels`, the highways, railways, water and parks, the tree nodes and rows), read on 2026-10-30 and kept in `data-sources/cityctx/2026-10-30/` (`pnpm cityctx:fetch`, `pnpm cityctx`); the water, wetland, park, grass and wood outlines are OpenStreetMap's as mapped (VoxCity is not used for these areas) | OpenStreetMap's data is ODbL 1.0, credited "(c) OpenStreetMap contributors, ODbL 1.0, openstreetmap.org/copyright"; each file is a derived database kept apart from the CC0 files and from PLATEAU's data |
54
+ | `cityctx`: the heights of New York's buildings | The City of New York's Building Footprints (NYC Open Data, dataset 5zhs-2jue, Office of Technology and Innovation: the outline, the roof height above the ground in feet and the construction year of each building), read through the portal's API on 2026-10-30 and kept in `data-sources/cityctx/2026-10-30/nyc-footprints-*.json`; the roof height is used where a footprint matches an OpenStreetMap building, and a footprint OpenStreetMap lacks is a building of its own | A public data set of the City under its Open Data Law (Administrative Code 23-502: made available without registration, licence requirement or restriction on use, the City being able to ask a third party that publishes it to name its source and version and to say what it changed); the City gives no warranty of the data's accuracy (the credit says it): the credit names the data set, the date read and that it was edited |
53
55
  | `cityctx`: Vancouver's trees | The City of Vancouver's open data, "Public trees" (place and diameter), read through the portal's API on 2026-10-22 and kept in `data-sources/cityctx/2026-10-22/` | The Open Government Licence - Vancouver (https://opendata.vancouver.ca/pages/licence/): free to use, with the City credited, in each layer, in English and in Japanese |
54
56
  | `cityctx`: the heights of Seattle's buildings and its trees | The City of Seattle's open data: "Building Outlines 2015" (the roof outlines the City's 3D building shells are made from; the roof apex elevation in feet, from which the height above the ground is worked out), "Combined Tree Point" (street and park trees: place and diameter), and the ground under each building from the USGS 3D Elevation Program (the National Map's `3DEPElevation` image service), read on 2026-10-22 and kept in `data-sources/cityctx/2026-10-22/` | The City of Seattle's Open Data Policy (V1.0, 1 February 2016: a dataset on its portal is made available without registration, licence requirement or restriction on its use, and a third party that publishes it identifies its source and version and what it changed); the City makes no warranty of the data's accuracy, and says so in each dataset (the credit says it too); the 3D shells' own item gives only that disclaimer, and the outlines are what its shells are made from; the USGS 3DEP elevation is a US Government work in the public domain, credited |
55
57
  | `cityctx`: the land cover (water, green, wood) of Vancouver and Seattle | The grid of land cover that VoxCity (https://github.com/kunifujiwara/VoxCity, version 1.7.0, run locally, with no Earth Engine or other account) makes from OpenStreetMap with `get_land_cover_grid(source="OpenStreetMap")`, kept as it was made in `data-sources/cityctx/2026-10-22/voxcity-*.json` and vectorized by `scripts/cityctx_vox.py` | VoxCity's code is MIT (not copied or shipped: only run at build time); the land cover is OpenStreetMap's data and so ODbL 1.0, credited "Land cover made with VoxCity (MIT) from OpenStreetMap" |
@@ -460,7 +462,7 @@ The thirty-two arenas of the NHL, read on 2026-10-20 (`pnpm venues:fetch <date>
460
462
 
461
463
  ## The stadiums' sources
462
464
 
463
- BC Place, Lumen Field, T-Mobile Park, Tokyo Dome, Korakuen Hall and Koshien Stadium, read on 2026-10-20 (`pnpm stadiums:fetch`; the files are in `data-sources/stadiums/2026-10-20/`: `osm-<stadium>.json` as Overpass returned it, `wikidata.json` and `wikipedia.json`). The outline of the building, its roof and the opening in it are OpenStreetMap's, ODbL 1.0, (c) OpenStreetMap contributors, and live in `src/stadiums.osm.data.ts` alone. The seats of each configuration, the bowls, the roof's kind and the size of its opening are in `src/stadiums.data.ts`, with what each cites. No seat map of a club, a ticket seller or a federation is read or copied, and no mark of a club, a league or a tournament is drawn.
465
+ BC Place, Lumen Field, T-Mobile Park, Tokyo Dome, Korakuen Hall and Koshien Stadium, read on 2026-10-20, and Yankee Stadium, Citi Field, MetLife Stadium, the Olympic Stadium of Montreal (with its tower, way/20213158) and Barclays Center, read on 2026-10-30 (`pnpm stadiums:fetch`; the files are in `data-sources/stadiums/2026-10-20/` and `data-sources/stadiums/2026-10-30/`: `osm-<stadium>.json` as Overpass returned it, `wikidata.json` and `wikipedia.json`, those of the later day holding every stadium). The outline of the building, its roof and the opening in it are OpenStreetMap's, ODbL 1.0, (c) OpenStreetMap contributors, and live in `src/stadiums.osm.data.ts` alone. The seats of each configuration, the bowls, the roof's kind and the size of its opening are in `src/stadiums.data.ts`, with what each cites. No seat map of a club, a ticket seller or a federation is read or copied, and no mark of a club, a league or a tournament is drawn.
464
466
 
465
467
  | Stadium | Wikidata item | OpenStreetMap way | English article and revision |
466
468
  | --- | --- | --- | --- |
@@ -470,6 +472,11 @@ BC Place, Lumen Field, T-Mobile Park, Tokyo Dome, Korakuen Hall and Koshien Stad
470
472
  | Tokyo Dome | Q733748 | way/20028328 | Tokyo Dome, 1379232526 |
471
473
  | Korakuen Hall | Q4389857 | way/45977418 | Korakuen Hall, 1372211318 |
472
474
  | Koshien Stadium | Q959811 | relation/9845926 | Koshien Stadium, 1374217766 |
475
+ | Yankee Stadium | Q753529 | way/24801630 | Yankee Stadium, 1382714435 |
476
+ | Citi Field | Q1072882 | way/604023701 | Citi Field, 1381363029 |
477
+ | MetLife Stadium | Q10862290 | way/24221553 | MetLife Stadium, 1381185974 |
478
+ | Olympic Stadium | Q285467 | way/108505523 | Olympic Stadium (Montreal), 1382141337 |
479
+ | Barclays Center | Q807966 | relation/8610205 | Barclays Center, 1380399342 |
473
480
 
474
481
  ## The context's and the gates' sources
475
482
 
package/dist/areas.d.ts CHANGED
@@ -5,6 +5,10 @@ export declare const CITYCTX_VENUES: Readonly<{
5
5
  sodo: string[];
6
6
  center: string[];
7
7
  }>;
8
+ /** The venues each detail area of New York, New Jersey and Montreal is drawn round, by their ids: one area for each venue, and for Montreal's two the city between them when both are shown. */
9
+ export declare const CITYCTX_DETAIL: Readonly<Record<string, readonly string[]>>;
10
+ /** The most patches of New York's surroundings a choice of venues takes: more than this many venues of the city are too far apart for patches of detail round each. */
11
+ export declare const MOST_DETAIL_AREAS = 2;
8
12
  /** The venues of Tokyo Dome City, round which Project PLATEAU's buildings are drawn (the Kodokan stands a little way off, inside the area). */
9
13
  export declare const TOKYO_VENUES: readonly string[];
10
14
  /** The key of every area there is data for, in the order a district draws them: each is one file. */
package/dist/areas.js CHANGED
@@ -4,10 +4,23 @@ export const CITYCTX_VENUES = Object.freeze({
4
4
  sodo: ["lumen-field", "t-mobile-park"],
5
5
  center: ["climate-pledge-arena"],
6
6
  });
7
+ /** The venues each detail area of New York, New Jersey and Montreal is drawn round, by their ids: one area for each venue, and for Montreal's two the city between them when both are shown. */
8
+ export const CITYCTX_DETAIL = Object.freeze({
9
+ "nyc-midtown": ["madison-square-garden"],
10
+ "nyc-bronx": ["yankee-stadium"],
11
+ "nyc-flushing": ["citi-field"],
12
+ "nyc-brooklyn": ["barclays-center"],
13
+ "meadowlands": ["metlife-stadium"],
14
+ "belmont-park": ["ubs-arena"],
15
+ "montreal-downtown": ["bell-centre"],
16
+ "montreal-olympic": ["olympic-stadium-montreal"],
17
+ });
18
+ /** The most patches of New York's surroundings a choice of venues takes: more than this many venues of the city are too far apart for patches of detail round each. */
19
+ export const MOST_DETAIL_AREAS = 2;
7
20
  /** The venues of Tokyo Dome City, round which Project PLATEAU's buildings are drawn (the Kodokan stands a little way off, inside the area). */
8
21
  export const TOKYO_VENUES = Object.freeze(["tokyo-dome", "korakuen-hall", "kodokan"]);
9
22
  /** The key of every area there is data for, in the order a district draws them: each is one file. */
10
- export const AREA_KEYS = Object.freeze(["vancouver", "vancouver-nature", "seattle-sodo", "seattle-center", "seattle-city", "tokyo-dome-city"]);
23
+ export const AREA_KEYS = Object.freeze(["vancouver", "vancouver-nature", "seattle-sodo", "seattle-center", "seattle-city", "tokyo-dome-city", "nyc-midtown", "nyc-bronx", "nyc-flushing", "nyc-brooklyn", "meadowlands", "belmont-park", "montreal-downtown", "montreal-olympic", "montreal-city"]);
11
24
  /** Each area's loader: the one `import()` of the one file that holds it. */
12
25
  const LOADERS = {
13
26
  "vancouver": async () => (await import("./osm.context.data.js")).VANCOUVER_CENTRE,
@@ -16,6 +29,15 @@ const LOADERS = {
16
29
  "seattle-center": async () => (await import("./cityctx.seattle-center.data.js")).SEATTLE_CENTER,
17
30
  "seattle-city": async () => (await import("./cityctx.seattle-city.data.js")).SEATTLE_CITY,
18
31
  "tokyo-dome-city": async () => (await import("./plateau.data.js")).TOKYO_DOME_CITY,
32
+ "nyc-midtown": async () => (await import("./cityctx.nyc-midtown.data.js")).NYC_MIDTOWN,
33
+ "nyc-bronx": async () => (await import("./cityctx.nyc-bronx.data.js")).NYC_BRONX,
34
+ "nyc-flushing": async () => (await import("./cityctx.nyc-flushing.data.js")).NYC_FLUSHING,
35
+ "nyc-brooklyn": async () => (await import("./cityctx.nyc-brooklyn.data.js")).NYC_BROOKLYN,
36
+ "meadowlands": async () => (await import("./cityctx.meadowlands.data.js")).MEADOWLANDS,
37
+ "belmont-park": async () => (await import("./cityctx.belmont-park.data.js")).BELMONT_PARK,
38
+ "montreal-downtown": async () => (await import("./cityctx.montreal-downtown.data.js")).MONTREAL_DOWNTOWN,
39
+ "montreal-olympic": async () => (await import("./cityctx.montreal-olympic.data.js")).MONTREAL_OLYMPIC,
40
+ "montreal-city": async () => (await import("./cityctx.montreal-city.data.js")).MONTREAL_CITY,
19
41
  };
20
42
  /**
21
43
  * The keys of the areas that go with some venues, in the order to draw them: downtown Vancouver's buildings and streets and its water, green and trees for BC Place and Rogers Arena; Seattle's SoDo for Lumen Field and
@@ -34,6 +56,16 @@ export function areaKeysFor(venues) {
34
56
  if (has(TOKYO_VENUES))
35
57
  return ["tokyo-dome-city"];
36
58
  const keys = [];
59
+ // Montreal's two venues stand six kilometres apart: together they take the city between them, each alone its own surroundings. New York's and New Jersey's venues are in different boroughs and states: each shown takes its own.
60
+ const montreal = ["montreal-downtown", "montreal-olympic"].filter((key) => has(CITYCTX_DETAIL[key]));
61
+ if (montreal.length === 2)
62
+ keys.push("montreal-city");
63
+ else
64
+ keys.push(...montreal);
65
+ // (More than two of New York's venues are in more than two boroughs and states, tens of kilometres across: each patch of surroundings would be a speck and together they would weigh a megabyte of drawing, so such a choice has none.)
66
+ const york = Object.entries(CITYCTX_DETAIL).filter(([key, list]) => !key.startsWith("montreal") && has(list)).map(([key]) => key);
67
+ if (york.length <= MOST_DETAIL_AREAS)
68
+ keys.push(...york);
37
69
  if (has(CITYCTX_VENUES.vancouver))
38
70
  keys.push("vancouver", "vancouver-nature");
39
71
  const [sodo, center] = [has(CITYCTX_VENUES.sodo), has(CITYCTX_VENUES.center)];
@@ -0,0 +1,3 @@
1
+ import type { ContextArea } from "./context.ts";
2
+ /** New York: Belmont Park and UBS Arena, Elmont: 1314 buildings, 397 street lines, 44 land cover outlines and 55 trees within 650 metres of the middle, read 2026-10-30. */
3
+ export declare const BELMONT_PARK: ContextArea;