Greece pilot: Natural Earth carve + CORINE landcover (prove the add-a-country mechanism) #172

Closed
opened 2026-08-19 23:12:22 +00:00 by art · 3 comments
Owner

Greece (issue #44), the pilot: prove the "add a country" mechanism with the smallest
possible footprint — the Natural Earth carve plus landcover. Gated on the catalogue issue
(the Cadastre boundary's licence, R2, must be confirmed first).

Why this shape

Issue #44's point 2: before any of the heavy layers, prove a new country can be added at
all. Two things make Greece the cheapest country yet:

  • Landcover is an identity. enum.landcover IS the CORINE nomenclature and CLC 2018
    covers Greece, so cover is the conf/fi/03-cover.yaml pattern — a CASE over the CLC
    code, no semantic mapping to get wrong, no new vocabulary, no style change (R116).
  • The carve machinery is shared. Greece builds a country_mask partition from its own
    official boundary source; the Makefile import-gr target chains import-world, which
    subtracts the union of masks from Natural Earth land (R107). Greece needs no tile source
    of its own — everything is served through the shared map source.

Deliverables

  1. conf/gr/ per R17: base.yaml, downloads.yaml, staging.yaml, acceptance.yaml,
    01-country_mask.yaml, 02-cover.yaml (build order). country: gr (R16).
  2. Makefile import-gr target chaining import-world (R107), plus a fetch-gr download
    path through the importer's declared-downloads route (R10).
  3. Acceptance tests (R119, R34, R22, R45 as applicable), e.g.:
    • country_mask partition populated (the R119 pattern from conf/fi/01-country_mask.yaml);
    • cover gapless vs the mask (the R34 area-cross-check, second imported product);
    • coarse-tier cover vocabulary equals the level-1 rollup tier (R22);
    • no empty cover partition across the z5–13 range (R119).
  4. docs/country-gr.md gains the pilot section (R129–R136) as the catalogue lands.

Notes

  • The z0 mask for an archipelagic country: Iceland already set the island-territory
    precedent. At 110 m Natural Earth resolution most Aegean islands are absent from the
    background anyway; the carve is chiefly the mainland. Verify the world background no
    longer covers mainland Greece after the mask lands.
  • CLC includes territorial sea (the sea/523 class), matching Finland's partition
    shape and the R34 reference semantics.
  • Verify against the live DB before committing, per AGENTS.md: partitions at every zoom,
    no NULL cover_class, a decoded tile.
Greece (issue #44), the pilot: prove the "add a country" mechanism with the smallest possible footprint — the Natural Earth carve plus landcover. Gated on the catalogue issue (the Cadastre boundary's licence, R2, must be confirmed first). ## Why this shape Issue #44's point 2: before any of the heavy layers, prove a new country can be added at all. Two things make Greece the cheapest country yet: - **Landcover is an identity.** `enum.landcover` IS the CORINE nomenclature and CLC 2018 covers Greece, so `cover` is the conf/fi/03-cover.yaml pattern — a `CASE` over the CLC code, no semantic mapping to get wrong, no new vocabulary, no style change (R116). - **The carve machinery is shared.** Greece builds a `country_mask` partition from its own official boundary source; the Makefile `import-gr` target chains `import-world`, which subtracts the union of masks from Natural Earth land (R107). Greece needs no tile source of its own — everything is served through the shared `map` source. ## Deliverables 1. `conf/gr/` per R17: `base.yaml`, `downloads.yaml`, `staging.yaml`, `acceptance.yaml`, `01-country_mask.yaml`, `02-cover.yaml` (build order). `country: gr` (R16). 2. Makefile `import-gr` target chaining `import-world` (R107), plus a `fetch-gr` download path through the importer's declared-downloads route (R10). 3. Acceptance tests (R119, R34, R22, R45 as applicable), e.g.: - country_mask partition populated (the R119 pattern from conf/fi/01-country_mask.yaml); - cover gapless vs the mask (the R34 area-cross-check, second imported product); - coarse-tier cover vocabulary equals the level-1 rollup tier (R22); - no empty cover partition across the z5–13 range (R119). 4. `docs/country-gr.md` gains the pilot section (R129–R136) as the catalogue lands. ## Notes - The z0 mask for an archipelagic country: Iceland already set the island-territory precedent. At 110 m Natural Earth resolution most Aegean islands are absent from the background anyway; the carve is chiefly the mainland. Verify the world background no longer covers mainland Greece after the mask lands. - CLC includes territorial sea (the `sea`/`523` class), matching Finland's partition shape and the R34 reference semantics. - Verify against the live DB before committing, per AGENTS.md: partitions at every zoom, no NULL cover_class, a decoded tile.
Author
Owner

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

The mask/carve is done and verified (0 km² of world background overlaps the Greek mask; a mainland point is out of the background). The CORINE cover is written but BLOCKED on a CLMS registration + Bearer token — the old EIONET zip URLs are dead and the importer's plain-GET downloads: mechanism cannot attach the token, so no download was faked. The exact credential is documented in conf/gr/downloads.yaml; until data/gr/clc_gr.gpkg is placed, the cover layer and its R34/R120 tests skip. The PR does not auto-close #172 — the cover half remains open.

Result is in #176 — https://git.blahonga.org/art/ismap/pulls/176; the review note is the PR description. The mask/carve is done and verified (0 km² of world background overlaps the Greek mask; a mainland point is out of the background). The CORINE cover is written but BLOCKED on a CLMS registration + Bearer token — the old EIONET zip URLs are dead and the importer's plain-GET downloads: mechanism cannot attach the token, so no download was faked. The exact credential is documented in conf/gr/downloads.yaml; until data/gr/clc_gr.gpkg is placed, the cover layer and its R34/R120 tests skip. The PR does not auto-close #172 — the cover half remains open.
Author
Owner

The cover download is unblocked: the CLMS provider (importer/clms.go, OAuth2 JWT-bearer) is in PR #177 — #177 (stacked on #176). After it merges, put the CLMS service key in conf/secrets.yaml under a clms: block and run to fetch data/gr/clc_gr.gpkg; the cover acceptance tests then un-skip.

The cover download is unblocked: the CLMS provider (importer/clms.go, OAuth2 JWT-bearer) is in PR #177 — https://git.blahonga.org/art/ismap/pulls/177 (stacked on #176). After it merges, put the CLMS service key in conf/secrets.yaml under a clms: block and run to fetch data/gr/clc_gr.gpkg; the cover acceptance tests then un-skip.
Author
Owner

Resolved by a handful or PRs - !177, !176 and a few more on top of that that resolved various NE-related problems.

Resolved by a handful or PRs - !177, !176 and a few more on top of that that resolved various NE-related problems.
art closed this issue 2026-08-20 10:20:47 +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#172
No description provided.