站点信息文件的创建与更新
站点信息文件 station.info 是使用 GAMIT 程序进行数据处理前必须准备的文件之一,该文件包含了各站点的接收机/天线类型、天线高和观测时段等信息。
使用 GAMIT/GLOBK 程序进行数据解算时,通常需要创建或者更新站点信息文件。本文将详细介绍该文件的文件格式以及创建和更新方法。
文件结构
站点信息文件 station.info 于基线解算阶段被使用。在 GAMIT/GLOBK 程序的安装目录的 tables/ 文件夹内,就存在一个 station.info 文件示例。该文件包含了所有 IGS 站的站点信息,并随着 IGS 站点的变化(如新站点的加入、接收机或天线的更换等)进行更新。最新的 station.info 文件可以从 SOPAC 网站的相关页面下载。
一个作为示例的 station.info 文件内容如下:
1 | * Gamit station.info |
在该文件中,以“*”号开头的行为注释。其中注明了文件用途、创建时间和反馈邮箱等。最后一行注释为表头,标明了每一列的意义。从左到右依次为:站点名、详细站名、观测开始时刻、观测结束时刻、天线高、天线高量测方式、天线北方向偏移、天线东方向偏移、接收机类型、接收机版本、接收机版本号、接收机编号、天线类型、天线罩类型、天线编号。
其中最重要的部分是:站点名、开始观测时刻、结束观测时刻、天线高、天线高量测方式、天线北方向偏移、天线东方向偏移、接收机类型和天线类型。这些信息不能为空,否则解算时将会报错。
该文件注释之后的部分逐行给出每个测站在一定时期的观测信息。譬如,第一行是 BJFS 站从 1995 年第 263 日到 2010 年第 142 天的观测信息,而最后一行的观测结束日期为“9999 999”,说明该站点信息至今仍然有效。
创建与更新
知道了站点信息文件 station.info 的文件结构之后,我们就可以按照其格式对该文件进行创建与编辑了。但在实际应用中,我们通常不会完全手动创建或编辑它,大多时候使用脚本进行操作,然后在必要时做小幅修改。
参数说明
GAMIT/GLOBK 程序包中提供了用于操作站点信息文件的脚本:sh_upd_stnfo
,该脚本使用 C Shell 语言编写并保存在 GAMIT/GLOBK 安装目录的 com/ 文件夹内。使用该脚本可方便地对站点信息文件进行创建和更新,其接受的主要参数有:
1 | $ sh_upd_stnfo -ref <rsfile> -merge <sfiles> -files <rfiles> -i <ifiles> -x <snxfiles> -replace <replace_option> -w <outfile> -h <slant_hgt> -t <dup_tol> -apr -c -nodup -nosort |
参数释义:
-ref <rsfile>
定义输出信息格式的参考 station.info 文件,该项默认为当前目录的 station.info 文件;-merge <sfiles>
需要与参考文件进行合并的 station.info 文件;-files <rfiles>
用来更新 station.info 的 RINEX 观测文件;-i <ifiles>
用来更新 station.info 的 IGS log 文件;-x <snxfiles>
用来更新 station.info 的 SINEX 文件;-replace <replace_option>
,当输入文件既有 SINEX 文件,又有 RINEX 观测文件时,该项可用于对输入的站点信息进行检查。可接受三个值之一:all
,diff
,none
。其中none
意为只检查信息但不添加新站点;diff
意为只添加不同的站点;all
意为不管站点是否相同,都将其添加到输出文件;-w <outfile>
合并操作之后的输出文件,默认为 station.info.new;-h <slant_hgt>
天线高阈值,在 RINEX 文件中的天线高若大于该值,将被认为是斜高;-t <dup_tol>
判定为重复项的阈值,默认为 120 秒,即若两个同名站点观测文件的观测时间相隔 120 秒以上,即认为不是重复项;-apr
操作时将站点概略坐标输出到一个 .apr 文件中;-c
输出时将原有的注释拷贝至新的输出文件中;-nodup
在更新文件时不要添加重复的项目;-nosort
不要对输出文件中的站点进行排序。
使用示例
本文并没有列出该脚本的所有参数,但已经如此冗长。根据帕列托法则,我们实际使用中通常只会用到有限的几个参数。所有在此只举几个平时操作中使用地命令作为例子。
示例,在解算目录的 tables 文件夹内执行下面的命令来更新其中的 station.info 文件:
1 | $ sh_upd_stnfo -files ../rinex/*o |
该命令直接将 rinex 文件夹内的所有 O-文件的站点信息添加到当前目录的 station.info 文件中,即参考文件和输出文件使用同一默认值。正因如此,若 tables 文件夹内不存在 station.info 的文件,程序将报错并退出。
使用 SINEX 文件更新 station.info,其中 SINEX 文件为 cod19355.snx,参考文件使用 station.info,并将更新后的信息输出至 station.info.cod:
1 | $ sh_upd_stnfo -x cod19355.snx -ref station.info -w station.info.cod |
通过 IGS log 文件将一个站点的信息加入到站点信息文件,并输出至 station.info.drao:
1 | $ sh_upd_stnfo -ref station.info -i drao.log -w station.info.drao |
合并站点信息文件 station.info.sopac 和 station.info.regional,并将合并后的信息输出至 station.info.new:
1 | $ sh_upd_stnfo -ref station.info.sopac -merge station.info.regional -w station.info.new |
自动更新
你或许已经注意到,使用 GAMIT 批量处理多天的观测数据时,程序每次解算前都会自动更新 station.info 文件。因为解算控制文件 sites.defaults 中默认就是如此设置的。如果不希望它自动更新(这可能会耗费很长的时间),也可以通过设置关闭解算此功能。打开项目 tables 文件夹内的 sites.defaults 文件,找到类似的这样一行:
all_sites expt xstinfo
该配置意为:对于解算项目 expt,对所有的站点都不自动更新站点信息文件。我们只需将此处的“expt”替换为自己实际的项目名,就能关闭站点信息文件自动更新功能。当然,若日后希望重新将开启此功能,只需在本行行首添加一个“#”将其注释掉即可。
补充
脚本 sh_upd_stnfo
更新 station.info 文件的操作是很慢的,尤其是原本的 station.info 文件就比较大时。所以,为节约数据处理时间,原来的 station.info 文件应该尽可能得小,甚至可以是一个只包含表头注释的空文件。
在解算长时间的大量观测数据时,若期间站点的观测信息没有变化,如果希望节约时间,与其设置每次解算前自动更新站点信息文件,不如在其第一次更新后直接手动编辑该文件中每个站点信息的观测结束时间,一劳永逸。此外,如果你需要长时间维护某一固定的测站网络,使用 station.info 作为测站信息变更的记录文件也很好用。