2010-06-14 16 views
11

Estoy buscando una biblioteca de Java que maneje la conversión a/desde GPS Time.Biblioteca de representación de tiempo de GPS

GPS Time tiene una época del 6 de enero de 1980, y no tiene segundos intercalares, por lo que difiere de las representaciones de tiempo más estándar. Aquí está la descripción relevante de wikipedia:

Si bien la mayoría de los relojes están sincronizados con el Tiempo Universal Coordinado (UTC), los relojes atómicos en los satélites se configuran con la hora del GPS. La diferencia es que el tiempo del GPS no se corrige para que coincida con la rotación de la Tierra, por lo que no contiene segundos intercalares u otras correcciones que se agregan periódicamente a UTC. La hora del GPS se configuró para coincidir con el Tiempo Universal Coordinado (UTC) en 1980, pero desde entonces ha divergido. La falta de correcciones significa que el tiempo del GPS permanece en una compensación constante con el Tiempo Atómico Internacional (TAI) (TAI - GPS = 19 segundos). Las correcciones periódicas se realizan en los relojes incorporados para corregir los efectos relativistas y mantenerlos sincronizados con los relojes terrestres. El mensaje de navegación del GPS incluye la diferencia entre el tiempo del GPS y UTC, que a partir de 2009 es de 15 segundos debido al segundo intercalar agregado al UTC del 31 de diciembre de 2008. Los receptores restan este desplazamiento del tiempo GPS para calcular el UTC y la zona horaria específica. valores. Las nuevas unidades GPS pueden no mostrar la hora UTC correcta hasta después de recibir el mensaje de compensación UTC. El campo de desplazamiento GPS-UTC puede acomodar 255 segundos bisiestos (ocho bits) que, dada la tasa actual de cambio de la rotación de la Tierra (con un segundo intercalar introducido aproximadamente cada 18 meses), debería ser suficiente para durar aproximadamente el año 2300.

A diferencia del formato de año, mes y día del calendario gregoriano, la fecha del GPS se expresa como un número de semana y un número de segundos en semana. El número de semana se transmite como un campo de diez bits en los mensajes de navegación C/A y P (Y), por lo que vuelve a cero cada 1,024 semanas (19,6 años). La semana cero del GPS comenzó a las 00:00:00 UTC (00:00:19 TAI) del 6 de enero de 1980, y el número de la semana volvió a cero nuevamente por primera vez a las 23:59:47 UTC del 21 de agosto de 1999 (00 : 00: 19 TAI el 22 de agosto de 1999). Para determinar la fecha gregoriana actual, se debe proporcionar un receptor GPS con la fecha aproximada (hasta 3,584 días) para traducir correctamente la señal de fecha GPS. Para solucionar este problema, el mensaje de navegación GPS modernizado usa un campo de 13 bits, que solo se repite cada 8.192 semanas (157 años), y dura hasta el año 2137 (157 años después de la semana GPS cero).

Prefiero no tener que hacer mi propio; No veo nada en el horario de Joda que indique que pueda manejar fechas codificadas por GPS ... ¿hay alguna forma de ampliarlo?

Respuesta

2

Este sitio web parece estar haciendo la conversión sobre la marcha en javascript. link text

+0

Gracias, utilicé este sitio web para construir mi propio código de biblioteca Java que realiza la conversión. – I82Much

+0

@ I82Much ¿Podrías explicar en qué te refieres con * usar * ese sitio web? – Pacerier

+0

Miré la fuente para ver qué estaba haciendo y la convertí a Java – I82Much

0

¿Puede explicar lo que está tratando de hacer?

Si está leyendo datos de un GPSr, el flujo NMEA debe corregirse para la deriva UTC de acuerdo con su presupuesto y confirmado por this.

+0

Este sitio web parece estar haciendo la conversión sobre la marcha en javascript. http://leapsecond.com/java/gpsclock.htm – GinoA

+0

Envíelo como respuesta y lo marcaré como aceptado. – I82Much

3

JSR-310 tiene clases TAIInstant y UTCInstant que ayuden a resolver este problema (como el GPS escala de tiempo es una variación del TAI). Estos se encuentran en el proyecto ThreeTen-Extra.

Cuestiones relacionadas