Кратчайшее расстояние на сфере
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 27 июл 2011, 23:16
- Репутация: 0
Кратчайшее расстояние на сфере
Добрый день, уважаемые коллеги! Прошу помочь с таким вопросом - есть две точки, заданные в ГЕО-координатах в WGS-84 (долгота и широта). Необходимо найти кратчайшее расстояние от "прямой", соединяющей эти точки, до любой другой точки, заданной также в ГЕО-координатах. Прямая здесь становится дугой и кратчайшее расстояние (перпендикуляр) тоже. Подскажите пожалуйста формулы, как все расчеты перенести на "сферическую" геометрию (расстояние на 1 градус по долготе будет разным в зависимости от широты, на которой производится замер).
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Кратчайшее расстояние на сфере
Код: Выделить всё
Constants:
Radius of the Earth in miles
EARTH_RADIUS = 3958.75
Ratio of a circle's circumference to its diameter
PI = 3.1415926535897932384626433832795
Factor to convert decimal degrees to radians
DEG2RAD = 0.01745329252
Factor to convert radians to decimal degrees
RAD2DEG = 57.29577951308
Great Circle Distance:
Inputs are 2 coordinates x1,y1 and x2,y2
Convert to radians
x1 = x1 * DEG2RAD
y1 = y1 * DEG2RAD
x2 = x2 * DEG2RAD
y2 = y2 * DEG2RAD
a = sin(( y2-y1 ) / 2.0 )^2
b = sin(( x2-x1 ) / 2.0 )^2
c = sqrt( a + cos( y2 ) * cos( y1 ) * b )
distance = 2 * asin( c ) * EARTH_RADIUS
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 27 июл 2011, 23:16
- Репутация: 0
Re: Кратчайшее расстояние на сфере
Да, спасибо. Вопрос именно в алгоритме поиска расстояния до "отрезка" (не прямая, а отрезок, я неправильно выразился в первом посте). Получается, задача сводится к поиску точки пересечения дуги большого круга, заданной началом и концом и дуги, являющейся сферическим перпендикуляром к ней (опущенным из третьей заданной точки). Затем расстояние определяем по формуле (2) из статьи. Весь вопрос, как искать тогда точку пересечения (или узнать, что она не принадлежит отрезку, т. е. дуге). Если кто решал такую задачу, отзовитесь пожалуйста)amuriy писал(а):Эту статью читали?
Последний раз редактировалось sipk 21 мар 2012, 14:09, всего редактировалось 1 раз.
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 27 июл 2011, 23:16
- Репутация: 0
Re: Кратчайшее расстояние на сфере
Спасибо, это расстояние между двумя географическими точками, требуется от точки до прямой)Denis Rykov писал(а):Код: Выделить всё
Constants: Radius of the Earth in miles EARTH_RADIUS = 3958.75 Ratio of a circle's circumference to its diameter PI = 3.1415926535897932384626433832795 Factor to convert decimal degrees to radians DEG2RAD = 0.01745329252 Factor to convert radians to decimal degrees RAD2DEG = 57.29577951308 Great Circle Distance: Inputs are 2 coordinates x1,y1 and x2,y2 Convert to radians x1 = x1 * DEG2RAD y1 = y1 * DEG2RAD x2 = x2 * DEG2RAD y2 = y2 * DEG2RAD a = sin(( y2-y1 ) / 2.0 )^2 b = sin(( x2-x1 ) / 2.0 )^2 c = sqrt( a + cos( y2 ) * cos( y1 ) * b ) distance = 2 * asin( c ) * EARTH_RADIUS
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Кратчайшее расстояние на сфере
Ok. Оставлю, так как соответствует теме топика.
Spatial is now, more than ever, just another column- The Geometry Column.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость