#103: Sweden airports + airport_points from Topo 10 Anläggningsområde #146
No reviewers
Labels
No labels
blocked
claude-wip
map-report
map:is
map:se
needs-review
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
art/ismap!146
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "issue-103-se-airports"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
#103: Sweden airports + airport_points from Topo 10 Anläggningsområde
Closes #103
What changed
Sweden gets the
airportsandairport_pointslayers, mirroring Iceland'simplementation (R140), from Lantmäteriet Topo 10 tema Anläggningsområde — a
files:entry on the already-negotiatedtopo10Geotorget order plus the layers, nonew approval.
Source (
conf/semap.yaml):start_landningsbana(objekttypnr 2853) — 206 runwaypolygons with
flygplatsstatus(I drift / Nedlagd) — andflygplatsomrade(objekttypnr2854) — 183 airport-area polygons with the codes. Both staged (EPSG:3006 → 3857) as
se_runway_t10/se_flygplats_t10; the theme zip is 11.4 MB / 25.7 MB unzipped,recorded on first fetch (R5). The layer is
filter_only, z10–z13 like Iceland's, andreads the runway polygons joined to their airport area.
Design decisions, each measured against the live data:
decision the
railwayslayer made: a decommissioned runway should not render as anairport.
(Áætlunarvöllur vs Lendingarstaður) has no Swedish equivalent —
flygplatsstatusonly says I drift/Nedlagd (operational state, not traffic level). So class 1
(scheduled) =
iatapresent ("regular traffic only" per the source docs), class 2 =absent. 57 class-1 / 133 class-2 runways. The coarse-zoom
airport_pointsfilter(z9,
airport_class = 1, like Iceland) keeps the 42 scheduled airports on z8–z9.texttheme (already staged forplaces): the ANLTX"X flygplats" labels — 48 of the 183 areas carry one, all inside their area, one per
area. Neither anläggningsomrade table has a name, only codes (ESSA / ARN), and a code
is not a label. The join is the label inside the runway's own area, not a nearest
label: the uncapped nearest-label join this replaced assigned a label up to 300 km
away (measured live; the R120 acceptance test would catch it). Named airports get a
label point; the other 135 areas keep their runway polygons and no label.
Serving:
conf/semap.yamlregains asources:block (se, airports +airport_points — the first unshared Sweden layer since Phase 5),
conf/mapsrv.yamlserves
/tiles/se, andhtml/style.jsondeclares thesesource withairports_se+airport_labels_selayers copied from Iceland's, reading thenamecolumn.
Verification (live DB)
Rows per zoom (all partitions populated, z3–z14 floor):
se_airports_*: 190 runways at every of z10–z13se_airport_points_*: 42 (scheduled) at z8–z9, 48 (all labeled) at z10–z13Acceptance —
make acceptance-alltally (fast + 100s/1000s buckets, every config):New tests (in the same commit, on the airports / airport_points layers):
importer tiles --check conf/semap.yaml(R121, decoded MVT at coarsest + finest zoom):airportsz10/z13 andairport_pointsz8/z13 all PASS with keys[name airport_class country]. Decoded the z13 Arlanda tile by hand: 2 runway polygons,name=Arlanda flygplats, class 1. z9 below the airports floor returns 0 bytes.Browser (real Chrome over CDP, no virtual time): at z13 Arlanda renders 6 runway
polygons + the "Arlanda flygplats" icon/label; Landvetter and Sturup render their
labels + runways at z13; at z11 Arlanda's label renders. At z8–z9 dense areas some
labels are collision-culled by MapLibre in favour of place names (normal symbol
placement — the source features are present). Local vision model (Qwen2.5-VL-3B) on
the Arlanda z13 screenshot: icon + "Arlanda flygplats" label + grey runways present,
no code labels, no garbled text.
/tiles/seserves 200; the only console 404s arethe pre-existing
/favicon.ico.make buildandmake testpass.Notes / left undone
flygplatspunkt(objekttypnr 2852, 68 heliport points) is in the same theme but notimported — it is a point layer of heliports, not airports; the issue scopes runway
polygons + areas. Easy follow-up if wanted.
Kristianstad, Lidköping, Oskarshamn, Söderhamn, Storuman) — they keep runways but no
label. That is the text theme's coverage, not an omission in the join.
paint/layout verbatim, only
nafnfitju→name).Sweden's first unshared layer since unification Phase 5: `airports` (runway polygons) + the derived `airport_points` label layer, mirroring Iceland's implementation (R140), from the already-negotiated topo10 Geotorget order (new files: entry only — 11.4 MB zipped / 25.7 MB unzipped, recorded on first fetch, R5). Source: start_landningsbana (objekttypnr 2853, 206 runway polygons with flygplatsstatus I drift/Nedlagd) joined to flygplatsomrade (objekttypnr 2854, 183 areas with iata/icao). Design, each decision measured against the live data: - Nedlagd runways are dropped at import (190 of 206 kept) — the same closed-track decision the railways layer made; a decommissioned runway is not an airport. - airport_class comes from the codes, not flygplatsstatus: Iceland's scheduled-vs-strip ladder has no Swedish vocabulary, so class 1 = iata present ("regular traffic only" per the source docs), class 2 = absent. 57/133 runways. The coarse-zoom label filter (z9, class 1, like Iceland) keeps the 42 scheduled airports on z8-z9. - Names come from the Topo 10 text theme's ANLTX "X flygplats" labels (48 of 183 areas carry one, always inside its area): neither anläggningsomrade table has a name, only codes, and a code is not a label. The join is the label inside the runway's own area — the uncapped nearest-label join this replaced labelled runways from another airport up to 300 km away, and the R120 acceptance test pins the structural guarantee. Serving: semap.yaml regains a sources: block (se), mapsrv.yaml serves /tiles/se, html/style.json declares the se source with airports_se + airport_labels_se copied from Iceland's (nafnfitju -> name). Docs updated: country-sweden.md catalogue line (issue #84), R13 in country-requirements.md, style.md layer count, unification.md. Verified against the live DB: se_airports_* 190 rows at z10-z13; se_airport_points_* 42 at z8-z9 / 48 at z10-z13; new R119/R120 acceptance tests PASS; importer tiles --check PASS for both layers at coarsest + finest zoom; decoded the z13 Arlanda tile by hand (2 runways, name=Arlanda flygplats, class 1); real-browser CDP render at z11-13 shows Arlanda/Landvetter/Sturup labels + runways; make acceptance-all: ismap 31/31, semap 36/36, plmap 29/29, fimap 34/34, world 14/14; make build and make test pass.Merged through !154
Pull request closed