提到 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 2 或 3 格式标准的数据都可以作为输入,但只输出最新的 RINEX 2(目前为 RINEX 2.11) 或 3(目前为 RINEX 3.03)版本的数据。如果未明确指定输出数据的格式版本,则默认为 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 标签中的文章。