diff options
| -rw-r--r-- | index.html | 8 | ||||
| -rw-r--r-- | main.js | 374 | 
2 files changed, 381 insertions, 1 deletions
@@ -37,7 +37,7 @@                  <a href="https://www.energimyndigheten.se/energisystem-och-analys/elproduktion/vindkraft/vindbrukskollen/" target="_blank">Länsstyrelserna och Energimyndigheten</a>,                  CC0 (<a href="https://ext-geodatakatalog-forv.lansstyrelsen.se/GeodataKatalogen/codelist/metadata/anvandningsrestriktioner.xml#CC01.0" target="_blank">öppna data</a>).                </li> -              <li><i>Skogsbruk</i>, <i>Skogligt biotopskyddsområden</i> och <i>Naturvårdsavtal</i> från +              <li><i>Skogsbruk</i>, <i>Skogliga biotopskyddsområden</i> och <i>Naturvårdsavtal</i> från                  <a href="https://skogsstyrelsen.se" target="_blank">Skogsstyrelsen</a>,                  CC0 (<a href="https://www.skogsstyrelsen.se/sjalvservice/karttjanster/geodatatjanster/villkor-for-nyttjande-av-skogsstyrelsens-kartdatabaser/" target="_blank">öppna data</a>).                </li> @@ -45,6 +45,12 @@                  <a href="https://www.naturvardsverket.se/" target="_blank">Naturvårdsverket</a>,                  CC0 (<a href="https://geodata.naturvardsverket.se/nedladdning/naturvardsregistret/Naturvardsregistret_beskrivning_av_oppna_data.pdf" target="_blank">öppna data</a>).                </li> +              <li><i>Riksintresse naturvård</i> och <i>frilufsliv</i> från +                <a href="https://www.naturvardsverket.se/" target="_blank">Naturvårdsverket</a> +                och +                <a href="https://www.lansstyrelsen.se/" target="_blank">Länsstyrelsen</a>, +                CC-BY-4.0 (<a href="https://ext-geodatakatalog-forv.lansstyrelsen.se/GeodataKatalogen/codelist/metadata/anvandningsrestriktioner.xml#CCby4.0" target="_blank">öppna data</a>). +              </li>                <li><i>Riksintresse Rennäringen</i> skikt från                  <a href="https://sametinget.se" target="_blank">Sametinget</a>,                  CC-BY-4.0 (<a href="https://ext-geodatakatalog-forv.lansstyrelsen.se/GeodataKatalogen/codelist/metadata/anvandningsrestriktioner.xml#CCby4.0" target="_blank">öppna data</a>). @@ -2335,6 +2335,351 @@ const layers = {        }),    }, +  ri_naturvard: { +    popoverTitle: 'Riksintresse naturvård', +    popover: [ +      ['Namn', 'NAMN'], +      ['Skydd', 'SKYDD'], +      ['Ämnesområde', 'AMNESOMRAD'], +      ['Beskrivning', 'BESKRIVNIN', { fn: function(v) { +        if (v === undefined || 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', 'GeomArea', { fn: 'area' }], +    ], +    style: [8, 16, 32, 32, 64, 64, 128, 128, 128, 256, 256, 256].map(function(width, z) { +        const patternCanvas = document.createElement('canvas'); +        const patternContext = patternCanvas.getContext('2d'); +        patternCanvas.width = width; +        patternCanvas.height = patternCanvas.width; +        patternContext.fillStyle = 'transparent'; +        patternContext.strokeStyle = 'rgba(154, 230, 0, 1)'; +        patternContext.lineWidth = z < 4 ? .5 : z <= 5 ? 1 : 2; +        patternContext.beginPath(); +        patternContext.moveTo(0, 0); +        patternContext.lineTo(patternCanvas.width, patternCanvas.height); +        patternContext.stroke(); +        patternContext.moveTo(0, -patternCanvas.height); +        patternContext.lineTo(2*patternCanvas.width, patternCanvas.height); +        patternContext.stroke(); +        patternContext.moveTo(-patternCanvas.width, 0); +        patternContext.lineTo(patternCanvas.width, 2*patternCanvas.height); +        patternContext.stroke(); + +        const canvas = document.createElement('canvas'); +        const context = canvas.getContext('2d'); +        return new Style({ +          zIndex: 8, +          fill: new Fill({ +            color: context.createPattern(patternCanvas, 'repeat'), +          }), +          stroke: width === 0 ? undefined : new Stroke({ +            width: z < 2 ? 1 : z < 4 ? 2 : z <= 5 ? 4 : 8, +            color: [154, 230, 0, 1], +          }), +        }); +      }), +  }, +  ri_friluftsliv: { +    popoverTitle: 'Riksintresse friluftsliv', +    popover: [ +      ['Namn', 'NAMN'], +      ['Skydd', 'SKYDD'], +      ['Ämnesområde', 'AMNESOMR'], +      ['Områdesnummer', 'OMRADESNR', { classes: ['feature-objid'] }], +      ['Länk värdebeskrivning', 'LANK_VARDE', { 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; +      }}], +      ['Lagrum', 'LAGRUM'], +      ['Beslutsdatum', 'BESLDATUM'], +      ['Ärendenummer', 'ARENDENR', { classes: ['feature-attr-dnr'] }], +      ['Länk, beslut', 'LANK_BESLU', { 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; +      }}], +      ['Aktivitet', 'AKTIVITET'], +      ['Naturtyp', 'NATURTYP'], +      ['Areal', 'GeomArea', { fn: 'area' }], +      ['Areal land', 'AREA_LAND_', { unit: 'ha' }], +      ['Areal vatten', 'AREA_VATTE', { unit: 'ha' }], +    ], +    style: [8, 16, 32, 32, 64, 64, 128, 128, 128, 256, 256, 256].map(function(width, z) { +        const patternCanvas = document.createElement('canvas'); +        const patternContext = patternCanvas.getContext('2d'); +        patternCanvas.width = width; +        patternCanvas.height = patternCanvas.width; +        patternContext.fillStyle = 'transparent'; +        patternContext.strokeStyle = 'rgba(0, 127, 232, 1)'; +        patternContext.lineWidth = z < 4 ? .5 : z <= 5 ? 1 : 2; +        patternContext.beginPath(); +        patternContext.moveTo(0, 0); +        patternContext.lineTo(patternCanvas.width, patternCanvas.height); +        patternContext.stroke(); +        patternContext.moveTo(0, -patternCanvas.height); +        patternContext.lineTo(2*patternCanvas.width, patternCanvas.height); +        patternContext.stroke(); +        patternContext.moveTo(-patternCanvas.width, 0); +        patternContext.lineTo(patternCanvas.width, 2*patternCanvas.height); +        patternContext.stroke(); + +        const canvas = document.createElement('canvas'); +        const context = canvas.getContext('2d'); +        return new Style({ +          zIndex: 8, +          fill: new Fill({ +            color: context.createPattern(patternCanvas, 'repeat'), +          }), +          stroke: width === 0 ? undefined : new Stroke({ +            width: z < 2 ? 1 : z < 4 ? 2 : z <= 5 ? 4 : 8, +            color: [0, 127, 232, 1], +          }), +        }); +      }), +  }, +  ri_rorligt_friluftsliv: { +    popoverTitle: 'Riksintresse rörligt friluftsliv (MB 4 kap 1§ och 2§)', +    popover: [ +      ['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) { +          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', 'GeomArea', { fn: 'area' }], +      ['Referens', 'REFERENS'], +    ], +    style: [8, 16, 32, 32, 64, 64, 128, 128, 128, 256, 256, 256].map(function(width, z) { +        const patternCanvas = document.createElement('canvas'); +        const patternContext = patternCanvas.getContext('2d'); +        patternCanvas.width = width; +        patternCanvas.height = patternCanvas.width; +        patternContext.fillStyle = 'rgba(187, 227, 212, .25)'; +        patternContext.fillRect(0, 0, patternCanvas.width, patternCanvas.height); +        patternContext.strokeStyle = 'rgba(56, 151, 117, 1)'; +        patternContext.lineWidth = z < 4 ? .5 : z <= 5 ? 1 : 2; +        patternContext.beginPath(); +        patternContext.moveTo(0, patternCanvas.height); +        patternContext.lineTo(patternCanvas.width, 0); +        patternContext.stroke(); +        patternContext.moveTo(-patternCanvas.width, patternCanvas.height); +        patternContext.lineTo(patternCanvas.width, -patternCanvas.height); +        patternContext.stroke(); +        patternContext.moveTo(0, 2*patternCanvas.height); +        patternContext.lineTo(2*patternCanvas.width, 0); +        patternContext.stroke(); + +        const canvas = document.createElement('canvas'); +        const context = canvas.getContext('2d'); +        return new Style({ +          zIndex: 8, +          fill: new Fill({ +            color: context.createPattern(patternCanvas, 'repeat'), +          }), +          stroke: width === 0 ? undefined : new Stroke({ +            width: z < 2 ? 2 : z < 4 ? 4 : z <= 5 ? 8 : 16, +            color: [56, 151, 117, 1], +            lineDash: [width/4, width/3], +          }), +        }); +      }), +  }, +  ri_obruten_kust: { +    popoverTitle: 'Riksintresse obruten kust (MB 4 kap 3§)', +    popover: [ +      ['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) { +          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', 'GeomArea', { fn: 'area' }], +      ['Referens', 'REFERENS'], +    ], +    style: [8, 16, 32, 32, 64, 64, 128, 128, 128, 256, 256, 256].map(function(width, z) { +        const patternCanvas = document.createElement('canvas'); +        const patternContext = patternCanvas.getContext('2d'); +        patternCanvas.width = width; +        patternCanvas.height = patternCanvas.width; +        patternContext.fillStyle = 'rgba(227, 227, 187, .25)'; +        patternContext.fillRect(0, 0, patternCanvas.width, patternCanvas.height); +        patternContext.strokeStyle = 'rgba(156, 158, 56, 1)'; +        patternContext.lineWidth = z < 4 ? .5 : z <= 5 ? 1 : 2; +        patternContext.beginPath(); +        patternContext.moveTo(0, 0); +        patternContext.lineTo(patternCanvas.width, patternCanvas.height); +        patternContext.stroke(); +        patternContext.moveTo(0, -patternCanvas.height); +        patternContext.lineTo(2*patternCanvas.width, patternCanvas.height); +        patternContext.stroke(); +        patternContext.moveTo(-patternCanvas.width, 0); +        patternContext.lineTo(patternCanvas.width, 2*patternCanvas.height); +        patternContext.stroke(); + +        const canvas = document.createElement('canvas'); +        const context = canvas.getContext('2d'); +        return new Style({ +          zIndex: 8, +          fill: new Fill({ +            color: context.createPattern(patternCanvas, 'repeat'), +          }), +          stroke: width === 0 ? undefined : new Stroke({ +            width: z < 2 ? 2 : z < 4 ? 4 : z <= 5 ? 8 : 16, +            color: [156, 158, 56, 1], +            lineDash: [width/4, width/3], +          }), +        }); +      }), +  }, +  ri_obrutet_fjall: { +    popoverTitle: 'Riksintresse obrutet fjäll (MB 4 kap 5§)', +    popover: [ +      ['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) { +          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', 'GeomArea', { fn: 'area' }], +      ['Referens', 'REFERENS'], +    ], +    style: [8, 16, 32, 32, 64, 64, 128, 128, 128, 256, 256, 256].map(function(width, z) { +        const patternCanvas = document.createElement('canvas'); +        const patternContext = patternCanvas.getContext('2d'); +        patternCanvas.width = width; +        patternCanvas.height = patternCanvas.width; +        patternContext.fillStyle = 'rgba(255, 255, 209, .25)'; +        patternContext.fillRect(0, 0, patternCanvas.width, patternCanvas.height); +        patternContext.strokeStyle = 'rgba(219, 183, 60, 1)'; +        patternContext.lineWidth = z < 4 ? .5 : z <= 5 ? 1 : 2; +        patternContext.beginPath(); +        patternContext.moveTo(0, 0); +        patternContext.lineTo(patternCanvas.width, patternCanvas.height); +        patternContext.stroke(); +        patternContext.moveTo(0, -patternCanvas.height); +        patternContext.lineTo(2*patternCanvas.width, patternCanvas.height); +        patternContext.stroke(); +        patternContext.moveTo(-patternCanvas.width, 0); +        patternContext.lineTo(patternCanvas.width, 2*patternCanvas.height); +        patternContext.stroke(); + +        const canvas = document.createElement('canvas'); +        const context = canvas.getContext('2d'); +        return new Style({ +          zIndex: 8, +          fill: new Fill({ +            color: context.createPattern(patternCanvas, 'repeat'), +          }), +          stroke: width === 0 ? undefined : new Stroke({ +            width: z < 2 ? 2 : z < 4 ? 4 : z <= 5 ? 8 : 16, +            color: [219, 183, 60, 1], +            lineDash: [width/4, width/3], +          }), +        }); +      }), +  }, +  ri_skyddade_vattendrag: { +    popoverTitle: 'Riksintresse skyddade vattendrag (MB 4 kap 6§)', +    popover: [ +      ['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) { +          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', 'GeomArea', { fn: 'area' }], +      ['Referens', 'REFERENS'], +    ], +    style: [8, 16, 32, 32, 64, 64, 128, 128, 128, 256, 256, 256].map(function(width, z) { +      return new Style({ +        zIndex: 8, +        fill: new Fill({ +          color: [102, 157, 240, .25], +        }), +        stroke: width === 0 ? undefined : new Stroke({ +          width: z < 2 ? 2 : z < 4 ? 4 : z <= 5 ? 8 : 16, +          color: [41, 109, 197, 1], +          lineDash: [width/4, width/3], +        }), +      }); +    }), +  }, +    ren_betesomraden: {      popoverTitle: 'Samebyarnas betesområde',      popover: [ @@ -2806,6 +3151,35 @@ const layerHierarchy = [      ]    },    { +    text: 'Riksintressen, naturvård och friluftsliv', +    children: [ +      { +        text: 'Naturvård', +        layer: 'ri_naturvard', +      }, +      { +        text: 'Friluftsliv', +        layer: 'ri_friluftsliv', +      }, +      { +        text: 'Rörligt friluftsliv', +        layer: 'ri_rorligt_friluftsliv', +      }, +      { +        text: 'Obruten kust', +        layer: 'ri_obruten_kust', +      }, +      { +        text: 'Obrutet fjäll', +        layer: 'ri_obrutet_fjall', +      }, +      { +        text: 'Skyddade vattendrag', +        layer: 'ri_skyddade_vattendrag', +      }, +    ] +  }, +  {      /* Definitions at       * https://ext-dokument.lansstyrelsen.se/Gemensamt/Geodata/Datadistribution/Information,%20Skiktf%C3%B6rteckning%20och%20f%C3%B6rklaringar.pdf */      text: 'Rennäringen',  | 
