Как рассчитать расстояние между двумя точками в метрах на поверхности сферы?

#math #coordinates #distance #latitude-longitude #haversine

Вопрос:

Могу ли я спросить, можно ли вычислить расстояние между двумя точками, координаты которых указаны в метрах (например: A(3500 м, 1151 м) и B(2500 м, 1020 м)) на такой сфере, как поверхность земли?

Я уже искал некоторые методы, такие как расстояние хаверсина, но в основном оно используется с долготой и широтой.

Комментарии:

1. Как интерпретируются две координаты A и B ? Как правило, вам нужно три точки, чтобы определить точку в пространстве.

2. Возможно, вам потребуется пометить язык, потому что я рекомендую вам использовать существующую библиотеку: реализовать математические функции и сохранить точность непросто. В любом случае вам следует преобразовать в lat/long (в соответствии с вашими данными), или вам следует проверить, нашел ли ваш национальный географический офис (или университет) хороший способ использовать прямые координаты метра (числовая математика непростая, и для этого требуется много догадок).

3. Но: почему бы не использовать расстояние до плоской поверхности? В вашем примере у вас короткие расстояния, поэтому ошибка должна быть минимальной (а также с помощью haversine у вас есть приближения).

4. Ах, верно; это просто плоские координаты? В этом случае вам нужно знать проекцию, которая используется (например, поперечный Меркатор,…). Без этой информации вы не сможете конвертировать данные в точки на сфере. Но, как говорит @GiacomoCatenazzi, вам действительно нужно сферическое расстояние? Ваши точки настолько близки друг к другу, что ошибка будет минимальной (и, вероятно, намного меньше, чем ошибка из-за разницы в высоте, например). Существуют библиотеки, подобные PROJ , для работы с проекциями.

5. Это предполагает, что вы не просто имеете в виду «сферу, подобную поверхности Земли», но что вы на самом деле работаете с поверхностью Земли (которая, как правило, лучше аппроксимируется эллипсоидом, а не сферой).