GLOBK 批处理网平差
学习过 GLOBK 程序的分步操作之后,自然会想到使用批处理命令来节约操作和时间。GLOBK 程序的批处理操作主要使用 sh_glred
命令实现。该命令封装了 htoglb、glred、globk、glorg 等程序,通过一次操作,可以分别输出自由网平差和约束网平差等的解算结果,非常方便。与 sh_gamit
类似,sh_glred
命令也由 C Shell 脚本语言编写,该脚本保存在 GAMIT/GLOBK 程序安装目录的 com 文件夹中。你可以通过阅读其代码来加深对 GLOBK 程序数据处理流程的理解。
本文将介绍使用 GLOBK 程序的批处理操作进行网平差的流程。
文件组织
使用 GLOBK 程序进行批处理数据操作时,我们通常这样组织文件:
1 | · work/ |
在上面的文件结构中,首先依然是一个任意命名的工程目录,这里还是以 “work” 为例。工作目录下平行地创建 4 个文件夹。其中,年积日文件夹内须有输入 GLOBK 程序的 H-文件,glbf/ 内保存转化出二进制的 H-文件。程序在 gsoln/ 文件夹内进行数据处理,而 tables/ 文件夹内依旧是解算时需要引入的共用表文件。
首先说明:上面只列出必需的文件夹。因为我们经常在执行 GAMIT 批处理时所用的文件目录下继续运行 GLOBK 程序的批处理操作来得到测站坐标和速度,所以,沿用 sh_gamit
命令为我们创建的目录结构完全没有问题。sh_glred
在工程目录下运行,这一点与 sh_gamit
命令类似,但其数据处理成果却保存在 gsoln/ 文件夹内。
本文以之前基线解算的例子处理过的 2016 年 8 月 17 日的 6 个 IGS 测站(BJFS,CHAN,DAEJ,SHAO,SUWN,WUHN 等)的基线结果为例,在此基础上继续进行 GLOBK 网平差操作。因为我之前使用 GAMIT 程序的批处理命令 sh_gamit
进行了基线解算处理,该命令已经为我们创建了所需的文件组织结构:
1 | · work/ |
工程目录下有很多文件夹,但我们本次要提到的只有以上明确列出的 4 个,其他的以 “…” 表示。另外,基线解算处理完成后,年积日文件夹和 tables/ 文件夹下也有很多的文件,但这里不再列出。
参数配置
在 GAMIT/GLOBK 10.7 之前, GLOBK 程序所使用的控制文件是 globk_comb.cmd 和 glorg_comb.cmd,之后的版本中是 globk.cmd 和 glorg.cmd。你可以通过它们来控制网平差的整个过程,当然也包括所使用的固定点和已知点坐标。在较旧的版本中,固定点也可以直接在 glorg_comb.cmd 或者 sites.default 文件中配置,但是这种办法已经不再推荐。更好的方法是在两个 .cmd 文件中设置解算过程控制参数,在 .apr 文件中输入已知点坐标,在 .stab_site 文件中设置固定点。这是一种数据与配置分离的思想,可以最大程度地提高控制文件和数据的重用性。
你可以使用本博客已知点坐标文件的创建与使用一文介绍的办法创建自己的 .apr 文件,并将其应用到网平差处理过程中。但本次任务我处理的是 IGS 站的观测数据,它们的坐标早已存在于默认的 .apr 文件中,因此沿用默认配置即可。我需要做的是通过编辑自己的 .stab_site 文件来设置固定点。该文件的格式如下:
1 | # This is a .stab_site file for demo |
这里的 <site>
表示固定点的点名。一个配置好的文件示例如下:
1 | # This is a .stab_site file for demo |
接下来的工作就是配置控制解算过程的 .cmd 文件。如果 gsoln/ 文件夹中还没有这两个文件,你可以在工程目录中运行以下命令将获取它们:
1 | $ sh_glred -cmd |
以上命令将拷贝两个合适的配置文件放置到你的 gsoln/ 文件夹内,你可以编辑它们来控制网平差过程。在此类文件中,以字符 “*”、“#” 或 “x” 开头的行表示注释,而控制项的第一个字符为空格。在 globk_comb.cmd 中,类似以下的内容用于设置已知点坐标文件:
1 | * ITRF2008 augmented by now-defunct sites and recent IGS solutions; |
从这里可以看出,默认的已知点坐标文件为 GAMIT/GLOBK 程序安装目录 tables/ 文件夹内的 itrf08_comb.apr。这里面包含了 IGS 核心站的坐标和站速度。
在 glorg_comb.cmd 中,可以看到类似以下的内容:
1 | * A priori coordinates |
这里的上半部分也是已知点坐标的来源文件,下半部分用于指定固定点配置文件。这里的默认配置同样为 GAMIT/GLOBK 安装目录 tables/ 文件夹下的文件。但这次我需要应用自己的配置,因此将这部分修改为:
1 | * List of stabilization sites |
这里指定网平差中使用解算工程目录 tables/ 文件夹内的 my_sites.stab_site 文件中的固定点。
开始解算
现在已经可以运行 sh_glred
命令进行网平差。对于生成单天解,这个命令的常用参数如下:
1 | $ sh_glred -expt <expt> -d <year> <doy> -opt <opts> |
这里的 <opts>
表示网平差时的控制选项,它共有以下几个可选(多个控制项以空格分隔):
- R : 在操作之前把旧的二进制 H-文件从 glbf 目录中删除;
- F : 根据
<networks>
参数,通过 FTP 下载全球 IGS 站网的 H-文件进行联合解算; - H : 对现有的或者链接到 glbf 的文本 H-文件运行
htoglb
; - LA : 链接所有本地的文本 H-文件到组合中;
- LB : 链接所有本地的文本 H-文件到组合中,从 htnd 开始向下搜索,其中 htnd 是系统默认的;
- LC : 链接本地的二进制 H-文件;
- U : 对二进制 H-文件运行
hfupd
; - G : 运行
glred
以进行组合或重新组合; - E : 运行
ensum
和sh_baseline
进行绘图; - C : 解算后压缩文本 H-文件,删除所有的链接并整理 H-文件;
- A : 选中以上所有项。
对于观测日期上连续的数据,类似于 sh_gamit
,还有一种指定数据起始日期的方式:
1 | $ sh_glred -expt <expt> -s <yr1> <d1> <yr2> <d2> -opt <opts> |
如果你希望得到多天解,还可以为该命令增加一个参数指定合并的天数:
1 | $ sh_glred -expt <expt> -s <yr1> <d1> <yr2> <d2> -ncomb <days> -opt <opts> # <days> 指点合并的天数 |
具体到本次任务,只需要运行一个命令:
1 | $ sh_glred -expt test -d 2016 230 -opt H G |
成果查看
GLOBK 批处理网平差完成后,解算结果保存在 gsoln/ 文件夹下的 .org 结果文件中。如果你设置了在解算后绘图,可能还会看到 .ps 格式的站点重复性图,不过这需要有 GMT 程序的支持。
如果解算过程中出现错误,与分步操作相同,错误信息保存在 gsoln 目录内的 GLOBK.fatal 文件内。