From 2e36119852ea8d1a9c11e8da199a43431c7926ce Mon Sep 17 00:00:00 2001 From: jshjelse <jshjelse@stud.ntnu.no> Date: Mon, 23 Oct 2023 16:23:30 +0200 Subject: [PATCH] =?UTF-8?q?F=C3=A5tt=20p=C3=A5=20mer=20omskriving=20av=20l?= =?UTF-8?q?ayer-objekt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- javascript/buffer.js | 3 +-- javascript/dissolve.js | 6 +++++ javascript/turfFormatConverter.js | 37 +++++++++++++++++++++++++------ 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/javascript/buffer.js b/javascript/buffer.js index d6a7c7e..a04c5c7 100644 --- a/javascript/buffer.js +++ b/javascript/buffer.js @@ -36,8 +36,7 @@ function makeBuffer() { var buffer = turf.buffer(layer, distance, {units: "meters"}); // Lager buffer if (document.getElementById("bufferCheck").checked) { // Om en har huket av for at en skal 'dissolve' gjøres det - // Dette er nytt - console.log(JSON.stringify(buffer)); + // Dette er nytt: if (isMultiPolygon(buffer)) { // Kan ikke sende MultiPolygon inn i dissolved buffer = multiPolygonToFeatureCollection(buffer); } diff --git a/javascript/dissolve.js b/javascript/dissolve.js index bd453b3..b10ad62 100644 --- a/javascript/dissolve.js +++ b/javascript/dissolve.js @@ -22,6 +22,12 @@ function doDissolve() { // Prøver å kjøre dissolve-funksjonen: try { + // Dette er nytt: + if (isMultiPolygon(layer)) { + layer = multiPolygonToFeatureCollection(layer); + } + //# + var dissolved = turf.dissolve(layer); // Kjører dissolve var newLayer = L.geoJSON(dissolved, {style: getStyle()}); diff --git a/javascript/turfFormatConverter.js b/javascript/turfFormatConverter.js index c90b149..d1af758 100644 --- a/javascript/turfFormatConverter.js +++ b/javascript/turfFormatConverter.js @@ -19,7 +19,7 @@ function featureCollectionToMultiPolygon(layer) { // Funksjon som gjør om featu function isMultiPolygon(layer) { // Inneholder 'layer' features som er MultiPolygon? more = false; - try { + try { // Justerer i forhold til hvor mye innhold 'layer' har if (layer["features"]) { more = true; } @@ -41,14 +41,37 @@ function isMultiPolygon(layer) { // Inneholder 'layer' features som er MultiPoly function multiPolygonToFeatureCollection(layer) {// Funksjon som gjør om features i 'layer' til FeatureCollection istedenfor MultiPolygon // 'layer' er her et GeoJSON-lag + + more = false; + + try { + if (layer["features"]) { + more = true; + } + } catch {} + var features = []; - for (var i = 0; i < layer["geometry"]["coordinates"].length; i++) { - var geometry = { - "type": "Polygon", - "coordinates": layer["geometry"]["coordinates"][i] - }; - features.push(turf.feature(geometry)); + + if (more) { + for (var i = 0; i < layer["features"]; i++) { + for (var j = 0; j < layer["features"][i]["geometry"]["coordinates"].length; j++) { + var geometry = { + "type": "Polygon", + "coordinates": layer["features"][i]["geometry"]["coordinates"][j] + }; + features.push(turf.feature(geometry)); + } + } + } else { + for (var i = 0; i < layer["geometry"]["coordinates"].length; i++) { + var geometry = { + "type": "Polygon", + "coordinates": layer["geometry"]["coordinates"][i] + }; + features.push(turf.feature(geometry)); + } } + return turf.featureCollection(features); } -- GitLab