Тонкости работы с $GPRMC ???

Общие вопросы по навигации, GPS и ГЛОНАСС приемникам, программам, картам, ГИС-системам и оборудованию
Закрыто
mad-ghost
Новенький (0 lvl)
Сообщения: 12
Зарегистрирован: Вс июн 29, 2008 21:04

Тонкости работы с $GPRMC ???

Сообщение mad-ghost » Ср авг 20, 2008 00:01

Здравствуйте, кто пытался программы писать для GPS? можете мне хоть как то помочь? я просто выбился из сил уже.

есть ASUS620BT+BT-338
все работает, прекрасно, но!!! в программе GisRussa ещё заметил скорость определяет как бы неверно, км на 5 меньше чем показывает спидометр машины. Определяет расстояние проеханное на машине с точностью до нескольких метров хотя проезжаешь несколько сот километров, что не может не радовать.
Дальше, начал писать свою программу для работы в такси, с чем столкнулся?!?!?!?!
с тем, как определить пройденное расстояние?
как определить текущую скорость? долго рылся в сайтах, пока не нашел английского названия узлам knots...
сначала пробовал в общем 1,94384 умножать на показания Speed Over Ground, морская миля в час (узел). скорость показывает прям ту что на спидометре, потом увидел другие цифры, оказывается 1,853 коэфициент, и увидел как раз ту самую разницу в показаниях машины и GPS в 5-6км. что это может быть? неправильно показывает GPS или машина?
дальше проблема считать расстояние :(((( тут вообще уныло. но выход вроде бы нашолся. если данные приходят каждую секунду в узлах, значит за секунду я проехал столько то узлов/час, есть коэф. для перевода узлов в метры/сек равен 0,515.соответственно каждую секунду я беру показания скорости с GPS и прибавляю к переменной distance допустим, чтобы узнать пройденное расстояние я просто умножаю переменную distance * 0,515 но это опять же неправильные данные :((( так как этот коэф. напрямую зависит с другим 1,853, а когда делаю через 1,94384, это примерно 0,54 то вчера ездил сравнивал за 7км отставание примерно 40метров, что уже более менее само по себе.
Но все это как то приблизительно, + когда стоишь, показывает скорость 0,05...4км/час :((( что с этим делать я вообще ума не приложу, если скорость меньше 4-5км/час вообще не брать в рассчет эти данные чтоли? или как то по другому решается этот вопрос?

итак три главных вопроса:
1. Сравнивал кто нибудь скорость у того же GisRussa и спидометра машины, отличаются ли они и насколько?
2. Как все таки правильно считать пройденное расстояние?
3. Что делать со скоростью (паразитной) во время остановки машины?

спасибо.

Аватара пользователя
fuzzy-bear
Нобелевский лауреат (7 lvl)
Сообщения: 5250
Зарегистрирован: Вт фев 21, 2006 13:12

Сообщение fuzzy-bear » Ср авг 20, 2008 03:06

1. Кстати, еще неизвестно, что показывает скорость точнее. Спидометр - это не прецизионный прибор и показывает ее "приблизительно".
3. Только как-то отслеживать показания спидометра. Т.е. если он на нуле - не считать эти колебания туда-сюда. Причина - в том, что гражданское определение координат "гуляет" туда-сюда - искусственно вносимая погрешность, которой при обычной езде можно пренебречь.

mad-ghost
Новенький (0 lvl)
Сообщения: 12
Зарегистрирован: Вс июн 29, 2008 21:04

Сообщение mad-ghost » Ср авг 20, 2008 10:51

спасибо, тогда следующий вопрос, вот есть координаты например
5435.8334,05227.1706
либо 54,597223, 52,45284
сколько это метров? какое значение в этих координатах имеет метр?
и чем отличаются эти два параметра? кроме того что надо две цифры до точки и все цифры после точки делить на 60? в чем прикол то?

Аватара пользователя
adanilov
Профессор (5 lvl)
Сообщения: 863
Зарегистрирован: Ср сен 28, 2005 12:36

Сообщение adanilov » Пт авг 22, 2008 00:26

mad-ghost писал(а):спасибо, тогда следующий вопрос, вот есть координаты например
5435.8334,05227.1706
либо 54,597223, 52,45284
сколько это метров? какое значение в этих координатах имеет метр?
и чем отличаются эти два параметра? кроме того что надо две цифры до точки и все цифры после точки делить на 60? в чем прикол то?
Вопрос конечно интересный!

Начнем с того, что делить на 60 не всегда надо.
Чаще всего используется три вида представления координат.
ГГ.гггг – сколько-то градусов с десятыми (тысячными)
ГГ ММ.ммм - столько-то градусов и минут с десятыми (тысячными)
ГГ ММ СС - столько-то градусов с минутами и секундами.

Для пересчета между минутами с секундами и минутами с десятыми или градусами с десятыми и используется деление на 60 (если не помните в одной минуте 60 секунд).
Все это от угла поворота земли вокруг своей оси (полный оборот 360 градусов).

Для удобства пользования землю поделили на северное и южное полушарие от 0 градусов (экватор) до 90 (полюса) - широта и западное и восточное полушарие от (0 до 180 градусов восточного или западного полушарий) – долгота. 0 в Англии 180 между Камчаткой и Аляской.

В связи сказанным, любая координата на местности должна состоять из двух цифр широты и долготы. Причем это может быть N55.00 E 36.00 (55 градусов северной широты 36 восточной долготы) S55.00 E36.00 (55 градусов южной широты 36 восточной долготы), N55.00 W36.00 (55 градусов северной широты 36 западной долготы), S55.00 W36.00 (55 градусов южной широты 36 западной долготы)

По этому ваши данные 54,597223, 52,45284 - могут быть в четырех точках «шарика»
(N54,597223 E52,45284 – Лениногорск, S54,597223 E52,45284 - Южнее Мадагаскара, ближе к Антарктиде, N54,597223 W52,45284 – Лабрадорское море, около северной Америки, S54,597223 W52,45284 – южнее Фолклендских островов).

В связи с тем, что земля имеет форму шара, расстояние между двумя точками с одной широтой или с одной долгой имеют разные значения.
Если долгота не меняется, то расстояние между точками в 1 градус широты приблизительно равна 111, 1 км (меряем от экватора к полюсам) причем в любой точке «шарика».
А вот если широта не измена, а меняется долгота, тут результат зависит от широты измерения (длинна окружности уменьшается от экватора к полюсам), На экваторе 1 градус долготы те же 111,1 км, на долготе Москвы (N55.0) – около 63,7 км , а на долготе Питера (N59,9) уже 55,8 км. К полюса еще меньше.

Формула расчета расстояния между двумя координатами довольно сложная. В архиве лежит калькулятор, который позволяет рассчитать расстояние между двумя координатам, не заморачиваясь с косинусами и синусами углов.

А вообще-то yandex и Google очень полезные штуки….
Вложения
rx4hx.zip
(213.74 КБ) 284 скачивания
FS LOOX N560+HP iPAQ2210+Haicom HI-303III+Смилинк УПИ+SonyEricsson K790i+PocketGPS Pro 2.4.272+mskmo0704+Автоспутник

mad-ghost
Новенький (0 lvl)
Сообщения: 12
Зарегистрирован: Вс июн 29, 2008 21:04

Сообщение mad-ghost » Вс авг 24, 2008 03:20

adanilov, спасибо большое за такое подробное разъяснение, буду копать дальше, мне бы лучше формулы, только я не знаю что спрашивать у гугля и яндекса :( калькулятор не поможет, мне нужно в программе это уже описывать, а не в ручную считать. Но все равно огромное при огромное спасибо!!!!

mad-ghost
Новенький (0 lvl)
Сообщения: 12
Зарегистрирован: Вс июн 29, 2008 21:04

Сообщение mad-ghost » Вс авг 24, 2008 23:12

в общем разобрался :)

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

private Double Dist(Double startLat, Double startLong, Double endLat, Double endLong)
        {
            return 111.2 * Math.Acos(Math.Sin(startLat) * Math.Sin(endLat) + Math.Cos(startLat) * Math.Cos(endLat) * Math.Cos(startLong - endLong));
        }
на языке C#.
Вроде правильно показывает, но завтра поеду проверять, по спидометру, по скорости и по координатам.

Аватара пользователя
adanilov
Профессор (5 lvl)
Сообщения: 863
Зарегистрирован: Ср сен 28, 2005 12:36

Сообщение adanilov » Вс авг 24, 2008 23:41

mad-ghost писал(а):в общем разобрался :)

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

private Double Dist(Double startLat, Double startLong, Double endLat, Double endLong)
        {
            return 111.2 * Math.Acos(Math.Sin(startLat) * Math.Sin(endLat) + Math.Cos(startLat) * Math.Cos(endLat) * Math.Cos(startLong - endLong));
        }
на языке C#.
Вроде правильно показывает, но завтра поеду проверять, по спидометру, по скорости и по координатам.
Со спидометром сравнивать не советую. Чаще всего они (спидометры) показывают не совсем точно, иногда ошибка до 10-15 км/ч.
Одометры так же не совсем точны, чаще всего ошибка одометра связанна с работой дифференциала. Т. е. Если ехать прямо, то будет одно показание, если делать круг направо – то другое, а если налево – то трете…
FS LOOX N560+HP iPAQ2210+Haicom HI-303III+Смилинк УПИ+SonyEricsson K790i+PocketGPS Pro 2.4.272+mskmo0704+Автоспутник

Закрыто

Вернуться в «Навигация - общие вопросы»