Я использую openlayers3, и у меня есть закодированная геометрия. Я могу получить координаты (lat, lng) для всех точек пути (около 500 точек на каждый путь). Учитывая случайную точку внутри пути, как мне рассчитать расстояние между началом пути до этой точки?Как рассчитать расстояние между двумя точками вдоль пути?
Я взглянул на turfjs, и это выглядит очень многообещающе, но решение, которое я изобразил с его помощью, было бы не очень приятным. Принимая случайную точку (p1), я мог бы обнаружить точку (p2) пути, которая ближе всего к p1, затем сгенерировать новый многоугольник и вычислить его полное расстояние. У него могут быть проблемы с производительностью, хотя поиск будет O (log n) и новый многоугольник O (n).
EDIT: случайная точка не обязательно находится внутри пути, это координата GPS, и есть запас для ошибки.
EDIT 2: оценка по числу точек был выключен, каждый путь имеет около 500 точек, а не 5k
Кто-нибудь знает лучшего подхода? Я не очень опытен ни с openlayers3, ни с turfjs.
5k точек на пути звучит довольно плотный, вы можете интерпретировать это как полилинии. Я бы создал (и кэш) массив, содержащий сумму расстояний от начала до каждой точки. Таким образом, вы можете получить расстояние между двумя вашими точками на 2 Array-lookups + вычитание. – Thomas
Вы можете прокручивать точки пути, вычислять расстояния отдельных путей, сохранять последнюю точку и проверять каждую итерацию, если желаемая точка находится между последней точкой и фактической точкой. Если условие истинно, то используйте эту случайную точку как фактическую точку и стоп-расчет. –
@ Томас, эта случайная точка не является одной из координат, поэтому это не просто простой поиск, я должен найти ближайшую координату к случайной точке. – lalkmim