使用广播星历进行 GAMIT 解算

GAMIT/GLOBK 作为一个高精度的 GNSS 数据处理程序,在数据处理时通常需要将 IGS 发布的精密轨道产品作为输入。但有时我们可能并没有相应的精密轨道产品可供使用,只能退而求其次,采用广播星历。GAMIT 软件可以满足这一需求,但是在操作上与通常情况有些差异。

这一篇博文将以操作演示的形式,介绍只使用广播星历进行数据解算的过程。操作时所用的 GAMIT/GLOBK 程序的版本号为 10.61。

数据准备

开始数据解算前我们依然要首先进行数据准备工作。我在本次解算时采用了 BJFS、CHAN、DAEJ、SHAO、SUWN 和 WUH2 共 6 个 IGS 站在 2017 年第 192 日的观测文件,并采用对应日期的广播星历。文件的组织方式为:

1
2
3
4
5
6
7
8
9
10
11
12
· demo/
|—— 192/
|—— brdc/
|—— brdc1920.17n
|—— rinex/
|—— bjfs1920.17o
|—— chan1920.17o
|—— daej1920.17o
|—— shao1920.17o
|—— suwn1920.17o
|—— wuh21920.17o
|—— tables/

在解算目录 demo/ 内平行地创建 4 个子文件夹:其中 brdc/ 文件夹存放广播星历文件;rinex/ 文件夹存放各站点的观测文件;tables/ 文件夹用于存放解算所需的共用表文件;而年积日文件夹(192/)用于解算操作,所有结果文件和中间本文都保存在该文件夹内。

参数设置

链接表文件

无论做哪一种数据处理任务,执行操作之前,首先需要做的就是链接数据解算所需的共用表文件。在解算目录下运行 sh_setup 命令,将共用表文件链接至解算目录的 tables/ 文件夹内:

1
$ sh_setup -yr 2017 -doy 192

参数设置

执行上面的 sh_setup 命令之后,解算所需的配置文件也已经被拷贝至 tables/ 文件内,你可以通过编辑它们对解算进行设置。这里我只是用于演示目的,因此采用默认配置,不做任何修改。

解算操作

需要说明的一点是:虽然在 sh_gamit 命令中可以通过 -orbt 选项来指定解算所需的轨道文件,但我测试后发现,该命令此时不太好用。如果使用该命令解算,将遭遇很多错误。并且,使用广播星历解算时使用的命令与通常情况并不十分一致。因此,我在实际操作中使用分步运行的方式。

链接文件

首先,使用 UNIX/Linux 系统的 ln -s 命令,将准备好的文件链接至年积日文件夹(192/)内。在年积日文件夹执行:

1
2
3
$ ln -s ../brdc/*n .
$ ln -s ../rinex/*o .
$ ln -s ../tables/* .

开始解算

现在,就可以执行任务的初始化等准备工作了。这一步骤可以使用 makexpsh_makexp 完成。此处我将使用 sh_makexp,它是一个非交互性的脚本指令,接受的参数为:

1
$ sh_makexp -expt <expt> -yr <year> -doy <doy> -nav <file> -orbt <orbt> -apr <file.> -sess <no.> -sinfo <session>

参数释义:

  • -expt <expt>:4 字符的项目名;
  • -yr <year>:观测数据的年;
  • -doy <doy>:观测数据的年积日;
  • -orbt <orbt>:4 字符的轨道名;
  • -gnss <code>:GNSS 系统代号(默认 G);
  • -nav <file>:广播星历的文件名;
  • -apr <file.>:站点概略坐标文件名;
  • -sess <no.>:解算任务的 session 号;
  • -jclock <>:生成钟文件(J-文件)的来源文件(brdc 或 sp3),默认 brdc;
  • -sinfo <session>:数据解算的间隔、开始时刻(时、分)和总历元数。

具体到本次任务,实际运行的命令为:

1
$ sh_makexp -expt demo -yr 2017 -doy 192 -nav brdc1920.17n -orbt brdc -apr lfile. -sess 99 -sinfo 30 00 00 2880

然后就是进行轨道拟合,使用精密星历时我们通过运行 sh_sp3fit 来完成这一过程。但此时我们使用广播星历,其对应的命令为 sh_bcfit,这一步几乎就是整个任务成败的关键。它接受的参数为:

1
$ sh_bcfit -f <file> -d <year> <doy>

此处的 <file> 代表广播星历文件名,而 <year><doy> 分别为数据的年和年积日。即:

1
$ sh_bcfit -f brdc1920.17n -d 2017 192

之后就进入了熟悉的流程。生成卫星钟文件(J-文件):

1
$ makej brdc1920.17n jbrdc7.192

生成双差观测文件(X-文件):

1
$ makex demo.makex.batch

启动数据驱动程序:

1
$ fixdrv ddemo7.192

执行数据解算解算脚本:

1
$ csh bdemo7.bat

等待程序运行完成。若没有提示任何错误,就得到了数据处理的结果。

补充

有读者可能会质疑本文操作的必要性,毕竟 IGS 的超快速轨道产品在观测前的几个小时就能拿到。此时可以试想一下:IGS 等机构是如何生产精密轨道产品的?