реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Несколько вопросов по обработке NMEA
V_G
сообщение Jul 18 2011, 05:45
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Ну, я предпочитаю выбирать те девайсы, которые удовлетворяют определенным требованиям. Во всех них стоят достаточно мощные процессоры, рассчитывающие координаты в геоцентрической системе, и лишь потом пересчитывающие в географические (для NMEA, например). А потом мы своей прогой на слабом процессоре пытаемся делать обратное преобразование - зачем?
Хотя платим за скорость и точность вычислений потерей универсальности, согласен.
Go to the top of the page
 
+Quote Post
MKdemiurg
сообщение Jul 18 2011, 08:27
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 624
Регистрация: 15-06-10
Из: Россия
Пользователь №: 57 939



Цитата(V_G @ Jul 18 2011, 09:45) *
Ну, я предпочитаю выбирать те девайсы, которые удовлетворяют определенным требованиям. Во всех них стоят достаточно мощные процессоры, рассчитывающие координаты в геоцентрической системе, и лишь потом пересчитывающие в географические (для NMEA, например). А потом мы своей прогой на слабом процессоре пытаемся делать обратное преобразование - зачем?
Хотя платим за скорость и точность вычислений потерей универсальности, согласен.

Ну так , насколько я знаю, во всех приёмниках сначала вычисляются геоцентрические координаты. Просто не во всех есть бинарный протокол.
А вернуть из NMEA в геоцентрические координаты не требует особых ресурсов. Мне Atmega16 хватало чтобы всю математику реализовать ,включая поправки. Но вообще вы правы - sirf удобнее для вычислений.
Go to the top of the page
 
+Quote Post
Frolov Kirill
сообщение Jul 18 2011, 11:41
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 212
Регистрация: 2-02-11
Пользователь №: 62 643



Выше какие-то попросту бредовые утверждения. Да, в декартовой системе координат посчитать расстояние между двумя точками можно и без арктангенса и т.п. Но какой в этом смысл, если это будет наикратчайшее расстояние по-прямой, при том, что интересует скорей путь на поверхности сферы (эллипсоида) земли?

Если расстояния маленькие (единицы-десятки километров) и погрешности допустимы большие, то можно посчитать "широтный радиус", домножив на косинус (всё в целых числах, 16 бит) получить координаты в декартовой системе и посчитать расстояние для плоскости...

Иначе считать как написано здесь, например, (http://gis-lab.info/qa/great-circles.html) и не морочить мозг. Хотя арктангенс в целых числах можно тоже написать и всё остальное тоже -- овчинка выделки не стоит, проще #include <math.h> И не надо притягивать SIRF за уши, он абсолютно ничем не поможет, в полярных координатах даже проще.

Сообщение отредактировал Frolov Kirill - Jul 18 2011, 11:44
Go to the top of the page
 
+Quote Post
V_G
сообщение Jul 18 2011, 13:25
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Ну, вообще-то дистанция между двумя точками на расстоянии сотен-тысяч километров мало кого интересует. Интересует пробег, т.е. сумма дистанций по достаточно частым засечкам (километр - два максимум, иначе о пробеге говорить смысла нет). А в этом случае расчет в декартовых координатах гораздо точнее.
MKdemiurg
Про atmeg'у 16 конечно, правильное утверждение, но только в том случае, если процессору нечем заняться, кроме как координаты пересчитывать. Для моих задач это всего одна из многих функций, и я предпочту освободить процессорное время для их реализации вместо повторного обратного пересчета.

P.S. специально для Frolov Kirill.
Земля не имеет форму шара. При преобразованиях координат используются модели Земли в виде различных эллипсоидов: WGS-84, Красовского (предпочтительны для нашей страны) и пр. Так что действительно точные расчеты по географическим координатам несколько сложнее, чем в приведенной Вами ссылке.

P.P.S. Особенно в этой ссылке умиляет радиус Земли, приведенный с точностью до метра, когда разность большой и малой полуосей эллипсоида WGS-84 составляет более 21 километра.

Сообщение отредактировал V_G - Jul 18 2011, 13:57
Go to the top of the page
 
+Quote Post
MKdemiurg
сообщение Jul 18 2011, 14:06
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 624
Регистрация: 15-06-10
Из: Россия
Пользователь №: 57 939



Цитата(Frolov Kirill @ Jul 18 2011, 15:41) *
Выше какие-то попросту бредовые утверждения. Да, в декартовой системе координат посчитать расстояние между двумя точками можно и без арктангенса и т.п. Но какой в этом смысл, если это будет наикратчайшее расстояние по-прямой, при том, что интересует скорей путь на поверхности сферы (эллипсоида) земли?

Если расстояния маленькие (единицы-десятки километров) и погрешности допустимы большие, то можно посчитать "широтный радиус", домножив на косинус (всё в целых числах, 16 бит) получить координаты в декартовой системе и посчитать расстояние для плоскости...

Иначе считать как написано здесь, например, (http://gis-lab.info/qa/great-circles.html) и не морочить мозг. Хотя арктангенс в целых числах можно тоже написать и всё остальное тоже -- овчинка выделки не стоит, проще #include <math.h> И не надо притягивать SIRF за уши, он абсолютно ничем не поможет, в полярных координатах даже проще.


Ну так а кто вам сказал, что расстояния в сотни км высчитываються как хорда? Всё зависит от точности. Можно разбить путь по апроксимирующему эллипсоиду на сотни или тысячи точек с меньшим расстояние между собой ( на цифровых картах используються точки "перелома").
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение Jul 18 2011, 14:38
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Дак по какой конкретной формуле будет точнее всего рассчитать небольшое расстояние (от 10м до 1км), зная широту и долготу?
По следующей чтоле, взятой отсюда, как посоветовал Frolov Kirill?


Сообщение отредактировал Alt.F4 - Jul 18 2011, 14:39
Go to the top of the page
 
+Quote Post
MKdemiurg
сообщение Jul 18 2011, 15:27
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 624
Регистрация: 15-06-10
Из: Россия
Пользователь №: 57 939



Цитата(Alt.F4 @ Jul 18 2011, 18:38) *
Дак по какой конкретной формуле будет точнее всего рассчитать небольшое расстояние (от 10м до 1км), зная широту и долготу?
По следующей чтоле, взятой отсюда, как посоветовал Frolov Kirill?


Только это для поверхности апроксимирующего эллипсоида, а у вас есть ещё и высота на уровнем моря. + к тому отклонения идеального элипсоида от реальной земной поверхности. Гораздо точнее разбить весь путь на маленькие отрезки ( с цифровыми картами это даже проще) и сложить их длины. Если совсем маленькие - то на кривизну можно забить и считать как на 1 странице я выложил код "усреднённого" расстояния. Гораздо проще. Можно также строить сектора в декартвой системе и находить длины дуг сектора (при этом можно ещё и высоту ввести в расчёты) и складывать потом.
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение Jul 18 2011, 16:02
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Цитата
Если совсем маленькие - то на кривизну можно забить и считать как на 1 странице я выложил код "усреднённого" расстояния.
По большому счету, я думаю до 1км на кривизну можно точно забивать.
А откуда Ваши формулы (с 1-ой страницы) взяты?
Спасибо.
Go to the top of the page
 
+Quote Post
MKdemiurg
сообщение Jul 18 2011, 16:38
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 624
Регистрация: 15-06-10
Из: Россия
Пользователь №: 57 939



Цитата(Alt.F4 @ Jul 18 2011, 20:02) *
По большому счету, я думаю до 1км на кривизну можно точно забивать.
А откуда Ваши формулы (с 1-ой страницы) взяты?
Спасибо.


Оттуда же, http://gis-lab.info/qa/great-circles.html. Ну точнее , это общеизвестные формулы. Я брал ещё из гофман-гелленгофф "Глобальная система определения местоположения". А код реализованный есть ещё под pascal в сети. Переделал для себя под С.

Цитата
2. Формула гаверсинусов

Используется, чтобы избежать проблем с небольшими расстояниями.


Дополню, точнее уточню.
По этой формуле вы получаете угловую разницу. А потом зная приближённый радиус для данной широты - ищете дугу.

Сообщение отредактировал MKdemiurg - Jul 18 2011, 16:54
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение Jul 18 2011, 17:05
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



MKdemiurg, а, дак Вы как раз и использовали формулу, которую я "скопипастил" в пост_21.
Просто сразу не вчитывался в Ваш листинг...
Значит будем юзать ее.
Спасибо.

Сообщение отредактировал Alt.F4 - Jul 18 2011, 17:06
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 23:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01441 секунд с 7
ELECTRONIX ©2004-2016