跳到主要内容

空间大地测量时间系统

本文首先介绍常见的几种时间标示法,包括格里高利时、儒略日、GPS 时和年积日,并介绍各个时间系统的相互转换。相关的转换函数在 gpstime 开源软件库中提供。

时间标示法

从古至今,世界各国曾出现过多种历法,如罗马历、儒略日、格里高利以及我国的农历等,目前世界上广泛采用的历法是格里高利历。

格里高利时(通用时)

「格里高利历」也称公历,现被世界各国广泛采用。格里高利历是一个由 146097 天所组成的 400 年周期为基础,1年的平均长度为 365.2425 天。根据格里高利历1年被划分为12个月。其标示时间时采用年、月、日、时、分、秒的方法。这种计时反映季节变化,与日常生活密切相关,但非连续,不利于数学表达和科学计算。

儒略日

儒略日是一种不涉及年、月等概念的长期连续的记日法,在天文学、空间大地测量和卫星导航定位中经常使用。这种方法是由 Scaliger 于1583年提出的,为纪念他的父亲儒略而命名为儒略日。儒略日的起点订在公元前4713年(天文学上记为 -4712 年)1月1日格林威治时间平午(世界时12:00),即 JD 0 指定为 4713 B.C. 1月1日12:00 UT 到 4713 B.C. 1月2日12:00 UT 的24小时。每一天赋予了一个唯一的数字。

由于儒略日数字位数太多,国际天文学联合会于1973年采用简化儒略日(MJD),其定义为 MJD = JD - 2400000.5。MJD 相应的起点是1858年11月17日世界时 0 时。例如1979年10月1日零时儒略日数为 2,444,147.5。

GPS 时

GPS 系统内部所采用的时间系统是 GPS 时间,GPS 时以1980年1月6日子夜为起点,用周数(一个星期七天)和周内的秒数来表示。

年积日

所谓年积日就是指的是从每年的1月1日起开始累计的天数,计数从 1 开始(即每年1月1日的年积日为1),如2004年5月1日的年积日为 122。用他可以方便的求出一年内两个时刻 T1 和 T2 间的时间间隔。

各个时间系统的相互转换

各个时间系统都有严格的转换公式,其转换的主要思想是把通用时、GPS 时间、和年积日分别转换为儒略日,然后以儒略日为媒介,实现任意两个时间系统的相互转换。gpstime 是一个实现了各个时间系统相互转换的库,下面我们会以它为例进行讲解。

转换思想如下图所示:

通用时与儒略日间的相互转换

由通用时转换到儒略日

API 函数:

CommonTimeToJulianDay( pct, pjd )

转换公式:

JD=INT[365.25y]+INT[30.6001(m+1)]+D+UT/24+1720981.5JD = INT[365.25y] + INT[30.6001(m+1)] + D + UT/24 + 1720981.5

其中

  • 如果 M≤2,则 y=Y-1,m=M+12;
  • 如果 M>2,则 y=Y,m=M
  • JD 为儒略日,Y 为年,M 为月,D 为日,UT 为世界时。

由儒略日转换到通用时

API 函数:

JulianDayToCommonTime( pjd, pct )

转换公式:

a=INT[JD+0.5]a = INT[JD + 0.5] b=a+1537b = a + 1537 c=INT[(b122.1)/365.25]c = INT[(b-122.1)/365.25] d=INT[365.25.c]d = INT[365.25.c] e=INT[(bd)/30.6001]e = INT[(b-d)/30.6001]

D=bdINT[20.6001e]+FRAC[JD+0.5]D = b-d-INT[20.6001e]+FRAC[JD+0.5]

M=e112INT[e/14]M = e-1-12*INT[e/14]

Y=c4715INT[(7+M)/10]Y = c-4715-INT[(7+M)/10]

星期几,N=0 为星期一,N=1 为星期二,...

N=mod{INT[JD+0.5],7}N = mod\{INT[JD+0.5],7\}

通用时与 GPS 时间间的相互转换

由通用时转换到 GPS 时间

API 函数:

CommonTimeToGPSTime( pct, pgt )

主要分两步进行:

  • 第一步:计算 GPS 周
  • 第二步:计算一周内的秒数

由 GPS 时间转换到通用时

API 函数:

GPSTimeToCommonTime( pgt, pct )

主要分两步进行:

  • 第一步:由 GPS 时间转换到儒略日
  • 第二步:由儒略日转换到通用时

儒略日与年积日之间的相互转换

由儒略日转换到年积日

API 函数:

JulianDayToDOY( pjd, pdoy )

主要分三步进行:

  • 第一步:计算出通用时
  • 第二步:计算出当年1月1日的儒略日
  • 第三步:两个儒略日求差加 1,得出年积日

年积日转换到儒略日

API 函数:

DOYToJulianDay( pdoy, pjd )

主要分一下两步进行:

  • 第一步:计算出当年1月1日的儒略日 JD1
  • 第二步:年积日加 JD1 减 1 得儒略日

GPS 时与年积日间的相互转换

参照儒略日与年积日之间转换方法进行就可以得到结果。

GPS 时转换到年积日

API 函数:

GPSTimeToDOY ( pgt, pdoy )

年积日转换到 GPS 时

API 函数:

DOYToGPSTime (pdoy, pgt )

参考