总结一下关于CORS服务播发的几种坐标系以及坐标系之间的转换关系。
CORS服务商通常播发的数据(RTK的基准数据)涉及到的坐标系有以下几种:
1、 WGS84坐标系:基准历元:2005.0
2、 ITRF坐标系:进行不同系列的维持,例如ITRF2008,基准历元2005.0
3、 CGCS2000坐标系:基准历元2000.0
不同的坐标系之间的差异一般有参考椭球不同,也就是在数学模型中的将地球拟合成的数学椭球模型参数不一样,通俗的讲,就是决定椭球形状的参数有差异。
下面说一下几个坐标系之间的转换。
涉及到的基础概念,基准历元:例如WGS84坐标系下的XYZ,指的是在2005.0时刻对应的位置是XYZ。
坐标系之间的转换例子
例如当前时刻ITRF2008框架下的坐标(X0.Y0.Z0)转换到CGCS2000;
该转换涉及到两个问题,
第一,时间问题,当前例如是2023.5,需要转换的CGCS2000的时间是2000.0;
第二,坐标系问题,ITRF2008,CGCS2000;
这里先进行时间处理,
ITRF2008(2023.5) 转到ITRF2008(2000.0),涉及到一个速度场的问题。
ITRF2008(2000.0) = ITRF2008(2023.5) + (2023.5-2000.0)*V(2005.0);
V(2005.0)指的是ITRF2008的速度场。
以上得到的是ITRF2008的坐标,也就是时间维度上已经转换到2000.0;
然后进行框架转换,
ITRF2008 在框架上转换到CGCS2000,一般选择将ITRF2008转换到ITRF1997上,因为ITRF1997在参考历元上与CGCS2000一致,都是2000.0,此外,二者参考椭球相近,反应在坐标上的差异可以忽略。
因此只需要将ITRF2008(2000.0) 转换到ITRF97(2000.0)即可。
两个框架之间的参数可以去对应的ITRF官网下载,ITRF | Transformations
这里涉及到一个转换参数的历元问题,ITRF2008到ITRF1997的转换参数的历元是2000.0. 而需要转换的目标也是2000.0,因此转换参数不需要进行历元间转换了。(注意参数的历元)
ITRF97(2000.0) = ITRF2008(2000.0) + R(旋转)
转换到坐标的具体公式, 例如前面已经得到了ITRF2008(2000.0)的坐标为XYZ,要求的目标坐标ITRF97(2000.0) 为XS YS ZS .
: XS : : X : : Tx : : D -Rz Ry : : X : : : : : : : : : : : : YS : = : Y : + : Ty : + : Rz D -Rx : : Y : (1) : : : : : : : : : : : ZS : : Z : : Tz : : -Ry Rx D : : Z :
经过上式,则得到想要的CGCS2000坐标。
综上,也就是ITRF2008框架下历元为2023.5的坐标(X0,Y0,Z0) 先转换到目标时间2000.0下得到(X,Y,Z),然后转到ITRF1997约等于CGCS2000的(XS,YS,ZS)。
需要注意的是,如果意参数的历元不是目标历元,也就是最终转到的历元,那么这里需要先将参数转换到目标历元下,然后才能进行前面公式(1)的操作。
举个例子,如果是参数的历元是2005.0,而需要转换的历元是2000.0,这需要用2005.0的转换参数和对应的参数变化率,求出来2000.0的参数,然后再代入公式(1).
转换参数的求解,
P(t) = P(t0) + (t - t0)*dP(参数变化率,官网也有) (2)
其他框架之间的转换与上面类似,也就是需要转换A和B的时候,先将A历元时间关系转换到B的历元,然后将历元统一后,再利用中间框架转换参数转换即可。
前面提到的CORS服务,一般服务商会有多个端口供选择想要的框架,基准数据的框架一旦确定,用户基于该数据得到的框架也就确定了,因此如果不想坐标转换,可以在开始接入基准数据的时候就选择想要的框架,如果服务商没有对应的框架,则需要进行转换。
坐标转换有两个需要注意的细节
第一,历元间转换,涉及到速度场,一般官网都有对应的速度场,但是站点相对少,可以利用速度场内插等方法获取所要转换的位置对应的速度场。
第二,转换参数的时间问题,有的人会忽略掉参数的时间转换。