SINEX 文件格式简介
SINEX (Solution INdependent EXchange Format) 是大地测量学界标准的数据处理成果文件格式。该文件格式最早由 IGS 提出,之后陆续被 ILRS 和 IVS 等组织采用并丰富。现用于发布 国际地球自转与参考系统服务(IERS)、国家激光测距服务(ILRS)、国际 GNSS 服务(IGS)、国际 DORIS 服务(IDS) 和 国际 VLBI 服务(IVS) 等生产的各种数据处理产品,如 ITRF 地球坐标参考框架,各基站坐标、速度与震后形变参数,地心和地球自转参数等等。
本文将从历史、格式和含义等方面着手,介绍 SINEX 文件的内容。
命名
SINEX 的含义为 “与解算无关的文件交换格式”,这里的 “解算” 既包括数据处理软件,也包括观测技术。因此 GNSS、SLR、VLBI 和 DORIS 等现代大地测量方法的手段,不管使用何种数据处理软件和方法,其结果都可以保存为 SINEX 格式。SINEX 格式既可以保存数据处理结果,也包含数据处理时关键的中间结果,方便用户在其基础上做进一步的数据处理。
SINEX 是一种纯文本的数据格式,但并非纯 ASCII 字符,其文件的扩展名一般为 .snx。目前 SINEX 的最新版本为 2.02,广泛采用的版本还有 2.00 和 2.01。
IGS 各分析中心的 SINEX 文件产品以 <agy><gpswd>.snx
的形式命名,这里的 <agy>
指发布机构,而 <gpswd>
为 GPS 周,例如 “gfz20502.snx” 表明该文件是有 GFZ 发布的第 2050 个 GPS 周周二的产品。各分析中心除了有单天解之外,有的还会提供三天解,单天解和三天解以前缀的机构名作为区分。
IGS 的产品则以 igs<yr>P<gpswd>.snx
的方式命名,这里的 <yr>
为两位的年。对于跨年的周,以周三所在的年为准。IGS 除提供单天解外还提供周解,周解的命名方式为 igs<yr>P<gpsw>.snx
。
而 MGEX 项目自第 2038 GPS 周开始,所有分析中心的产品都使用长文件名。一个 MGEX 提供的典型 SINEX 文件为 “GRG0MGXFIN_20190300000_01D_000_SOL.SNX”,其文件名表示:这是由 MGX 项目的 GRG 中心产生的最终(FIN)产品,其开始时间为 2019 年第 30 日,时长为一天。
格式
在 SINEX 文件中,数据以行为单位,其格式为首尾行夹数据块的三明治结构。每行不超过 80 列,并且第一列必须是限定的字符,规则如下:
%
,首尾行,标识文件的开始和结束;*
,注释行,其中的内容不会被解析;+
,一个数据块开始标记;-
,一个数据块结束标记;- 空格,数据行,位于数据块内部。
首尾行
除了以 %
开头,SINEX 文件首尾行的位置和内容还都是固定的:首行(Header Line)必须在文件的第一行,包含文件格式、版本号、机构、创建时间、数据的开始与结束时间、观测技术、未知数个数、约束和未知数的类型等信息;尾行(Trailer Line)必须在最后一行,标识文件结束。
注释行
你可以在首尾行之间的任何位置插入注释行,注释行以 *
开头。需注意的是,即便注释行,建议其长度也不要超过 80 列。恰当地使用换行可以让阅读体验清晰愉快。
数据块
数据块由开始结束符号(+/-
)和标题(Title)包裹,中间内嵌数据行。数据块在 SINEX 文件中出现的顺序是任意的。SINEX 2.02 标准定义了 25 种数据块,其标题和含义为:
FILE/REFERENCE
,文件引用,包含本文件的输入输出、发布机构、数据处理软硬件、联系人等描述性信息。FILE/COMMENT
,文件注释,区别于*
号开始的注释行,该数据块用于保存不应被忽略的说明性信息。INPUT/HISTORY
,输入历史,包含本产品处理中输入的其他 SINEX 文件的发布机构、文件名、时段、约束和未知数等信息。INPUT/FILES
,输入文件,包含本产品处理中输入的其他文件的文件名、开始时间和机构信息。INPUT/ACKNOWLEDGEMENTS
,致谢,各输入文件发布机构的描述性信息。NUTATION/DATA
,章动数据,本产品数据处理时使用的章动模型。PRECESSION/DATA
,岁差数据,本产品数据处理时使用的岁差模型。SOURCE/ID
,射电源信息,VLBI 观测的射电源 ID 等。SITE/ID
,测站信息,GNSS、SLR、DORIS 等观测站 ID,测站号,概略位置等。SITE/DATA
,测站数据信息,包括测站墩标号、观测技术、观测机构和观测时段等。SITE/RECEIVER
,测站接收机,GNSS 观测时各测站使用的接收机类型、S/N 码和固件。SITE/ANTENNA
,测站天线,GNSS 观测时各测站使用的天线、天线罩类型和天线 S/N 码。SITE/GPS_PHASE_CENTER
,天线相位中心,各天线对 GPS 观测时的天线相位中心。SITE/GAL_PHASE_CENTER
,天线相位中心,各天线对 Galileo 观测时的天线相位中心。SITE/ECCENTRICITY
,天线偏移量,各测站上天线参考点相对于标石的偏移量。SATELLITE/ID
,卫星 ID,GNSS 观测到的各卫星的信息。SATELLITE/PHASE_CENTER
,卫星相位中心,卫星天线相位中心相对其质心的偏移量。BIAS/EPOCHS
,解算的偏差参数信息,如测距偏差、时钟偏差、尺度偏差或对流层参数等。SOLUTION/EPOCHS
,解算结果历元,各测站数据的开始、结束和平均历元。SOLUTION/STATISTICS
,解算结果统计,解算结果的参数个数、自由度、单位权方差、残差平方和等统计信息。SOLUTION/APRIORI
,参数初值,包含各待估参数的类型、参考历元、约束类型、单位、近似值和先验精度信息。SOLUTION/ESTIMATE
,参数估值,各待估参数的类型、参考历元、约束类型、单位、估计值和中误差信息。SOLUTION/NORMAL_EQUATION_VECTOR
,法方程向量,包含无约束平差时的法方程向量。SOLUTION/NORMAL_EQUATION_MATRIX <p>
,法方程矩阵,包含无约束平差时的法方程矩阵。SOLUTION/MATRIX_APRIORI <p> <type>
,约束矩阵,如果解算结果为约束平差,包含施加的约束矩阵。SOLUTION/MATRIX_ESTIMATE <p> <type>
,估计矩阵,最终解算结果的方差-协方差阵、协因素阵或法方程矩阵。
由于以上包含矩阵的数据块,其中保存的矩阵都是相对主对角线对称的,因此在 SINEX 文件中只需保存一部分。上文中的 <p>
可选的值为 L
或 U
,标识保存的是下半块(Lower)还是上半块(Upper)。对于约束矩阵和估计矩阵,还有一个标识 <type>
,标记其内容为方差-协方差阵(COVA
)、协因素阵(CORR
)还是法方程矩阵(INFO
)。
当然,以上的数据块并不全是必要的。比如,SOURCE/ID
数据块仅对 VLBI 是必要的。另外,解算结果的法方程也有保存法方程(NEQ 方式)和保存约束/估计矩阵(COV 方式)两种方法。
内容
SINEX 格式的最大优点在于,其完整保存了未加约束的法方程,因此其使用者可在此基础上做进一步的处理。从 SINEX 文件恢复法方程很容易,在此以伪代码的形式做简要介绍。
首先可以从 SINEX 文件的 SOLUTION/APRIORI
和 SOLUTION/ESTIMATE
数据块读取参数初值 x0
和估值 x
。记法方程矩阵为 N
,法方程向量为 b
,参数改正数为 dx
,矩阵转置符号为 '
,矩阵乘法为 @
, 求逆记函数为 inv()
。改正数的计算方法为:
1 | dx = x - x0 |
法方程表示为:
1 | N @ dx = b |
NEQ 方式
在 SINEX 文件中,可以通过数据块 SOLUTION/NORMAL_EQUATION_MATRIX
和 SOLUTION/NORMAL_EQUATION_VECTOR
直接保存法方程。某些 IGS 分析中心(比如 CODE)就提供这种类型的 SINEX 文件产品,你可以从中直接读取 N
和 b
。但此时 SOLUTION/STATISTICS
块中一般不给出单位权方差,而是给出自由度 dof
和 二次型 l'Pl
。你可以用如下方式计算单位权方差 sigma0
:
1 | v'Pv = l'Pl - b' @ dx |
COV 方式
这种类型的 SINEX 文件会在 SOLUTION/STATISTICS
块中给出自由度 dof
、单位权中误差 sigma0
以及残差平方和 v'Pv
,并给出最终的方差-协方差阵 Dx
和约束值的先验方差-协方差阵 Dc
。原始的法方程可通过如下方式恢复:
1 | Qx = Dx / sigma0 |
补充
根据 SINEX 格式的标准,致谢部分的标题应为:INPUT/ACKNOWLEDGEMENTS
。但绝大多数 IGS 分析中心的产品中,该数据块的标题为 INPUT/ACKNOWLEDGMENTS
。这一点在使用时需要注意。还有一点是:按照标准 ISO6709 以及习惯用法,西经应使用负数表示。但在 SINEX 的 SITE/ID
块中,受限于字符个数限制,其中的西经以大于 180 的数字表示。