diff --git a/javascript/buffer.js b/javascript/buffer.js index a04c5c7403034a29e03d81adfffb4efa294675f7..95dd4820f8ebaf0169b79bf86b15910016fab6eb 100644 --- a/javascript/buffer.js +++ b/javascript/buffer.js @@ -38,7 +38,7 @@ function makeBuffer() { 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 = multiPolygonToFeatureCollection(buffer); + buffer = fixMultiPolygons(buffer); } // # var dissolved = turf.dissolve(buffer); diff --git a/javascript/dissolve.js b/javascript/dissolve.js index b10ad624725d93982bdf4af7c4640fd25c13471b..87273b610ba66c2d733a97cd2cd3f9656a3d81c0 100644 --- a/javascript/dissolve.js +++ b/javascript/dissolve.js @@ -24,7 +24,7 @@ function doDissolve() { try { // Dette er nytt: if (isMultiPolygon(layer)) { - layer = multiPolygonToFeatureCollection(layer); + layer = fixMultiPolygons(layer); } //# diff --git a/javascript/turfFormatConverter.js b/javascript/turfFormatConverter.js index fdff057759aa557c104a4d67adf7334b9f867fc5..714aa4b369442e8672c06b2f675f5b77213e46df 100644 --- a/javascript/turfFormatConverter.js +++ b/javascript/turfFormatConverter.js @@ -40,41 +40,48 @@ function isMultiPolygon(layer) { // Inneholder 'layer' features som er MultiPoly return false; } -function multiPolygonToFeatureCollection(layer) {// Funksjon som gjør om features i 'layer' til FeatureCollection istedenfor MultiPolygon +function multiPolygonToFeatureCollection(layer) { // Funksjon som gjør om features i 'layer' til FeatureCollection istedenfor MultiPolygon // 'layer' er her et GeoJSON-lag - more = false; + for (var i = 0; i < layer["geometry"]["coordinates"].length; i++) { + var geometry = { + "type": "Polygon", + "coordinates": layer["geometry"]["coordinates"][i] + }; + features.push(turf.feature(geometry)); + } - try { - if (layer["features"]) { - more = true; - } - } catch {} - console.log(more); - var features = []; + return turf.featureCollection(features); +} - if (more) { - for (var i = 0; i < layer["features"]; i++) { - for (var j = 0; j < layer["features"][i]["geometry"]["coordinates"].length; j++) { - console.log(layer["features"][i]["geometry"]["coordinates"][j]); - var geometry = { +function fixMultiPolygons(layer) { // Annen variant som løser MultiPolygon-problemet for buffer-funksjonen + 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"]; + features[i]["geometry"]["type"] = "Polygon"; + features[i]["geometry"]["coordinates"] = coord[0]; + for (var j = 1; j < ccoord.length; j++) { + newFeature = {}; + for (key in features[i]) { + if (key != "geometry") { + newFeature[key] = features[i][key]; + } + } + newFeatures["geometry"] = { "type": "Polygon", - "coordinates": layer["features"][i]["geometry"]["coordinates"][j] + "coordinates": coord[j] }; - features.push(turf.feature(geometry)); + features.push(newFeature); } } - } 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); + layer["features"] = features; + + return layer; } /*