Кратчайшее расстояние на сфере

Вопросы общего характера по ГИС и дистанционному зондированию, не связанные с конкретным ПО.
Ответить
sipk
Интересующийся
Сообщения: 17
Зарегистрирован: 27 июл 2011, 23:16
Репутация: 0

Кратчайшее расстояние на сфере

Сообщение sipk » 21 мар 2012, 13:14

Добрый день, уважаемые коллеги! Прошу помочь с таким вопросом - есть две точки, заданные в ГЕО-координатах в WGS-84 (долгота и широта). Необходимо найти кратчайшее расстояние от "прямой", соединяющей эти точки, до любой другой точки, заданной также в ГЕО-координатах. Прямая здесь становится дугой и кратчайшее расстояние (перпендикуляр) тоже. Подскажите пожалуйста формулы, как все расчеты перенести на "сферическую" геометрию (расстояние на 1 градус по долготе будет разным в зависимости от широты, на которой производится замер).

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Кратчайшее расстояние на сфере

Сообщение Denis Rykov » 21 мар 2012, 13:24

Код: Выделить всё

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
Ваше звание: званий не имею
Откуда: Москва

Re: Кратчайшее расстояние на сфере

Сообщение Александр Мурый » 21 мар 2012, 13:25

Эту статью читали?
Редактор материалов, модератор форума

sipk
Интересующийся
Сообщения: 17
Зарегистрирован: 27 июл 2011, 23:16
Репутация: 0

Re: Кратчайшее расстояние на сфере

Сообщение sipk » 21 мар 2012, 14:06

amuriy писал(а):Эту статью читали?
Да, спасибо. Вопрос именно в алгоритме поиска расстояния до "отрезка" (не прямая, а отрезок, я неправильно выразился в первом посте). Получается, задача сводится к поиску точки пересечения дуги большого круга, заданной началом и концом и дуги, являющейся сферическим перпендикуляром к ней (опущенным из третьей заданной точки). Затем расстояние определяем по формуле (2) из статьи. Весь вопрос, как искать тогда точку пересечения (или узнать, что она не принадлежит отрезку, т. е. дуге). Если кто решал такую задачу, отзовитесь пожалуйста)
Последний раз редактировалось sipk 21 мар 2012, 14:09, всего редактировалось 1 раз.

sipk
Интересующийся
Сообщения: 17
Зарегистрирован: 27 июл 2011, 23:16
Репутация: 0

Re: Кратчайшее расстояние на сфере

Сообщение sipk » 21 мар 2012, 14:08

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: Кратчайшее расстояние на сфере

Сообщение Denis Rykov » 21 мар 2012, 14:12

Ok. Оставлю, так как соответствует теме топика.
Spatial is now, more than ever, just another column- The Geometry Column.

Ответить

Вернуться в «Общие вопросы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя