Iceland's places ranks the toponym register, not settlements — and settlement_points double-labels the map #78

Closed
opened 2026-08-09 10:35:58 +00:00 by art-bot · 1 comment
Collaborator

Found auditing every country against the new docs/country-requirements.md (#77). Violates R85 (the capital must be the last name standing), R86 (places holds settlements, not the whole toponym register) and R91 (one label anchor per real-world feature).

What the data says

Iceland's five highest-ranked places:

rank name importance what it is
1 Ísland 3 the country
2 Kolbeinsey 2 an uninhabited skerry
3 Sundhnúkur 2 a crater row
4 1000 manna hellir 1 a cave
5 ABC Garðurinn 1 —

Reykjavík is not in the top six and does not appear at z7 at all. At z5 the map's only place label is Ísland.

SELECT name, importance, rank FROM map_places_14 WHERE country='is' ORDER BY rank LIMIT 6;
SELECT string_agg(name, ', ' ORDER BY rank) FROM map_places_7 WHERE country='is';

Why

conf/ismap.yaml's places reads the whole ornefni_punktar register and grades it by ornefnaflokkurkenni, which is a category code — land / sea / water / ice — not a size signal. The distribution is 44,530 names at importance 1, two at 2, one at 3. With nothing to break ties, ROW_NUMBER() OVER (ORDER BY importance DESC, ornefnaflokkurkenni, name) falls straight to alphabetical, which is why a cave outranks the capital.

The config comment already notices the symptom without recognising it: "Ísland is rank 1, so it is always present once a zoom has any budget at all."

Why nobody noticed

Iceland is still served the legacy settlement_points layer through the is tile source. html/style.json draws both place_labels (source is, source-layer settlement_points, minzoom 4) and place_names (source map, source-layer places, minzoom 4), and both are populated. The real town names come from the legacy layer, which masks the broken one — and means every Icelandic settlement is currently labelled twice.

The fix, in one piece

These are one job, not two. settlements/settlement_points are what actually knows about Icelandic settlements (built-up polygons from mannvirki_flakar, already DBSCAN-clustered per #22). places should take its ranking from that footprint — the shape Sweden landed in #29 — and settlements/settlement_points should then be retired from conf/ismap.yaml, from the is source list, and from the style, leaving one place-label layer.

Watch R88 while doing it: measure the footprint area in a metric CRS, not EPSG:3857.

Acceptance

SELECT name FROM map_places_14 WHERE country='is' ORDER BY rank LIMIT 5 returns five Icelandic towns beginning with Reykjavík, and grep -c place_labels html/style.json is 0.

Found auditing every country against the new `docs/country-requirements.md` (#77). Violates **R85** (the capital must be the last name standing), **R86** (`places` holds settlements, not the whole toponym register) and **R91** (one label anchor per real-world feature). ## What the data says Iceland's five highest-ranked places: | rank | name | importance | what it is | |---|---|---|---| | 1 | `Ísland` | 3 | the country | | 2 | `Kolbeinsey` | 2 | an uninhabited skerry | | 3 | `Sundhnúkur` | 2 | a crater row | | 4 | `1000 manna hellir` | 1 | a cave | | 5 | `ABC Garðurinn` | 1 | — | Reykjavík is not in the top six and does not appear at z7 at all. At z5 the map's only place label is `Ísland`. ```sql SELECT name, importance, rank FROM map_places_14 WHERE country='is' ORDER BY rank LIMIT 6; SELECT string_agg(name, ', ' ORDER BY rank) FROM map_places_7 WHERE country='is'; ``` ## Why `conf/ismap.yaml`'s `places` reads the whole `ornefni_punktar` register and grades it by `ornefnaflokkurkenni`, which is a **category** code — land / sea / water / ice — not a size signal. The distribution is 44,530 names at importance 1, two at 2, one at 3. With nothing to break ties, `ROW_NUMBER() OVER (ORDER BY importance DESC, ornefnaflokkurkenni, name)` falls straight to alphabetical, which is why a cave outranks the capital. The config comment already notices the symptom without recognising it: *"Ísland is rank 1, so it is always present once a zoom has any budget at all."* ## Why nobody noticed Iceland is still served the legacy `settlement_points` layer through the `is` tile source. `html/style.json` draws **both** `place_labels` (source `is`, source-layer `settlement_points`, minzoom 4) and `place_names` (source `map`, source-layer `places`, minzoom 4), and both are populated. The real town names come from the legacy layer, which masks the broken one — and means every Icelandic settlement is currently labelled twice. ## The fix, in one piece These are one job, not two. `settlements`/`settlement_points` are what actually knows about Icelandic settlements (built-up polygons from `mannvirki_flakar`, already DBSCAN-clustered per #22). `places` should take its ranking from that footprint — the shape Sweden landed in #29 — and `settlements`/`settlement_points` should then be retired from `conf/ismap.yaml`, from the `is` source list, and from the style, leaving one place-label layer. Watch **R88** while doing it: measure the footprint area in a metric CRS, not EPSG:3857. ## Acceptance `SELECT name FROM map_places_14 WHERE country='is' ORDER BY rank LIMIT 5` returns five Icelandic towns beginning with Reykjavík, and `grep -c place_labels html/style.json` is 0.
Owner

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

Result is in #91 — https://git.blahonga.org/art/ismap/pulls/91; the review note is the PR description.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#78
No description provided.