aboutsummaryrefslogtreecommitdiffstats
path: root/src/popover.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/popover.js')
-rw-r--r--src/popover.js2335
1 files changed, 820 insertions, 1515 deletions
diff --git a/src/popover.js b/src/popover.js
index 7313ce1..6a6320e 100644
--- a/src/popover.js
+++ b/src/popover.js
@@ -23,1571 +23,876 @@ import VectorTileLayer from 'ol/layer/VectorTile.js';
import { Popover } from 'bootstrap';
-/* TODO: this should really be refactored… */
-const layers = {}
-layers.mrr = {
- appr_ec: {
- title: 'Bearbetningskoncession \u2013 beviljad',
- fields: [
- ['Namn', 'name'],
- ['Koncessionsmineral', 'mineral'],
- ['Ägare', 'owners'],
- ['Tillståndsid', 'licenceid', { classes: ['feature-attr-mrr-license-id'] }],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Giltig från', 'validfrom'],
- ['Giltig till', 'validto'],
- ['Diarienummer', 'diarynr', { classes: ['feature-attr-dnr'] }],
- ['Ansökningsdatum', 'appl_date'],
- ['Beslutsdatum', 'dec_date'],
- //['Kommun', 'Municipality'],
- //['Län', 'County'],
- ],
- },
- appl_ec: {
- title: 'Bearbetningskoncession \u2013 ansökt',
- fields: [
- ['Namn', 'name'],
- ['Koncessionsmineral', 'mineral'],
- ['Sökande', 'owners'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Ansökningsdatum', 'appl_date'],
- ['Diarienummer', 'diarynr', { classes: ['feature-attr-dnr'] }],
- //['Kommun', 'Municipality'],
- //['Län', 'County'],
- ],
- },
- appr_met: {
- title: 'Undersökningstillstånd, metaller och industrimineral \u2013 beviljad',
- fields: [
- ['Namn', 'name'],
- ['Koncessionsmineral', 'mineral'],
- ['Ägare', 'owners'],
- ['Tillståndsid', 'licenceid', { classes: ['feature-attr-mrr-license-id'] }],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Giltig från', 'validfrom'],
- ['Giltig till', 'validto'],
- ['Diarienummer', 'diarynr', { classes: ['feature-attr-dnr'] }],
- ['Ansökningsdatum', 'appl_date'],
- ['Beslutsdatum', 'dec_date'],
- //['Kommun', 'Municipality'],
- //['Län', 'County'],
- ],
- },
- appl_met: {
- title: 'Undersökningstillstånd, metaller och industrimineral \u2013 ansökt',
- fields: [
- ['Namn', 'name'],
- ['Koncessionsmineral', 'mineral'],
- ['Sökande', 'owners'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Ansökningsdatum', 'appl_date'],
- ['Diarienummer', 'diarynr', { classes: ['feature-attr-dnr'] }],
- //['Kommun', 'Municipality'],
- //['Län', 'County'],
- ],
- },
- appr_ogd: {
- title: 'Undersökningstillstånd, olja, gas och diamant \u2013 beviljad',
- fields: [
- ['Namn', 'name'],
- ['Koncessionsmineral', 'mineral'],
- ['Ägare', 'owners'],
- ['Tillståndsid', 'licenceid', { classes: ['feature-attr-mrr-license-id'] }],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Giltig från', 'validfrom'],
- ['Giltig till', 'validto'],
- ['Diarienummer', 'diarynr', { classes: ['feature-attr-dnr'] }],
- ['Ansökningsdatum', 'appl_date'],
- ['Beslutsdatum', 'dec_date'],
- //['Kommun', 'Municipality'],
- //['Län', 'County'],
- ],
- },
- appl_ogd: {
- title: 'Undersökningstillstånd, olja, gas och diamant \u2013 ansökt',
- fields: [
- ['Namn', 'name'],
- ['Koncessionsmineral', 'mineral'],
- ['Sökande', 'owners'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Ansökningsdatum', 'appl_date'],
- ['Diarienummer', 'diarynr', { classes: ['feature-attr-dnr'] }],
- //['Kommun', 'Municipality'],
- //['Län', 'County'],
- ],
- },
- appr_dl: {
- title: 'Markanvisning till koncession',
- fields: [
- ['Namn', 'name'],
- ['Tillhörande bearbetnings\u00ADkoncession(er)', 'conc_name'],
- ['Tillståndsid', 'licenceid', { classes: ['feature-attr-mrr-license-id'] }],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Diarienummer', 'diarynr', { classes: ['feature-attr-dnr'] }],
- ['Ansökningsdatum', 'appl_date'],
- ['Beslutsdatum', 'dec_date'],
- //['Kommun', 'Municipality'],
- //['Län', 'County'],
- ],
- },
+/* return an <a> tag with the given URL and optional text */
+const reURL = new RegExp('^https?://', 'i');
+const formatLink = function(url, text) {
+ if (url == null || typeof url !== 'string' || !reURL.test(url)) {
+ return url;
+ }
+ const a = document.createElement('a');
+ a.href = url;
+ a.target = '_blank';
+ if (text != null && text !== '') {
+ const t = document.createTextNode(text + ' ');
+ a.appendChild(t);
+ }
+ const i = document.createElement('i');
+ i.classList.add('bi', 'bi-box-arrow-up-right');
+ a.appendChild(i);
+ return a;
};
-layers.svk = {
- ledningar: {
- title: 'Kraftledning (befintlig)',
- fields: [
- ['Förläggning', 'Placement'],
- ['Spänning', 'Voltage', { unit: 'kV' }],
- ['Ledlängd', 'geom_length', { fn: 'length' }],
- ],
- },
- transmissionsnatsprojekt: {
- title: 'Transmissionsnätsprojekt',
- fields: [
- ['Projektnamn', 'Name'],
- ['Spänning', 'Voltage', { unit: 'kV' }],
- ['Länk', 'Url', { fn: function(v) {
- if (v == null | v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ],
- },
+/* test a condition on the field maps */
+const condField = function(cond, k) {
+ if (Array.isArray(cond)) {
+ return cond.includes(k);
+ }
+ if (cond instanceof RegExp) {
+ return cond.test(k);
+ }
+ return cond(k);
+};
+/* filter fields by condition */
+const filterFields = function(k, fields) {
+ return fields.map(function(v) {
+ if (v.cond == null || condField(v.cond, k)) {
+ return v;
+ }
+ }).filter((f) => f != null);
+};
+/* filter fields using a pre-built map */
+const mapFields = function(k, fieldMap, fields) {
+ if (fields === undefined) {
+ return fieldMap.map((v) => k[v]);
+ }
+ return fields.map(function(v) {
+ if (!Array.isArray(v)) {
+ return fieldMap[v];
+ } else if (condField(v[1], k)) {
+ return fieldMap[v[0]];
+ }
+ }).filter((f) => f !== undefined);
+};
+/* pre-build the field map so we don't need to duplicate objects accross layers */
+const mkFieldMap = function(fieldMap) {
+ return Object.fromEntries(Object.entries(fieldMap).map(function([k, o]) {
+ if (typeof o === 'string') {
+ return [k, {key: k, desc: o}];
+ } else {
+ return [k, Object.assign(o, {key: k})];
+ }
+ }));
};
-layers.vbk = {
- area_current: {
- title: 'Landbaserad projekteringsområde för vindkraft',
- fields: [
- ['Projektnamn', 'Projektnamn'],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Aktuella verk', 'AntalVerk'],
- ['Antal ej koordinatsatta verk', 'AntalEjXY'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Beräknad årsproduktion', 'Calprod', { unit: 'GWh' }],
- ['Planerad byggstart', 'PlaneradByggstart'],
- ['Planerat drifttagande', 'PlaneratDrift'],
- ['Ändringsansökan pågår', 'AndringsansokanPagar'],
- ['Under byggnation', 'UnderByggnation'],
- ['Organisationsnamn', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- //['Kommun', 'KOMNAMN'],
- //['Län', 'LANSNAMN'],
- ['Elområde', 'ElNamn'],
- ['Senast uppdaterat', 'SenasteUppdaterat'],
- ],
- },
- area_notcurrent: {
- title: 'Landbaserad projekteringsområde för vindkraft \u2013 ej aktuell',
- fields: [
- ['Projektnamn', 'Projektnamn'],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Aktuella verk', 'AntalVerk'],
- ['Antal ej koordinatsatta verk', 'AntalEjXY'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Beräknad årsproduktion', 'Calprod', { unit: 'GWh' }],
- ['Planerad byggstart', 'PlaneradByggstart'],
- ['Planerat drifttagande', 'PlaneratDrift'],
- ['Ändringsansökan pågår', 'AndringsansokanPagar'],
- ['Organisationsnamn', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- //['Kommun', 'KOMNAMN'],
- //['Län', 'LANSNAMN'],
- ['Elområde', 'ElNamn'],
- ['Senast uppdaterat', 'SenasteUppdaterat'],
- ],
- },
- offshore_completed: {
- title: 'Havsbaserad vindkraft \u2013 tillståndsansökan uppförd',
- fields: [
- ['Projektnamn', 'Projektnamn'],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Verksamhetsutövare', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Projektstatus', 'Projektstatus'],
- ['Diarienummer', 'Diarienummer'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Samrådsunderlag inlämnat', 'SamradsunderlagInlamnat'],
- ['Tillståndsansökan inlämnad', 'AnsokanInlamnat'],
- ['Tillståndsansökan beviljad', 'AnsokanBeviljad'],
- ['Överklagad', 'AnsokanOverklagad'],
- ['Natura2000 ansökan', 'Natura2000_Ansokan'],
- ['Natura2000 beslutsdatum', 'Natura2000_Beslutdatum'],
- ['Parken uppförd', 'Uppfort'],
- ['Beviljat antal verk', 'BeviljatAntalVerk'],
- ['Uppfört antal verk', 'UppfortAntalVerk'],
- ['Beviljad maxhöjd', 'BeviljadMaxhojd', { unit: 'm' }],
- ['Installerad effekt', 'InstalleradEffekt', { unit: 'MW' }],
- ['Beräknad årsproduktion', 'Calprod', { unit: 'GWh' }],
- ['Elområde', 'ElNamn'],
- ['Senast uppdaterat', 'SenasteUppdaterat'],
- ],
- },
- offshore_approved: {
- title: 'Havsbaserad vindkraft \u2013 tillståndsansökan beviljad',
- fields: [
- ['Projektnamn', 'Projektnamn'],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Verksamhetsutövare', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Projektstatus', 'Projektstatus'],
- ['Diarienummer', 'Diarienummer'],
- ['Ändringsansökan pågår', 'AndringsansokanPagar'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Samrådsunderlag inlämnat', 'SamradsunderlagInlamnat'],
- ['Tillståndsansökan inlämnad', 'AnsokanInlamnat'],
- ['Tillståndsansökan återkallad', 'AnsokanAterkallad'],
- ['Tillståndsansökan beviljad', 'AnsokanBeviljad'],
- ['Natura2000 ansökan', 'Natura2000_Ansokan'],
- ['Natura2000 beslutsdatum', 'Natura2000_Beslutdatum'],
- ['Under byggnation', 'UnderByggnation'],
- ['Planerat antal verk (min)', 'PlaneratAntalVerkMin'],
- ['Planerat antal verk (max)', 'PlaneratAntalVerkMax'],
- ['Panerad totalhöjd (min)', 'PlaneradHojdMin', { unit: 'm' }],
- ['Panerad totalhöjd (max)', 'PlaneradHojdMax', { unit: 'm' }],
- ['Planerad årsproduktion (min)', 'PlaneradProduktionMin', { unit: 'GWh' }],
- ['Planerad årsproduktion (max)', 'PlaneradProduktionMax', { unit: 'GWh' }],
- ['Planerad byggstart', 'PlaneradByggstart'],
- ['Planerat drifttagande', 'PlaneratDrift'],
- ['Beviljat antal verk', 'BeviljatAntalVerk'],
- ['Beviljad maxhöjd', 'BeviljadMaxhojd', { unit: 'm' }],
- ['Elområde', 'ElNamn'],
- ['Senast uppdaterat', 'SenasteUppdaterat'],
- ],
- },
- offshore_amended: {
- title: 'Havsbaserad vindkraft \u2013 ändringsansökan',
- fields: [
- ['Projektnamn', 'Projektnamn'],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Verksamhetsutövare', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Projektstatus', 'Projektstatus'],
- ['Diarienummer', 'Diarienummer'],
- //['Ändringsansökan pågår', 'AndringsansokanPagar'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Samrådsunderlag inlämnat', 'SamradsunderlagInlamnat'],
- ['Tillståndsansökan inlämnad', 'AnsokanInlamnat'],
- //['Natura2000 ansökan', 'Natura2000_Ansokan'],
- //['Natura2000 beslutsdatum', 'Natura2000_Beslutdatum'],
- ['Planerat antal verk (min)', 'PlaneratAntalVerkMin'],
- ['Planerat antal verk (max)', 'PlaneratAntalVerkMax'],
- ['Panerad totalhöjd (min)', 'PlaneradHojdMin', { unit: 'm' }],
- ['Panerad totalhöjd (max)', 'PlaneradHojdMax', { unit: 'm' }],
- ['Planerad årsproduktion (min)', 'PlaneradProduktionMin', { unit: 'GWh' }],
- ['Planerad årsproduktion (max)', 'PlaneradProduktionMax', { unit: 'GWh' }],
- ['Planerad byggstart', 'PlaneradByggstart'],
- ['Planerat drifttagande', 'PlaneratDrift'],
- ['Elområde', 'ElNamn'],
- ['Senast uppdaterat', 'SenasteUppdaterat'],
- ],
- },
- offshore_rejected: {
- title: 'Havsbaserad vindkraft \u2013 tillståndsansökan avslagen',
- fields: [
- ['Projektnamn', 'Projektnamn'],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Verksamhetsutövare', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Projektstatus', 'Projektstatus'],
- ['Diarienummer', 'Diarienummer'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Samrådsunderlag inlämnat', 'SamradsunderlagInlamnat'],
- ['Tillståndsansökan inlämnad', 'AnsokanInlamnat'],
- ['Tillståndsansökan avslagen', 'AnsokanAvslagen'],
- ['Natura2000 ansökan', 'Natura2000_Ansokan'],
- ['Natura2000 beslutsdatum', 'Natura2000_Beslutdatum'],
- ['Planerat antal verk (min)', 'PlaneratAntalVerkMin'],
- ['Planerat antal verk (max)', 'PlaneratAntalVerkMax'],
- ['Panerad totalhöjd (min)', 'PlaneradHojdMin', { unit: 'm' }],
- ['Panerad totalhöjd (max)', 'PlaneradHojdMax', { unit: 'm' }],
- ['Planerad årsproduktion (min)', 'PlaneradProduktionMin', { unit: 'GWh' }],
- ['Planerad årsproduktion (max)', 'PlaneradProduktionMax', { unit: 'GWh' }],
- ['Planerad byggstart', 'PlaneradByggstart'],
- ['Planerat drifttagande', 'PlaneratDrift'],
- ['Elområde', 'ElNamn'],
- ['Senast uppdaterat', 'SenasteUppdaterat'],
- ],
- },
- offshore_appealed: {
- title: 'Havsbaserad vindkraft \u2013 överklagad',
- fields: [
- ['Projektnamn', 'Projektnamn'],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Verksamhetsutövare', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Projektstatus', 'Projektstatus'],
- ['Diarienummer', 'Diarienummer'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Samrådsunderlag inlämnat', 'SamradsunderlagInlamnat'],
- ['Tillståndsansökan inlämnad', 'AnsokanInlamnat'],
- ['Tillståndsansökan beviljad', 'AnsokanBeviljad'],
- ['Överklagad', 'AnsokanOverklagad'],
- ['Natura2000 ansökan', 'Natura2000_Ansokan'],
- ['Natura2000 beslutsdatum', 'Natura2000_Beslutdatum'],
- ['Planerat antal verk (min)', 'PlaneratAntalVerkMin'],
- ['Planerat antal verk (max)', 'PlaneratAntalVerkMax'],
- ['Panerad totalhöjd (min)', 'PlaneradHojdMin', { unit: 'm' }],
- ['Panerad totalhöjd (max)', 'PlaneradHojdMax', { unit: 'm' }],
- ['Planerad årsproduktion (min)', 'PlaneradProduktionMin', { unit: 'GWh' }],
- ['Planerad årsproduktion (max)', 'PlaneradProduktionMax', { unit: 'GWh' }],
- ['Planerad byggstart', 'PlaneradByggstart'],
- ['Planerat drifttagande', 'PlaneratDrift'],
- ['Beviljat antal verk', 'BeviljatAntalVerk'],
- ['Beviljad maxhöjd', 'BeviljadMaxhojd', { unit: 'm' }],
- ['Elområde', 'ElNamn'],
- ['Senast uppdaterat', 'SenasteUppdaterat'],
- ],
- },
- offshore_applied: {
- title: 'Havsbaserad vindkraft \u2013 tillståndsansökan inlämnad',
- fields: [
- ['Projektnamn', 'Projektnamn'],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Verksamhetsutövare', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Projektstatus', 'Projektstatus'],
- ['Diarienummer', 'Diarienummer'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Samrådsunderlag inlämnat', 'SamradsunderlagInlamnat'],
- ['Tillståndsansökan inlämnad', 'AnsokanInlamnat'],
- ['Natura2000 ansökan', 'Natura2000_Ansokan'],
- ['Natura2000 beslutsdatum', 'Natura2000_Beslutdatum'],
- ['Planerat antal verk (min)', 'PlaneratAntalVerkMin'],
- ['Planerat antal verk (max)', 'PlaneratAntalVerkMax'],
- ['Panerad totalhöjd (min)', 'PlaneradHojdMin', { unit: 'm' }],
- ['Panerad totalhöjd (max)', 'PlaneradHojdMax', { unit: 'm' }],
- ['Planerad årsproduktion (min)', 'PlaneradProduktionMin', { unit: 'GWh' }],
- ['Planerad årsproduktion (max)', 'PlaneradProduktionMax', { unit: 'GWh' }],
- ['Planerad byggstart', 'PlaneradByggstart'],
- ['Planerat drifttagande', 'PlaneratDrift'],
- ['Elområde', 'ElNamn'],
- ['Senast uppdaterat', 'SenasteUppdaterat'],
- ],
- },
- offshore_consultation: {
- title: 'Havsbaserad vindkraft \u2013 samråd inför tillståndsansökan',
- fields: [
- ['Projektnamn', 'Projektnamn'],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Verksamhetsutövare', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Projektstatus', 'Projektstatus'],
- ['Diarienummer', 'Diarienummer'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Samrådsunderlag inlämnat', 'SamradsunderlagInlamnat'],
- ['Natura2000 ansökan', 'Natura2000_Ansokan'],
- ['Natura2000 beslutsdatum', 'Natura2000_Beslutdatum'],
- ['Planerat antal verk (min)', 'PlaneratAntalVerkMin'],
- ['Planerat antal verk (max)', 'PlaneratAntalVerkMax'],
- ['Panerad totalhöjd (min)', 'PlaneradHojdMin', { unit: 'm' }],
- ['Panerad totalhöjd (max)', 'PlaneradHojdMax', { unit: 'm' }],
- ['Planerad årsproduktion (min)', 'PlaneradProduktionMin', { unit: 'GWh' }],
- ['Planerad årsproduktion (max)', 'PlaneradProduktionMax', { unit: 'GWh' }],
- ['Planerad byggstart', 'PlaneradByggstart'],
- ['Planerat drifttagande', 'PlaneratDrift'],
- ['Elområde', 'ElNamn'],
- ['Senast uppdaterat', 'SenasteUppdaterat'],
- ],
- },
- offshore_investigation: {
- title: 'Havsbaserad vindkraft \u2013 inledande undersökningar',
- fields: [
- ['Projektnamn', 'Projektnamn'],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Verksamhetsutövare', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Projektstatus', 'Projektstatus'],
- ['Diarienummer', 'Diarienummer'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Natura2000 ansökan', 'Natura2000_Ansokan'],
- ['Natura2000 beslutsdatum', 'Natura2000_Beslutdatum'],
- ['Planerat antal verk (min)', 'PlaneratAntalVerkMin'],
- ['Planerat antal verk (max)', 'PlaneratAntalVerkMax'],
- ['Panerad totalhöjd (min)', 'PlaneradHojdMin', { unit: 'm' }],
- ['Panerad totalhöjd (max)', 'PlaneradHojdMax', { unit: 'm' }],
- ['Planerad årsproduktion (min)', 'PlaneradProduktionMin', { unit: 'GWh' }],
- ['Planerad årsproduktion (max)', 'PlaneradProduktionMax', { unit: 'GWh' }],
- ['Planerad byggstart', 'PlaneradByggstart'],
- ['Planerat drifttagande', 'PlaneratDrift'],
- ['Elområde', 'ElNamn'],
- ['Senast uppdaterat', 'SenasteUppdaterat'],
- ],
- },
- offshore_revoked: {
- title: 'Havsbaserad vindkraft \u2013 inte aktuell eller återkallad',
- fields: [
- ['Projektnamn', 'Projektnamn'],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Verksamhetsutövare', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Projektstatus', 'Projektstatus'],
- ['Diarienummer', 'Diarienummer'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Samrådsunderlag inlämnat', 'SamradsunderlagInlamnat'],
- ['Tillståndsansökan inlämnad', 'AnsokanInlamnat'],
- ['Tillståndsansökan återkallad', 'AnsokanAterkallad'],
- ['Tillståndsansökan beviljad', 'AnsokanBeviljad'],
- ['Överklagad', 'AnsokanOverklagad'],
- ['Natura2000 ansökan', 'Natura2000_Ansokan'],
- ['Natura2000 beslutsdatum', 'Natura2000_Beslutdatum'],
- ['Planerat antal verk (min)', 'PlaneratAntalVerkMin'],
- ['Planerat antal verk (max)', 'PlaneratAntalVerkMax'],
- ['Panerad totalhöjd (min)', 'PlaneradHojdMin', { unit: 'm' }],
- ['Panerad totalhöjd (max)', 'PlaneradHojdMax', { unit: 'm' }],
- ['Planerad årsproduktion (min)', 'PlaneradProduktionMin', { unit: 'GWh' }],
- ['Planerad årsproduktion (max)', 'PlaneradProduktionMax', { unit: 'GWh' }],
- ['Planerad byggstart', 'PlaneradByggstart'],
- ['Planerat drifttagande', 'PlaneratDrift'],
- ['Beviljat antal verk', 'BeviljatAntalVerk'],
- ['Beviljad maxhöjd', 'BeviljadMaxhojd', { unit: 'm' }],
- ['Elområde', 'ElNamn'],
- ['Senast uppdaterat', 'SenasteUppdaterat'],
- ],
- },
- station_completed: {
- title: 'Landbaserad vindkraftverk \u2013 uppfört',
- fields: [
- ['Verk-ID', 'VerkID', { classes: ['feature-objid'] }],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Projektnamn', 'Projektnamn'],
- ['Status', 'Status'],
- ['Handlingstyp', 'Handlingstyp'],
- ['Uppförandedatum', 'Uppfort'],
- ['Miljöbalken tillstånd tidsbegränsning', 'MB_Tillstand'],
- ['Totalhöjd', 'Totalhojd', { unit: 'm' }],
- ['Navhöjd', 'Navhojd', { unit: 'm' }],
- ['Rotordiameter', 'Rotordiameter', { unit: 'm' }],
- ['Maxeffekt', 'Maxeffekt', { unit: 'MW' }],
- ['Beräknad årsproduktion', 'Calprod', { unit: 'GWh' }],
- ['Fabrikat', 'Fabrikat'],
- ['Modell', 'Modell'],
- ['Organisationsnamn', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Placering', 'Placering'],
- //['Kommun', 'KOMNAMN'],
- //['Län', 'LANSNAMN'],
- ['Elområde', 'ElNamn'],
- ['Datum för senaste uppdatering av verk', 'SenasteUppdaterat'],
- ],
- },
- station_processed: {
- title: 'Landbaserad vindkraftverk \u2013 handlagt',
- fields: [
- ['Verk-ID', 'VerkID', { classes: ['feature-objid'] }],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Projektnamn', 'Projektnamn'],
- ['Status', 'Status'],
- ['Handlingstyp', 'Handlingstyp'],
- ['Totalhöjd', 'Totalhojd', { unit: 'm' }],
- ['Navhöjd', 'Navhojd', { unit: 'm' }],
- ['Rotordiameter', 'Rotordiameter', { unit: 'm' }],
- ['Maxeffekt', 'Maxeffekt', { unit: 'MW' }],
- ['Beräknad årsproduktion', 'Calprod', { unit: 'GWh' }],
- ['Fabrikat', 'Fabrikat'],
- ['Modell', 'Modell'],
- ['Organisationsnamn', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Placering', 'Placering'],
- //['Kommun', 'KOMNAMN'],
- //['Län', 'LANSNAMN'],
- ['Elområde', 'ElNamn'],
- ['Datum för senaste uppdatering av verk', 'SenasteUppdaterat'],
- ],
- },
- station_approved: {
- title: 'Landbaserad vindkraftverk \u2013 beviljat',
- fields: [
- ['Verk-ID', 'VerkID', { classes: ['feature-objid'] }],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Projektnamn', 'Projektnamn'],
- ['Status', 'Status'],
- ['Handlingstyp', 'Handlingstyp'],
- ['Miljöbalken tillstånd tidsbegränsning', 'MB_Tillstand'],
- ['Totalhöjd', 'Totalhojd', { unit: 'm' }],
- ['Navhöjd', 'Navhojd', { unit: 'm' }],
- ['Rotordiameter', 'Rotordiameter', { unit: 'm' }],
- ['Maxeffekt', 'Maxeffekt', { unit: 'MW' }],
- ['Beräknad årsproduktion', 'Calprod', { unit: 'GWh' }],
- ['Fabrikat', 'Fabrikat'],
- ['Modell', 'Modell'],
- ['Organisationsnamn', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Placering', 'Placering'],
- //['Kommun', 'KOMNAMN'],
- //['Län', 'LANSNAMN'],
- ['Elområde', 'ElNamn'],
- ['Datum för senaste uppdatering av verk', 'SenasteUppdaterat'],
- ],
- },
- station_revoked: {
- title: 'Landbaserad vindkraftverk \u2013 inte längre aktuell/återkallat',
- fields: [
- ['Verk-ID', 'VerkID', { classes: ['feature-objid'] }],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Projektnamn', 'Projektnamn'],
- ['Status', 'Status'],
- ['Handlingstyp', 'Handlingstyp'],
- ['Miljöbalken tillstånd tidsbegränsning', 'MB_Tillstand'],
- ['Totalhöjd', 'Totalhojd', { unit: 'm' }],
- ['Navhöjd', 'Navhojd', { unit: 'm' }],
- ['Rotordiameter', 'Rotordiameter', { unit: 'm' }],
- ['Maxeffekt', 'Maxeffekt', { unit: 'MW' }],
- ['Beräknad årsproduktion', 'Calprod', { unit: 'GWh' }],
- ['Fabrikat', 'Fabrikat'],
- ['Modell', 'Modell'],
- ['Organisationsnamn', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Placering', 'Placering'],
- //['Kommun', 'KOMNAMN'],
- //['Län', 'LANSNAMN'],
- ['Elområde', 'ElNamn'],
- ['Datum för senaste uppdatering av verk', 'SenasteUppdaterat'],
- ],
- },
- station_rejected: {
- title: 'Landbaserad vindkraftverk \u2013 avslagit/nekat',
- fields: [
- ['Verk-ID', 'VerkID', { classes: ['feature-objid'] }],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Projektnamn', 'Projektnamn'],
- ['Status', 'Status'],
- ['Handlingstyp', 'Handlingstyp'],
- ['Miljöbalken tillstånd tidsbegränsning', 'MB_Tillstand'],
- ['Totalhöjd', 'Totalhojd', { unit: 'm' }],
- ['Navhöjd', 'Navhojd', { unit: 'm' }],
- ['Rotordiameter', 'Rotordiameter', { unit: 'm' }],
- ['Maxeffekt', 'Maxeffekt', { unit: 'MW' }],
- ['Beräknad årsproduktion', 'Calprod', { unit: 'GWh' }],
- ['Fabrikat', 'Fabrikat'],
- ['Modell', 'Modell'],
- ['Organisationsnamn', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Placering', 'Placering'],
- //['Kommun', 'KOMNAMN'],
- //['Län', 'LANSNAMN'],
- ['Elområde', 'ElNamn'],
- ['Datum för senaste uppdatering av verk', 'SenasteUppdaterat'],
- ],
+const LAYERS = {
+ svk: {
+ ledningar: {
+ title: 'Kraftledning (befintlig)',
+ fields: [
+ { key: 'Placement', desc: 'Förläggning' },
+ { key: 'Voltage', desc: 'Spänning', unit: 'kV' },
+ { key: 'geom_length', desc: 'Ledlängd', fn: 'length' },
+ ],
+ },
+ transmissionsnatsprojekt: {
+ title: 'Transmissionsnätsprojekt',
+ fields: [
+ { key: 'Name', desc: 'Projektnamn' },
+ { key: 'Voltage', desc: 'Spänning', unit: 'kV' },
+ { key: 'Url', desc: 'Länk', fn: formatLink },
+ ],
+ },
},
- station_dismounted: {
- title: 'Landbaserad vindkraftverk \u2013 nedmonterat',
- fields: [
- ['Verk-ID', 'VerkID', { classes: ['feature-objid'] }],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Projektnamn', 'Projektnamn'],
- ['Status', 'Status'],
- ['Handlingstyp', 'Handlingstyp'],
- ['Uppförandedatum', 'Uppfort'],
- ['Totalhöjd', 'Totalhojd', { unit: 'm' }],
- ['Navhöjd', 'Navhojd', { unit: 'm' }],
- ['Rotordiameter', 'Rotordiameter', { unit: 'm' }],
- ['Maxeffekt', 'Maxeffekt', { unit: 'MW' }],
- ['Beräknad årsproduktion', 'Calprod', { unit: 'GWh' }],
- ['Fabrikat', 'Fabrikat'],
- ['Modell', 'Modell'],
- ['Organisationsnamn', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Placering', 'Placering'],
- //['Kommun', 'KOMNAMN'],
- //['Län', 'LANSNAMN'],
- ['Elområde', 'ElNamn'],
- ['Datum för senaste uppdatering av verk', 'SenasteUppdaterat'],
- ],
- },
- station_appealed: {
- title: 'Landbaserad vindkraftverk \u2013 överklagat',
- fields: [
- ['Verk-ID', 'VerkID', { classes: ['feature-objid'] }],
- ['Områdes-ID', 'OmrID', { classes: ['feature-objid'] }],
- ['Projektnamn', 'Projektnamn'],
- ['Status', 'Status'],
- ['Handlingstyp', 'Handlingstyp'],
- ['Totalhöjd', 'Totalhojd', { unit: 'm' }],
- ['Navhöjd', 'Navhojd', { unit: 'm' }],
- ['Rotordiameter', 'Rotordiameter', { unit: 'm' }],
- ['Maxeffekt', 'Maxeffekt', { unit: 'MW' }],
- ['Beräknad årsproduktion', 'Calprod', { unit: 'GWh' }],
- ['Fabrikat', 'Fabrikat'],
- ['Modell', 'Modell'],
- ['Organisationsnamn', 'Organisationsnamn'],
- ['Organisationsnummer', 'Organisationsnummer', { classes: ['feature-orgnr'] }],
- ['Placering', 'Placering'],
- //['Kommun', 'KOMNAMN'],
- //['Län', 'LANSNAMN'],
- ['Elområde', 'ElNamn'],
- ['Datum för senaste uppdatering av verk', 'SenasteUppdaterat'],
- ],
+
+ misc: {
+ gigafactories: {
+ title: 'Stor industrisatsning',
+ fields: [
+ { key: 'Name', desc: 'Namn' },
+ { key: 'Url', desc: 'Länk', fn: formatLink },
+ ],
+ },
+ dammar: {
+ /* Documentation at
+ * https://www.smhi.se/polopoly_fs/1.34541!/dammprod%202013_3%2C%20beskrivning%2C%20SVAR2012_2.pdf */
+ title: 'Damm',
+ fields: [
+ { key: 'DNamn', desc: 'Dammenhetens namn' },
+ { key: 'Namn', desc: 'Dammanläggningens namn' },
+ { key: 'LST_OBJID', desc: 'Länsnr', classes: ['feature-objid'] },
+ { key: 'Status', desc: 'Status', fn: (v) => v === 1 ? 'Befintlig damm' : v === 2 ? 'Fd. damm' : '' },
+ //{ key: 'Regleringstyp', desc: 'Regleringstyp' },
+ { key: 'ByggAr', desc: 'Byggår' },
+ { key: 'DammHojd', desc: 'Dammhöjd', unit: 'm' },
+ { key: 'KronLangd', desc: 'Krönlängd', unit: 'm' },
+ { key: 'Fiskvag', desc: 'Fiskväg', fn: (v) =>
+ v === 1 ? 'Bassängtrappa' :
+ v === 2 ? 'Denilränna' :
+ v === 3 ? 'Slitsränna' :
+ v === 4 ? 'Omlöp' :
+ v === 5 ? 'Inlöp' :
+ v === 6 ? 'Ålledare' :
+ v === 7 ? 'Smoltränna' :
+ v === 8 ? 'Okänd typ' :
+ v === 9 ? 'Ingen' :
+ v === 10 ? 'Annan' :
+ null },
+ { key: 'HARO', desc: 'Huvudavrinningsområdesnummer', classes: ['feature-objid'] },
+ { key: 'Vattendistrikt', desc: 'Vattendistrikt', classes: ['feature-objid'] },
+ { key: 'Verksamhet', desc: 'Verksamhet', fn: (v) =>
+ v === 1 ? 'Kraftproduktion' :
+ v === 2 ? 'Industri' :
+ v === 3 ? 'Sjöfart' :
+ v === 4 ? 'Invallning' :
+ v === 5 ? 'Vattenförsörjning' :
+ v === 6 ? 'Spegeldamm' :
+ v === 7 ? 'Historisk' :
+ v === 8 ? 'Övrigt' :
+ null },
+ { key: 'DG', desc: 'Högsta dämningsgräns', unit: 'm' },
+ { key: 'SG', desc: 'Lägsta sänkningsgräns', unit: 'm' },
+ { key: 'MY', desc: 'Magasinsyta', unit: 'km²' },
+ { key: 'RV', desc: 'Reglerbar volym', unit: 'Mm³' },
+ { key: 'Kommentar', desc: 'Kommentar' },
+ ],
+ },
},
};
-layers.avverk = {
- /* Documentation at
- * https://www.skogsstyrelsen.se/globalassets/sjalvservice/karttjanster/geodatatjanster/produktbeskrivningar/utforda-avverkningar---produktbeskrivning.pdf
- * */
- utford: {
+
+LAYERS.mrr = {};
+(function() {
+ const fields = [
+ { key: 'name', desc: 'Namn' },
+ { key: 'mineral', desc: 'Koncessionsmineral', cond: (i) => i < 6 },
+ { key: 'owners', desc: 'Ägare', cond: [0,2,4] },
+ { key: 'owners', desc: 'Sökande', cond: [1,3,5] },
+ { key: 'conc_name', desc: 'Tillhörande bearbetnings\u00ADkoncession(er)', cond: [6] },
+ { key: 'licenceid', desc: 'Tillståndsid', classes: ['feature-attr-mrr-license-id'], cond: [0,2,4,6] },
+ { key: 'geom_area', desc: 'Areal', fn: 'area' },
+ { key: 'validfrom', desc: 'Giltig från', cond: [0,2,4] },
+ { key: 'validto', desc: 'Giltig till', cond: [0,2,4] },
+ { key: 'diarynr', desc: 'Diarienummer', classes: ['feature-attr-dnr'] },
+ { key: 'appl_date', desc: 'Ansökningsdatum' },
+ { key: 'dec_date', desc: 'Beslutsdatum', cond: [0,2,4,6] },
+ ];
+ Object.entries({
+ ec: 'Bearbetningskoncession',
+ met: 'Undersökningstillstånd, metaller och industrimineral',
+ ogd: 'Undersökningstillstånd, olja, gas och diamant',
+ })
+ .flatMap(([k, title]) => [
+ /* don't use Object.entries() to guaranty ordering */
+ ['appr', 'beviljad'], /* even index */
+ ['appl', 'ansökt'], /* odd index */
+ ].map(([a,b]) => [a + '_' + k, title + ' \u2013 ' + b]))
+ .concat([['appr_dl', 'Markanvisning till koncession']]) /* index #6 */
+ .forEach(([k, title], idx) => LAYERS.mrr[k] = { title, fields: filterFields(idx, fields) });
+})();
+
+
+LAYERS.vbk = {};
+(function() {
+ const fieldMap = mkFieldMap({
+ Projektnamn: 'Projektnamn',
+ OmrID: { desc: 'Områdes-ID', classes: ['feature-objid'] },
+ AntalVerk: 'Aktuella verk',
+ AntalEjXY: 'Antal ej koordinatsatta verk',
+ Projektstatus: 'Projektstatus',
+ Diarienummer: 'Diarienummer',
+ geom_area: { desc: 'Areal', fn: 'area' },
+ Calprod: { desc: 'Beräknad årsproduktion', unit: 'GWh' },
+ PlaneradByggstart: 'Planerad byggstart',
+ PlaneratDrift: 'Planerat drifttagande',
+ AndringsansokanPagar: 'Ändringsansökan pågår',
+ UnderByggnation: 'Under byggnation',
+ Organisationsnamn: 'Verksamhetsutövare',
+ Organisationsnummer: { desc: 'Organisationsnummer', classes: ['feature-orgnr'] },
+ SamradsunderlagInlamnat: 'Samrådsunderlag inlämnat',
+ AnsokanInlamnat: 'Tillståndsansökan inlämnad',
+ AnsokanAterkallad: 'Tillståndsansökan återkallad',
+ AnsokanBeviljad: 'Tillståndsansökan beviljad',
+ AnsokanAvslagen: 'Tillståndsansökan avslagen',
+ AnsokanOverklagad: 'Överklagad',
+ Natura2000_Ansokan: 'Natura2000 ansökan',
+ Natura2000_Beslutdatum: 'Natura2000 beslutsdatum',
+ Uppfort: 'Parken uppförd',
+ PlaneratAntalVerkMin: 'Planerat antal verk (min)',
+ PlaneratAntalVerkMax: 'Planerat antal verk (max)',
+ PlaneradHojdMin: { desc: 'Panerad totalhöjd (min)', unit: 'm' },
+ PlaneradHojdMax: { desc: 'Panerad totalhöjd (max)', unit: 'm' },
+ PlaneradProduktionMin: { desc: 'Planerad årsproduktion (min)', unit: 'GWh' },
+ PlaneradProduktionMax: { desc: 'Planerad årsproduktion (max)', unit: 'GWh' },
+ BeviljatAntalVerk: 'Beviljat antal verk',
+ UppfortAntalVerk: 'Uppfört antal verk',
+ BeviljadMaxhojd: { desc: 'Beviljad maxhöjd', unit: 'm' },
+ InstalleradEffekt: { desc: 'Installerad effekt', unit: 'MW' },
+ ElNamn: 'Elområde',
+ SenasteUppdaterat: 'Senast uppdaterat',
+ });
+
+ Object.entries({
+ current: null,
+ notcurrent: ' \u2013 ej aktuell',
+ })
+ .forEach(([k, title]) => LAYERS.vbk['area_' + k] = {
+ title: 'Landbaserad projekteringsområde för vindkraft' + (title ?? ''),
+ fields: mapFields(k, fieldMap, [
+ 'Projektnamn',
+ 'OmrID',
+ 'AntalVerk',
+ 'AntalEjXY',
+ 'geom_area',
+ 'Calprod',
+ 'PlaneradByggstart',
+ 'PlaneratDrift',
+ 'AndringsansokanPagar',
+ ['UnderByggnation', ['current']],
+ 'Organisationsnamn',
+ 'Organisationsnummer',
+ 'ElNamn',
+ 'SenasteUppdaterat',
+ ]),
+ });
+
+ [
+ ['completed', /* 0 */ 'uppförd'],
+ ['approved', /* 1 */ 'tillståndsansökan beviljad'],
+ ['amended', /* 2 */ 'ändringsansökan'],
+ ['rejected', /* 3 */ 'tillståndsansökan avslagen'],
+ ['appealed', /* 4 */ 'överklagad'],
+ ['applied', /* 5 */ 'tillståndsansökan inlämnad'],
+ ['consultation', /* 6 */ 'samråd inför tillståndsansökan'],
+ ['investigation', /* 7 */ 'inledande undersökningar'],
+ ['revoked', /* 8 */ 'inte aktuell eller återkallad'],
+ ]
+ .forEach(([k, title], idx) => LAYERS.vbk['offshore_' + k] = {
+ title: 'Havsbaserad vindkraft \u2013 ' + title,
+ fields: mapFields(idx, fieldMap, [
+ 'Projektnamn',
+ 'OmrID',
+ 'Organisationsnamn',
+ 'Organisationsnummer',
+ 'Projektstatus',
+ 'Diarienummer',
+ ['AndringsansokanPagar', [1,2,4]],
+ 'geom_area',
+ ['SamradsunderlagInlamnat', (i) => i <= 6 || i === 8],
+ ['AnsokanInlamnat', (i) => i <= 5 || i === 8],
+ ['AnsokanAterkallad', [8]],
+ ['AnsokanBeviljad', [0,1,4,8]],
+ ['AnsokanAvslagen', [3,8]],
+ ['AnsokanOverklagad', [0,1,3,4,8]],
+ ['Natura2000_Ansokan', (i) => i !== 2],
+ ['Natura2000_Beslutdatum', (i) => i !== 2],
+ ['UnderByggnation', [1]],
+ ['PlaneratAntalVerkMin', (i) => i > 0],
+ ['PlaneratAntalVerkMax', (i) => i > 0],
+ ['PlaneradHojdMin', (i) => i > 0],
+ ['PlaneradHojdMax', (i) => i > 0],
+ ['PlaneradProduktionMin', (i) => i > 0],
+ ['PlaneradProduktionMax', (i) => i > 0],
+ ['PlaneradByggstart', (i) => i > 0],
+ ['Uppfort', [0,8]],
+ ['PlaneratDrift', (i) => i > 0],
+ ['BeviljatAntalVerk', [0,1,4,8]],
+ ['UppfortAntalVerk', [0,8]],
+ ['BeviljadMaxhojd', [0,1,4,8]],
+ ['InstalleradEffekt', [0]],
+ ['Calprod', [0]],
+ 'ElNamn',
+ 'SenasteUppdaterat',
+ ]),
+ });
+
+ Object.assign(fieldMap, mkFieldMap({
+ VerkID: { desc: 'Verk-ID', classes: ['feature-objid'] },
+ Status: 'Status',
+ Handlingstyp: 'Handlingstyp',
+ MB_Tillstand: 'Miljöbalken tillstånd tidsbegränsning',
+ Uppfort: 'Uppförandedatum',/* override previous def */
+ Totalhojd: { desc: 'Totalhöjd', unit: 'm' },
+ Navhojd: { desc: 'Navhöjd', unit: 'm' },
+ Rotordiameter: { desc: 'Rotordiameter', unit: 'm' },
+ Maxeffekt: { desc: 'Maxeffekt', unit: 'MW' },
+ Fabrikat: 'Fabrikat',
+ Modell: 'Modell',
+ Placering: 'Placering',
+ }));
+
+ [
+ ['completed', /* 0 */ 'uppfört'],
+ ['approved', /* 1 */ 'beviljat'],
+ ['rejected', /* 2 */ 'avslagit/nekat'],
+ ['processed', /* 3 */ 'handlagt'],
+ ['dismounted', /* 4 */ 'nedmonterat'],
+ ['appealed', /* 5 */ 'överklagat'],
+ ['revoked', /* 6 */ 'inte aktuell eller återkallad'],
+ ]
+ .forEach(([k, title], idx) => LAYERS.vbk['station_' + k] = {
+ title: 'Landbaserad vindkraftverk \u2013 ' + title,
+ fields: mapFields(idx, fieldMap, [
+ 'VerkID',
+ 'OmrID',
+ 'Projektnamn',
+ 'Status',
+ 'Handlingstyp',
+ ['Uppfort', [0,4,6]],
+ 'MB_Tillstand',
+ 'Totalhojd',
+ 'Navhojd',
+ 'Rotordiameter',
+ 'Maxeffekt',
+ 'Calprod',
+ 'Fabrikat',
+ 'Modell',
+ 'Organisationsnamn',
+ 'Organisationsnummer',
+ 'Placering',
+ 'ElNamn',
+ 'SenasteUppdaterat',
+ ]),
+ });
+})();
+
+
+LAYERS.avverk = {};
+(function() {
+ const zeroIsNull = (v) => v > 0 ? v : null;
+ const fieldMap = mkFieldMap({
+ /* Documentation at
+ * https://www.skogsstyrelsen.se/globalassets/sjalvservice/karttjanster/geodatatjanster/produktbeskrivningar/utforda-avverkningar---produktbeskrivning.pdf
+ * and
+ * https://www.skogsstyrelsen.se/globalassets/sjalvservice/karttjanster/geodatatjanster/produktbeskrivningar/yttre-granser-for-avverkningsanmalda-omraden---produktbeskrivning.pdf
+ */
+ Beteckn: { desc: 'Ärendebeteckning', classes: ['feature-objid'] },
+ ArendeAr: 'Registeringsår',
+ Inkomdatum: 'Inkom datum',
+ Skogstyp: 'Skogstyp',
+ Avvdatum: 'Datum för avverkning',
+ KallaDatum: 'Ursprung för datum för avverkning',
+ AnmaldHa: { desc: 'Areal anmält', unit: 'ha' },
+ NatforHa: { desc: 'Areal naturlig föryngring', unit: 'ha', fn: zeroIsNull },
+ SkogsodlHa: { desc: 'Areal plantering', unit: 'ha', fn: zeroIsNull },
+ AvvSasong: 'Avverkningssäsong',
+ Avverktyp: 'Avverkningstyp',
+ ArendeStatus: 'Ärendestatus',
+ AvvHa: { desc: 'Avverkad areal', unit: 'ha' },
+ geom_area: { desc: 'Areal för ytan', fn: 'area' },
+ });
+
+ LAYERS.avverk.utford = {
title: 'Utförd avverkning',
- fields: [
- ['Ärendebeteckning', 'Beteckn', { classes: ['feature-objid'] }],
- ['Registeringsår', 'ArendeAr'],
- ['Skogstyp', 'Skogstyp'],
- ['Areal anmält', 'AnmaldHa', { unit: 'ha' }],
- ['Areal naturlig föryngring', 'NatforHa', { unit: 'ha', fn: (v) => v === 0 ? '' : v }],
- //['Areal plantering', 'SkogsodlHa', { unit: 'ha', fn: (v) => v === 0 ? '' : v }],
- ['Avverkningstyp', 'Avverktyp'],
- ['Datum för avverkning', 'Avvdatum'],
- ['Ursprung för datum för avverkning', 'KallaDatum'],
- //['Ursprung för areal avverkning', 'KallaAreal'],
- //['Kommun', 'Kommun'],
- //['Län', 'Lan'],
- ['Areal för ytan', 'geom_area', { fn: 'area' }],
- ],
- },
- /* Documentation at
- * https://www.skogsstyrelsen.se/globalassets/sjalvservice/karttjanster/geodatatjanster/produktbeskrivningar/yttre-granser-for-avverkningsanmalda-omraden---produktbeskrivning.pdf
- * */
- anmald: {
+ fields: mapFields(fieldMap, [
+ 'Beteckn',
+ 'ArendeAr',
+ 'Skogstyp',
+ 'AnmaldHa',
+ 'NatforHa',
+ 'Avverktyp',
+ 'Avvdatum',
+ 'KallaDatum',
+ 'geom_area',
+ ]),
+ };
+
+ LAYERS.avverk.anmald = {
title: 'Avverkningsanmälansområde',
- fields: [
- ['Ärendebeteckning', 'Beteckn', { classes: ['feature-objid'] }],
- ['Inkom datum', 'Inkomdatum'],
- ['Registeringsår', 'ArendeAr'],
- //['Skogstyp', 'Skogstyp'],
- ['Areal anmält', 'AnmaldHa', { unit: 'ha' }],
- ['Areal naturlig föryngring', 'NatforHa', { unit: 'ha', fn: (v) => v === 0 ? '' : v }],
- ['Areal plantering', 'SkogsodlHa', { unit: 'ha', fn: (v) => v === 0 ? '' : v }],
- ['Avverkningssäsong', 'AvvSasong'],
- //['Avverkningstyp', 'Avverktyp'],
- //['Ändamål', 'Andamal'],
- //['Kommun', 'Kommun'],
- //['Län', 'Lan'],
- ['Ärendestatus', 'ArendeStatus'],
- ['Avverkad areal', 'AvvHa', { unit: 'ha' }],
- ],
- },
-};
+ fields: mapFields(fieldMap, [
+ 'Beteckn',
+ 'Inkomdatum',
+ 'ArendeAr',
+ 'AnmaldHa',
+ 'NatforHa',
+ 'SkogsodlHa',
+ 'AvvSasong',
+ 'ArendeStatus',
+ 'AvvHa',
+ ]),
+ };
+})();
+
+
+LAYERS.skydd = {};
+(function() {
+ const fieldMap = mkFieldMap({
+ NVRID: { desc: 'NVR-ID', classes: ['feature-objid'] },
+ FORSKRNAMN: 'Föreskriftsområde',
+ OBJEKTNAMN: 'Namn',
+ NAMN: 'Namn',
+ BESLSTAT: 'Beslutsstatus',
+ FORESKRTYP: 'Föreskriftstyp',
+ FORESKRIFT: 'Föreskriftssubtyp',
+ FRANDATUM: 'Från datum',
+ TILLDATUM: 'Till datum',
+ BESKRIVN: 'Beskrivning',
+ geom_area: { desc: 'Areal', fn: 'area' },
-layers.skyyd = {
- tilltradesforbud: {
+ SKYDDSTYP: 'Skyddstyp',
+ BESLSTATUS: 'Beslutsstatus',
+ URSBESLDAT: 'Beslutsdatum (bildande)',
+ URSGALLDAT: 'Ursprungligt gällandedatum',
+ SENGALLDAT: 'Senaste gällandedatum',
+ FORVALTARE: 'Förvaltare',
+ IUCNKAT: 'IUCN-kategori',
+ DIARIENR: { desc: 'Diarienummer', classes: ['feature-attr-dnr'] },
+ LAGRUM: 'Lagrum',
+ BESLMYND: 'Beslutsmyndighet',
+ LAND_HA: { desc: 'Areal land', unit: 'ha' },
+ VATTEN_HA: { desc: 'Areal vatten', unit: 'ha' },
+ SKOG_HA: { desc: 'Skogsmarksareal', unit: 'ha' },
+
+ IKRAFTDATF: 'Ikraftträdandedatum föreskrifter',
+ TILLSYNSMH: 'Tillsynsmyndighet',
+ PROVNMHTIL: 'Prövningsmyndighet tillstånd',
+ PROVNMHDIS: 'Prövningsmyndighet dispens',
+
+ NAME: 'Namn',
+ RAMSAR_ID: { desc: 'Ramsar-ID', classes: ['feature-objid'] },
+ LEGAL_ACT: 'Rättsakt',
+ URSPR_BESL: 'Ursprungligt beslutsdatum',
+ SEN_BESLUT: 'Senaste beslutsdatum',
+ LINK: { desc: 'Länk', fn: formatLink },
+ });
+
+ LAYERS.skydd.tilltradesforbud = {
title: 'Tillträdesförbud',
- fields: [
- ['NVR-ID', 'NVRID', { classes: ['feature-objid'] }],
- ['Föreskriftsområde', 'FORSKRNAMN'],
- ['Namn', 'OBJEKTNAMN'],
- ['Beslutsstatus', 'BESLSTAT'],
- ['Föreskriftstyp', 'FORESKRTYP'],
- ['Föreskriftssubtyp', 'FORESKRIFT'],
- ['Från datum', 'FRANDATUM'],
- ['Till datum', 'TILLDATUM'],
- ['Beskrivning', 'BESKRIVN'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ],
- },
- nationalpark: {
- title: 'Nationalpark',
- fields: [
- ['NVR-ID', 'NVRID', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Beslutsstatus', 'BESLSTATUS'],
- ['Beslutsdatum (bildande)', 'URSBESLDAT'],
- ['Ursprungligt gällandedatum', 'URSGALLDAT'],
- ['Senaste gällandedatum', 'SENGALLDAT'],
- ['Förvaltare', 'FORVALTARE'],
- ['IUCN-kategori', 'IUCNKAT'],
- ['Diarienummer', 'DIARIENR', { classes: ['feature-attr-dnr'] }],
- ['Lagrum', 'LAGRUM'],
- ['Beslutsmyndighet', 'BESLMYND'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Areal land', 'LAND_HA', { unit: 'ha' }],
- ['Areal vatten', 'VATTEN_HA', { unit: 'ha' }],
- ['Skogsmarksareal', 'SKOG_HA', { unit: 'ha' }],
- ],
- },
- naturreservat: {
- title: 'Naturreservat',
- fields: [
- ['NVR-ID', 'NVRID', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Beslutsstatus', 'BESLSTATUS'],
- ['Beslutsdatum (bildande)', 'URSBESLDAT'],
- ['Ursprungligt gällandedatum', 'URSGALLDAT'],
- ['Senaste gällandedatum', 'SENGALLDAT'],
- ['Förvaltare', 'FORVALTARE'],
- ['IUCN-kategori', 'IUCNKAT'],
- ['Diarienummer', 'DIARIENR', { classes: ['feature-attr-dnr'] }],
- ['Lagrum', 'LAGRUM'],
- ['Beslutsmyndighet', 'BESLMYND'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Areal land', 'LAND_HA', { unit: 'ha' }],
- ['Areal vatten', 'VATTEN_HA', { unit: 'ha' }],
- ['Skogsmarksareal', 'SKOG_HA', { unit: 'ha' }],
- ],
- },
- naturreservat_kommunalt: {
- title: 'Kommunalt naturreservat',
- fields: [
- ['NVR-ID', 'NVRID', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Beslutsstatus', 'BESLSTATUS'],
- ['Beslutsdatum (bildande)', 'URSBESLDAT'],
- ['Ursprungligt gällandedatum', 'URSGALLDAT'],
- ['Senaste gällandedatum', 'SENGALLDAT'],
- ['Förvaltare', 'FORVALTARE'],
- ['IUCN-kategori', 'IUCNKAT'],
- ['Diarienummer', 'DIARIENR', { classes: ['feature-attr-dnr'] }],
- ['Lagrum', 'LAGRUM'],
- ['Beslutsmyndighet', 'BESLMYND'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Areal land', 'LAND_HA', { unit: 'ha' }],
- ['Areal vatten', 'VATTEN_HA', { unit: 'ha' }],
- ['Skogsmarksareal', 'SKOG_HA', { unit: 'ha' }],
- ],
- },
- naturvardsomrade: {
- title: 'Naturvårdsområde',
- fields: [
- ['NVR-ID', 'NVRID', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Beslutsstatus', 'BESLSTATUS'],
- ['Beslutsdatum (bildande)', 'URSBESLDAT'],
- ['Ursprungligt gällandedatum', 'URSGALLDAT'],
- ['Senaste gällandedatum', 'SENGALLDAT'],
- ['Förvaltare', 'FORVALTARE'],
- ['IUCN-kategori', 'IUCNKAT'],
- ['Diarienummer', 'DIARIENR', { classes: ['feature-attr-dnr'] }],
- ['Lagrum', 'LAGRUM'],
- ['Beslutsmyndighet', 'BESLMYND'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Areal land', 'LAND_HA', { unit: 'ha' }],
- ['Areal vatten', 'VATTEN_HA', { unit: 'ha' }],
- ['Skogsmarksareal', 'SKOG_HA', { unit: 'ha' }],
- ],
- },
- djur_och_vaxtskyddsomrade: {
- title: 'Djur- och växtskyddsområde',
- fields: [
- ['NVR-ID', 'NVRID', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Beslutsstatus', 'BESLSTATUS'],
- ['Beslutsdatum (bildande)', 'URSBESLDAT'],
- ['Ursprungligt gällandedatum', 'URSGALLDAT'],
- ['Senaste gällandedatum', 'SENGALLDAT'],
- ['Förvaltare', 'FORVALTARE'],
- ['IUCN-kategori', 'IUCNKAT'],
- ['Diarienummer', 'DIARIENR', { classes: ['feature-attr-dnr'] }],
- ['Lagrum', 'LAGRUM'],
- ['Beslutsmyndighet', 'BESLMYND'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Areal land', 'LAND_HA', { unit: 'ha' }],
- ['Areal vatten', 'VATTEN_HA', { unit: 'ha' }],
- ['Skogsmarksareal', 'SKOG_HA', { unit: 'ha' }],
- ],
- },
- kulturreservat: {
- title: 'Kulturreservat',
- fields: [
- ['NVR-ID', 'NVRID', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Beslutsstatus', 'BESLSTATUS'],
- ['Beslutsdatum (bildande)', 'URSBESLDAT'],
- ['Ursprungligt gällandedatum', 'URSGALLDAT'],
- ['Senaste gällandedatum', 'SENGALLDAT'],
- ['Förvaltare', 'FORVALTARE'],
- ['IUCN-kategori', 'IUCNKAT'],
- ['Diarienummer', 'DIARIENR', { classes: ['feature-attr-dnr'] }],
- ['Lagrum', 'LAGRUM'],
- ['Beslutsmyndighet', 'BESLMYND'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Areal land', 'LAND_HA', { unit: 'ha' }],
- ['Areal vatten', 'VATTEN_HA', { unit: 'ha' }],
- ['Skogsmarksareal', 'SKOG_HA', { unit: 'ha' }],
- ],
- },
- vattenskyddsomrade: {
- title: 'Vattenskyddsområden',
- fields: [
- ['NVR-ID', 'NVRID', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Beslutsstatus', 'BESLSTATUS'],
- ['Beslutsdatum (bildande)', 'URSBESLDAT'],
- ['Ikraftträdandedatum föreskrifter', 'IKRAFTDATF'],
- ['Beslutsmyndighet', 'BESLMYND'],
- ['Tillsynsmyndighet', 'TILLSYNSMH'],
- ['Prövningsmyndighet tillstånd', 'PROVNMHTIL'],
- ['Prövningsmyndighet dispens', 'PROVNMHDIS'],
- ['Diarienummer', 'DIARIENR', { classes: ['feature-attr-dnr'] }],
- ['Lagrum', 'LAGRUM'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Areal land', 'LAND_HA', { unit: 'ha' }],
- ['Areal vatten', 'VATTEN_HA', { unit: 'ha' }],
- ['Skogsmarksareal', 'SKOG_HA', { unit: 'ha' }],
- ],
- },
- landskapsbildsskyddsomrade: {
- title: 'Landskapsbildsskyddsområde',
- fields: [
- ['NVR-ID', 'NVRID', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Beslutsstatus', 'BESLSTATUS'],
- ['Beslutsdatum (bildande)', 'URSBESLDAT'],
- ['Ursprungligt gällandedatum', 'URSGALLDAT'],
- ['Senaste gällandedatum', 'SENGALLDAT'],
- ['Förvaltare', 'FORVALTARE'],
- ['IUCN-kategori', 'IUCNKAT'],
- ['Diarienummer', 'DIARIENR', { classes: ['feature-attr-dnr'] }],
- ['Lagrum', 'LAGRUM'],
- ['Beslutsmyndighet', 'BESLMYND'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Areal land', 'LAND_HA', { unit: 'ha' }],
- ['Areal vatten', 'VATTEN_HA', { unit: 'ha' }],
- ['Skogsmarksareal', 'SKOG_HA', { unit: 'ha' }],
- ],
- },
- skogligt_biotopskyddsomrade: {
- title: 'Biotopskydd i skogsmark',
- fields: [
- ['Ärendebeteckning', 'Beteckn', { classes: ['feature-objid'] }],
- ['Biotopkategori', 'Biotyp'],
- ['Skogstyp', 'Naturtyp'],
- ['Registeringsår', 'ArendeAr'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Skogsmarksareal', 'AreaProd', { unit: 'ha' }],
- ['Beslutsdatum', 'Datbeslut'],
- ['Länk', 'Url', { fn: function(v) {
- if (v == null | v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ],
- },
- ovrigt_biotopskyddsomrade: {
- title: 'Biotopskydd utanför skogsmark',
- fields: [
- ['NVR-ID', 'NVRID', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Beslutsstatus', 'BESLSTATUS'],
- ['Beslutsdatum (bildande)', 'URSBESLDAT'],
- ['Ursprungligt gällandedatum', 'URSGALLDAT'],
- ['Senaste gällandedatum', 'SENGALLDAT'],
- ['Förvaltare', 'FORVALTARE'],
- ['IUCN-kategori', 'IUCNKAT'],
- ['Diarienummer', 'DIARIENR', { classes: ['feature-attr-dnr'] }],
- ['Lagrum', 'LAGRUM'],
- ['Beslutsmyndighet', 'BESLMYND'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Areal land', 'LAND_HA', { unit: 'ha' }],
- ['Areal vatten', 'VATTEN_HA', { unit: 'ha' }],
- ['Skogsmarksareal', 'SKOG_HA', { unit: 'ha' }],
- ],
- },
- naturminne_yta: {
- title: 'Naturminne (yta)',
- fields: [
- ['NVR-ID', 'NVRID', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Beslutsstatus', 'BESLSTATUS'],
- ['Beslutsdatum (bildande)', 'URSBESLDAT'],
- ['Ursprungligt gällandedatum', 'URSGALLDAT'],
- ['Senaste gällandedatum', 'SENGALLDAT'],
- ['Förvaltare', 'FORVALTARE'],
- ['IUCN-kategori', 'IUCNKAT'],
- ['Diarienummer', 'DIARIENR', { classes: ['feature-attr-dnr'] }],
- ['Lagrum', 'LAGRUM'],
- ['Beslutsmyndighet', 'BESLMYND'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Areal land', 'LAND_HA', { unit: 'ha' }],
- ['Areal vatten', 'VATTEN_HA', { unit: 'ha' }],
- ['Skogsmarksareal', 'SKOG_HA', { unit: 'ha' }],
- ],
- },
- naturminne_punkt: {
- title: 'Naturminne (punkt)',
- fields: [
- ['NVR-ID', 'NVRID', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Beslutsstatus', 'BESLSTATUS'],
- ['Beslutsdatum (bildande)', 'URSBESLDAT'],
- ['Ursprungligt gällandedatum', 'URSGALLDAT'],
- ['Senaste gällandedatum', 'SENGALLDAT'],
- ['Förvaltare', 'FORVALTARE'],
- ['IUCN-kategori', 'IUCNKAT'],
- ['Diarienummer', 'DIARIENR', { classes: ['feature-attr-dnr'] }],
- ['Lagrum', 'LAGRUM'],
- ['Beslutsmyndighet', 'BESLMYND'],
- ['Skogsmarksareal', 'SKOG_HA', { unit: 'ha' }],
- ],
- },
- interimistiskt_forbud: {
- title: 'Interimistiskt förbud',
- fields: [
- ['NVR-ID', 'NVRID', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Beslutsstatus', 'BESLSTATUS'],
- ['Beslutsdatum (bildande)', 'URSBESLDAT'],
- ['Ursprungligt gällandedatum', 'URSGALLDAT'],
- ['Senaste gällandedatum', 'SENGALLDAT'],
- ['Förvaltare', 'FORVALTARE'],
- ['IUCN-kategori', 'IUCNKAT'],
- ['Diarienummer', 'DIARIENR', { classes: ['feature-attr-dnr'] }],
- ['Lagrum', 'LAGRUM'],
- ['Beslutsmyndighet', 'BESLMYND'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Areal land', 'LAND_HA', { unit: 'ha' }],
- ['Areal vatten', 'VATTEN_HA', { unit: 'ha' }],
- ['Skogsmarksareal', 'SKOG_HA', { unit: 'ha' }],
- ],
- },
- fageldirektivet: {
- title: 'Fågeldirektivet (SPA)',
- fields: [
- ['Områdeskod', 'SITE_CODE', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Områdestyp', 'OMRADESTYP'],
- ['Uppgiftslämnare', 'UPPLAMNARE'],
- ['SPA-datum', 'SPA_DATUM'],
- ['SCI-förslagsdatum', 'SCI_FORSL'],
- ['SCI-datum', 'SCI_DATUM'],
- ['SAC-datum', 'SAC_DATUM'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Kvalitet', 'KVALITET'],
- ['Kännetecken för området', 'KARAKTAR'],
- ['Arter', 'ARTER'],
- ['Naturtyper', 'NATURTYPER'],
- ['Bevarandeplan', 'BEVPLAN', { fn: function(v) {
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ],
- },
- habitatdirektivet: {
- title: 'Art- och habitatdirektivet (SCI)',
- fields: [
- ['Områdeskod', 'SITE_CODE', { classes: ['feature-objid'] }],
- ['Namn', 'NAMN'],
- ['Områdestyp', 'OMRADESTYP'],
- ['Uppgiftslämnare', 'UPPLAMNARE'],
- ['SPA-datum', 'SPA_DATUM'],
- ['SCI-förslagsdatum', 'SCI_FORSL'],
- ['SCI-datum', 'SCI_DATUM'],
- ['SAC-datum', 'SAC_DATUM'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Kvalitet', 'KVALITET'],
- ['Kännetecken för området', 'KARAKTAR'],
- ['Arter', 'ARTER'],
- ['Naturtyper', 'NATURTYPER'],
- ['Bevarandeplan', 'BEVPLAN', { fn: function(v) {
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ],
- },
- helcom: {
+ fields: mapFields(fieldMap, [
+ 'NVRID',
+ 'FORSKRNAMN',
+ 'OBJEKTNAMN',
+ 'BESLSTAT',
+ 'FORESKRTYP',
+ 'FORESKRIFT',
+ 'FRANDATUM',
+ 'TILLDATUM',
+ 'BESKRIVN',
+ 'geom_area',
+ ]),
+ };
+
+ /* Nationella skyddsformer från Naturvårdsregistret */
+ const isSurface = (k) => !/_punkt$/.test(k);
+ Object.entries({
+ nationalpark: 'Nationalpark',
+ naturreservat: 'Naturreservat',
+ naturreservat_kommunalt: 'Kommunalt naturreservat',
+ naturvardsomrade: 'Naturvårdsområde',
+ djur_och_vaxtskyddsomrade: 'Djur- och växtskyddsområde',
+ kulturreservat: 'Kulturreservat',
+ vattenskyddsomrade: 'Vattenskyddsområden',
+ landskapsbildsskyddsomrade: 'Landskapsbildsskyddsområde',
+ ovrigt_biotopskyddsomrade: 'Biotopskydd utanför skogsmark',
+ naturminne_yta: 'Naturminne (yta)',
+ naturminne_punkt: 'Naturminne (punkt)',
+ interimistiskt_forbud: 'Interimistiskt förbud',
+ })
+ .forEach(([k, title]) => LAYERS.skydd[k] = {
+ title: title,
+ fields: mapFields(k, fieldMap, [
+ 'NVRID',
+ 'NAMN',
+ 'SKYDDSTYP',
+ 'BESLSTATUS',
+ 'URSBESLDAT',
+ ['URSGALLDAT', (k) => k !== 'vattenskyddsomrade'],
+ ['SENGALLDAT', (k) => k !== 'vattenskyddsomrade'],
+ ['FORVALTARE', (k) => k !== 'vattenskyddsomrade'],
+ ['IKRAFTDATF', (k) => k === 'vattenskyddsomrade'],
+ 'IUCNKAT',
+ 'DIARIENR',
+ 'LAGRUM',
+ 'BESLMYND',
+ ['TILLSYNSMH', (k) => k === 'vattenskyddsomrade'],
+ ['PROVNMHTIL', (k) => k === 'vattenskyddsomrade'],
+ ['PROVNMHDIS', (k) => k === 'vattenskyddsomrade'],
+ ['geom_area', isSurface],
+ ['LAND_HA', isSurface],
+ ['VATTEN_HA', isSurface],
+ ['SKOG_HA', isSurface],
+ ]),
+ });
+
+ /* Natura 2000-områden */
+ (function() {
+ const fields = [
+ { key: 'SITE_CODE', desc: 'Områdeskod', classes: ['feature-objid'] },
+ { key: 'NAMN', desc: 'Namn' },
+ { key: 'OMRADESTYP', desc: 'Områdestyp' },
+ { key: 'UPPLAMNARE', desc: 'Uppgiftslämnare' },
+ { key: 'SPA_DATUM', desc: 'SPA-datum' },
+ { key: 'SCI_FORSL', desc: 'SCI-förslagsdatum' },
+ { key: 'SCI_DATUM', desc: 'SCI-datum' },
+ { key: 'SAC_DATUM', desc: 'SAC-datum' },
+ fieldMap.geom_area,
+ { key: 'KVALITET', desc: 'Kvalitet' },
+ { key: 'KARAKTAR', desc: 'Kännetecken för området' },
+ { key: 'ARTER', desc: 'Arter' },
+ { key: 'NATURTYPER', desc: 'Naturtyper' },
+ { key: 'BEVPLAN', desc: 'Bevarandeplan', fn: formatLink },
+ ];
+ Object.entries({
+ fageldirektivet: 'Fågeldirektivet (SPA)',
+ habitatdirektivet: 'Art- och habitatdirektivet (SCI)',
+ })
+ .forEach(([k, title]) => LAYERS.skydd[k] = { title, fields });
+ })();
+
+ /* Områden med internationell status */
+ LAYERS.skydd.helcom = {
title: 'Marina skyddade områden (Helcom MPA)',
- fields: [
- ['Namn', 'NAME'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ],
- },
- ramsar: {
+ fields: mapFields(fieldMap, [ 'NAME', 'geom_area' ]),
+ };
+
+ LAYERS.skydd.ramsar = {
title: 'Ramsar-områden (Våtmarkskonventionen)',
- fields: [
- ['Ramsar-ID', 'RAMSAR_ID', { classes: ['feature-objid'] }],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Namn', 'NAMN'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Areal land', 'LAND_HA', { unit: 'ha' }],
- ['Areal vatten', 'VATTEN_HA', { unit: 'ha' }],
- ['Skogsmarksareal', 'SKOG_HA', { unit: 'ha' }],
- ['Ursprungligt beslutsdatum', 'URSPR_BESL'],
- ['Senaste beslutsdatum', 'SEN_BESLUT'],
- ['Rättsakt', 'LEGAL_ACT'],
- ['Länk', 'LINK', { fn: function(v) {
- if (v == null || v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ],
- },
- ospar: {
+ fields: mapFields(fieldMap, [
+ 'RAMSAR_ID',
+ 'SKYDDSTYP',
+ 'NAMN',
+ 'geom_area',
+ 'LAND_HA',
+ 'VATTEN_HA',
+ 'SKOG_HA',
+ 'URSPR_BESL',
+ 'SEN_BESLUT',
+ 'LEGAL_ACT',
+ 'LINK',
+ ]),
+ };
+
+ LAYERS.skydd.ospar = {
title: 'Marina skyddade områden (Ospar MPA)',
fields: [
- ['Ursprung', 'ORIGIN'],
- ['N2000-namn', 'NAMN_N2000'],
- ['MPA-ID', 'MPA_ID', { classes: ['feature-objid'] }],
- ['MPA-namn', 'MPA_NAMN'],
- ['N2000-ID', 'N2000_SITE', { classes: ['feature-objid'] }],
- ['Areal', 'geom_area', { fn: 'area' }],
+ { key: 'ORIGIN', desc: 'Ursprung' },
+ { key: 'NAMN_N2000', desc: 'N2000-namn' },
+ { key: 'MPA_ID', desc: 'MPA-ID', classes: ['feature-objid'] },
+ { key: 'MPA_NAMN', desc: 'MPA-namn' },
+ { key: 'N2000_SITE', desc: 'N2000-ID', classes: ['feature-objid'] },
+ fieldMap.geom_area,
],
- },
- varldsarv: {
+ };
+
+ LAYERS.skydd.varldsarv = {
title: 'Världsarv med mycket höga naturvärden (Unesco)',
- fields: [
- ['Namn', 'NAMN'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ],
- },
- biosfarsomraden: {
- title: 'Biosfärsområde (Unesco)',
- fields: [
- ['Namn', 'NAMN'],
- ['Skyddstyp', 'SKYDDSTYP'],
- ['Länk', 'LINK', { fn: function(v) {
- if (v == null || v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ['Areal', 'geom_area', { fn: 'area' }],
- ],
- },
- naturvardsavtal: {
+ fields: mapFields(fieldMap, [ 'NAMN', 'geom_area' ]),
+ };
+
+ LAYERS.skydd.naturvardsavtal = {
title: 'Naturvårdsavtal (Naturvårdsverket, Länsstyrelsen)',
fields: [
- ['ID', 'ID', { classes: ['feature-objid'] }],
- ['Namn', 'OBJNAMN'],
- ['Fastighet', 'FASTBET', { classes: ['feature-objid'] }],
- ['Giltig från', 'DATSTART'],
- ['Giltig till', 'DATSLUT'],
- ['Diarienummer', 'DIARIENRNV', { classes: ['feature-attr-dnr'] }],
- ['Satus', 'STATUS'],
- ['Areal', 'geom_area', { fn: 'area' }],
+ { key: 'ID', desc: 'ID', classes: ['feature-objid'] },
+ { key: 'OBJNAMN', desc: 'Namn' },
+ { key: 'FASTBET', desc: 'Fastighet', classes: ['feature-objid'] },
+ { key: 'DATSTART', desc: 'Giltig från' },
+ { key: 'DATSLUT', desc: 'Giltig till' },
+ { key: 'DIARIENRNV', desc: 'Diarienummer', classes: ['feature-attr-dnr'] },
+ { key: 'STATUS', desc: 'Satus' },
+ fieldMap.geom_area,
],
- },
- naturvardsavtal_skogsstyrelsen: {
+ };
+})();
+
+(function() {
+ const fieldMap = mkFieldMap({
+ Beteckn: { desc: 'Ärendebeteckning', classes: ['feature-objid'] },
+ Biotyp: { desc: 'Biotopkategori' },
+ Naturtyp: { desc: 'Skogstyp' },
+ ArendeAr: { desc: 'Registeringsår' },
+ geom_area: { desc: 'Areal', fn: 'area' },
+ AreaProd: { desc: 'Skogsmarksareal', unit: 'ha' },
+ Datbeslut: { desc: 'Beslutsdatum' },
+ Url: { desc: 'Länk', fn: (v) => formatLink(v, 'Skogens Pärlor') },
+ NvaTyp: 'Biotopkategori',
+ DatAvtal: 'Avtalsdatum',
+ Undertyp: 'Undertyp',
+ AvtalatDatum: 'Avtalat datum',
+ Objnamn: 'Objektnamn',
+ Datinv: 'Datum för fältinventering',
+ });
+
+ LAYERS.skydd.skogligt_biotopskyddsomrade = {
+ title: 'Biotopskydd i skogsmark',
+ fields: mapFields(fieldMap, [
+ 'Beteckn',
+ 'Biotyp',
+ 'Naturtyp',
+ 'ArendeAr',
+ 'geom_area',
+ 'AreaProd',
+ 'Datbeslut',
+ 'Url',
+ ]),
+ };
+ LAYERS.skydd.naturvardsavtal_skogsstyrelsen = {
title: 'Naturvårdsavtal (Skogsstyrelsen)',
- fields: [
- ['Ärendebeteckning', 'Beteckn', { classes: ['feature-objid'] }],
- ['Registeringsår', 'ArendeAr'],
- ['Biotopkategori', 'NvaTyp'],
- ['Skogstyp', 'Naturtyp'],
- ['Avtalsdatum', 'DatAvtal'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Skogsmarksareal', 'AreaProd', { unit: 'ha' }],
- ['Länk', 'Url', { fn: function(v) {
- if (v == null | v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ['Undertyp', 'Undertyp'],
- ],
- },
- atervatningsavtal: {
+ fields: mapFields(fieldMap, [
+ 'Beteckn',
+ 'ArendeAr',
+ 'NvaTyp',
+ 'Naturtyp',
+ 'DatAvtal',
+ 'geom_area',
+ 'AreaProd',
+ 'Url',
+ 'Undertyp',
+ ]),
+ };
+
+ LAYERS.skydd.atervatningsavtal = {
title: 'Återvätningsavtal',
- fields: [
- ['Ärendebeteckning', 'Beteckn', { classes: ['feature-objid'] }],
- ['Ärendeår', 'ArendeAr'],
- ['Avtalat datum', 'AvtalatDatum'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Länk', 'Url', { fn: function(v) {
- if (v == null || v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ],
- },
-};
+ fields: mapFields(fieldMap, [
+ 'Beteckn',
+ 'ArendeAr',
+ 'AvtalatDatum',
+ 'geom_area',
+ 'Url',
+ ]),
+ };
-layers.nv = {
- naturvarde_sks: {
+ LAYERS.nv = {};
+ Object.assign(fieldMap, mkFieldMap(Object.fromEntries(
+ [1,2,3].map((i) => [`Biotop${i}`, `Biotoptyp #${i}`]).concat(
+ [1,2,3,4,5,6,7,8].map((i) => [`Beskrivn${i}`, `Nyckelord #${i} som beskriver objektet`])
+ ))));
+ LAYERS.nv.naturvarde_sks = {
title: 'Objekt med naturvärden (Skogsstyrelsen)',
- fields: [
- ['Ärendebeteckning', 'Beteckn', { classes: ['feature-objid'] }],
- ['Namn', 'Objnamn'],
- ['Datum för fältinventering', 'Datinv'],
- ['Biotoptyp #1', 'Biotop1'],
- ['Biotoptyp #2', 'Biotop2'],
- ['Biotoptyp #3', 'Biotop3'],
- ['Nyckelord #1 som beskriver objektet', 'Beskrivn1'],
- ['Nyckelord #2 som beskriver objektet', 'Beskrivn2'],
- ['Nyckelord #3 som beskriver objektet', 'Beskrivn3'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Länk', 'Url', { fn: function(v) {
- if (v == null || v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ],
- },
- nyckelbiotop: {
+ fields: mapFields(fieldMap, [
+ 'Beteckn',
+ 'Objnamn',
+ 'Datinv',
+ 'Biotop1', 'Biotop2', 'Biotop3',
+ 'Beskrivn1', 'Beskrivn2', 'Beskrivn3',
+ 'geom_area',
+ 'Url',
+ ]),
+ };
+ LAYERS.nv.nyckelbiotop = {
title: 'Nyckelbiotop (Skogsstyrelsen)',
- fields: [
- ['Ärendebeteckning', 'Beteckn', { classes: ['feature-objid'] }],
- ['Namn', 'Objnamn'],
- ['Datum för fältinventering', 'Datinv'],
- ['Biotoptyp #1', 'Biotop1'],
- ['Biotoptyp #2', 'Biotop2'],
- ['Biotoptyp #3', 'Biotop3'],
- ['Nyckelord #1 som beskriver objektet', 'Beskrivn1'],
- ['Nyckelord #2 som beskriver objektet', 'Beskrivn2'],
- ['Nyckelord #3 som beskriver objektet', 'Beskrivn3'],
- ['Nyckelord #4 som beskriver objektet', 'Beskrivn4'],
- ['Nyckelord #5 som beskriver objektet', 'Beskrivn5'],
- ['Nyckelord #6 som beskriver objektet', 'Beskrivn6'],
- ['Nyckelord #7 som beskriver objektet', 'Beskrivn7'],
- ['Nyckelord #8 som beskriver objektet', 'Beskrivn8'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Länk', 'Url', { fn: function(v) {
- if (v == null || v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ],
- },
- nyckelbiotop_storskogsbruk: {
+ fields: mapFields(fieldMap, [
+ 'Beteckn',
+ 'Objnamn',
+ 'Datinv',
+ 'Biotop1', 'Biotop2', 'Biotop3',
+ 'Beskrivn1', 'Beskrivn2', 'Beskrivn3', 'Beskrivn4', 'Beskrivn5', 'Beskrivn6', 'Beskrivn7', 'Beskrivn8',
+ 'geom_area',
+ 'Url',
+ ]),
+ };
+ LAYERS.nv.nyckelbiotop_storskogsbruk = {
title: 'Nyckelbiotop (storskogsbruket)',
fields: [
- ['Uppgifter lämnade av', 'Org'],
- ['Inkom datum', 'InkomDatum'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Länk', 'Url', { fn: function(v) {
- if (v == null || v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
+ { key: 'Org', desc: 'Uppgifter lämnade av' },
+ { key: 'InkomDatum', desc: 'Inkom datum' },
+ fieldMap.geom_area,
+ fieldMap.Url,
],
- },
- sumpskog: {
+ };
+
+ LAYERS.nv.sumpskog = {
title: 'Sumpskog',
fields: [
- ['Objektnamn', 'Namn'],
- ['Skogstyp', 'Tradtext'],
- ['Hydrologisk typ', 'Hydrtext'],
- ['Klass på delobjektet', 'Delklass'],
- ['Klass på objektet', 'Klassu'],
- ['Andel löv', 'Lovandel'],
- ['Andel öppet vatten', 'Andelva'],
- ['Krontäckning', 'Krontakn'],
- ['Huggningsklass', 'Huggklas'],
- ['Ingrepp på delobjekt (max 4)', 'Ingrepp'],
- ['Grad av påverkan på delobjekt (max 4)', 'Ingrpavv'],
- ['Nyckelord på objektnivå', 'Objnyck'],
- ['Nyckelord på delobjektsnivå', 'Delnyck'],
- ['Flygbildsår', 'Flygar'],
- ['Datum för fältbesök', 'Faltdat'],
- ['Inventeringsteknik', 'Invtekn'],
- ['Inventeringdatum', 'Invdat'],
- ['Ansvarig myndighet', 'Ansvmynd'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Länk', 'Url', { fn: function(v) {
- if (v == null || v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ],
- },
- pagaende_naturreservatsbildning: {
- title: 'Pågående naturreservatsbildning',
- fields: [
- ['Objektnamn', 'NAMN'],
- ['Senast justerat', 'GRANSJUST'], /* XXX unclear what "GRANSJUST" means, just a guess */
- ['Areal', 'geom_area', { fn: 'area' }],
+ { key: 'Namn', desc: 'Objektnamn' },
+ { key: 'Tradtext', desc: 'Skogstyp' },
+ { key: 'Hydrtext', desc: 'Hydrologisk typ' },
+ { key: 'Delklass', desc: 'Klass på delobjektet' },
+ { key: 'Klassu', desc: 'Klass på objektet' },
+ { key: 'Lovandel', desc: 'Andel löv' },
+ { key: 'Andelva', desc: 'Andel öppet vatten' },
+ { key: 'Krontakn', desc: 'Krontäckning' },
+ { key: 'Huggklas', desc: 'Huggningsklass' },
+ { key: 'Ingrepp', desc: 'Ingrepp på delobjekt (max 4)' },
+ { key: 'Ingrpavv', desc: 'Grad av påverkan på delobjekt (max 4)' },
+ { key: 'Objnyck', desc: 'Nyckelord på objektnivå' },
+ { key: 'Delnyck', desc: 'Nyckelord på delobjektsnivå' },
+ { key: 'Flygar', desc: 'Flygbildsår' },
+ { key: 'Faltdat', desc: 'Datum för fältbesök' },
+ { key: 'Invtekn', desc: 'Inventeringsteknik' },
+ { key: 'Invdat', desc: 'Inventeringdatum' },
+ { key: 'Ansvmynd', desc: 'Ansvarig myndighet' },
+ fieldMap.geom_area,
+ fieldMap.Url,
],
- },
- snus: {
- title: 'Skyddsvärd statlig skog',
- fields: [
- ['Objektnamn', 'NAMN'],
- ['År', 'AR'],
- ['Naturgeografisk region', 'NATURGEOGR', { classes: ['feature-objid'] }],
- ['Objektskategori', 'OBJEKTKATE', { classes: ['feature-objid'] }],
- ['Markägare', 'MARKAGARE'],
- ['Areal värdekärna', 'VARDEKARNA', { unit: 'ha' }],
- ['Areal utvecklingsmark', 'UTV_MARK', { unit: 'ha' }],
- ['Totalareal', 'TOTAL_AREA', { unit: 'ha' }],
- ['Areal land', 'LAND', { unit: 'ha' }],
- ['Areal vatten', 'VATTEN', { unit: 'ha' }],
- ['Areal produktiv skogsmark', 'PROD_SKOG', { unit: 'ha' }],
- ['Areal produktiv skogsmark ovanför fjällnära gräns', 'SKOG_O_FJG', { unit: 'ha' }],
- ['Areal produktiv skogsmark nedanför fjällnära gräns', 'SKOG_N_FJG', { unit: 'ha' }],
- ['Areal skyddszon', 'SKYDDSZON', { unit: 'ha' }],
- ['Areal arronderingsmark', 'ARRO_MARK', { unit: 'ha' }],
- ['Kriterier för urval', 'KRITERIER'],
- ['Beskrivning av området', 'BESKRIVN'],
- ['Länsstyrelsens bedömning', 'LST_BEDOMN'],
- ['Källor', 'KALLOR'],
- ],
- },
+ };
+})();
+
+LAYERS.nv.pagaende_naturreservatsbildning = {
+ title: 'Pågående naturreservatsbildning',
+ fields: [
+ { key: 'NAMN', desc: 'Objektnamn' },
+ /* XXX unclear what "GRANSJUST" means, just a guess */
+ { key: 'GRANSJUST', desc: 'Senast justerat' },
+ { key: 'geom_area', desc: 'Areal', fn: 'area' },
+ ],
+};
+
+LAYERS.nv.snus = {
+ title: 'Skyddsvärd statlig skog',
+ fields: [
+ { key: 'NAMN', desc: 'Objektnamn' },
+ { key: 'AR', desc: 'År' },
+ { key: 'NATURGEOGR', desc: 'Naturgeografisk region', classes: ['feature-objid'] },
+ { key: 'OBJEKTKATE', desc: 'Objektskategori', classes: ['feature-objid'] },
+ { key: 'MARKAGARE', desc: 'Markägare' },
+ { key: 'VARDEKARNA', desc: 'Areal värdekärna', unit: 'ha' },
+ { key: 'UTV_MARK', desc: 'Areal utvecklingsmark', unit: 'ha' },
+ { key: 'TOTAL_AREA', desc: 'Totalareal', unit: 'ha' },
+ { key: 'LAND', desc: 'Areal land', unit: 'ha' },
+ { key: 'VATTEN', desc: 'Areal vatten', unit: 'ha' },
+ { key: 'PROD_SKOG', desc: 'Areal produktiv skogsmark', unit: 'ha' },
+ { key: 'SKOG_O_FJG', desc: 'Areal produktiv skogsmark ovanför fjällnära gräns', unit: 'ha' },
+ { key: 'SKOG_N_FJG', desc: 'Areal produktiv skogsmark nedanför fjällnära gräns', unit: 'ha' },
+ { key: 'SKYDDSZON', desc: 'Areal skyddszon', unit: 'ha' },
+ { key: 'ARRO_MARK', desc: 'Areal arronderingsmark', unit: 'ha' },
+ { key: 'KRITERIER', desc: 'Kriterier för urval' },
+ { key: 'BESKRIVN', desc: 'Beskrivning av området' },
+ { key: 'LST_BEDOMN', desc: 'Länsstyrelsens bedömning' },
+ { key: 'KALLOR', desc: 'Källor' },
+ ],
};
-layers.ri = {
- naturvard: {
+LAYERS.ri = {};
+(function() {
+ const fieldMap = mkFieldMap({
+ NAMN: 'Namn',
+ SKYDD: 'Skydd',
+ AMNESOMRAD: 'Ämnesområde',
+ AMNESOMR: 'Ämnesområde',
+ OMRADESNR: { desc: 'Områdesnummer', classes: ['feature-objid'] },
+ BESKRIVNIN: { desc: 'Beskrivning', fn: formatLink },
+ LANK_VARDE: { desc: 'Länk värdebeskrivning', fn: formatLink },
+ LAGRUM: 'Lagrum',
+ BESLUTSDAT: 'Beslutsdatum',
+ BESLDATUM: 'Beslutsdatum',
+ ARENDENR: { desc: 'Ärendenummer', classes: ['feature-attr-dnr'] },
+ LANK_BESLU: { desc: 'Länk beslut', fn: formatLink },
+ AKTIVITET: 'Aktivitet',
+ NATURTYP: 'Naturtyp',
+ ORGINALID: { desc: 'Original-ID', classes: ['feature-objid'] },
+ RIKSID: { desc: 'Riks-ID', classes: ['feature-objid'] },
+ geom_area: { desc: 'Areal', fn: 'area' },
+ AREA_LAND_: { desc: 'Areal land', unit: 'ha' },
+ AREA_VATTE: { desc: 'Areal vatten', unit: 'ha' },
+ });
+ LAYERS.ri.naturvard = {
title: 'Riksintresse naturvård',
- fields: [
- ['Namn', 'NAMN'],
- ['Skydd', 'SKYDD'],
- ['Ämnesområde', 'AMNESOMRAD'],
- ['Beskrivning', 'BESKRIVNIN', { fn: function(v) {
- if (v == null || !(v.startsWith('http://') || v.startsWith('https://'))) {
- return v;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ['Lagrum', 'LAGRUM'],
- ['Beslutsdatum', 'BESLUTSDAT'],
- ['Original-ID', 'ORGINALID', { classes: ['feature-objid'] }],
- ['Riks-ID', 'RIKSID', { classes: ['feature-objid'] }],
- ['Areal', 'geom_area', { fn: 'area' }],
- ],
- },
- friluftsliv: {
+ fields: mapFields(fieldMap, [
+ 'NAMN',
+ 'SKYDD',
+ 'AMNESOMRAD',
+ 'BESKRIVNIN',
+ 'LAGRUM',
+ 'BESLUTSDAT',
+ 'ORGINALID',
+ 'RIKSID',
+ 'geom_area',
+ ]),
+ };
+ LAYERS.ri.friluftsliv = {
title: 'Riksintresse friluftsliv',
- fields: [
- ['Namn', 'NAMN'],
- ['Skydd', 'SKYDD'],
- ['Ämnesområde', 'AMNESOMR'],
- ['Områdesnummer', 'OMRADESNR', { classes: ['feature-objid'] }],
- ['Länk värdebeskrivning', 'LANK_VARDE', { fn: function(v) {
- if (v == null | v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ['Lagrum', 'LAGRUM'],
- ['Beslutsdatum', 'BESLDATUM'],
- ['Ärendenummer', 'ARENDENR', { classes: ['feature-attr-dnr'] }],
- ['Länk, beslut', 'LANK_BESLU', { fn: function(v) {
- if (v == null | v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ['Aktivitet', 'AKTIVITET'],
- ['Naturtyp', 'NATURTYP'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Areal land', 'AREA_LAND_', { unit: 'ha' }],
- ['Areal vatten', 'AREA_VATTE', { unit: 'ha' }],
- ],
- },
- rorligt_friluftsliv: {
- title: 'Riksintresse rörligt friluftsliv (MB 4 kap 1§ och 2§)',
- fields: [
- ['Namn', 'NAMN'],
- //['Original-ID', 'ORIGINALID', { classes: ['feature-objid'] }],
- ['Beskrivning', 'BESKRIVNIN'],
- //['Metodbeskrivning', 'METODBESKR'],
- //['Tillk. datum', 'TILLKDATUM'],
- //['Rev. datum', 'REVDATUM'],
- ['Anmärkning', 'ANM'],
- ['Länk', 'OBJEKTLANK', { fn: function(v) {
- if (v == null || v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Referens', 'REFERENS'],
- ],
- },
- obruten_kust: {
- title: 'Riksintresse obruten kust (MB 4 kap 3§)',
- fields: [
- ['Namn', 'NAMN'],
- //['Original-ID', 'ORIGINALID', { classes: ['feature-objid'] }],
- ['Beskrivning', 'BESKRIVNIN'],
- //['Metodbeskrivning', 'METODBESKR'],
- //['Tillk. datum', 'TILLKDATUM'],
- //['Rev. datum', 'REVDATUM'],
- ['Anmärkning', 'ANM'],
- ['Objekttyp', 'OBJTYP'],
- ['Länk', 'OBJEKTLANK', { fn: function(v) {
- if (v == null || v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Referens', 'REFERENS'],
- ],
- },
- obrutet_fjall: {
- title: 'Riksintresse obrutet fjäll (MB 4 kap 5§)',
- fields: [
- ['Namn', 'NAMN'],
- //['Original-ID', 'ORIGINALID', { classes: ['feature-objid'] }],
- ['Beskrivning', 'BESKRIVNIN'],
- ['Metodbeskrivning', 'METODBESKR'],
- ['Tillk. datum', 'TILLKDATUM'],
- //['Rev. datum', 'REVDATUM'],
- ['Länk', 'OBJEKTLANK', { fn: function(v) {
- if (v == null || v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Referens', 'REFERENS'],
- ],
- },
- skyddade_vattendrag: {
- title: 'Riksintresse skyddade vattendrag (MB 4 kap 6§)',
- fields: [
- ['Namn', 'NAMN'],
- //['Original-ID', 'ORIGINALID', { classes: ['feature-objid'] }],
- ['Beskrivning', 'BESKRIVNIN'],
- ['Metodbeskrivning', 'METODBESKR'],
- ['Tillk. datum', 'TILLKDATUM'],
- ['Rev. datum', 'REVDATUM'],
- ['Anmärkning', 'ANM'],
- ['Digitaliseringsskala', 'DIG_SKALA'],
- ['Länk', 'OBJEKTLANK', { fn: function(v) {
- if (v == null || v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
- ['Areal', 'geom_area', { fn: 'area' }],
- ['Referens', 'REFERENS'],
- ],
- },
-};
+ fields: mapFields(fieldMap, [
+ 'NAMN',
+ 'SKYDD',
+ 'AMNESOMR',
+ 'OMRADESNR',
+ 'LANK_VARDE',
+ 'LAGRUM',
+ 'BESLDATUM',
+ 'ARENDENR',
+ 'LANK_BESLU',
+ 'AKTIVITET',
+ 'NATURTYP',
+ 'geom_area',
+ 'AREA_LAND_',
+ 'AREA_VATTE',
+ ]),
+ };
-layers.ren = {
+ Object.assign(fieldMap, mkFieldMap({
+ METODBESKR: 'Metodbeskrivning',
+ TILLKDATUM: 'Tillkomstdatum',
+ REVDATUM: 'Revisionsdatum',
+ ANM: 'Anmärkning',
+ OBJEKTLANK: { desc: 'Objektlänk', fn: formatLink },
+ REFERENS: 'Referens',
+ OBJTYP: 'Objekttyp',
+ ORIGINALID: fieldMap.ORGINALID,
+ DIG_SKALA: { desc: 'Digitaliseringsskala', fn: (v) => v > 0 ? v : null },
+ }));
+ [
+ ['rorligt_friluftsliv', /* 0 */ 'rörligt friluftsliv (MB 4 kap 1§ och 2§)'],
+ ['obruten_kust', /* 1 */ 'obruten kust (MB 4 kap 3§)'],
+ ['obrutet_fjall', /* 2 */ 'obrutet fjäll (MB 4 kap 5§)'],
+ ['skyddade_vattendrag', /* 3 */ 'skyddade vattendrag (MB 4 kap 6§)'],
+ ]
+ .forEach(([k, title], idx) => LAYERS.ri[k] = {
+ title: 'Riksintresse ' + title,
+ fields: mapFields(idx, fieldMap, [
+ 'NAMN',
+ 'BESKRIVNIN',
+ 'METODBESKR',
+ 'TILLKDATUM',
+ 'REVDATUM',
+ ['OBJTYP', [1]],
+ ['ANM', [0,1,3]],
+ ['DIG_SKALA', [3]],
+ 'OBJEKTLANK',
+ 'geom_area',
+ 'ORIGINALID',
+ 'REFERENS',
+ ]),
+ });
+})();
+
+
+LAYERS.ren = {
betesomrade: {
title: 'Samebyarnas betesområde',
fields: [
- ['Sameby', 'NAMN'],
- ['Samebys typ', 'SAMEBY_TYP'],
- ['Signatur', 'SIGNATUR'],
- ['Aktualitet', 'AKTUALITET'],
+ { key: 'NAMN', desc: 'Sameby' },
+ { key: 'SAMEBY_TYP', desc: 'Samebys typ' },
+ { key: 'SIGNATUR', desc: 'Signatur' },
+ { key: 'AKTUALITET', desc: 'Aktualitet' },
+ { key: 'geom_area', desc: 'Areal', fn: 'area' },
],
},
flyttled: {
title: 'Samebyarnas markanvändningsredovisning \u2013 flyttled',
fields: [
- ['Led-ID', 'LED_ID', { classes: ['feature-objid'], fn: (v) => v === 0 ? '' : v }],
- ['Sameby #1', 'SAMEBY1'],
- ['Sameby #2', 'SAMEBY2'],
- ['Sameby #3', 'SAMEBY3'],
- ['Beskrivning', 'BESKRIVNIN'],
- ['Årstid', 'ARSTID'],
- ['Riksintresse', 'RIKSINTR'],
- ['Fast led', 'FAST_LED'],
- ['Aktualitet', 'AKTUALITET'],
- ['Signatur', 'SIGNATUR'],
- ['Ledlängd', 'geom_length', { fn: 'length' }],
+ { key: 'LED_ID', desc: 'Led-ID', classes: ['feature-objid'], fn: (v) => v > 0 ? v : null },
+ { key: 'SAMEBY1', desc: 'Sameby #1' },
+ { key: 'SAMEBY2', desc: 'Sameby #2' },
+ { key: 'SAMEBY3', desc: 'Sameby #3' },
+ { key: 'BESKRIVNIN', desc: 'Beskrivning' },
+ { key: 'ARSTID', desc: 'Årstid' },
+ { key: 'RIKSINTR', desc: 'Riksintresse' },
+ { key: 'FAST_LED', desc: 'Fast led' },
+ { key: 'AKTUALITET', desc: 'Aktualitet' },
+ { key: 'SIGNATUR', desc: 'Signatur' },
+ { key: 'geom_length', desc: 'Ledlängd', fn: 'length' },
],
},
riks_ren: {
title: 'Riksintresse rennäring',
fields: [
- ['Lagrum', 'LAGRUM'],
- ['Aktualitet', 'AKTUALITET'],
- ['Signatur', 'SIGNATUR'],
- ['Areal', 'geom_area', { fn: 'area' }],
+ { key: 'LAGRUM', desc: 'Lagrum' },
+ { key: 'AKTUALITET', desc: 'Aktualitet' },
+ { key: 'SIGNATUR', desc: 'Signatur' },
+ { key: 'geom_area', desc: 'Areal', fn: 'area' },
],
},
omr_riks: {
title: '(Kärn)områden av riksintresse rennäring',
fields: [
- ['Områdes-ID', 'OMR_NR', { classes: ['feature-objid'] }],
- ['Länk', 'LANK'],
- ['Årets runt', 'ARET_RUNT'],
- ['Sameby', 'SAMEBY'],
- ['Ansvarig', 'ANSVARIG'],
- ['Aktualitet', 'AKTUALITET'],
- ['Signatur', 'SIGNATUR'],
- ['Areal', 'geom_area', { fn: 'area' }],
- ],
- },
-};
-
-layers.misc = {
- /* Documentation at
- * https://www.smhi.se/polopoly_fs/1.34541!/dammprod%202013_3%2C%20beskrivning%2C%20SVAR2012_2.pdf
- * */
- dammar: {
- title: 'Damm',
- fields: [
- ['Dammenhetens namn', 'DNamn'],
- ['Dammanläggningens namn', 'Namn'],
- ['Länsnr', 'LST_OBJID', { classes: ['feature-objid'] }],
- ['Status', 'Status', { fn: (v) => v === 1 ? 'Befintlig damm' : v === 2 ? 'Fd. damm' : '' }],
- //['Regleringstyp', 'Regleringstyp'],
- ['Byggår', 'ByggAr'],
- ['Dammhöjd', 'DammHojd', { unit: 'm' }],
- ['Krönlängd', 'KronLangd', { unit: 'm' }],
- ['Fiskväg', 'Fiskvag', { fn: (v) =>
- v === 1 ? 'Bassängtrappa' :
- v === 2 ? 'Denilränna' :
- v === 3 ? 'Slitsränna' :
- v === 4 ? 'Omlöp' :
- v === 5 ? 'Inlöp' :
- v === 6 ? 'Ålledare' :
- v === 7 ? 'Smoltränna' :
- v === 8 ? 'Okänd typ' :
- v === 9 ? 'Ingen' :
- v === 10 ? 'Annan' :
- '' }],
- ['Huvudavrinningsområdesnummer', 'HARO', { classes: ['feature-objid'] } ],
- ['Vattendistrikt', 'Vattendistrikt', { classes: ['feature-objid'] } ],
- ['Verksamhet', 'Verksamhet', { fn: (v) =>
- v === 1 ? 'Kraftproduktion' :
- v === 2 ? 'Industri' :
- v === 3 ? 'Sjöfart' :
- v === 4 ? 'Invallning' :
- v === 5 ? 'Vattenförsörjning' :
- v === 6 ? 'Spegeldamm' :
- v === 7 ? 'Historisk' :
- v === 8 ? 'Övrigt' :
- '' }],
- ['Högsta dämningsgräns', 'DG', { unit: 'm' }],
- ['Lägsta sänkningsgräns', 'SG', { unit: 'm' }],
- ['Magasinsyta', 'MY', { unit: 'km²' }],
- ['Reglerbar volym', 'RV', { unit: 'Mm³' }],
- ['Kommentar', 'Kommentar'],
- ],
- },
-
- gigafactories: {
- title: 'Stor industrisatsning',
- fields: [
- ['Namn', 'Name'],
- ['Länk', 'Url', { fn: function(v) {
- if (v == null | v === '') {
- return;
- }
- const a = document.createElement('a');
- a.href = v;
- a.target = '_blank';
- const i = document.createElement('i');
- i.classList.add('bi', 'bi-box-arrow-up-right');
- a.appendChild(i);
- return a;
- }}],
+ { key: 'OMR_NR', desc: 'Områdes-ID', classes: ['feature-objid'] },
+ { key: 'LANK', desc: 'Länk' },
+ { key: 'ARET_RUNT', desc: 'Årets runt' },
+ { key: 'SAMEBY', desc: 'Sameby' },
+ { key: 'ANSVARIG', desc: 'Ansvarig' },
+ { key: 'AKTUALITET', desc: 'Aktualitet' },
+ { key: 'SIGNATUR', desc: 'Signatur' },
+ { key: 'geom_area', desc: 'Areal', fn: 'area' },
],
},
};
@@ -1650,24 +955,24 @@ const formatFeaturePropertiesToHTML = function(properties) {
const tbody = document.createElement('tbody');
table.appendChild(tbody);
- const def = layers[properties.layer_group][properties.layer];
- def.fields.forEach(function([desc, key, opts]) {
+ const def = LAYERS[properties.layer_group][properties.layer];
+ def.fields.forEach(function(field) {
const tr = document.createElement('tr');
tbody.appendChild(tr);
const th = document.createElement('th');
th.setAttribute('scope', 'row');
tr.appendChild(th);
- const textDesc = document.createTextNode(desc);
+ const textDesc = document.createTextNode(field.desc);
th.appendChild(textDesc);
const td = document.createElement('td');
tr.appendChild(td);
- const v = formatValue(properties[key], opts);
+ const v = formatValue(properties[field.key], field);
if (v != null) {
td.appendChild(v);
}
- opts?.classes?.forEach?.((c) => td.classList.add(c));
+ field.classes?.forEach?.((c) => td.classList.add(c));
});
const content = document.createElement('div');
@@ -1927,7 +1232,7 @@ export const initPopover = function(map) {
const layerGroup = layer.get('layerGroup');
const layerName = feature.getProperties().layer;
mapSources[layerGroup] ??= layer.getSource();
- const def = layerName != null ? layers[layerGroup][layerName] : null;
+ const def = layerName != null ? LAYERS[layerGroup][layerName] : null;
if (def?.fields == null) {
/* skip layers which didn't opt-in for popover */
return false;