Skip to content
Snippets Groups Projects
Commit 63522f07 authored by Jakob Severin Steffensen Hjelseth's avatar Jakob Severin Steffensen Hjelseth
Browse files

Komme godt på vei 8)

parent 967b3427
No related branches found
No related tags found
1 merge request!43Resolve "Extract"
Pipeline #235294 passed
...@@ -150,6 +150,20 @@ ...@@ -150,6 +150,20 @@
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293 5.354 4.646z"/> <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293 5.354 4.646z"/>
</svg> </svg>
</div> </div>
<p>Choose a layer to extract features from:</p>
<select id="extractSelect"></select>
<p>Which feature will you extract to a new layer:</p>
<select id="propertySelect"></select>
<p>Which value will you sort out:</p>
<select id="valueSelect"></select>
<p>Choose a name for the new layer:</p>
<input id="extractName"><br>
<button class="button" style="font-size: 25px;" onclick="extract()">Extract</button>
</div> </div>
<div id="intersectionBox" class="box"> <div id="intersectionBox" class="box">
...@@ -249,6 +263,7 @@ ...@@ -249,6 +263,7 @@
<script src="javascript/turfFormatConverter.js"></script> <script src="javascript/turfFormatConverter.js"></script>
<script src="javascript/intersect.js"></script> <script src="javascript/intersect.js"></script>
<script src="javascript/union.js"></script> <script src="javascript/union.js"></script>
<script src="javascript/extract.js"></script>
<!-- Imported js --> <!-- Imported js -->
<!-- <script src="https://unpkg.com/shpjs@latest/dist/shp.js"></script> --> <!-- <script src="https://unpkg.com/shpjs@latest/dist/shp.js"></script> -->
......
This diff is collapsed.
This diff is collapsed.
Source diff could not be displayed: it is too large. Options to address this: view the blob.
This diff is collapsed.
document.getElementById("extractSelect").addEventListener("change", () => {
var input = document.getElementById("extractSelect").value;
if (input == "- - -") {
var select = document.getElementById("propertySelect");
select.innerHTML = "";
select.add(new Option(text="- - -"));
} else {
var layer = overlayMaps[input].toGeoJSON();
var features = [];
for (element in layer["features"]) {
for (key in layer["features"][element]["properties"]) {
if (!features.includes(key)) {
features.push(key);
}
}
}
var select = document.getElementById("propertySelect");
select.innerHTML = "";
select.add(new Option(text="- - -"));
for (var i = 0; i < features.length; i++) {
select.add(new Option(text = features[i], value = features[i]));
}
}
})
document.getElementById("propertySelect").addEventListener("change", () => {
var input = document.getElementById("extractSelect").value;
if (input == "- - -") {
var select = document.getElementById("valueSelect");
select.innerHTML = "";
select.add(new Option(text="- - -"));
} else {
var layer = overlayMaps[input].toGeoJSON();
var property = document.getElementById("propertySelect").value;
var values = [];
for (element in layer["features"]) {
if (!values.includes(layer["features"][element]["properties"][property])) {
values.push(layer["features"][element]["properties"][property]);
}
}
var select = document.getElementById("valueSelect");
select.innerHTML = "";
select.add(new Option(text="- - -"));
for (var i = 0; i < values.length; i++) {
select.add(new Option(text = values[i], value = values[i]));
}
}
})
function extract() {
var input = document.getElementById("extractSelect").value;
var layer = overlayMaps[input].toGeoJSON();
var property = document.getElementById("propertySelect").value;
var value = document.getElementById("valueSelect").value;
var name = document.getElementById("extractName").value;
var extracted = [];
try {
for (element in layer["features"]) {
if (layer["features"][element]["properties"][property] == value) {
extracted.push(layer["features"][element]);
}
}
var extract = turf.featureCollection(extracted);
var newLayer = new L.GeoJSON(extract, {style: getStyle()});
console.log(newLayer);
overlayMaps[name] = newLayer;
updateSidebar();
handleLayer(name);
document.getElementById("extractName").value = "";
resetInput();
} catch(failure) {
alert(failure);
}
}
function resetInput() {
fillSelect("extractSelect");
var select = document.getElementById("propertySelect");
select.innerHTML = "";
//select.add(new Option(text="- - -"));
var select = document.getElementById("valueSelect");
select.innerHTML = "";
//select.add(new Option(text="- - -"));
}
...@@ -32,6 +32,8 @@ function openBox(id) { ...@@ -32,6 +32,8 @@ function openBox(id) {
fillDoubleSelect("differenceSelect"); fillDoubleSelect("differenceSelect");
} else if (id == "dissolveBox") { } else if (id == "dissolveBox") {
fillSelect("dissolveSelect"); fillSelect("dissolveSelect");
} else if (id == "extractBox") {
fillSelect("extractSelect");
} else if (id == "intersectionBox") { } else if (id == "intersectionBox") {
fillDoubleSelect("intersectionSelect"); fillDoubleSelect("intersectionSelect");
} else if (id == "unionBox") { } else if (id == "unionBox") {
...@@ -59,8 +61,8 @@ function closeBox(id) { ...@@ -59,8 +61,8 @@ function closeBox(id) {
function fillSelect(id) { function fillSelect(id) {
var select = document.getElementById(id); var select = document.getElementById(id);
select.innerHTML = ""; select.innerHTML = "";
select.add(new Option(text="- - -"));
for (key in overlayMaps) { for (key in overlayMaps) {
select.add(new Option(text = key, value = key)); select.add(new Option(text = key, value = key));
...@@ -70,9 +72,10 @@ function fillSelect(id) { ...@@ -70,9 +72,10 @@ function fillSelect(id) {
function fillDoubleSelect(id) { function fillDoubleSelect(id) {
var select1 = document.getElementById(id + "_1"); var select1 = document.getElementById(id + "_1");
var select2 = document.getElementById(id + "_2"); var select2 = document.getElementById(id + "_2");
select1.innerHTML = ""; select1.innerHTML = "";
select2.innerHTML = ""; select2.innerHTML = "";
select1.add(new Option(text="- - -"));
select2.add(new Option(text="- - -"));
for (key in overlayMaps) { for (key in overlayMaps) {
select1.add(new Option(text = key, value = key)); select1.add(new Option(text = key, value = key));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment