расчёт координат от точки по азимуту?
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 23 фев 2012, 20:50
- Репутация: 0
расчёт координат от точки по азимуту?
Есть точка А(lat,lng), есть некое направление с азимутом B. Подскажите формулу как вычислить координаты точки С, например, на расстоянии 1 градус от точки А?
Я пробовал вычислять как полярные координаты, но естественно получилось с большой погрешностью.
Я пробовал вычислять как полярные координаты, но естественно получилось с большой погрешностью.
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 23 фев 2012, 20:50
- Репутация: 0
Re: расчёт координат от точки по азимуту?
я ошибся разделом?
-
- Участник
- Сообщения: 61
- Зарегистрирован: 25 дек 2009, 15:44
- Репутация: 3
- Откуда: Казань
Re: расчёт координат от точки по азимуту?
Формулы приведены в книги Морозова "Курс сфероидической геодезии" стр.97-99
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 23 фев 2012, 20:50
- Репутация: 0
Re: расчёт координат от точки по азимуту?
rnazarov, спасибо. пошёл разбираться
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 23 фев 2012, 20:50
- Репутация: 0
Re: расчёт координат от точки по азимуту?
Опять вернулся к этому вопросу. Взял книгу Морозова и, как обычно получается, вижу фигу((. \Помогите разобраться.
Использую формулы подчёркнутые красным, вот как это выглядит на PHP
Пытаюсь нарисовать окружность, в итоге получается такое(первый скриншот). Красная точка, это точка вокруг которой пытаюсь построить окружность. А в результате окружность строится выше точки. Как так это получается, где я ошибся?
Использую формулы подчёркнутые красным, вот как это выглядит на 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));
- Вложения
-
- staticmap.png (51.62 КБ) 33379 просмотров
-
- morozov-99-100.png (111.2 КБ) 33379 просмотров
- Игорь Белов
- Гуру
- Сообщения: 2229
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1501
- Откуда: Казань
Re: расчёт координат от точки по азимуту?
Формулу (IV.17) следует понимать буквально:
т. е. $lat+ лишнее.
Код: Выделить всё
$newlat = asin($newlat) * 180 / PI
The purpose of computing is insight, not numbers
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 23 фев 2012, 20:50
- Репутация: 0
Re: расчёт координат от точки по азимуту?
спасибо! получилось
-
- Гуру
- Сообщения: 1695
- Зарегистрирован: 14 июн 2011, 16:47
- Репутация: 133
- Ваше звание: Завсегдатай
- Откуда: Череповец
Re: расчёт координат от точки по азимуту?
Если получилось то прочтите на Вики (организационные статьи) статью
Пункт 4.1.Как задать вопрос на форуме GIS-Lab, чтобы получить содержательный ответ
-
- Интересующийся
- Сообщения: 39
- Зарегистрирован: 28 янв 2015, 22:07
- Репутация: 1
- Откуда: Воронеж
Re: расчёт координат от точки по азимуту?
Дабы не плодить множество одинаковых тем рискну еще раз спросить здесь.
Имеется карта в 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 ... бла бла бла ...через ...бла бла бла" или как-то аналогично.
Спасибо.
Имеется карта в 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 ... бла бла бла ...через ...бла бла бла" или как-то аналогично.
Спасибо.
- Игорь Белов
- Гуру
- Сообщения: 2229
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1501
- Откуда: Казань
Re: расчёт координат от точки по азимуту?
Для расстояний 300 метров на местности без претензий к точности предположение годится. Будет как-то так:tems-ya писал(а):Есть предположение, что решение дается выражениями вида:
LAT1 = LAT + 0.718*COS(AZIMUT*PI/180)*L
LON1 = SIN(AZIMUT*PI/180)*L
если они имеют смысл откуда они такие? что такое 0.718 ?
Код: Выделить всё
LAT1 = LAT + L * COS(AZIMUT * PI / 180) / (6371000 * PI / 180)
LON1 = LON + L * SIN(AZIMUT * PI / 180) / COS(LAT * PI / 180) / (6371000 * PI / 180)
Что такое 0.718? Тайна сия велика есть.
The purpose of computing is insight, not numbers
-
- Интересующийся
- Сообщения: 39
- Зарегистрирован: 28 янв 2015, 22:07
- Репутация: 1
- Откуда: Воронеж
Re: расчёт координат от точки по азимуту?
Спасибо за ответ. Все работает, только в ваших формулах длина L задается в метрах, а в моих, в км. Из-за этого я сначала подумал, что формулы не рабочие. Ваши формулы на взгляд заметно точнее. Еще раз спасибо.
-
- Интересующийся
- Сообщения: 39
- Зарегистрирован: 28 янв 2015, 22:07
- Репутация: 1
- Откуда: Воронеж
Re: расчёт координат от точки по азимуту?
Как повысить точность приведенных формул. Неожиданно оказалось, что существующей точности при рисовании дуги не хватает...
- Игорь Белов
- Гуру
- Сообщения: 2229
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1501
- Откуда: Казань
Re: расчёт координат от точки по азимуту?
Просто прочтите тему с начала.tems-ya писал(а):Как повысить точность приведенных формул. Неожиданно оказалось, что существующей точности при рисовании дуги не хватает...
The purpose of computing is insight, not numbers
-
- Интересующийся
- Сообщения: 25
- Зарегистрирован: 16 сен 2015, 16:43
- Репутация: 7
- Откуда: Королёв
Re: расчёт координат от точки по азимуту?
Ребят, задача та же, пытаюсь рассчитать координаты точки, получаю координаты от изначальной с разницей порядка минут (хотя, расстояние между точками 1000км). Для проверки решал для нахождение координат Москвы, при известных координатах Питера, получил то же самое. Кто может подсказать что не так?
Где phi - широта, lyambda - долгота, А - азимут, L - расстояние до точки (км), R - радиус Земли. $s - переход к угловой мере расстояния.
В общем, прошу помощи разобраться, что не так.
P.S. программа написана на php.
Код: Выделить всё
$phi = 62.8356; $lyambda = 61.2193; $A = 328.7625; $L = 1008.18; $R = 6371; $s = $L/$R;
Код: Выделить всё
$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.
- Игорь Белов
- Гуру
- Сообщения: 2229
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1501
- Откуда: Казань
Re: расчёт координат от точки по азимуту?
Вы подставляете в формулы дугу s, как будто она в градусах, хотя она в радианах.Warden писал(а):$s - переход к угловой мере расстояния
The purpose of computing is insight, not numbers
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя