Я искал этот сайт SE довольно много часов, и я все еще изо всех сил пытаюсь найти решение моего вопроса. Моя цель заключается в том, чтобы, учитывая путь в OSM и мое местоположение (координаты широты / долготы), я хочу найти ближайшее местоположение (координаты широты / долготы) на этом пути. Точка может находиться в любом месте пути, не ограничиваясь точками, используемыми для определения пути.
Итак, я думаю о следующем алгоритме:
- Разделите путь на отдельные ребра, каждое ребро соединяет только две точки.
- Выберите ближайший край.
- Спроецируйте мое местоположение на этот край.
Теперь есть много вопросов о расчете расстояния между местоположением и путем:
- WGS указывает на отрезок линии WGS (большой круг)
- Вычисление расстояния между точкой и виртуальной линией двух широт
- Как приблизить расстояние от точки до отрезка на сфере?
Также очень похожий вопрос, из которого я не могу получить правильные или проверенные вычисления:
Есть также некоторая информация от доктора Мат по этому вопросу. Однако я не могу найти алгоритм для вычисления местоположения в шаге 3. Поскольку я не касался (векторной) алгебры в течение долгого времени, я не совсем понимаю логику в этих ответах.
Может кто-нибудь показать алгоритм для этого? Решение на любом приемлемом языке программирования мне подходит.