Если есть под рукой карта Google, то расстояние между двумя точками с заданными координатами можно определить с помощью инструмента Линейка.
Если этот инструмент не включен, его необходимо включить в Лаборатории карт (в левом нижнем углу).
Координаты можно нанести на карту либо через окно Поиск, либо через задание Маршрута.
Кратчайшим расстоянием между двумя точками на сфере является длина дуги большого круга (круга, проходящего через эти две точки и центр сферы). Эта дуга называется ортодромией (имеется в виду наименьшая из двух дуг большого круга).
Кратчайшее расстояние или длина ортодромии определяется формулой:
L = R x Y
где R – радиус сферы,
Y – центральный угол в радианах.
или
L = пR x A/180 град.
где A - центральный угол в градусах (п - "пи").
Пусть x1, y1 и x2, y2 - широта и долгота двух точек. Тогда центральный угол будет определяться сферическим законом косинусов:
Y = arccos(sin x1 sin x2 + cos x1 cos x2 cos (y2 - y1))
Следует заметить, что при вычислениях с невысокой точностью (а тем более на калькуляторе) по этой формуле особенно при небольших расстояниях между точками, точность результата будет весьма невысока, поскольку центральный угол будет 0,99999999. (На 64-разрядных компьютерах точность может достигать нескольких метров на километр.)
Поэтому для практических целей применялись другие формулы с использованием синус-верзусов (обращенных синусов), которые сыграли важную роль в навигации.
В следующей формуле использован haversine (haversin, гаверсинус) - квадрат синуса половинного угла.
где переменные: кратчайшее расстояние, радиус сферы, широта и долгота точек соответственно.
Формула гаверсинусов хорошо работает при сравнительно небольших расстояниях, но имеет проблему для антиподов. Формула через арктангенс устраняет эту проблему. Центральный угол равен:
Для расчета расстояния между двумя точками по GPS-координатам можно написать несложную программу. Вот тут можно "поиграть" с программкой на JavaScript.
Для координат, приведенных в вопросе: L = 751 м. (эта цифра неплохо сходится с результатом, полученным Линейкой в картах Google).
Скрипты: JavaScript, Python
Добавить комментарий