#85: Poland's water_points and ferries land — the R6 catalogue check found the classes the fetch list never named #112

Merged
art merged 1 commit from issue-85-bdot10k-ferries-water-points into main 2026-08-13 04:40:43 +00:00
Owner

Closes #85


Issue #85 — Poland's water_points and ferries: the R6 catalogue check, and both layers land

Branch: issue-85-bdot10k-ferries-water-points

What the issue asked

The two layers were absent from Poland, and the documentation of both absences was
reasoned against the fetched class list (BDOT10K_CLASSES), not against BDOT10k
itself — the exact shape of the Warsaw metro finding in #64 (a class in the national
database all along, never named in the fetch list). Read GUGiK's published BDOT10k
feature-class catalogue — the whole thing — and answer for each layer: which class
carries it, or is it genuinely absent.

The catalogue answer: both classes exist

Read against Dz.U. 2021 poz. 1412, załącznik 2 (the 2021 BDOT10k regulation —
the schema's class list and rodzaj dictionaries) and GUGiK's published "Klasyfikacja
obiektów BDOT10k"
(OIPR12 wodospad, OIPR13 źródło, SKPP03 przeprawa promowa),
and confirmed on disk in two county packages inspected end to end (1401 mazowieckie,
2004 grajewski — both ship OT_OIPR_P.gpkg and OT_SKPP_L.gpkg):

  • water_points — carried by OT_OIPR_P ("obiekt przyrodniczy", natural-object
    points), rodzaj = 'wodospad' → waterfall, rodzaj = 'źródło' → spring, per the
    schema's OT_RodzajObiektuPrzyrodniczego enumeration.
  • ferries — carried by OT_SKPP_L ("przeprawa", crossing lines), rodzaj = 'prom' (ferry) per OT_RodzajPrzeprawy (bród / łódź / prom). The old note's "nothing
    in SKJZ to build one from" was true of SKJZ and irrelevant: the ferry class is a
    separate class in the same SK group, not a value of KLASADROGI. Fords and boat
    crossings (bród, łódź) are not boat routes and are not imported (R68).

What changed

  • Makefile — OIPR_P and SKPP_L added to BDOT10K_CLASSES; the fetch marker
    bumped to pt-sw-sk-oikm-oipr-skpp so every county re-fetches once (R9: the marker
    names the class set; the county zips are deleted after extraction, so a widened list
    must invalidate the marker rather than be satisfied from disk). Also fixes a stale
    comment that labelled SKPP "footpaths" — footpaths are SKRP.
  • conf/plmap.yaml — staging pl_oipr / pl_skpp (glob-merge, EPSG:3857 on load
    like pl_oikm); the water_points layer (wodospad/źródło → waterfall/spring; zoom
    floor mirrors the style's minzooms — waterfalls z9, springs z11) and the ferries
    layer (rodzaj prom, merge_lines + min_length_pixels: 1 like SE/FI; SKPP has no
    name column, so Poland's ferries are unnamed like Finland's). The old "no partition"
    comments are gone.
  • docs/country-poland.md — the intro layer list, the fetch-marker paragraph, the
    Water section and the Roads section now state the classes and cite the catalogue;
    the R11-instance claims are replaced by the R6 positive answers, with the measured
    national counts.
  • docs/workstream-a.md — the Poland catalogue gains the two rows (19 classes,
    none wasted) and the not-on-disk list is corrected (SKRP footpaths, SKRW junction
    points; SKPP is now imported).
  • docs/country-requirements.md — the conformance layer-inventory table and the
    issue row for #85 record the resolution.
  • docs/unification.md — the Phase-4 "missing partition" paragraph corrected.

Verification (live DB, then a real-browser render)

  • Fetch: make fetch-bdot10k re-pulled all 380 counties with the new marker, 0
    failures (~15 min, ~14 GB on disk).
  • Staging: pl_oipr 8 020 907 rows, pl_skpp 2 947 rows, both EPSG:3857, 0
    NULL rodzaj/geom — matching the source files exactly.
  • Row counts: map_water_points_14_pl 4 921 = 6 waterfall + 4 915 spring;
    map_ferries_14_pl 133. Cascade: springs appear z11+ (the style's minzoom for
    springs is 11 — the same "bytes nobody renders" reasoning as Sweden's z12 rapids
    filter), waterfalls z8–z14; ferries z7–z14 — all of Poland's crossings are short
    river/strait routes (longest ≈ 1.3 km Świnoujście), so min_length_pixels: 1
    drops them below z7 where Sweden's Baltic lines and Finland's archipelago routes
    still have rows. That is the length rule working, not a gap.
  • NULLs: 0 NULL kind in water_points at any zoom; ferries name is NULL on all
    133 rows by design (SKPP has no name column — same shape as Finland).
  • Partitions: map_water_points_8..14_pl and map_ferries_3..14_pl all present
    and attached to the shared parents; se/fi/is partitions untouched (counts
    unchanged).
  • Decoded tiles: Świnoujście z12 (2210/1316) carries 2 ferries; the spring tile
    z12 (2255/1372) carries 2 water_points; the Karkonosze waterfall tile z9 (277/171)
    carries 5 water_points.
  • Real-browser CDP render (scripts/cdp-map-check.mjs, real Chrome, no virtual
    time): 4 ferry lines rendered over Świnoujście at z12
    (queryRenderedFeatures on the ferries layer), 2 waterfall icons + 1 spring at
    the Karkonosze view, 2 springs in the spring tile. The two console 404s are
    pre-existing (favicon, ungenerated italic glyph).
  • make build and go test ./... green in importer/ and mapsrv/; the importer's
    TestRealConfigsValidate passes.

Notes for the reviewer

  • The full re-fetch is the R9-mandated consequence of widening the class list; old
    *.pt-sw-sk-oikm.done markers are inert leftovers per the existing convention.
  • The spring floor is expressed as a zoom filter (kind != 'spring' at z10), the
    same mechanism Sweden and Finland use — one shared zxy function, so a country with
    nothing to say at a zoom inside the shared range says so with a filter.
  • Nothing in the style changed: both layers' styles already exist and read the shared
    zxy_map source, so Poland's rows render with the same icons/colours as the other
    three countries.
Closes #85 --- # Issue #85 — Poland's water_points and ferries: the R6 catalogue check, and both layers land **Branch:** `issue-85-bdot10k-ferries-water-points` ## What the issue asked The two layers were absent from Poland, and the documentation of both absences was reasoned against the *fetched* class list (`BDOT10K_CLASSES`), not against BDOT10k itself — the exact shape of the Warsaw metro finding in #64 (a class in the national database all along, never named in the fetch list). Read GUGiK's published BDOT10k feature-class catalogue — the whole thing — and answer for each layer: which class carries it, or is it genuinely absent. ## The catalogue answer: both classes exist Read against **Dz.U. 2021 poz. 1412, załącznik 2** (the 2021 BDOT10k regulation — the schema's class list and rodzaj dictionaries) and **GUGiK's published "Klasyfikacja obiektów BDOT10k"** (OIPR12 *wodospad*, OIPR13 *źródło*, SKPP03 *przeprawa promowa*), and confirmed on disk in two county packages inspected end to end (1401 mazowieckie, 2004 grajewski — both ship `OT_OIPR_P.gpkg` and `OT_SKPP_L.gpkg`): - **`water_points`** — carried by **`OT_OIPR_P`** ("obiekt przyrodniczy", natural-object points), `rodzaj = 'wodospad'` → `waterfall`, `rodzaj = 'źródło'` → `spring`, per the schema's `OT_RodzajObiektuPrzyrodniczego` enumeration. - **`ferries`** — carried by **`OT_SKPP_L`** ("przeprawa", crossing lines), `rodzaj = 'prom'` (ferry) per `OT_RodzajPrzeprawy` (bród / łódź / prom). The old note's "nothing in SKJZ to build one from" was true of SKJZ and irrelevant: the ferry class is a *separate class in the same SK group*, not a value of `KLASADROGI`. Fords and boat crossings (bród, łódź) are not boat routes and are not imported (R68). ## What changed - **Makefile** — `OIPR_P` and `SKPP_L` added to `BDOT10K_CLASSES`; the fetch marker bumped to `pt-sw-sk-oikm-oipr-skpp` so every county re-fetches once (R9: the marker names the class set; the county zips are deleted after extraction, so a widened list must invalidate the marker rather than be satisfied from disk). Also fixes a stale comment that labelled SKPP "footpaths" — footpaths are `SKRP`. - **conf/plmap.yaml** — staging `pl_oipr` / `pl_skpp` (glob-merge, EPSG:3857 on load like `pl_oikm`); the `water_points` layer (wodospad/źródło → waterfall/spring; zoom floor mirrors the style's minzooms — waterfalls z9, springs z11) and the `ferries` layer (rodzaj prom, `merge_lines` + `min_length_pixels: 1` like SE/FI; SKPP has no name column, so Poland's ferries are unnamed like Finland's). The old "no partition" comments are gone. - **docs/country-poland.md** — the intro layer list, the fetch-marker paragraph, the Water section and the Roads section now state the classes and cite the catalogue; the R11-instance claims are replaced by the R6 positive answers, with the measured national counts. - **docs/workstream-a.md** — the Poland catalogue gains the two rows (19 classes, none wasted) and the not-on-disk list is corrected (SKRP footpaths, SKRW junction points; SKPP is now imported). - **docs/country-requirements.md** — the conformance layer-inventory table and the issue row for #85 record the resolution. - **docs/unification.md** — the Phase-4 "missing partition" paragraph corrected. ## Verification (live DB, then a real-browser render) - **Fetch**: `make fetch-bdot10k` re-pulled all 380 counties with the new marker, 0 failures (~15 min, ~14 GB on disk). - **Staging**: `pl_oipr` 8 020 907 rows, `pl_skpp` 2 947 rows, both EPSG:3857, 0 NULL rodzaj/geom — matching the source files exactly. - **Row counts**: `map_water_points_14_pl` 4 921 = 6 `waterfall` + 4 915 `spring`; `map_ferries_14_pl` 133. Cascade: springs appear z11+ (the style's minzoom for springs is 11 — the same "bytes nobody renders" reasoning as Sweden's z12 rapids filter), waterfalls z8–z14; ferries z7–z14 — all of Poland's crossings are short river/strait routes (longest ≈ 1.3 km Świnoujście), so `min_length_pixels: 1` drops them below z7 where Sweden's Baltic lines and Finland's archipelago routes still have rows. That is the length rule working, not a gap. - **NULLs**: 0 NULL `kind` in water_points at any zoom; ferries `name` is NULL on all 133 rows by design (SKPP has no name column — same shape as Finland). - **Partitions**: `map_water_points_8..14_pl` and `map_ferries_3..14_pl` all present and attached to the shared parents; `se`/`fi`/`is` partitions untouched (counts unchanged). - **Decoded tiles**: Świnoujście z12 (2210/1316) carries 2 ferries; the spring tile z12 (2255/1372) carries 2 water_points; the Karkonosze waterfall tile z9 (277/171) carries 5 water_points. - **Real-browser CDP render** (`scripts/cdp-map-check.mjs`, real Chrome, no virtual time): 4 ferry lines rendered over Świnoujście at z12 (`queryRenderedFeatures` on the `ferries` layer), 2 waterfall icons + 1 spring at the Karkonosze view, 2 springs in the spring tile. The two console 404s are pre-existing (favicon, ungenerated italic glyph). - `make build` and `go test ./...` green in importer/ and mapsrv/; the importer's `TestRealConfigsValidate` passes. ## Notes for the reviewer - The full re-fetch is the R9-mandated consequence of widening the class list; old `*.pt-sw-sk-oikm.done` markers are inert leftovers per the existing convention. - The spring floor is expressed as a zoom filter (`kind != 'spring'` at z10), the same mechanism Sweden and Finland use — one shared zxy function, so a country with nothing to say at a zoom inside the shared range says so with a filter. - Nothing in the style changed: both layers' styles already exist and read the shared `zxy_map` source, so Poland's rows render with the same icons/colours as the other three countries.
Both absences were documented against BDOT10K_CLASSES, not against BDOT10k (R6) —
the exact shape of the Warsaw metro finding in #64. The catalogue (Dz.U. 2021 poz.
1412, załącznik 2 + GUGiK's published Klasyfikacja obiektów) and the county packages
inspected end to end both answer: the classes exist.

- water_points ← OT_OIPR_P ("obiekt przyrodniczy"), rodzaj wodospad → waterfall,
  źródło → spring. Measured nationally on first fetch: 8 020 907 rows, of which
  4 915 springs and 6 waterfalls.
- ferries ← OT_SKPP_L ("przeprawa"), rodzaj prom → ferry (bród/łódź are not boat
  routes, R68). Measured: 133 prom rows in 223 of 380 counties — the Vistula
  crossings and Świnoujście.

Implementation: OIPR_P + SKPP_L join BDOT10K_CLASSES and the marker bumps to
pt-sw-sk-oikm-oipr-skpp (R9 — the county zips are deleted after extraction, so the
whole set re-fetched, 380/380 in ~15 min); pl_oipr/pl_skpp staging; the two shared
layers in plmap.yaml (springs floor z11 mirrors the style's minzoom, ferries merge +
min_length_pixels 1 like SE/FI; SKPP has no name column, so ferries are unnamed like
Finland's). Also fixes the Makefile comment that mislabelled SKPP "footpaths" — that
is SKRP. The stale "no partition" claims in docs/country-poland.md, workstream-a.md,
country-requirements.md and unification.md are replaced with the R6 positives and
the measured counts; the conformance layer-inventory table records the resolution.

Verified: reimported both layers against the live DB — 4 921 water_points (6
waterfall + 4 915 spring, 0 NULL kinds), 133 ferries (0 NULL geoms, names NULL by
design); partitions at every zoom (water_points z8–14, ferries z3–14); decoded
tiles (Świnoujście z12 carries 2 ferries, Karkonosze z9 carries 5 water_points);
real-browser CDP render shows 4 ferries over Świnoujście and the waterfall/spring
icons at the Karkonosze view; se/fi/is partitions untouched; make build + go test
green in importer/ and mapsrv/.
art changed title from # Issue #85 — Poland's water_points and ferries: the R6 catalogue check, and both layers land to #85: Poland's water_points and ferries land — the R6 catalogue check found the classes the fetch list never named 2026-08-12 22:14:23 +00:00
art merged commit 0ca325d858 into main 2026-08-13 04:40:43 +00:00
art deleted branch issue-85-bdot10k-ferries-water-points 2026-08-13 04:40:43 +00:00
Sign in to join this conversation.
No reviewers
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!112
No description provided.