使用 GAMIT 解算北斗或 Galileo 数据

GAMIT/GLOBK 程序自 10.5 版本开始,就逐步加入对其他各大 GNSS 系统(北斗、Galileo)的支持。随着 10.61 版本的发布,该程序终于能够支持北斗观测数据的解算,并且附带的共用表文件也包含了多个 GNSS 系统的信息。经过实测,使用新版本的 GAMIT/GLOBK 程序处理北斗或 Galileo 观测数据的过程比较顺畅。

本文介绍使用 GAMIT/GLOBK 程序处理北斗或 Galileo 观测数据的过程。使用其最新的 10.61 版本,并安装了于 2017 年 8 月 8 日发布的更新包:incremental_updates.170808.tar.gz。

文件组织

本次解算示例使用了 MGEX 项目于 2017 年 7 月 30 日观测的多系统 GNSS 数据,包括:多系统的混合广播星历文件 brdm2110.17p,武汉大学发布的混合多系统精密星历 wum19600.sp3 以及来自 ABMF、AGGO 等多个 MGEX 连续观测站的 RINEX 3 格式观测文件。整个数据处理项目的文件结构如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
· demo/
|—— 211/
|—— brdc/
|—— brdm2110.17p
|—— igs/
|—— wum19600.sp3
|—— rinex/
|—— ABMF00GLP_R_20172110000_01D_30S_MO.rnx
|—— AGGO00ARG_R_20172110000_01D_30S_MO.rnx
|—— CAS100ATA_R_20172110000_01D_30S_MO.rnx
|—— DAEJ00KOR_R_20172110000_01D_30S_MO.rnx
|—— DUND00NZL_R_20172110000_01D_30S_MO.rnx
|—— HKWS00HKG_R_20172110000_01D_30S_MO.rnx
|—— LHAZ00CHN_R_20172110000_01D_30S_MO.rnx
|—— tables/

在解算文件夹 demo/ 内,平行创建 5 个子文件夹:211/ 和 tables/ 文件夹为空;brdc/ 文件夹包含多系统广播星历文件 brdm2110.17p;igs/ 文件夹包含多系统精密星历文件 wum19600.sp3;rinex/ 文件夹包含 7 个 MGEX 站的观测文件。从 IGS 服务器上获取到的原始观测文件使用了 RINEX 3 格式的文件名,需要使用 sh_rename_rinex3 命令将其重命名为 RINEX 2 格式的文件名:

1
$ sh_rename_rinex3 -f rinex/*.rnx -r

要详细了解 sh_rename_rinex3 命令,请移步至 GAMIT 中的 RINEX 3 文件重命名脚本

参数配置

链接表文件

首先链接所需的共用表文件,该命令已介绍过多次,不在赘述。使用的命令为:

1
$ sh_setup -yr 2017 -doy 211

在解算目录(demo/)内执行该命令,将对应日期的共用表文件链接至 tables/ 文件夹内。

参数配置

在 sestbl. 文件中:

Use otl.list = Y           ; Ocean tidal loading list file from OSO
Use otl.grid = N         ; Ocean tidal loading grid file, GAMIT-format converted from OSO

这两项是 GAMIT 基线解算中所需的海潮改正文件的配置,详情可参考 GAMIT 中的 GRID 文件简介

开始解算

至此,所有的准备工作都已完成,我们可以开始数据解算操作了。以下的所有操作都将在年积日文件夹(211/)执行。

链接文件

使用以下的命令将所需的广播星历、精密星历、观测数据和共用表文件链接至年积日文件夹内:

1
2
3
4
$ ln -s ../brdc/brdm2110.17p .
$ ln -s ../igs/wum19600.sp3 .
$ ln -s ../rinex/*.17o .
$ ln -s ../tables/* .

执行解算

首先使用 sh_makexp 命令生成解算所需的部分文件。相比处理 GPS 数据时的操作,这里使用了 -gnss C 参数指定解算的 GNSS 系统为北斗:

1
$ sh_makexp -expt bdst -orbt wumf -yr 2017 -doy 211 -gnss C -sess 0 -nav brdm2110.17p -jclock sp3 -apr lfile. -sinfo 30 00 00 2880

然后,使用 sh_sp3fit 命令进行轨道拟合,生成可用的 G-文件。这里同样使用 -gnss C 参数将解算的 GNSS 系统指定为北斗:

1
$ sh_sp3fit -f wum19600.sp3 -o wumf -d 2017 211 -gnss C

下面将检查生成的 G-文件,重新生成任务配置文件 session.info。这一步将会从解算任务中剔除精密星历未包含的卫星,对于北斗和 Galileo 来说都是必要的:

1
$ sh_check_sess -sess 211 -type gfile -file gwumf7.211

上面的命令中,通过 -sess 参数指定数据观测的年积日,-type 参数指定要检查的文件类型,-file 命令指定要检查的文件。

下一步为生成卫星钟文件,这里的最后一个字符 C 将 GNSS 系统指定为北斗:

1
$ makej brdm2110.17p jwumf7.211 wum19600.sp3 C

检查生成的 J-文件:

1
$ sh_check_sess -sess 211 -type jfile -file jwumf7.211

后面的步骤都很熟悉了,生成双差观测数据:

1
$ makex bdst.makex.batch

生成解算输入参数和批处理命令:

1
$ fixdrv dbdst7.211

启动数据处理脚本:

1
$ csh bbdst7.bat

补充

解算 Galileo 系统的观测数据与处理北斗数据大同小异,也非常简单:直接将本文用到的指定北斗系统的字符 C 替换为 E 即可。

目前 GAMIT/GLOBK 程序尚不能同时解算多个 GNSS 系统的数据。如果你指定了多个卫星系统,实际上只会处理第一个卫星系统的数据。另外,若使用间隔 5 分钟的精密星历(GBM,TUM 等),执行 sh_sp3fit 时很可能会出错。建议使用 COM、WUM 等机构发布的间隔 15 分钟的精密星历。