Gå til indhold

Opsæt en kodeliste til Infoopsætning

Et felt med visningstypen “Kodeliste” viser en læsbar tekst i stedet for en rå kode, fx 110 – Stuehus til landbrug i stedet for 110. Teksten slås op i en kodeliste: et separat WFS-lag med en kolonne med koder og en kolonne med tekster. Denne vejledning beskriver, hvordan en sådan kodeliste udstilles og tilføjes i konfigurationen.

  • enableCodelists: true er sat i TableTemplaters cfg (se plugin-dokumentationen).
  • Adgang til at oprette en tabel i PostGIS, og til at publicere lag i GeoServer.
  • Adgang til at redigere localConfig.json/pluginsConfig.json.

Laget har et felt komnr med kommunekoder (101). Det skal vises som 101 – København.

  1. Opret kodelisten som en tabel i PostGIS. Koden må ikke være tabellens primærnøgle: GeoServer udstiller ikke primærnøglen som attribut, og så findes koderne ikke.

    CREATE TABLE kodeliste_kommune (id serial PRIMARY KEY, kode integer, tekst text);
    INSERT INTO kodeliste_kommune (kode, tekst) VALUES
    (101, 'København'), (230, 'Rudersdal'), (461, 'Odense');
  2. Udstil tabellen i GeoServer som et lag, fx <workspace>:kodeliste_kommune. Tabellen har ingen geometri, så koordinatsystem og udstrækning skal udfyldes manuelt (fx EPSG:25832 og en udstrækning, der dækker Danmark).

  3. Tjek, at koden er med som attribut: en GetFeature (.../geoserver/<workspace>/wfs?service=WFS&version=1.1.0&request=GetFeature&typeName=<workspace>:kodeliste_kommune&outputFormat=application/json) skal vise "properties": {"kode": 101, "tekst": "København", ...}.

  4. Tilføj kodelisten i codeLists. Med "id": "komnr" - samme navn som feltet - vælges den automatisk:

    {
    "id": "komnr",
    "title": "Kommunenavn",
    "url": "https://<server>/geoserver/<workspace>/wfs",
    "typeName": "<workspace>:kodeliste_kommune",
    "codeAttribute": "kode",
    "labelAttribute": "tekst"
    }
  5. Genindlæs kortet. Åbn infoopsætningen for laget, sæt komnr til visningstypen “Kodeliste”, og gem.

Hele codeLists-indgangen, i sin fulde form:

{
"name": "TableTemplater",
"cfg": {
"enableCodelists": true,
"codeLists": [
{
"id": "byganvendelse",
"title": "BBR byganvendelse",
"url": "https://<server>/geoserver/<workspace>/wfs",
"typeName": "<workspace>:byganvendelse",
"codeAttribute": "kode",
"labelAttribute": "tekst"
}
]
}
}

Se parameterbeskrivelsen i plugin-dokumentationen for hvert felts betydning og standardværdi.

  • Tjek i infoopsætningen, at feltet viser kode – tekst efter gem, ikke blot koden.
  • Kan laget ikke findes, eller mangler koden som attribut (fx fordi den er sat som primærnøgle i PostGIS), vises koden uden tekst - se Fejlfinding.
  • Ved rollback: fjern indgangen fra codeLists, eller sæt enableCodelists: false. Felter, der allerede er sat til “Kodeliste”, viser herefter blot den rå kode igen.

Problem: Koden vises aldrig med tekst, uanset opsætning.

Mulig årsag: Koden er sat som kodelistetabellens primærnøgle - GeoServer udstiller ikke primærnøglen som en almindelig attribut.

Løsning: Brug en separat serial-kolonne som primærnøgle (se eksemplet ovenfor), og lad koden være en almindelig kolonne.

Problem: Kodelisten virker lokalt, men ikke når den ligger på en anden server.

Mulig årsag: Manglende CORS-tilladelse på den anden server.

Løsning: Tillad CORS på den server, eller lad forespørgslen gå gennem proxyen.

Tip: Kodelisten bør være en tabel uden geometri - et helt lag med geometri gør opslaget langsommere end nødvendigt. Højst 5.000 rækker fra kodelisten bruges.

Tip: Kodelisten kopieres til feltet, når den vælges, i stedet for at blive slået op igen ved hver visning. Ændres codeLists i konfigurationen senere (fx en ny url), skal kodelisten vælges igen i infoopsætningen for hvert felt, der bruger den - ellers beholder feltet den gamle kopi.