From 82ccfe10b449566c02dc79085f1db5a09eefdca1 Mon Sep 17 00:00:00 2001 From: jshjelse <jshjelse@stud.ntnu.no> Date: Sun, 8 Oct 2023 13:24:20 +0200 Subject: [PATCH] Ferdig --- javascript/difference.js | 12 +++++++----- javascript/dissolve.js | 2 +- javascript/intersect.js | 12 +++++++----- javascript/turfFormatConverter.js | 29 ++++++++++++++++------------- javascript/union.js | 5 +++++ 5 files changed, 36 insertions(+), 24 deletions(-) diff --git a/javascript/difference.js b/javascript/difference.js index 6be0cad..6b9f6d3 100644 --- a/javascript/difference.js +++ b/javascript/difference.js @@ -6,14 +6,16 @@ function difference() { var name = document.getElementById("differenceName").value; // MÃ¥ konverteres fra feature collection til multipolygon: - var coords1 = featureCollectionToMultiPolygon(layer1); - var coords2 = featureCollectionToMultiPolygon(layer2); - - var multiPolygon1 = turf.multiPolygon(coords1); - var multiPolygon2 = turf.multiPolygon(coords2); + var multiPolygon1 = featureCollectionToMultiPolygon(layer1); + var multiPolygon2 = featureCollectionToMultiPolygon(layer2); try { var difference = turf.difference(multiPolygon1, multiPolygon2); + + if (isMultiPolygon(difference)) { + difference = multiPolygonToFeatureCollection(difference); + } + var newLayer = L.geoJSON(difference, {style: getStyle()}); overlayMaps[name] = newLayer; diff --git a/javascript/dissolve.js b/javascript/dissolve.js index d96954c..b81f94c 100644 --- a/javascript/dissolve.js +++ b/javascript/dissolve.js @@ -6,7 +6,7 @@ function dissolve() { try { var dissolved = turf.dissolve(layer); var newLayer = L.geoJSON(dissolved, {style: getStyle()}); - + overlayMaps[name] = newLayer; updateSidebar(); diff --git a/javascript/intersect.js b/javascript/intersect.js index d403852..d04e02d 100644 --- a/javascript/intersect.js +++ b/javascript/intersect.js @@ -6,14 +6,16 @@ function intersection() { var name = document.getElementById("intersectionName").value; // MÃ¥ konverteres fra feature collection til multipolygon: - var coords1 = featureCollectionToMultiPolygon(layer1); - var coords2 = featureCollectionToMultiPolygon(layer2); - - var multiPolygon1 = turf.multiPolygon(coords1); - var multiPolygon2 = turf.multiPolygon(coords2); + var multiPolygon1 = featureCollectionToMultiPolygon(layer1); + var multiPolygon2 = featureCollectionToMultiPolygon(layer2); try { var intersection = turf.intersect(multiPolygon1, multiPolygon2); + + if (isMultiPolygon(intersection)) { + intersection = multiPolygonToFeatureCollection(intersection); + } + var newLayer = new L.GeoJSON(intersection, {style: getStyle()}); overlayMaps[name] = newLayer; diff --git a/javascript/turfFormatConverter.js b/javascript/turfFormatConverter.js index 00f6c7c..2b2e9d6 100644 --- a/javascript/turfFormatConverter.js +++ b/javascript/turfFormatConverter.js @@ -11,22 +11,25 @@ function featureCollectionToMultiPolygon(layer) { // layer er her et GeoJSON-lag for (var i = 0; i < features.length; i++) { coords.push(features[i]["geometry"]["coordinates"]); } - return coords; + return turf.multiPolygon(coords); } } -/* +function isMultiPolygon(layer) { + if (layer["geometry"]["type"] == "MultiPolygon") { + return true; + } + return false; +} + function multiPolygonToFeatureCollection(layer) { - if (layer["type"] == "MultiPolygon") { - var features = []; - for (var i = 0; i < layer["coordinates"].length; i++) { - var geometry = { - "type": "Polygon", - "coordinates": layer["geometry"][i] - } - coords.push(geometry); - } - return turf.featureCollection(features); + 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)); } + return turf.featureCollection(features); } -*/ diff --git a/javascript/union.js b/javascript/union.js index 0237cc4..1e38d20 100644 --- a/javascript/union.js +++ b/javascript/union.js @@ -14,6 +14,11 @@ function union() { try { var union = turf.union(multiPolygon1, multiPolygon2); + + if (isMultiPolygon(union)) { + union = multiPolygonToFeatureCollection(union); + } + var newLayer = L.geoJSON(union, {style: getStyle()}); overlayMaps[name] = newLayer; -- GitLab