使用 GAMIT 解算可降水汽含量

可降水汽含量(Precipitable water vapor, PWV)是进行 GNSS 气象学研究的重要数据,目前对该数值的解算大多依赖于 GAMIT/GLOBK 软件。作为 GAMIT 基线解算的重要副产品,PWV 可用于为气象预报、气象灾害、气候变化等方面的研究提供重要的参考指标。

本文将介绍使用 GAMIT 程序解算 PWV 的过程。

数据准备

上面已经提到过,PWV 是 GAMIT 基线解算时的副产品。我们只需要在基线解算前做一些设置,就可以在数据处理的同时输出对测站地区气象参数如干延迟、湿延迟、PWV 等的估计结果。

作为示例,我将选用周边的几个 IGS 测站进行处理。需要注意的是,在你处理自己观测的数据时,最好也引入几个 IGS 站点进行联合解算。因为过短的基线会使得解算出的气象参数有一定的相关性。我选取了 2016 年 9 月 11 日的 7 个 IGS 站点(BJFS,DAEJ,LHAZ,SHAO,SUWN,URUM,WUHN)的观测文件作为示例。这些站点中个别还具有气象数据,我也将其引入进来。最终的文件组织结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
· work/
|—— brdc/
|—— brdc2550.16n
|—— igs/
|—— igs19140.sp3
|—— met/
|—— bjfs2550.16m
|—— daej2550.16m
|—— urum2550.16m
|—— wuhn2550.16m
|—— rinex/
|—— bjfs2550.16o
|—— daej2550.16o
|—— lhaz2550.16o
|—— shao2550.16o
|—— suwn2550.16o
|—— urum2550.16o
|—— wuhn2550.16o
|—— tables/

参数配置

表文件准备

共用表文件的更新方法前文早已经提到过,不再赘述。此处仅说明获取映射函数模型的过程。

本次解算任务我将采用 VMF1 映射函数模型,该模型文件需要从 MIT 的 FTP 服务器下载,欲了解详情请移步之前的文章。因为撰写本文时 2016 年还未过去,所以下载到的映射函数模型仅适用于对年积日在 284 以前的数据进行处理,其文件名为 vmf1grd.2016_284(随获取日期不同,获取到的文件名可能略有差异)。下载后将其放入 GAMIT/GLOBK 程序安装目录的 tables/ 文件夹内。

在解算工程目录(work/)内使用 sh_setup 命令将所需的共用表文件链接至解算目录的 tables/ 文件夹:

1
$ sh_setup -yr 2016 -doy 255

然后检查其中的 map.grid 是否正确链接至刚才下载的模型文件 vmf1grd.2016_284:

1
$ ls -l tables/map.grid

如果系统输出中有类似这样的提示:

tables/map.grid -> /home/jon/gg/tables/map.grid.2016_284

则说明链接正确,否则需要使用如下命令重新建立链接:

1
2
$ rm -f tables/map.grid
$ ln -s ~/gg/tables/vmf1grd.2016* tables/map.grid

第一条用于删除原始链接,第二条用于创建新链接。注意:如果你处理的不是 2016 年的观测数据,使用实际的年替换这里的 “2016”。

参数配置

对于本文的任务,我打算使用 sh_gamit 批处理命令进行数据解算。如之前所述,此时的配置文件主要有四个:sestbl.、sittbl.、process.defaults 和 sites.defaults。在这里,我只修改必要的配置,其他项目保持默认。打开 sestbl.,将其中对应的项修改为:

Met obs source = RNX UFL GPT 50   ; hierarchical list with humidity value at the end; e.g. RNX UFL GPT 50 ; default GTP 50
Output met = Y    ; write the a priori met values to a z-file (Y/N)

这里的 “Met obs source = RNX UFL GPT 50” 表示需要测站处的温度和气压等气象观测数据时,首先检查工程目录的 met/ 文件夹中有没有对应测站的 RINEX 气象文件,然后检查 U-文件中有无该站的信息,最后才采用 GPT 模型中的值。末尾的 “50” 表示假设的相对湿度,默认为 50%。你也可以对其进行更改,但实际上该值对解算结果影响很小。

而 “Output met = Y” 一项,表示设置 GAMIT 程序在基线解算的同时输出对气象参数的估计值,这些结果将保存至 Z-文件中。

同样在 sestbl. 文件中,将映射函数修改为使用 VMF1:

DMap = VMF1    ; GMF(default)/VMF1/NMFH; GMF now invokes GPT2 if gpt.grid is available (default)
WMap = VMF1    ; GMF(default)/VMF1/NMFW; GMF now invokes GPT2 if gpt.grid is available (default)
Use map.list = N   ; VMF1 list file with mapping functions, ZHD, ZWD, P, Pw, T, Ht
Use map.grid = Y   ; VMF1 grid file with mapping functions and ZHD

解算操作

完成上文的所有准备工作之后,就可以运行基线解算命令了:

1
$ sh_gamit -expt demo -d 2016 255 -met

这里的 -met 参数指示在解算时引入 RINEX 格式的气象观测数据。如果你没有此类数据,可以省略该参数。等待解算完成,就可以在年积日文件夹看到输出的 Z-文件,在本示例中为:zbjfs6.255,zdaej6.255 等。

但如果你查看这些生成的 Z-文件,会发现其中并没有 PWV 解算结果而只有对流层总延迟和干延迟等参数信息,还需要执行 sh_metutil 命令做进一步处理。这个命令的常见用法为:

1
$ sh_metutil -f <o-file> -z <z-file>

其中 <o-file> 代表基线解算结果的 O-文件,<z-file> 代表输出的 Z-文件。具体到本例,在年积日文件夹执行命令:

1
$ sh_metutil -f odemoa.255 -z z*.255

最终的可降水汽解算成果保存在 “met_” 开头的文件中。具体到本例,它们是:met_bjfs.16255,met_daej.16255 等。

补充

如果你希望在基线解算完成后直接生成可降水汽的估计值,可以为 sh_gamit 命令多加一个 -metutil Z 参数。如:

1
$ sh_gamit -expt demo -d 2016 255 -met -metutil Z

另外,除了使用 Z-文件估计可降水汽,sh_metutil 命令还支持由测站的 RINEX 气象观测数据(Met)和基线解算得到的 O-文件生成可降水汽估计值。其命令为:

1
$ sh_metutil -f <o-file> -m <met-file>

在该命令中,<o-file> 代表基线解算结果的 O-文件,<met-file> 代表站点气象观测数据。

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏