Есть ли способ использовать Turf.js Along () из точки на полилинии? - PullRequest
0 голосов
/ 06 ноября 2019

Мне нужно найти координаты точки на ломаной линии на определенном расстоянии от другой.

Это похоже на метод Turf.js вдоль (), за исключением того, что вдоль () начинается вычисление изНачальная точка полилинии.

Поэтому я ищу вдоль (), но из заданной точки на полилинии.

1 Ответ

0 голосов
/ 08 ноября 2019

Вам нужно сделать несколько шагов, чтобы достичь того, что вам нужно.

  1. Разделить ломаную на две части в указанной вершине.
  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 2
var distance = 0.5;
var p2 = turf.along(part2, 0.5, {
  units: 'meters'
});

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

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

console.log("List of (x,y) of part1: " + part1.geometry.coordinates);
<script src='https://npmcdn.com/@turf/turf/turf.min.js'></script>
...