Страница 1 из 2
расчёт координат от точки по азимуту?
Добавлено: 23 фев 2012, 21:05
andruxin
Есть точка А(lat,lng), есть некое направление с азимутом B. Подскажите формулу как вычислить координаты точки С, например, на расстоянии 1 градус от точки А?
Я пробовал вычислять как полярные координаты, но естественно получилось с большой погрешностью.
Re: расчёт координат от точки по азимуту?
Добавлено: 25 фев 2012, 00:10
andruxin
я ошибся разделом?
Re: расчёт координат от точки по азимуту?
Добавлено: 25 фев 2012, 09:43
rnazarov
Формулы приведены в книги Морозова "Курс сфероидической геодезии" стр.97-99
Re: расчёт координат от точки по азимуту?
Добавлено: 25 фев 2012, 16:50
andruxin
rnazarov, спасибо. пошёл разбираться
Re: расчёт координат от точки по азимуту?
Добавлено: 08 апр 2012, 18:48
andruxin
Опять вернулся к этому вопросу. Взял книгу Морозова и, как обычно получается, вижу фигу((. \Помогите разобраться.
Использую формулы подчёркнутые красным, вот как это выглядит на PHP
Код: Выделить всё
//$lat - текущая широта, $lng - текущая долгота
//$dist - расстояние между искомыми точками
//$ang - азимут на искомую точку
$newlat=sin($lat * PI / 180)*cos($dist * PI / 180)+cos($lat * PI / 180)*sin($dist * PI / 180)*cos($ang * PI / 180);
$newlat=$lat+(asin($newlat));
$newlng=sin($dist * PI / 180)*sin($ang * PI / 180)/(cos($lat * PI / 180)*cos($dist * PI / 180)-sin($lat * PI / 180)*sin($dist * PI / 180)*cos($ang * PI / 180));
$newlng=$lng+(atan($newlng));
Пытаюсь нарисовать окружность, в итоге получается такое(первый скриншот). Красная точка, это точка вокруг которой пытаюсь построить окружность. А в результате окружность строится выше точки. Как так это получается, где я ошибся?
Re: расчёт координат от точки по азимуту?
Добавлено: 08 апр 2012, 20:06
Игорь Белов
Формулу (IV.17) следует понимать буквально:
т. е.
$lat+ лишнее.
Re: расчёт координат от точки по азимуту?
Добавлено: 08 апр 2012, 21:21
andruxin
спасибо! получилось
Re: расчёт координат от точки по азимуту?
Добавлено: 08 апр 2012, 21:51
Petruxin
Если получилось то прочтите на Вики (организационные статьи) статью
Как задать вопрос на форуме GIS-Lab, чтобы получить содержательный ответ
Пункт 4.1.
Re: расчёт координат от точки по азимуту?
Добавлено: 28 янв 2015, 22:56
tems-ya
Дабы не плодить множество одинаковых тем рискну еще раз спросить здесь.
Имеется карта в MapInfo в WGS-84. На данной карте есть точка с координатами LAT, LON (в принятых в MapInfo десятичных градусах). В данной точке расположен некий объект который имеет направление задаваемое углом AZIMUT в градусах. Необходимо на карте нарисовать линию фиксированной длины L (порядка от 100-300 м в масштабе карты) в направлении AZIMUT. Для этого необходимо найти координаты конечной точки LAT1, LON1 которые находятся от начальной LAT, LON на расстоянии L в направлении AZIMUT.
Никакие особые точности не важны. Простая адекватная визуализация +-1...3 градуса, +-10-20%L по дальности вполне допустимо. Вопрос как вычислить LAT1, LON1 - ? Как максимально просто вычислить LAT1, LON1 - ?
Есть предположение, что решение дается выражениями вида:
LAT1 = LAT + 0.718*COS(AZIMUT*PI/180)*L
LON1 = SIN(AZIMUT*PI/180)*L
если они имеют смысл откуда они такие? что такое 0.718 ?
З.Ы. Понимаю вопросы ламерские, но просьба обойтись без стеба, т.к. преследуются чисто практические цели, а конкретно разбираться в 500 страницах курса высшей геодезии как-то уже наверное поздновато - и других задач выше крыши. Также буду благодарен если, кто-то сможет грамотно описать название данной конкретной задачи, чтобы можно было более точно погуглить. То что это прямая геодезическая задача я уже уяснил. Меня интересует развернутое описание типа "это задача вычисление координат на эллипсоиде WGS84 ... бла бла бла ...через ...бла бла бла" или как-то аналогично.
Спасибо.
Re: расчёт координат от точки по азимуту?
Добавлено: 28 янв 2015, 23:55
Игорь Белов
tems-ya писал(а):Есть предположение, что решение дается выражениями вида:
LAT1 = LAT + 0.718*COS(AZIMUT*PI/180)*L
LON1 = SIN(AZIMUT*PI/180)*L
если они имеют смысл откуда они такие? что такое 0.718 ?
Для расстояний 300 метров на местности без претензий к точности предположение годится. Будет как-то так:
Код: Выделить всё
LAT1 = LAT + L * COS(AZIMUT * PI / 180) / (6371000 * PI / 180)
LON1 = LON + L * SIN(AZIMUT * PI / 180) / COS(LAT * PI / 180) / (6371000 * PI / 180)
Откуда они такие? Просто забываем, что Земля круглая, и решаем задачу как плоскую. Только надо учесть, что меридианы к полюсам сближаются, отсюда деление приращения долготы на косинус широты. 6371000 — средний радиус Земли в метрах, так что (6371000 * PI / 180) ≈ 111195 — средняя длина 1° дуги в метрах.
Что такое 0.718? Тайна сия велика есть.
Re: расчёт координат от точки по азимуту?
Добавлено: 29 янв 2015, 15:00
tems-ya
Спасибо за ответ. Все работает, только в ваших формулах длина L задается в метрах, а в моих, в км. Из-за этого я сначала подумал, что формулы не рабочие. Ваши формулы на взгляд заметно точнее. Еще раз спасибо.
Re: расчёт координат от точки по азимуту?
Добавлено: 12 мар 2015, 15:44
tems-ya
Как повысить точность приведенных формул. Неожиданно оказалось, что существующей точности при рисовании дуги не хватает...
Re: расчёт координат от точки по азимуту?
Добавлено: 12 мар 2015, 19:14
Игорь Белов
tems-ya писал(а):Как повысить точность приведенных формул. Неожиданно оказалось, что существующей точности при рисовании дуги не хватает...
Просто прочтите тему с начала.
Re: расчёт координат от точки по азимуту?
Добавлено: 05 май 2016, 10:47
Warden
Ребят, задача та же, пытаюсь рассчитать координаты точки, получаю координаты от изначальной с разницей порядка минут (хотя, расстояние между точками 1000км). Для проверки решал для нахождение координат Москвы, при известных координатах Питера, получил то же самое. Кто может подсказать что не так?
Код: Выделить всё
$phi = 62.8356; $lyambda = 61.2193; $A = 328.7625; $L = 1008.18; $R = 6371; $s = $L/$R;
Где phi - широта, lyambda - долгота, А - азимут, L - расстояние до точки (км), R - радиус Земли. $s - переход к угловой мере расстояния.
Код: Выделить всё
$grad = pi()/180;
$phi1 = asin(cos($s*$grad)*sin($phi*$grad)+sin($s*$grad)*cos($phi*$grad)*cos($a*$grad)*180/pi();
echo $phi1;
***62.970788480261***
$lyambda1 = $lyambda + atan(sin($s*$grad)*sin($A*$grad)/(cos($s*$grad)*cos($phi*$grad)-sin($s*$grad)*sin($phi*$grad)*cos($A*$grad)))*180/pi();
echo $lyambda1;
***61.038719442206***
В общем, прошу помощи разобраться, что не так.
P.S. программа написана на
php.
Re: расчёт координат от точки по азимуту?
Добавлено: 05 май 2016, 12:19
Игорь Белов
Warden писал(а):$s - переход к угловой мере расстояния
Вы подставляете в формулы дугу s, как будто она в градусах, хотя она в радианах.