GAMIT 批处理基线解算
前文已经介绍过使用 GAMIT 程序分步基线解算的过程。本文将介绍 GAMIT 批处理基线解算的流程。
首先说明,分步和批处理两种方式只是操作上的不同。如果使用的观测数据、解算配置等其他条件一致,两种方式的解算结果也是相同的。但相比分步操作,批处理方式确实可是大大节省操作时间,而且因为不必重复输入相同参数,出错概率也可以相应降低。
GAMIT 批处理基线解算的功能主要依赖于 sh_gamit
脚本命令,该脚本使用 C Shell 语言编写。如果你有兴趣深入研究其代码实现,它位于 GAMIT/GLOBK 安装目录的 com 文件夹内。
文件组织
前文中我曾提到 GAMIT 处理数据时的文件组织方式。在使用 GAMIT 进行批处理处理时,文件组织的方式是一致的:
1 | · work/ |
我们首先创建一个文件夹作为工作目录,工作目录命名可以是任意的(这里以 work 为例)。在工作目录下平行地创建上面的 5 个文件夹。其中年积日文件夹中存放数据处理结果和中间文件,brdc 文件夹存放广播星历文件,igs 文件夹存放精密星历文件,rinex 文件夹存放观测数据,tables 文件夹存放解算时所需的一些配置文件和解算需引入的共用表文件。
有些情况下,你可能还需要引入观测站点的气象观测数据,即 RINEX 格式的气象数据,这时你可以在工作目录下创建一个名为 met 的文件夹,然后将所有气象数据拷贝至其中。
在下文中,我将以处理 2016 年 8 月 17 日的几个 IGS 站点(BJFS,CHAN,DAEJ,SHAO,SUWN,WUHN)的观测数据作为示例。这一天是星期三,对应的年积日是 230,对应的 GPS 周是1910。我写这篇博文的日期是 2016 年 9 月 1 日,截至现在还没有对应日期的最终星历,所以只好使用快速星历。因此具体的文件结构是:
1 | · work/ |
参数配置
表文件更新
在进行数据处理之前最好先检查一下,GAMIT 安装目录的 tables 目录里是否有对应观测数据日期的共用表文件。详细的共用表文件更新方法可以查看本站和 GAMIT/GLOBK 程序更新相关的博文。这里只列出需要检查的共用表文件:
1 | soltab.2016.J2000 # 2016 年的太阳历表文件 |
确认以上文件存在。然后分别检查文件 ut1.usno 和 pole.usno,这两个文件的第一行标注了文件的更新日期。要确保其更新日期在我们的数据观测日期之后。
链接表文件
确定我们所需的所有文件都齐备之后,在工作目录中使用 sh_setup
命令将所需的共用表文件和解算配置文件链接至工作目录的 tables 文件夹中。前文已经提到过 sh_setup
的使用方法:
1 | $ sh_setup -yr <year> -doy <doy> |
这里我们具体使用的命令为:
1 | $ sh_setup -yr 2016 -doy 230 |
参数配置
前文介绍 GAMIT 分步基线解算的博文中,提到过两个解算过程的配置文件:sestbl.和 sittbl.,而 GAMIT 批处理基线解算的操作中,又多了两个配置文件:process.defaults 以及 sites.defaults。这些配置文件都已经被之前的命令拷贝到 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 分步基线解算的博文中,我们制作了两个初始文件:station.info 和 lfile.。但在批处理操作时,程序可以自动生成 lfile.,所以只需要制作 station.info 文件就可以了。
因为这次我只处理 IGS 测站的观测数据,所以使用下载的 station.info 文件即可。
开始解算
现在开始进行数据处理。与分步操作方式不同的一点是,sh_gamit
命令并不是在年积日文件夹下运行的,而是在工作文件夹下运行。它的常用参数为:
1 | $ sh_gamit -expt <expt> -d <year> <doys> -orbit <IGST> |
其中,<expt>
代表解算项目名;<IGST>
代表解算时使用的精密星历类型,其值可以为:IGSF、IGFR、IGSU 等;<doys>
代表以列表形式列出的所有待处理数据的年积日。
如果你有大量观测日期上连续的数据需要处理,sh_gamit
还有指定数据观测的起止年积日方式:
1 | $ sh_gamit -expt <expt> -s <year> <d1> <d2> -orbit <IGST> # <d1> <d2> 分别为起止年积日 |
例如要处理 2016 年前 3 天的观测数据,你可以这样输入:
1 | $ sh_gamit -expt demo -d 2016 001 002 003 -orbit IGSF # IGSF 表示使用最终星历 |
也可以这样:
1 | $ sh_gamit -expt demo -s 2016 001 003 -orbit IGSF |
对于本文作为示例的处理任务,输入是这样的:
1 | $ sh_gamit -expt work -d 2016 230 -orbit IGSR # IGSR 表示使用快速星历 |
成果查看
与分步操作相同,解算完成之后,数据处理成果保存在 3 个文件中,即 O-文件,Q-文件和 H-文件,这些文件在年积日文件夹下。具体到本文的示例任务,它们是:oworka.230、qworka.230 以及 hworka.16230。
若解算出现问题,错误原因保存在 GAMIT.fatal 文件内,可以根据其中信息对解算操作进行调整。