Denmark: catalogue the sources (R5/R6/R2) — the go/no-go gate #211

Closed
opened 2026-08-24 17:01:56 +00:00 by art-bot · 0 comments
Collaborator

Adding four countries (Norway, Denmark, Czechia, Slovakia). This is Denmark's gate issue,
per .claude/skills/add-country/.

Deliverable: docs/country-dk.md in the docs/country-gr.md reference shape (R129–R136).

Research verdict (2026-08-24): GO, with the semantics split across two access routes

Denmark has three publishing routes with different auth and different attribute quality.
All hosts resolve over IPv4; every endpoint below was fetched.

  1. Klimadatastyrelsen INSPIRE, anonymous, no token, OGC API Features under
    https://api.dataforsyningen.dk/ogcapi/features/<service>/collections/…, CC BY 4.0
    asserted per dataset. (SDFI/SDFE is now Klimadatastyrelsen; sdfe.dk, sdfi.dk and
    kds.dk all still answer — a URL that looks stale probably isn't.)
  2. GeoDanmark via …_DAF?...&token= — the full-attribute topographic data,
    credentialed.
  3. Vejdirektoratet's national access point ("Dataudveksleren"), anonymous, API at
    businessservice.dataudveksler.app.vd.dk/api/dataset/<id>.

The trap worth writing into the doc

The anonymous INSPIRE route is complete geometry with the semantics stripped out — but
only in the transport theme.
roadlink has 2 506 759 features and no class, name or
ref (just fictitious, inspireid, objectid); railwaylink has 13 998 with
geographicalname null in all 500 sampled; railwaystationarea 447 polygons, null in
all 447
. A reviewer who sees "national road network, anonymous, CC BY 4.0, 2.5 M features"
and stops there has found a layer that cannot be classed, labelled or filtered.

Every other theme keeps its attributes: au_inspire/administrativeunit 105 units
including name = "Danmark", nationalcode = DK, nationallevel = 1stOrder;
lc_inspire/landcoverunit 576 118 polygons; hy_inspire/standingwater_wms_soe
187 097 lake polygons (localtype = Sø, surfacearea; unnamed);
hy_inspire/watercourselink 938 605 links with flowdirection;
gn_inspire/namedplace 144 725 names from Danske Stednavne with localtype/type;
building_inspire/building 5 994 941 — MultiPoint, pointInsideBuilding.

Consequences to record as decisions

  • Denmark is a building_points country, not a buildings country — the R13 pairing
    Iceland established. Footprint polygons exist in GeoDanmark Bygning, behind the token.
  • Roads: two options. CVF (Centralt Vej- og stiregister, Vejdirektoratet) is
    anonymous WFS, CC BY 4.0, 307 833 features with road names (BETEGNELSE),
    VEJ_ELLER_STI (Vej 79% / Sti 21%) and VEJSTATUS (Offentlig/Privat…), but VEJTYPE is
    populated on only ~48% and has two observed values (Øvrige veje, Motortrafikvej) —
    a two-level functional class. The full hierarchy needs GeoDanmark Vejmidte (token).
    Verified live at http://geocloud.vd.dk/CVF/wfs and mirrored on the NAP; refreshed daily,
    timeLastSuccessUtc = 2026-08-24T00:03:46Z.
  • Railways: Banedanmark's ArcGIS Hub (geodata-banedanmark.opendata.arcgis.com,
    31 datasets, anonymous) — Basisspor_OD 8 194 track polylines with SPORTYPETEKST,
    SPORKATEGORITEKST, BANENUMMER; Hovedstraekninger_HE_OD 102 named main lines
    (HVDSTRK_NAVN); PLATFORME_OD 235 platform points (unnamed). maxRecordCount 2000
    → the existing arcgis: paging provider fits. Licence unasserted on all 31 datasets —
    R2 confirm before going live.
  • Airports: INSPIRE aerodromearea 53 / runwayarea 72 / apronarea 208, anonymous,
    CC BY 4.0, unnamed.
  • Transit is the weak spot. Metroselskabet publishes only statistics; letbane returns
    0 hits on the municipal CKAN; Københavns Kommune's Metro dataset is a 2013 map-viewer
    link. Rejseplanen's GTFS landing page returns HTTP 403 behind a Cloudflare JS
    challenge
    and its licence could not be read — R10-unfetchable and R2-unresolved.

Open questions this issue must close

  1. Is a Dataforsyningen token free and self-service, what is its lifetime, and how is it
    presented?
    Under R142 it is an importer/dataforsyningen.go provider with the
    credential in conf/secrets.yaml — never a token= in a downloads: URL.
  2. Banedanmark's licence (R2).
  3. water_points — no spring/rapid/waterfall collection in hy_inspire's seven.
    Denmark is flat and this is plausibly a real absence, but R6 says check GeoDanmark's own
    object catalogue before writing one down.
  4. places population join — namedplace has no population; the Danmarks Statistik key
    was not established.

Border tests (R135): Denmark's only land border is with Germany, which is not imported, and
the Øresund/Kattegat borders are maritime — so Denmark is the one country in this batch with
no border-agreement test available. Say so explicitly.

Adding four countries (Norway, Denmark, Czechia, Slovakia). This is Denmark's gate issue, per `.claude/skills/add-country/`. Deliverable: `docs/country-dk.md` in the `docs/country-gr.md` reference shape (R129–R136). ## Research verdict (2026-08-24): GO, with the semantics split across two access routes Denmark has three publishing routes with different auth and different attribute quality. All hosts resolve over IPv4; every endpoint below was fetched. 1. **Klimadatastyrelsen INSPIRE, anonymous, no token**, OGC API Features under `https://api.dataforsyningen.dk/ogcapi/features/<service>/collections/…`, **CC BY 4.0** asserted per dataset. (SDFI/SDFE is now *Klimadatastyrelsen*; `sdfe.dk`, `sdfi.dk` and `kds.dk` all still answer — a URL that looks stale probably isn't.) 2. **GeoDanmark via `…_DAF?...&token=`** — the full-attribute topographic data, **credentialed**. 3. **Vejdirektoratet's national access point** ("Dataudveksleren"), anonymous, API at `businessservice.dataudveksler.app.vd.dk/api/dataset/<id>`. ### The trap worth writing into the doc **The anonymous INSPIRE route is complete geometry with the semantics stripped out — but only in the transport theme.** `roadlink` has **2 506 759** features and *no* class, name or ref (just `fictitious`, `inspireid`, `objectid`); `railwaylink` has 13 998 with `geographicalname` **null in all 500 sampled**; `railwaystationarea` 447 polygons, **null in all 447**. A reviewer who sees "national road network, anonymous, CC BY 4.0, 2.5 M features" and stops there has found a layer that cannot be classed, labelled or filtered. Every *other* theme keeps its attributes: `au_inspire/administrativeunit` **105** units including `name = "Danmark"`, `nationalcode = DK`, `nationallevel = 1stOrder`; `lc_inspire/landcoverunit` **576 118** polygons; `hy_inspire/standingwater_wms_soe` **187 097** lake polygons (`localtype = Sø`, `surfacearea`; **unnamed**); `hy_inspire/watercourselink` **938 605** links **with `flowdirection`**; `gn_inspire/namedplace` **144 725** names from **Danske Stednavne** with `localtype`/`type`; `building_inspire/building` **5 994 941** — **MultiPoint**, `pointInsideBuilding`. ### Consequences to record as decisions - **Denmark is a `building_points` country, not a `buildings` country** — the R13 pairing Iceland established. Footprint polygons exist in GeoDanmark `Bygning`, behind the token. - **Roads**: two options. **CVF (Centralt Vej- og stiregister, Vejdirektoratet)** is anonymous WFS, **CC BY 4.0**, **307 833** features with road **names** (`BETEGNELSE`), `VEJ_ELLER_STI` (Vej 79% / Sti 21%) and `VEJSTATUS` (Offentlig/Privat…), but `VEJTYPE` is populated on only ~48% and has two observed values (`Øvrige veje`, `Motortrafikvej`) — a two-level functional class. The full hierarchy needs GeoDanmark `Vejmidte` (token). Verified live at `http://geocloud.vd.dk/CVF/wfs` and mirrored on the NAP; refreshed daily, `timeLastSuccessUtc = 2026-08-24T00:03:46Z`. - **Railways**: **Banedanmark's ArcGIS Hub** (`geodata-banedanmark.opendata.arcgis.com`, 31 datasets, anonymous) — `Basisspor_OD` **8 194** track polylines with `SPORTYPETEKST`, `SPORKATEGORITEKST`, `BANENUMMER`; `Hovedstraekninger_HE_OD` **102** named main lines (`HVDSTRK_NAVN`); `PLATFORME_OD` **235** platform points (unnamed). `maxRecordCount` 2000 → the existing `arcgis:` paging provider fits. **Licence unasserted on all 31 datasets — R2 confirm before going live.** - **Airports**: INSPIRE `aerodromearea` 53 / `runwayarea` 72 / `apronarea` 208, anonymous, CC BY 4.0, **unnamed**. - **Transit is the weak spot.** Metroselskabet publishes only statistics; `letbane` returns 0 hits on the municipal CKAN; Københavns Kommune's `Metro` dataset is a 2013 map-viewer link. Rejseplanen's GTFS landing page returns **HTTP 403 behind a Cloudflare JS challenge** and its licence could not be read — R10-unfetchable and R2-unresolved. ## Open questions this issue must close 1. **Is a Dataforsyningen token free and self-service, what is its lifetime, and how is it presented?** Under R142 it is an `importer/dataforsyningen.go` provider with the credential in `conf/secrets.yaml` — never a `token=` in a `downloads:` URL. 2. **Banedanmark's licence** (R2). 3. **`water_points`** — no spring/rapid/waterfall collection in `hy_inspire`'s seven. Denmark is flat and this is plausibly a real absence, but R6 says check GeoDanmark's own object catalogue before writing one down. 4. **`places` population join** — `namedplace` has no population; the Danmarks Statistik key was not established. Border tests (R135): Denmark's only land border is with Germany, which is not imported, and the Øresund/Kattegat borders are maritime — so Denmark is the one country in this batch with **no border-agreement test available**. Say so explicitly.
art-bot self-assigned this 2026-08-24 17:01:56 +00:00
art closed this issue 2026-10-09 06:58:28 +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#211
No description provided.