Библиотека представления времени GPS - PullRequest
11 голосов
/ 14 июня 2010

Я ищу библиотеку Java, которая обрабатывает преобразование в / из Время GPS .

Время GPS имеет эпоху 6 января 1980 года и не имеет високосных секунд, поэтому оно отличается от более стандартных представлений времени.Вот соответствующее описание из Википедии:

В то время как большинство часов синхронизировано с всемирным координированным временем (UTC), атомные часы на спутниках установлены на время GPS.Разница в том, что время GPS не корректируется, чтобы соответствовать вращению Земли, поэтому оно не содержит високосных секунд или других поправок, которые периодически добавляются в UTC.Время GPS было установлено в соответствии с всемирным координированным временем (UTC) в 1980 году, но с тех пор оно разошлось.Отсутствие поправок означает, что время GPS остается постоянным смещением с Международным атомным временем (TAI) (TAI - GPS = 19 секунд).Периодические корректировки выполняются на бортовых часах, чтобы исправить релятивистские эффекты и синхронизировать их с наземными часами.

В навигационном сообщении GPS содержится разница между временем GPS и временем UTC, которое по состоянию на 2009 год составляет 15 секунд из-задополнительная секунда, добавленная к UTC 31 декабря 2008 года. Получатели вычитают это смещение из времени GPS для вычисления значений UTC и конкретных значений часового пояса.Новые устройства GPS могут не отображать правильное время UTC до получения сообщения о смещении UTC.Поле смещения GPS-UTC может вместить 255 високосных секунд (восемь битов), которые, учитывая текущую скорость изменения вращения Земли (с введением одной скачкообразной секунды приблизительно каждые 18 месяцев), должны быть достаточными, чтобы длиться приблизительно до 2300 года.

В отличие от формата года, месяца и дня григорианского календаря, дата GPS выражается в виде номера недели и номера секунды в неделю.Номер недели передается в виде десятибитового поля в навигационных сообщениях C / A и P (Y), и поэтому он снова становится равным нулю каждые 1024 недели (19,6 года).Нулевая неделя GPS началась в 00:00:00 UTC (00:00:19 TAI) 6 января 1980 года, а номер недели снова стал нулевым в 23:59:47 UTC 21 августа 1999 года (00: 00: 19 TAI 22 августа 1999 г.)Чтобы определить текущую григорианскую дату, приемник GPS должен быть снабжен приблизительной датой (с точностью до 3584 дней) для правильного перевода сигнала даты GPS.Для решения этой проблемы модернизированное навигационное сообщение GPS использует 13-битное поле, которое повторяется только каждые 8 ​​192 недели (157 лет), таким образом, оно продолжается до 2137 года (157 лет после нулевой недели GPS).

Я бы предпочел не кататься самостоятельно;Я не вижу ничего во время Joda, указывающего, что это может обращаться с датами, закодированными с GPS ... есть ли способ продлить это?

Ответы [ 3 ]

3 голосов
/ 07 сентября 2010

JSR-310 имеет классы TAIInstant и UTCInstant, которые помогут решить эту проблему (поскольку шкала времени GPS является вариацией TAI). Они расположены в проекте ThreeTen-Extra .

2 голосов
/ 27 июля 2010

Этот веб-сайт, кажется, делает преобразование на лету в javascript. текст ссылки

0 голосов
/ 08 июля 2010

Можете ли вы уточнить, что вы пытаетесь сделать?

Если вы читаете данные с GPSr, поток NMEA должен быть скорректирован с учетом дрейфа UTC в соответствии с вашей цитатой и подтвержден этим.

...