diff --git a/javascript/fileHandler.js b/javascript/fileHandler.js index c6dbe100c82cd1844bd3a364f8febc13f2414aea..6b7c335b1041092e89c18b907e9f98c6a640dbe6 100644 --- a/javascript/fileHandler.js +++ b/javascript/fileHandler.js @@ -4,27 +4,37 @@ function handleFile() { const selectedFile = fileHandler.files[0]; if (selectedFile == null) { - return alert("No chosen file!") + return alert("No chosen file!"); } - //console.log(selectedFile); // Printer bare selve filen til loggen - fileHandler.value = ""; document.getElementById("loadButton").style.backgroundColor = "orangered"; var read = new FileReader(); read.readAsDataURL(selectedFile); - var newLayer = L.geoJSON(null, {style: getStyle()}) + var newLayer = L.geoJSON(null, {style: getStyle()}); + + var info = null; read.onloadend = function() { fetch(read.result).then(function(response) { return response.json(); }).then(function(data) { + info = isInputMultiPolygon(data); + + if (info[0]) { + if (info[1] == "P") { + data = inputMultiPolygon(data); + } else if (info[1] == "L") { + data = inputMultiLine(data); + } + } + newLayer.addData(data); }) } - + overlayMaps[selectedFile.name] = newLayer; updateSidebar(); diff --git a/javascript/turfFormatConverter.js b/javascript/turfFormatConverter.js index 2b2e9d6bd07d7bd04a26dccfe4f74f0f3c9a7ca9..617d02d32464b72ddce571054a9cf42ebeff8e40 100644 --- a/javascript/turfFormatConverter.js +++ b/javascript/turfFormatConverter.js @@ -33,3 +33,98 @@ function multiPolygonToFeatureCollection(layer) { } return turf.featureCollection(features); } + +/* +Håndtering av input-filer fra bruker for å få de på rett format egnet for turf-operasjoner +*/ + +function isInputMultiPolygon(layer) { + liste = layer["features"]; + for (var i = 0; i < liste.length; i++) { + if (liste[i]["geometry"]["type"] == "MultiPolygon") { + return [true, "P"]; + } else if (liste[i]["geometry"]["type"] == "MultiLineString") { + return [true, "L"]; + } + } + return [false, null]; +} + +function turnList(liste) { + /*var more = false; + try { + var test = liste[0][0][0]; + if (test != null) { + more = true; + } + } catch { + + more = false; + } + + if (more) { + var newList = []; + console.log("JA") + for (var i = 0; i < layer.length; i++) { + newList.push(turnList(liste[i])); + } + } else {*/ + var newList = []; + + for (var i = liste.length - 1; i > -1; i--) { + newList.push(liste[i]); + } + //} + + return newList; +} + +function inputMultiPolygon(layer) { + liste = layer["features"]; + k = liste.length; + + for (var i = 0; i < k; i++) { + if (liste[i]["geometry"]["coordinates"].length == 1) { + liste[i]["geometry"]["type"] = "Polygon"; + liste[i]["geometry"]["coordinates"] = [turnList(liste[i]["geometry"]["coordinates"][0][0])]; + } + else if (liste[i]["geometry"]["coordinates"].length > 1) { + var coordinates = liste[i]["geometry"]["coordinates"]; + liste[i]["geometry"]["type"] = "Polygon"; + liste[i]["geometry"]["coordinates"] = [turnList(coordinates[0][0])]; + for (var j = 1; j < coordinates.length; j++) { + newElement = {"type": liste[i]["type"], "properties": liste[i]["properties"], "geometry": {"type": "Polygon", "coordinates": [turnList(coordinates[j][0])]}}; + liste.push(newElement); + } + } + } + + layer["features"] = liste; + + return layer; +} + +function inputMultiLine(layer) { + liste = layer["features"]; + k = liste.length; + + for (var i = 0; i < k; i++) { + if (liste[i]["geometry"]["coordinates"].length == 1) { + liste[i]["geometry"]["type"] = "LineString"; + liste[i]["geometry"]["coordinates"] = liste[i]["geometry"]["coordinates"][0]; + } + else if (liste[i]["geometry"]["coordinates"].length > 1) { + var coordinates = liste[i]["geometry"]["coordinates"]; + liste[i]["geometry"]["type"] = "LineString"; + liste[i]["geometry"]["coordinates"] = coordinates[0]; + for (var j = 1; j < coordinates.length; j++) { + newElement = {"type": liste[i]["type"], "properties": liste[i]["properties"], "geometry": {"type": "LineString", "coordinates": coordinates[j]}}; + liste.push(newElement); + } + } + } + + layer["features"] = liste; + + return layer; +}