Shared airports + airport_points layer — fold is/se/pl/fi into one MVT source (was: Iceland-only style layers) #149

Closed
opened 2026-08-17 07:53:53 +00:00 by art · 2 comments
Owner

Scope: make airports (+ derived airport_points) a shared layer in the unification sense (docs/schema.md — include: contracts, country: partition, wireSharedLayers, one MVT function per layer on the shared map source), so all four countries render from one tile route. Today nothing the last three imports built is visible: main's html/style.json declares sources map + is only, and the airports/airport_labels style layers read is/airports + is/airport_points.

What exists (measured live, 2026-08-17):

  • ismap_airports z10–13 / ismap_airport_points z8–13 (Iceland, the original)
  • se_airports z10–13 / se_airport_points z8–13 (PR #146)
  • fi_airports z10–13 / fi_airport_points z8–13 (PR #147)
  • plmap_airports z10–13 / plmap_airport_points z8–13 (issue #106, in flight)

Each is served under its own per-country tile source (se, fi, pl added back to conf/mapsrv.yaml by those PRs) and styled with per-country airports_*/airport_labels_* layers. That is the additive-migration shape — this issue collapses it back: one shared airports + airport_points MVT function (country-partitioned), style layers reading the shared source, per-country sources and style layers deleted, is keeping only what is still unshared.

Design, to settle against live data:

  1. Contract — airports/airport_points in the shared contracts (conf/common.yaml): one attribute set all four countries fill. The class ladders already collapse to the same 1/2 (ath Áætlunarvöllur; iata presence; TYPLOTNISKA port lotniczy; register LENTOASEMA/LENTOKENTTÄ tier) and all four have name (register join / label-inside-area). Anything not common must be dropped or made nullable.
  2. Zoom floor — all four already match (areas z10–13, points z8–13), so the shared stop_z/minzoom is one decision.
  3. Style — airports + airport_labels read the shared source with the same filters (class-1-only at coarse zoom, label rules); delete the per-country variants.
  4. Acceptance — the R119/R120 checks each country shipped must run per-country on the shared layer (no empty partition; airport_class NOT NULL; name is the label inside its own area).

Verification: import all four configs, decode a z10–13 tile per country (Keflavík, Arlanda, Chopin, Helsinki-Vantaa), CDP render, acceptance tally. After this the R13 "airports exist for Iceland alone" row is obsolete.

Dependencies: #106 lands first (its PR is open once the full import finishes); this folds all four in one pass. Part of the is-only-style cleanup — siblings: shared buildings (#150), contours (#151), peaks (#152).

Scope: make `airports` (+ derived `airport_points`) a **shared layer** in the unification sense (`docs/schema.md` — `include:` contracts, `country:` partition, `wireSharedLayers`, one MVT function per layer on the shared `map` source), so all four countries render from one tile route. Today nothing the last three imports built is visible: main's `html/style.json` declares sources `map` + `is` only, and the `airports`/`airport_labels` style layers read `is`/`airports` + `is`/`airport_points`. What exists (measured live, 2026-08-17): - `ismap_airports` z10–13 / `ismap_airport_points` z8–13 (Iceland, the original) - `se_airports` z10–13 / `se_airport_points` z8–13 (PR #146) - `fi_airports` z10–13 / `fi_airport_points` z8–13 (PR #147) - `plmap_airports` z10–13 / `plmap_airport_points` z8–13 (issue #106, in flight) Each is served under its own per-country tile source (`se`, `fi`, `pl` added back to `conf/mapsrv.yaml` by those PRs) and styled with per-country `airports_*`/`airport_labels_*` layers. That is the additive-migration shape — this issue collapses it back: one shared `airports` + `airport_points` MVT function (country-partitioned), style layers reading the shared source, per-country sources and style layers deleted, `is` keeping only what is still unshared. Design, to settle against live data: 1. **Contract** — `airports`/`airport_points` in the shared contracts (`conf/common.yaml`): one attribute set all four countries fill. The class ladders already collapse to the same 1/2 (`ath` Áætlunarvöllur; `iata` presence; `TYPLOTNISKA` port lotniczy; register LENTOASEMA/LENTOKENTTÄ tier) and all four have `name` (register join / label-inside-area). Anything not common must be dropped or made nullable. 2. **Zoom floor** — all four already match (areas z10–13, points z8–13), so the shared `stop_z`/minzoom is one decision. 3. **Style** — `airports` + `airport_labels` read the shared source with the same filters (class-1-only at coarse zoom, label rules); delete the per-country variants. 4. **Acceptance** — the R119/R120 checks each country shipped must run per-country on the shared layer (no empty partition; `airport_class` NOT NULL; name is the label inside its own area). Verification: import all four configs, decode a z10–13 tile per country (Keflavík, Arlanda, Chopin, Helsinki-Vantaa), CDP render, acceptance tally. After this the R13 "airports exist for Iceland alone" row is obsolete. Dependencies: #106 lands first (its PR is open once the full import finishes); this folds all four in one pass. Part of the is-only-style cleanup — siblings: shared buildings (#150), contours (#151), peaks (#152).
Author
Owner

Worker interruption note: the first #149 worker merged the three per-country branches (issue-149-shared-airports = origin/main + #146/#147/#153 commits, pushed as 0b7dff4) and finished the design (contract shape, partition/test conventions) but was killed mid-work before any implementation. Resumed by a fresh worker from that pushed branch state. Orphan decision (from the interruption): the old per-country airports tables/functions stay as inert #12 orphans — project practice, nothing is DROPped.

Worker interruption note: the first #149 worker merged the three per-country branches (issue-149-shared-airports = origin/main + #146/#147/#153 commits, pushed as 0b7dff4) and finished the design (contract shape, partition/test conventions) but was killed mid-work before any implementation. Resumed by a fresh worker from that pushed branch state. Orphan decision (from the interruption): the old per-country airports tables/functions stay as inert #12 orphans — project practice, nothing is DROPped.
Author
Owner

Result is in #154 — #154; the review note is the PR description.

Result is in #154 — https://git.blahonga.org/art/ismap/pulls/154; the review note is the PR description.
art closed this issue 2026-08-17 22:08:30 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
art/ismap#149
No description provided.