From 0fe32686e7332b1677197500c80f65a68f3ca003 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Sat, 7 Jun 2025 20:33:27 +0200 Subject: Add two more nature value layers. --- main.js | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/main.js b/main.js index 16171d7..c9e270e 100644 --- a/main.js +++ b/main.js @@ -3252,6 +3252,83 @@ const layers = { }); }), }, + 'nv.pagaende_naturreservatsbildning': { + popoverTitle: 'Pågående naturreservatsbildning', + popover: [ + ['Objektnamn', 'NAMN'], + ['Senast justerat', 'GRANSJUST'], /* XXX unclear what "GRANSJUST" means, just a guess */ + ['Areal', 'geom_area', { 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.setLineDash([width/4, width/4]); + patternContext.strokeStyle = 'rgba(7, 181, 7, 1)'; + patternContext.lineWidth = z < 4 ? .5 : z <= 5 ? 1 : 2; + patternContext.beginPath(); + patternContext.moveTo(width/4, 0); + patternContext.lineTo(width/4, patternCanvas.height); + patternContext.stroke(); + patternContext.beginPath(); + patternContext.lineDashOffset = width/4; + patternContext.moveTo(3*width/4, 0); + patternContext.lineTo(3*width/4, patternCanvas.height); + patternContext.stroke(); + + const canvas = document.createElement('canvas'); + const context = canvas.getContext('2d'); + return new Style({ + zIndex: 10, + fill: new Fill({ + color: context.createPattern(patternCanvas, 'repeat'), + }), + stroke: width === 0 ? undefined : new Stroke({ + width: z < 2 ? 1 : z < 4 ? 2 : z <= 5 ? 3 : 4, + color: [7, 181, 7, 1], + lineDash: [width/8, width/4], + }), + }); + }), + }, + 'nv.snus': { + popoverTitle: 'Skyddsvärd statlig skog', + popover: [ + ['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'], + ], + style: [.5, 1, 1.5, 1.5, 2, 2, 2.5, 2.5, 3, 3.5, 4, 5].map(function(width, z) { + return new Style({ + zIndex: 4, + fill: new Fill({ + color: [168,168,0,.2], + }), + stroke: width === 0 ? undefined : new Stroke({ + width: width, + color: [168,77,0,.75], + }), + }); + }), + }, 'ri.naturvard': { popoverTitle: 'Riksintresse naturvård', @@ -4133,6 +4210,14 @@ const layerHierarchy = [ text: 'Sumpskogar', layer: 'nv.sumpskog', }, + { + text: 'Pågående naturreservatsbildning', + layer: 'nv.pagaende_naturreservatsbildning', + }, + { + text: 'Skyddsvärda statliga skogar', + layer: 'nv.snus', + }, { text: 'Sannolikt och potentiell kontinuitetsskog', children: [ -- cgit v1.2.3