是否可以从折线上的某个点使用Turf.js Together()?

问题描述 投票:0回答:1

我需要在距另一条线一定距离处的多段线上找到点的坐标。

这与Turf.js的沿着()方法类似,不同之处在于沿着()从折线起点开始计算。

所以我正在寻找angular(),但从折线上的给定点开始。

polyline turfjs
1个回答
0
投票

您需要一些步骤来实现所需的功能。

  1. 在指定的顶点处将多段线分割成2个部分。
  2. 如果使用第二部分,请正常使用。
  3. 如果使用了第一部分,则反转坐标,然后使用它。

这里是建议的代码:

// original polyline
var line = turf.lineString([[-83, 30], [-84, 36], [-78, 41]]);

// split point (second vertex, [-84, 36])
var splitter = line.geometry.coordinates[1];

// split the original polyline
var split = turf.lineSplit(line, splitter);

// prep the first portion (reverse the coordinates)
var part1 = split.features[0];
part1.geometry.coordinates = part1.geometry.coordinates.reverse();

// the second portion
var part2 = split.features[1];

然后您可以使用

var distance = 0.5; //unit: meters
turf.along(part1, distance, {units: 'meters'});

turf.along(part2, distance, {units: 'meters'});

var line = turf.lineString([
  [-83, 30],
  [-84, 36],
  [-78, 41]
]);
var splitter = turf.point(line.geometry.coordinates[1]);
var split = turf.lineSplit(line, splitter);

var part1 = split.features[0];
var part2 = split.features[1];

// part 1
var distance = 0.5;
var p2 = turf.along(part1, 0.5, {
  units: 'meters'
});

console.log("P2 (x,y) on part1: " + p2.geometry.coordinates);

// part 1
console.log("Original list of (x,y) of part2: " + part1.geometry.coordinates);
part1.geometry.coordinates = part1.geometry.coordinates.reverse();

console.log("List of (x,y) of part2: " + part1.geometry.coordinates);
<script src='https://npmcdn.com/@turf/turf/turf.min.js'></script>
© www.soinside.com 2019 - 2024. All rights reserved.