ITRS/GCRS/J2000坐标系的相互转换

ITRS/GCRS/J2000坐标系的相互转换ITRS GCRS J2000 坐标系的相互转换本文主要阐述了目前国际天文界最新规定的岁差章动模型 IAU2000A B 并根据此模型给出 ITRS GCRS 和 J2000 平赤道地心系相互转换的详细步骤 本文主要依据 IERSConventi IERSTechnica 32 而来 由于文章为英文 且详细叙述了 ITRS GCRS 参考系以及岁差章动等模型 会使

本文主要依据《IERS Conventions 2003》(IERS Technical Note No. 32)而来,由于文章为英文,且详细叙述了ITRS,GCRS参考系以及岁差章动等模型,会使得读者初次阅读(或天文背景知识不够)产生阅读障碍。笔者也是在多次反复阅读的基础上并参考其它书籍和文献才稍微弄清楚,因此本文是笔者关于此文献的一个总结,希望能够对读者有所帮助。

本文不打算对坐标系转换的理论(岁差章动,极移等)进行详细讲解,仅仅给出坐标转换的基本步骤和必要常识,以便读者根据此文能够迅速掌握ITRS,GCRS和J2000平赤道地心系相互转换的基本原理,并能够依据IERS提供的Fortran源程序进行实际编程应用。

前言

名词缩写和解释

ITRS

就是我们常说的地固坐标系,其原点在地球质心(包含大气海洋等质量),坐标系xy平面为地球赤道面,z轴指向北极CIO处,x轴指向格林威治子午线与赤道面交点处。

此坐标系固定在地球上,地面站测控,以及地球引力场系数等都在此坐标系下定义。

J2000.0

常被称为J2000平赤道地心坐标系。其原点也是在地球质心,xy平面为J2000时刻的地球平赤道面,x轴指向J2000时刻的平春分点(J2000时刻平赤道面与平黄道面的一个交点)。

此坐标系常被作为地球卫星的惯性坐标系,卫星运动积分等都在此坐标系计算。

GCRS

J2000地心天球坐标系,其定义与J2000平赤道地心坐标系仅有一个常值偏差矩阵B。目前IAU推荐用此坐标系逐渐取代J2000平赤道地心坐标系。

时间量

UT1=UTC+(UT1UTC)DAT=TAIUTCTAI=UTC+DATTT=TAI+32.184s



给定UTC时刻,可求得其距离J2000的世纪数,即

t=(TT2000Jan1d12hTT)indays/36525


上式中 2000Jan1d12hTT 对应的儒略日(Julian day)为.0天。

坐标转换

Rx(θ)=1000cosθsinθ0sinθcosθRy(θ)=cosθ0sinθ010sinθ0cosθRz(θ)=cosθsinθ0sinθcosθ0001


其旋转方向符合右手螺旋法则,即逆时针旋转为正方向。另外坐标旋转矩阵具备如下性质:

R1(θ)=RT(θ)=R(θ)

背景知识

我们知道,地球的自转轴在惯性空间中不是固定的,而是不断摆动的。此摆动造成地轴绕北黄级顺时针运动,夹角约为23.5度。于此同时,地轴还在做微小的抖动,见下图。前者的运动称为岁差(Precession),后者运动成为章动(Nutation)。岁差章动的原因主要有两个方面。其一是太阳系行星对地球绕日轨道所产生的摄动影响;其二是太阳和月球对地球赤道隆起部分的摄动影响。

关于岁差章动的计算,此前一直采用IAU 1976岁差模型和1980章动模型。随着时间的推移,此模型的精度逐渐跟不上需要。因此,IAU又规定,自2003年1月1日起,采用新的岁差章动模型,即IAU 2000A模型(精度到达0.2mas),或者IAU 2000B模型(精度达到1mas)。

岁差章动模型描述了地球自转轴的运动,另外,由于地球表面的海洋,大气运动以及地核内部液体的运动造成地球自转轴并不是相对地球不动的;相对地球北极CIO点来说有个小范围的运动,此种现象成为极移。

此外,地球的自转也不是均匀的,也很复杂。

ITRS到GCRS的转换矩阵

本文采用IAU 2000A/B 岁差章动模型,在某历元UTC时刻,ITRS到GCRS的转换矩阵可写成:

r⃗ GCRS=Q(t)R(t)W(t)r⃗ ITRS=HGT(t)r⃗ ITRS


其中, r⃗ ITRS r⃗ GCRS 分别对应同一位置向量在ITRS和GCRS坐标系中的坐标。

上式中, W(t) R(t) Q(t) 分别对应极移,自转和岁差章动转换矩阵。

在计算 R(t) Q(t) 的时候,会有两种计算方法,我们分别称为CEO-based转换方法和equinox-based转换方法。其中前者为IAU提出的新的计算方法。

下面分别给出上述三个转换矩阵的求解过程。

极移矩阵 W(t)

W(t)=Rz(s)Ry(xp)Rx(yp)


上式中, s 为:

s=0.047mast


极移量 (xp,yp) 的求解为:

(xp,yp)=(x,y)IERS+(Δx,Δy)tidal+(Δx,Δy)nutation


极移量主要是由IERS根据天文观测给出的 (x,y)IERS ,每周都有新的观测数据,此外,由于地球潮汐和章动的影响,会对极移有微小的修正 (Δx,Δy)tidal (Δx,Δy)nutation

上式中, (x,y)IERS 由IERS给出的观测数据计算求得, (Δx,Δy)tidal+(Δx,Δy)nutation 可由公式计算得到,IERS提供此fortran源程序。

地球自转矩阵 R(t)

R(t)=Rz(θ)


地球自转角 θ 的求解根据转换方法的不同有不同的求解方式(CEO-based或者equinox-based),具体求解IERS给出了fortran源程序。

岁差章动矩阵 Q(t)

前面提到,计算此矩阵有两种方法:

1. CEO-based方法:

Q(t)=1aX2aXYXaXY1aY2YXY1a(X2+Y2)Rz(s)


其中:

a=1/2+1/8(X2+Y2)


上式中:

(X,Y)=(X,Y)IAU2000+(dX+dY)IERS


(X,Y)IAU2000 s 可根据IAU2000A/B岁差章动模型求解出,IERS同样给出求解的fortran源程序,另外,由于IAU2000A/B岁差章动模型没有包含地轴的高频率运动,所以要加上IERS通过观测数据给出的高频率修正项

(dX+dY)IERS

2. Equinox-based方法:

Q(t)=BP(t)N(t)


其中,常值偏差矩阵 B ,岁差矩阵

P(t)
和章动矩阵 N(t) 如下:

BP(t)N(t)=Rz(δα0)Ry(ξ0)Rx(η0)=Rx(ϵ0)Rz(ψA)Rx(ωA)Rz(χA)=Rx(ϵ¯)Rz(Δψ)Rx(ϵ¯+Δϵ)


章动量 (Δψ,Δϵ) 为:

(Δψ,Δϵ)=(Δψ,Δϵ)IAU2000+(δΔψ,δΔϵ)IERS


上式中, =(Δψ,Δϵ)IAU2000 由IERS 2000A章动模型给出。前面提到过,IAU 2000A/B模型提供的岁差章动不包含高频率项,而是由IERS的观测数据提供(上式右端最后一项),但是在IERS给出的观测数据中仅仅给出 (dX,dY)IERS ,我们可以通过IERS提供的fortran源程序将 (dX,dY)IERS 转换为 (δΔψ,δΔϵ)IERS

其余参数皆为岁差参数,可以通过公式求出,此处从略。

值得一提的是常值偏差矩阵 中的参数也是给定的,在CEO-based方法求解中,此偏差是包含在 (X,Y)IAU2000 中的。

利用IERS提供的Fortran源程序进行转换

上节中详细讲述了ITRS到GCRS转换矩阵的求解过程,在实际应用中,如果是自己编写源程序的话是件非常琐碎的事情,因为IERS 2000A/B 章动模型的参数多达1000多项。幸而这些基本子程序IERS都提供了,我们所做的就是如何正确的运用这些源程序,并将它们组合起来。

ftp://maia.usno.navy.mil/conv2000/chapter5/上可下载相关的源程序,子程序列表如下:

子程序名 说明
BPN2000 CEO-based intermediate-to-celestial matrix
CBPN2000 equinox-based true-to-celestial matrix
EE2000 equation of the equinoxes (EE)
EECT2000 EE complementary terms
ERA2000 Earth Rotation Angle
GMST2000 Greenwich Mean Sidereal Time
GST2000 Greenwich (apparent) Sidereal Time
NU2000A nutation, IAU 2000A
NU2000B nutation, IAU 2000B
POM2000 form polar-motion matrix
SP2000 the quantity s’
T2C2000 form terrestrial to celestial matrix
XYS2000A X, Y, s
interp.f Interpolation of IERS polar motion and UT1 time series
uai2000.f IAU 2000 celestial pole offsets conversion (dpsi,deps,dX,dY)

上表最后可从ftp://hpiers.obspm.fr/iers/models上下载得到。

IERS观测数据的处理

前面一再提到IAU 2000A/B章动岁差模型不包含高频率项,因此在完整的坐标转换过程中,必须考虑到IERS提供观测数据的高频率修正项。

根据UTC时刻的儒略日,加上数据列表 MJD,x,y,UT1UTC ,可调用interp.f文件中的interp子程序插值计算出对应UTC时刻的 (xp,yp) (UT1UTC)IERS 。在子程序interp中,先插值计算出IERS的观测数据 (x,y)IERS (UT1UTC)IERS ,然后内部调用子程序PMUT1_OCEANS和PM_GRAVI计算由潮汐和章动引起的高频率修正项 (Δx,Δy)tidal,(Δx,Δy)nutation (UT1UTC)tidal ,然后分别相加,给出最后的 (xp,yp) UT1UTC
另外,根据IERS的观测数据列表 MJD,dX,dY,LOD,DAT ,可插值计算出 (dX,dY)IERS,LOD DAT 。若为equinox-based方法转换,则需要调用uai2000.f文件中的子程序dXdY_dpsideps将 (dX,dY)IERS 转换为 (δΔψ,δΔϵ)IERS

有了 UT1UTC DAT ,则可求得 UT1,TT t 。这些时间量在以后的子程序中都需要。

具体转换步骤

首先调用子程序SP2000求得

s
,再由上面插值求得的 (xp,yp) ,调用子程序POM2000即可求得极移矩阵 W(t)
求地球自转和岁差章动矩阵有两种方法,下面分别叙述:

1. CEO-based transformation

调用ERA2000求得地球自转角 θ
然后调用子程序XYS2000A求得 (X,Y)IAU2000 s ,再加上上面观测数据插值的

(dX,dY)IERS
,则可求得 (X,Y) 。根据 (X,Y,s) ,利用子程序BPN2000即可求得岁差章动转换矩阵 Q(t)

2. Equinox-based transformation

调用子程序NU2000A求得章动量 (Δψ,Δϵ)IAU2000 ,再加上由观测数据插值求得的 (dX,dY)IERS 转换后的 (δΔψ,δΔϵ)IERS ,得到最后的 (Δψ,Δϵ)
Δϵ ,调用GST2000即可求得地球自转角 θ ;
然后再由 (Δψ,Δϵ) 调用子程序CBPN2000,求得岁差章动矩阵 Q(t) 。此处需要对子程序CBPN2000进行简单的说明,其内部进行常值偏差矩阵B和岁差章动矩阵P,N的计算,最后给出矩阵 Q(t)

由上述两种方法之一求得 W(t),θ ,和 Q(t) ,调用子程序T2C2000即可求得ITRS到GCRS的转换矩阵 HGT(t)

若采用方法二时,可以用子程序NU2000B替代NU2000A,其它都不变,此种转换的精度稍低(1mas),但是其计算速度会快很多,在精度要求不是很高的情况下采用此种方法可使计算速度大大提高。

其它的一些说明

r⃗ ITRSr⃗ TIRSV⃗ ITRS=[Q(t)R(t)W(t)]Tr⃗ GCRS=HG(t)r⃗ GCRS=[Q(t)R(t)]Tr⃗ GCRS=WT(t){
RT(t)QT(t)V⃗ GCRSω⃗ e×r⃗ TIRS}



r⃗ GCRSr⃗ TIRSV⃗ GCRS=Q(t)R(t)W(t)r⃗ ITRS=HGT(t)r⃗ ITRS=W(t)r⃗ ITRS=Q(t)R(t){
W(t)V⃗ ITRS+ω⃗ e×r⃗ TIRS}


其中

ωe=7.6979×105{
1LOD/86400}


上式中的LOD由IERS的观测数据插值求得。
注意上述公式中 r⃗ TIRS r⃗ ITRS 的区别, r⃗ TIRS 为地固系ITRS坐标 r⃗ ITRS 经过极移转换矩阵后的坐标。

r⃗ GCRSV⃗ GCRSr⃗ J2000V⃗ J2000=Br⃗ J2000=BV⃗ J2000=BTr⃗ GCRS=BTV⃗ GCRS

3.) 在IERS提供的fortran源程序中,有部分子程序需要调用IAU SOFA软件包中的子程序,有关IAU SOFA软件包的说明和使用请参见我的文档《IAU SOFA软件包介绍》。

4.) IAU SOFA软件包中也包含有关岁差章动和极移等基本子程序,其主要内容和本文介绍的fortran源程序大同小异。但其软件包中还包含以前的岁差章动模型以及最新的IAU2006岁差模型,读者需要的话可参考其文档说明“sofa_pn.pdf”,并有具体例子,强烈建议读者阅读。

参考文献

1. IERS Conventions(2003)
可从IERS网站上下载(http://www.IERS.org)。此文详细叙述了IAU 2003A/B岁差章动模型,以及ITRS和GCRS坐标系的定义和详细转换过程,也是本文档的主要英文依据。在尽可能的情况下,读者可以多阅读几遍。

2. 《Fundamentals of Astrodynnamics and Applications》, Third Edition, Microcosm Press, 2007
此书为David A. Vallado所著,此书中第3章“Coordinate and Systems”详细介绍了时间,坐标系系统,以及详细的ITRS到GCRS的转换过程。

3. ftp://maia.usno.navy.mil/conv2000/chapter5/ftp://hpiers.obspm.fr/iers/models
此两ftp网站上含有IAU 2000岁差章动模型的所有Fortran源程序。也是本文中子程序的来源处。

4. http://www.iau-sofa.rl.ac.uk/
从此网站上可下载IAU SOFA软件包,里面同样包含IAU 2000岁差章动模型的所有Fortran源程序,另外还包括最新的IAU 2006模型,以及儒略日计算,行星历表等常用基本子程序。

5. http://hpiers.obspm.fr/eop-pc/
此网站包含EOP各种类型数据,包含IERS的Bulletin A/B 和C 04,以及一些其它文件的说明。





























版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231829.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C#调用WebService实例和开发「建议收藏」

    C#调用WebService实例和开发「建议收藏」C#调用WebService实例和开发一、基本概念  WebService也叫XMLWebServiceWebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。简单的理解就是:webservice就是放在服务器上的函数,所…

    2022年7月21日
    18
  • 理清那么多个OO(面向对象)

    OOA-Object-OrientedAnalysis(面向对象分析)OOT-Object-OrientedTesting(面向对象测试)OOP-Object-Oriented

    2021年12月24日
    48
  • vscode中搭建Golang开发环境(图文并茂)

    vscode中搭建Golang开发环境(图文并茂)vscode中搭建Golang开发环境第一步下载Go安装包,地址:Go语言中文网,安装完成后的目录如下:通过命令行查看当前版本:第二步配置环境变量,新建两个环境变量,如下:其他平台的配置,可以参考goproxy官网。第三步打开vscode,安装一个Go插件,如下:然后打开一个已有的文件夹,并创建一个hello.go的文件,此时,右下角会提示你要安装相应的应用,选择InstallAll,等待安装即可,安装成功如下:到这里环境就搭建完成了第四步在hello.go文件中编写

    2022年10月12日
    4
  • 一款强大的网站在线客服聊天系统:whisper搭建教程

    一款强大的网站在线客服聊天系统:whisper搭建教程简介whisper是一个在线客服系统源码,采用thinkphp5+Gatewayworker编写,性能强悍。自己搭建,控制在自己,也无需为您的数据安全担心,您可以应用在任何的正规的网站,只需要添加一段简单的js代码,就可以使您的网站拥有在线客服功能。官方网站:http://whisper.baiyf.com/截图功能支持客服分组,多客服服务,让您的服务更有条理。 支持客服…

    2022年7月19日
    31
  • decltype函数_decltype有什么用

    decltype函数_decltype有什么用前言如果想要知道一个表达式的数据类型但又不想对表达式进行求值,那么auto似乎就不满足这中要求,c++11加入了decltype操作符,它的功能与auto类似,都是进行类型推导,但是decltype就能对某一表达式的类型进行推导并且不求表达式的值.因为decltype在很多的时候并不同于auto操作符,所以我会将大部分的不同罗列出来,比如:数组,顶层const等.declt…

    2025年10月11日
    3
  • SQL NOT NULL约束

    SQL NOT NULL约束SQLNOTNULL约束一、 说明本文主要讲一下,SQL的NOTNULL(不为空)约束相关内容。二、 所用工具SQL数据库三、 内容1. SQLNOTNULL约束的作用主要规定表中的数据必须遵守一定的规则,如果存在违反约束的数据行为,行为会被约束终止(也就是无法把数据添加到该表中)。而不为空约束则强制列不接受NULL值2.添加约束(1)约束可以在创建表时规定(通过CREATETABLE语句)语法为:CREATETABLE表名(列名该列的数据类型(约束),另

    2022年5月20日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号