使用 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 | · work/ |
参数配置
表文件准备
共用表文件的更新方法前文早已经提到过,不再赘述。此处仅说明获取映射函数模型的过程。
本次解算任务我将采用 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 | $ rm -f 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>
代表站点气象观测数据。