Mercurial > gemma
changeset 740:b9c69f016e0c
Merged.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 24 Sep 2018 12:38:25 +0200 |
parents | b800eb2a0846 (current diff) d7530644dde3 (diff) |
children | 8bb2e48e2dfd |
files | |
diffstat | 3 files changed, 107 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/client/package.json Mon Sep 24 12:35:31 2018 +0200 +++ b/client/package.json Mon Sep 24 12:38:25 2018 +0200 @@ -11,6 +11,9 @@ "test:e2e": "vue-cli-service test:e2e" }, "dependencies": { + "@turf/distance": "^6.0.1", + "@turf/helpers": "^6.1.4", + "@turf/line-intersect": "^6.0.2", "animate.css": "^3.7.0", "axios": "^0.18.0", "bootstrap": "^4.1.1",
--- a/client/src/map/Maplayer.vue Mon Sep 24 12:35:31 2018 +0200 +++ b/client/src/map/Maplayer.vue Mon Sep 24 12:38:25 2018 +0200 @@ -27,6 +27,14 @@ import { Vector as VectorLayer } from "ol/layer.js"; import { Vector as VectorSource } from "ol/source.js"; +import distance from "@turf/distance"; +import { + lineString as turfLineString, + polygon as turfPolygon +} from "@turf/helpers"; +//import { lineIntersect as turfLineIntersect } from "@turf/line-intersect"; +import lineIntersect from "@turf/line-intersect"; + export default { name: "maplayer", props: ["drawMode", "lat", "long", "zoom", "split"], @@ -74,15 +82,15 @@ source: this.vectorSource, type: this.drawMode }); - draw.on("drawstart", function(event) { - console.log(event); + draw.on("drawstart", function(/* event */) { + // console.log(event); that.vectorSource.clear(); // remove old features when draw starts }); draw.on("drawend", this.drawEnd); return draw; }, drawEnd(event) { - console.log(event); + // console.log(event); var inputLineString = event.feature.getGeometry().clone(); if (inputLineString.getType() == GeometryType.LINE_STRING) { // prepare to send the first line seqment to the server as GeoJSON @@ -116,26 +124,57 @@ .getExtent(), feature => { // transform back to prepare for usage - var g = feature + var intersectingPolygon = feature .getGeometry() .clone() .transform("EPSG:3857", "EPSG:4326"); - // console.log("intersecting:", g); - this.addToFairwayRectangle(profileLine, g, diagStack); + console.log("intersecting:", intersectingPolygon); + this.addToFairwayRectangle( + profileLine, + intersectingPolygon, + 2.5, // FIXME use real fairway depth value for this feature + diagStack + ); } ); } } }, - addToFairwayRectangle(profileLine, fairwayGeometry, diagStack) { + addToFairwayRectangle(profileLine, fairwayGeometry, depth, diagStack) { // both geometries have to be in EPSG:4326 + // uses turfjs distance() function + // pushes pairs of diagram points into diagStack console.log( "addToFairwayRectangle(", profileLine, fairwayGeometry, + depth, diagStack, ")" ); + var line = turfLineString(profileLine.getCoordinates()); + var polygon = turfPolygon(fairwayGeometry.getCoordinates()); + var intersects = lineIntersect(line, polygon); + console.log(intersects.features); + + var l = intersects.features.length; + if (l % 2 != 0) { + console.log("Ignoring fairway because profile only intersects once."); + } else { + for (let i = 0; i < l; i += 2) { + let pStartPoint = profileLine.getCoordinates()[0]; + let fStartPoint = intersects.features[i].geometry.coordinates; + let fEndPoint = intersects.features[i + 1].geometry.coordinates; + let opts = { units: "kilometers" }; + + diagStack.push([ + distance(pStartPoint, fStartPoint, opts) * 1000, + distance(pStartPoint, fEndPoint, opts) * 1000, + depth + ]); + } + } + console.log("Resulting diagStack:", diagStack); }, activateInteraction() { const interaction = this.createInteraction(this.drawMode);
--- a/client/yarn.lock Mon Sep 24 12:35:31 2018 +0200 +++ b/client/yarn.lock Mon Sep 24 12:38:25 2018 +0200 @@ -667,6 +667,54 @@ version "1.1.2" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz#54c5a964462be3d4d78af631363c18d6fa91ac26" +"@turf/bbox@*": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@turf/bbox/-/bbox-6.0.1.tgz#b966075771475940ee1c16be2a12cf389e6e923a" + dependencies: + "@turf/helpers" "6.x" + "@turf/meta" "6.x" + +"@turf/distance@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@turf/distance/-/distance-6.0.1.tgz#0761f28784286e7865a427c4e7e3593569c2dea8" + dependencies: + "@turf/helpers" "6.x" + "@turf/invariant" "6.x" + +"@turf/helpers@6.x", "@turf/helpers@^6.1.4": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-6.1.4.tgz#d6fd7ebe6782dd9c87dca5559bda5c48ae4c3836" + +"@turf/invariant@6.x": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@turf/invariant/-/invariant-6.1.2.tgz#6013ed6219f9ac2edada9b31e1dfa5918eb0a2f7" + dependencies: + "@turf/helpers" "6.x" + +"@turf/line-intersect@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@turf/line-intersect/-/line-intersect-6.0.2.tgz#b45b7a4e7e08c39a0e4e91099580ed377ef7335f" + dependencies: + "@turf/helpers" "6.x" + "@turf/invariant" "6.x" + "@turf/line-segment" "6.x" + "@turf/meta" "6.x" + geojson-rbush "3.x" + +"@turf/line-segment@6.x": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@turf/line-segment/-/line-segment-6.0.2.tgz#e280bcde70d28b694028ec1623dc406c928e59b6" + dependencies: + "@turf/helpers" "6.x" + "@turf/invariant" "6.x" + "@turf/meta" "6.x" + +"@turf/meta@6.x": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-6.0.2.tgz#eb92951126d24a613ac1b7b99d733fcc20fd30cf" + dependencies: + "@turf/helpers" "6.x" + "@types/babel-types@*", "@types/babel-types@^7.0.0": version "7.0.4" resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.4.tgz#bfd5b0d0d1ba13e351dff65b6e52783b816826c8" @@ -4101,6 +4149,15 @@ dependencies: globule "^1.0.0" +geojson-rbush@3.x: + version "3.1.1" + resolved "https://registry.yarnpkg.com/geojson-rbush/-/geojson-rbush-3.1.1.tgz#dd40bdd26e92813d888d7b489e8d2980695a49b4" + dependencies: + "@turf/bbox" "*" + "@turf/helpers" "6.x" + "@turf/meta" "6.x" + rbush "*" + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -7667,7 +7724,7 @@ iconv-lite "0.4.19" unpipe "1.0.0" -rbush@2.0.2: +rbush@*, rbush@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/rbush/-/rbush-2.0.2.tgz#bb6005c2731b7ba1d5a9a035772927d16a614605" dependencies: