GFZRNX 配置及格式相关功能的使用

提到 GNSS 领域的数据预处理工具,你首先想到的肯定是 TEQC 程序。该程序因其丰富的数据转换、编辑和质量检查等功能而被人们所熟知。但该程序也并非尽善尽美。比方说,截至目前,该程序在 RINEX 各版本之间(尤其是 RINEX 2 与 3 之间)的格式转换功能尚弱。

本文将介绍另一个 GNSS 数据预处理程序:GFZRNX。该程序也具有丰富的功能,可以帮助你轻松跨越 RINEX 2 与 3 版本格式之间的鸿沟。如果配合 TEQC 程序双剑合璧,更能让你在数据预处理工作方面游刃有余。

程序简介

GFZRNX 程序是由德国波兹坦地学研究中心(GFZ)的开发的一款用于 GNSS 数据预处理(主要适用于 RINEX 2 与 3 版本格式)的程序,支持 Windows、Linux、macOS 等常见的操作系统。此程序并不开源,但对于非商业用途的用户,提供免费的使用授权。在程序的介绍页面,点击 “GFZ software” 标签即可看到程序的下载链接。

GFZRNX 程序支持对 RINEX 格式的观测数据文件(Obs)、广播星历文件(Nav)和气象数据文件(Met)的操作。目前提供的功能有:

  • RINEX 格式检查与修复;
  • RINEX 版本格式转换;
  • RINEX 文件分割与拼接;
  • RINEX 文件头信息编辑与导出;
  • RINEX 数据编辑,如采样抽取、观测卫星筛选等;
  • RINEX 文件差异比较;
  • RINEX 数据质量分析。

如果你在数据处理时使用了此程序,请在论文后面为它添加如下的一个引用:

Nischan, Thomas (2016): GFZRNX - RINEX GNSS Data Conversion and Manipulation Toolbox. GFZ Data Services. http://dx.doi.org/10.5880/GFZ.1.1.2016.002

环境配置

Windows 操作系统

对于 Windows 操作系统,下载对应的可执行文件后,打开 “命令提示符” 窗口,使用 cd 命令进入程序所在目录,然后键入程序名(gfzrnx_win32.exe 或 gfzrnx_win64.exe)即可运行程序。

我可不想每次使用该程序前切换工作目录,也不喜欢命令后面诸如 “win32” 或 “win64” 这样的后缀。因此我将其重命名为 “gfzrnx.exe”,然后移动至 “C:\Windows\System32” 文件夹内。这样每次使用该程序时,只需要在 “命令提示符” 窗口键入 gfzrnx 就行了。当然,你也可以将该程序所在目录添加到系统的 Path 变量。

Linux 或 macOS 操作系统

对于 Linux 或 macOS 操作系统,下载对应的可执行文件后,首先将其重命名为 “gfzrnx” 以去除冗长的后缀,然后为程序分配可执行权限:

1
$ chmod +x gfzrnx

这样就可以在程序所在目录中通过命令 gfzrnx 来使用程序了。如果你希望在任何目录下都可以使用此程序,可以将其移动到 “/usr/bin” 目录下。

操作模式

使用 GFZRNX 程序前,首先要了解其操作模式。该程序的输入,即可以来自文件,也可以来自标准输入或管道。对于来自于文件的数据,需要使用 -finp 参数指定。对于程序的输出,默认为标准输出,也可以使用重定向或 -fout 参数将输出转到文件。对于出错信息,默认为标准错误输出,也可以使用 -errlog 参数(或重定向)将出错信息转到文件。因此程序常见的操作模式为:

1
$ gfzrnx -finp <input_files> -errlog <error_log> [options] > <output_file>

这里的 [options] 代表附加的参数选项,用于指定数据处理中使用的功能。使用 GFZRNX 程序进行数据预处理时,任何符合 RINEX 格式标准的数据都可以作为输入,但只输出最新的 RINEX 2(目前为 2.11) 或 RINEX 3(目前为 3.04)版本的数据。如果未明确指定输出数据的 RINEX 格式版本,则默认为 RINEX 3.04(2018 年 12 月 21 日之前发布的版本为 RINEX 3.03)。

格式相关操作

格式检查与修复

GFZRNX 程序提供对 RINEX 格式的检查功能,可以检测你输入的数据文件是否合乎规范。对于格式不正确的内容,甚至会自动尝试修复它。经过格式检查,GFZRNX 将会更新文件头中的信息并且移除所有出错的观测数据。在使用诸如 PANDA、GAMIT/GLOBK 等高精度 GNSS 数据处理程序时,该功能可以解决很多因为数据格式造成的错误。要在数据预处理中使用该功能,只需在操作命令中添加 -chk 参数。

以 BJFS 站 2016 年 9 月 12 日的观测数据 bjfs2560.16o 为例,其原始数据格式为 RINEX 2.10。下面的命令将调用 GFZRNX 程序对该文件进行格式检查,并将尝试修复后的数据保存至新的文件 bjfx2560.16o:

1
$ gfzrnx -finp bjfs2560.16o -chk > bjfx2560.16o

该命令执行完成后,如果你查看生成的 bjfx2560.16o 文件,将发现该文件已经符合最新的 RINEX 3 格式标准。如果你不希望将输出的文件转换为 RINEX 3 格式,可以添加一个 -kv 参数,例如:

1
$ gfzrnx -finp bjfs2560.16o -chk -kv > bjfx2560.16o

此时查看生成的新文件 bjfx2560.16o,将发现其数据格式没有变成 RINEX 3,但也不再是原始的 RINEX 2.10,而是 RINEX 2.11。因为这是最新的 RINEX 2 格式标准,-kv 参数只指定数据格式大版本不发生变化。

格式转换

使用 GFZRNX 程序的数据格式转换功能时,只需在操作命令中使用 -vo 参数。其输入值被限制为 2 或 3,代表输出数据的 RINEX 格式版本。

以 CHAN 站点于 2016 年 9 月 12 日的观测数据为例,其原始文件为 RINEX 2.11 格式。下面的命令将其格式转化为 RINEX 3:

1
$ gfzrnx -finp chan2560.16o -vo 3 > CHAN00CHN_R_20162560000_01D_30S_MO.rnx

转化广播星历文件:

1
$ gfzrnx -finp chan2560.16n -vo 3 > CHAN00CHN_R_20162560000_01D_GN.rnx

转化气象数据文件:

1
$ gfzrnx -finp dav12560.16m -vo 3 > DAV100ATA_R_20162560000_01D_30S_MM.rnx

类似的,下面的命令将之前的命令所生成的文件转化回 RINEX 2:

1
$ gfzrnx -finp CHAN00CHN_R_20162560000_01D_30S_MO.rnx -vo 2 > chan2560.12o

如果你在 UNIX/Linux 操作系统上进行操作,还可以通过管道使 GFZRNX 程序与 RNXCMP、TEQC 等程序相配合。例如:

1
$ crx2rnx CHAN00CHN_R_20162560000_01D_30S_MO.crx - | gfzrnx -f -vo 2 > chan2560.16o

运行该命令后,将从最初的 CHAN00CHN_R_20162560000_01D_30S_MO.crx 文件直接得到符合 RINEX 2 格式标准的文件 chan2560.16o。这里的 -f 参数指示强制覆盖可能的已有文件。

至此,GFZRNX 程序的格式检查、修复与转换功能已经介绍完毕。对于此程序其他功能的使用介绍,请查看本站 #GFZRNX 标签中的文章。