从 GAMIT/GLOBK 解算结果导出产品
熟悉 GAMIT/GLBOK 的读者可能知道:该软件不仅可以用来解算地面 GNSS 测站的位置,还能用来解算 GNSS 卫星的轨道。如果你有足够多且遍布全球的 GNSS 数据接收站,就可以使用它来做 GNSS 卫星定轨。并且在解算完成后将你的解算成果保存为通用的 IGS 产品格式。
本文将简介将 GAMIT/GLOBK 程序的解算结果导出为 IGS 产品的命令。主要包括两种操作:导出 SP3 精密星历文件和 SINEX 解算结果文件。
导出 SP3 文件
GAMIT/GLBOK 程序内部使用的星历主要为二进制的 T-文件,我们可以将其解算输出的 T-文件导出使用。该过程涉及的命令为 ttongs
,该程序将 GAMIT 输出的星历表文件(T-文件)转化为标准的 SP3 精密轨道文件。
ttongs
命令接受的参数为:
1 | $ ttongs <tfile> <fmt> <org> <type> <frame> <otlmod> <pcvmod> <filename> [<clkfile> <start> <stop>] |
参数释义:
<tfile>
:作为输入的 T-文件;<fmt>
:输出文件格式(SP1 或 SP3);<org>
:产品解算的机构;<type>
:轨道类型(FIT、EXT 或 BRD);<frame>
:5 字符的轨道坐标系;<otlmod>
:所使用的海潮文件模型;<pcvmod>
:所使用的天线相位中心改正模型;<filename>
:输出文件的文件名;<clkfile>
:输入的精密钟差文件(可选);<start>
:输出文件的开始时刻(可选);<stop>
:输出文件的结束时刻(可选)。
示例,将 tdemo7.211 文件转化为 SP3 文件 dem19600.sp3。其中坐标系为地固坐标系 IGS14,该坐标系为地心地固系(FIT),海潮模型为 FES2004,天线相位中心改正模型为 IGS14_1958:
1 | $ ttongs tdemo7.211 sp3 institute fit IGS14 FES2004 IGS14_1958 dem19600.sp3 |
以上的命令输出的 SP3 文件的时长可能不止一天,这或许不是你想要的。你可以通过后面的参数来指定文件的起止时刻。但请注意:该程序接收的所有参数都是有顺序的,如果你希望忽略中间的项,必须其位置处使用 ' '
代替。例如,指定输出的起止时刻,但不输入精密钟差文件:
1 | $ ttongs tdemo7.211 sp3 institute fit ITR08 FES2004 IGS14_1958 dem19600.sp3 ' ' 2017 211 0 0 2017 211 23 45 |
导出 CLK 文件
GAMIT/GLOBK 程序默认不解算卫星钟差,解算卫星钟差的设置在 autcln.cmd 文件中。该文件中有以下两个配置项目:
- apply_chs_clk:解算卫星钟差时的配置;
- igs_clk:输出钟差解算结果的配置。
这两个项目的配置方式如下:
1 | apply_phs_clk [MAX Iter] [Non-int] [Converged] [Over shoot] |
在 apply_phs_clk
中,所有配置项都是可选的:MAX Iter
为解算时的最大迭代次数,该项的默认值为 30;Non-int
为估计钟差时应用非整数参数前的迭代次数,该项默认为 3;Converged
为百分比形式的所允许的每次迭代时单向残差 RMS 变化量;Over shoot
用于控制收敛速度,其默认值为 1.5,大于 2 将可能导致估计时出错。
在 igs_clk
配置项中,clock-file name
为所输出的 CLK 文件的 3 个前缀字符,程序将根据这 3 个字符加上 GPS 周等生成最终的文件名;在没有给出参考钟时,min rms
用于设置所使用的参考钟的上限,其单位为周期数,对于氢钟的推荐值为 20;max rms
用于设置在输出测站钟差时的 RMS 值的上限,高于该值的钟差不会输出(一般设置为 200 即可输出大部分的测站钟差);最后的 List of reference clocks
用于自定义作为参考钟的测站列表,该项是可选的。
配置示例:
apply_phs_clk 30 3 0.1 1.5
igs_clk mit 20 200
导出 SINEX 文件
单个导出
将 GAMIT/GLOBK 解算输出的二进制 H-文件导出为 SINEX,可使用 glbtosnx
命令,该程序以 .glb 或 .glx 文件作为输入数据。glbtosnx
程序接受的参数为:
1 | $ glbtosnx <dir> <comments> <input> <output> [-h -s] |
参数释义:
<dir>
:SINEX 文件的输出文件夹;<comments>
:添加到 SINEX 中的注释文件;<input>
:输入的 GLOBK 二进制 H-文件;<output>
:输出的 SINEX 文件名。
同上文一样,如果你希望忽略中间的项,也可以使用 ' '
代替。示例,将当前目录下的 h1707301200_demo.glx 导出为 dem19600.snx:
1 | $ glbtosnx . ' ' h1707301200_demo.glx dem19600.snx |
批量导出
如果你有多个二进制 H-文件需要转化,你可以试试 sh_glbtosnx
命令。该程序可以查找所有待转化的二进制 H-文件,然后生成一个可执行脚本。我们之后执行这个脚本即可实现批量操作。该命令的使用方式为:
1 | $ sh_glbtosnx -f <files> -ext <extent> |
参数释义:
-f <files>
:待转化的 GLOBK 二进制 H-文件名;-ext <extent>
:H-文件的扩展名。
示例,首先执行 sh_glbtosnx
命令来生成一个批量转化脚本:
1 | $ sh_glbtosnx -f h* -ext glx > glbtosnx.bat |
上面的命令将搜索所有以 h 开头并以 glx 为扩展名的文件,生成一个用来转化它们的可执行脚本:glbtosnx.bat。接下来,我们就可以执行这个批量转化脚本将所有符合条件的二进制 H-文件转化为 SINEX 解文件:
1 | $ csh glbtosnx.bat |