diff --git a/javascript/buffer.js b/javascript/buffer.js index 95dd4820f8ebaf0169b79bf86b15910016fab6eb..8521b391f426f094c59cee21380eeeaeda9c56a4 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 87273b610ba66c2d733a97cd2cd3f9656a3d81c0..ea1a382a89490cf27c621a13f883f247907dbee2 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 8d04c5efd48a836839805d26d292361850250a6d..85a629fc9a06cebefe4342be445655b6f9211502 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; }