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> 可选的值为 LU,标识保存的是下半块(Lower)还是上半块(Upper)。对于约束矩阵和估计矩阵,还有一个标识 <type>,标记其内容为方差-协方差阵(COVA)、协因素阵(CORR)还是法方程矩阵(INFO)。

当然,以上的数据块并不全是必要的。比如,SOURCE/ID 数据块仅对 VLBI 是必要的。另外,解算结果的法方程也有保存法方程(NEQ 方式)和保存约束/估计矩阵(COV 方式)两种方法。

内容

SINEX 格式的最大优点在于,其完整保存了未加约束的法方程,因此其使用者可在此基础上做进一步的处理。从 SINEX 文件恢复法方程很容易,在此以伪代码的形式做简要介绍。

首先可以从 SINEX 文件的 SOLUTION/APRIORISOLUTION/ESTIMATE 数据块读取参数初值 x0 和估值 x。记法方程矩阵为 N,法方程向量为 b,参数改正数为 dx,矩阵转置符号为 ',矩阵乘法为 @, 求逆记函数为 inv()。改正数的计算方法为:

1
dx = x - x0

法方程表示为:

1
N @ dx = b

NEQ 方式

在 SINEX 文件中,可以通过数据块 SOLUTION/NORMAL_EQUATION_MATRIXSOLUTION/NORMAL_EQUATION_VECTOR 直接保存法方程。某些 IGS 分析中心(比如 CODE)就提供这种类型的 SINEX 文件产品,你可以从中直接读取 Nb。但此时 SOLUTION/STATISTICS 块中一般不给出单位权方差,而是给出自由度 dof 和 二次型 l'Pl。你可以用如下方式计算单位权方差 sigma0

1
2
v'Pv = l'Pl - b' @ dx
sigma0 = v'Pv / dof

COV 方式

这种类型的 SINEX 文件会在 SOLUTION/STATISTICS 块中给出自由度 dof、单位权中误差 sigma0 以及残差平方和 v'Pv,并给出最终的方差-协方差阵 Dx 和约束值的先验方差-协方差阵 Dc。原始的法方程可通过如下方式恢复:

1
2
3
4
5
6
7
8
Qx = Dx / sigma0
Nx = inv(Qx)

Qc = Dc / sigma0
Nc = inv(Qc)

N = Nx - Nc
b = Nx @ dx

补充

根据 SINEX 格式的标准,致谢部分的标题应为:INPUT/ACKNOWLEDGEMENTS。但绝大多数 IGS 分析中心的产品中,该数据块的标题为 INPUT/ACKNOWLEDGMENTS。这一点在使用时需要注意。还有一点是:按照标准 ISO6709 以及习惯用法,西经应使用负数表示。但在 SINEX 的 SITE/ID 块中,受限于字符个数限制,其中的西经以大于 180 的数字表示。