From 93d22cc3c11c84c32d9e8ae19bbe41d9a478c0ee Mon Sep 17 00:00:00 2001 From: jshjelse <jshjelse@stud.ntnu.no> Date: Tue, 24 Oct 2023 12:04:05 +0200 Subject: [PATCH] Ferdigstille og kommentere --- javascript/buffer.js | 4 ++-- javascript/dissolve.js | 5 ++--- javascript/turfFormatConverter.js | 25 ++++++++++++++++--------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/javascript/buffer.js b/javascript/buffer.js index 95dd482..8521b39 100644 --- a/javascript/buffer.js +++ b/javascript/buffer.js @@ -36,11 +36,11 @@ 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: + if (isMultiPolygon(buffer)) { // Kan ikke sende MultiPolygon inn i dissolved buffer = fixMultiPolygons(buffer); } - // # + var dissolved = turf.dissolve(buffer); var newLayer = L.geoJSON(dissolved, {style: getStyle()}); } else { // Ellers lager den bare mange ulike buffer-soner diff --git a/javascript/dissolve.js b/javascript/dissolve.js index 87273b6..ea1a382 100644 --- a/javascript/dissolve.js +++ b/javascript/dissolve.js @@ -22,11 +22,10 @@ function doDissolve() { // Prøver å kjøre dissolve-funksjonen: try { - // Dette er nytt: - if (isMultiPolygon(layer)) { + + if (isMultiPolygon(layer)) { // Kan ikke sende MultiPolygon inn i dissolved layer = fixMultiPolygons(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 8d04c5e..85a629f 100644 --- a/javascript/turfFormatConverter.js +++ b/javascript/turfFormatConverter.js @@ -55,32 +55,39 @@ function multiPolygonToFeatureCollection(layer) { // Funksjon som gjør om featu return turf.featureCollection(features); } -function fixMultiPolygons(layer) { // Annen variant som løser MultiPolygon-problemet for buffer-funksjonen +function fixMultiPolygons(layer) { // Annen variant som løser MultiPolygon-problemet for de ulike GIS-funksjonene var features = layer["features"]; var k = features.length; for (var i = 0; i < k; i++) { - if (features[i]["geometry"]["type"] == "MultiPolygon") { - var coord = features[i]["geometry"]["coordinates"]; + /* + Her itererer en gjennom alle features i FeatureCollection, + plukker ut alle features som er registrert som MultiPolygon, + og gjør dem om til flere Polygons + */ + if (features[i]["geometry"]["type"] == "MultiPolygon") { // Er det MultiPolygon? + var coord = features[i]["geometry"]["coordinates"]; // Henter geometrien til alle Polygonene + // Oppdaterer første polygon: features[i]["geometry"]["type"] = "Polygon"; features[i]["geometry"]["coordinates"] = coord[0]; for (var j = 1; j < coord.length; j++) { + // Lager så nye features for resten av polygonene i MultiPolygonet: var newFeature = {}; - for (key in features[i]) { - if (key != "geometry") { + for (key in features[i]) { // Vil ha de samme nøklene og deres verdier som originalen + if (key != "geometry") { // ... men ikke lik geometri newFeature[key] = features[i][key]; } } - newFeature["geometry"] = { + newFeature["geometry"] = { // Legger til geometri "type": "Polygon", - "coordinates": coord[j] + "coordinates": coord[j] // Henter koordinat fra original-lista }; - features.push(newFeature); + features.push(newFeature); // Legger til ny feature } } } - layer["features"] = features; + layer["features"] = features; // Oppdaterer features-lista return layer; } -- GitLab