一、解算说明与数据准备
所用系统:CentOS7 + GAMIT10.60
此次解算所用数据为 2014 年 4 月 5 日4个 IGS 测站(bjfs,lhaz,urum,ccj2)的观测数据,年积日为 084。
数据可从武汉大学IGS数据中心下载,地址为:
http://www.igs.gnsswhu.cn/index.php/home/data_product/igs.html
二、数据处理与配置
本次选用的2014年的数据,GAMIT10.60的tables文件已能满足需求,因此不需要进行更新,如果想解算2015年及以后的则需要更新。
1、解算工作目录创建
# 总工作目录
mkdir 2014
cd 2014
# 依次创建存放广播星历、精密星历、观测数据、年积日目录
mkdir brdc igs rinex 084
# 初始化工作目录,汇总2014目录下创建tables目录
sh_setup -yr 2014 -doy 084
最终效果
2、解算配置
配置 sestbl. 文件
# 进入tables目录
cd tables
#编辑sestbl.文件,将其修改为下图所示
vi sestbl.
生成 station.info
# 切换到rinex目录中
cd ../rinex
# 将 tables 下station.info文件的2至6行拷贝到rinex目录下的station.info文件中
sed -n '2,6p' ../tables/station.info > station.info
# 使用本次所以观测数据文件填充station.info的内容
sh_upd_stnfo -files *.14o
# 复制到tables目录下
cp station.info ../tables/
生成 lfile.
grep POSITION *.14o > lfile.rnx
rx2apr lfile.rnx 2014 084
gapr_to_l lfile.rnx.apr lfile. '''' 2014 084
为年积日文件夹创建软连接
# 切换到年积日文件目录下
cd 084
ln -s ../igs/*sp3 ./
ln -s ../brdc/*n ./
ln -s ../rinex/*o ./
ln -s ../tables/* ./
三、数据解算
1、执行 sh_makexp
sh_makexp -expt work -orbt igsf -yr 2014 -doy 084 -sess 99 -nav brdc0840.14n -sp3file igs17852.sp3 -jclock sp3 -apr lfile. -sinfo 30 0 0 2880
成功执行结果如下:
2、生成轨道G文件
sh_sp3fit -f igs17852.sp3 -o igsf -d 2014 084
# 校验文件
sh_check_sess -sess 084 -type gfile -file gigsf4.084
3、生成J文件
makej brdc0840.14n jbrdc4.084
sh_check_sess -sess 084 -type jfile -file jbrdc4.084
4、生成X文件
makex work.makex.batch
5、生成脚本
fixdrv dwork4.084
6、进行数据解算
csh bwork4.bat
解算完成之后,数据处理成果保存在 3 个文件中,即Q-文件(解算记录), O-文件( 解算记录的简略版,一般关注此文件,文件中postfit_nrms项优于0.3左右时最佳;如果大于1.0,则表示此解存在问题。)和 H-文件(协方差矩阵、参数平差值),这些文件在年积日文件夹下。具体到本文的示例任务,它们是:oworka.084、qworka.084 以及 hworka.14084。
四、网平差
1、创建工作目录和参数配置
在使用GLOBK进行网平差解算时,通常有glbf、gsoln、tables目录,其中gsoln存放基线解算得到的H-文件,并在其中进行网平差操作,而glbf存放经过转换后的二进制H-文件,tables和基线解算中的tables相同。
创建目录
# 因此此处只需创建glbf、gsoln目录
mkdir glbf gsoln
创建后的目录结构:
参数设置
GLOBK程序通常使用globk_comb.cmd和glorg_comb.cmd来作为控制文件。它们位于GAMIT/GLOBK安装目录的tables文件夹中,现在需要讲它们拷贝到工作目录的gsoln目录下,可以手动拷贝,也可以直接使用 sh_glred -cmd命令:
编辑 globk_comb.cmd 文件,找到 * Coordinate parameters to be estimated and a priori constraints,添加以下内容(在本次网平差任务中,是以 bjfs 、lhaz、ccj2 和 urum 这 4 个站点作为固定站,其三方向(NEU)约束设置为 0.05 m,0.05 m,0.1 m。):
apr_neu bjfs 0.05 0.05 0.1 0 0 0
apr_neu lhaz 0.05 0.05 0.1 0 0 0
apr_neu urum 0.05 0.05 0.1 0 0 0
apr_neu ccj2 0.05 0.05 0.1 0 0 0
再编辑 glorg_comb.cmd 文件,找到 This should match the well-determined sites in the apr_file,添加以下内容:
stab_site +bjfs
stab_site +lhaz
stab_site +urum
stab_site +ccj2
2、网平差解算
初始文件生成
一切准备就绪后,就可以生成GLOBK程序所需的二进制格式的H-文件。
# 将基线解算生成的H-文件拷贝到gsoln目录下
cp hworka.14084 ../gsoln/
# 切换到gsoln目录下
cd ../gsoln
# 初始化文件
htoglb ../glbf/ ../tables/svnav.dat htesta.14084
执行上述命令后,glbf目录下将看到生成的两个文件,一个是松散约束下的模糊度实数解.glr文件,一个是松散约束下的模糊度整数解.glx文件。
这两种文件都可以作为GLOBK的解算文件,其区别是处理短基线时通常采用.glx文件,而长基线通常采用.glr解。本次选择用.glx文件即可。
在得到所需的二进制 H-文件之后,我们需要制作一个 .gdl 文件作为使用的二进制 H-文件列表。生成这个文件通常使用 Linux 系统的 ls 命令:
# 在gsoln目录下执行,该命令将 glbf 目录下所有的 .glx 文件写入生成的 .gdl 文件中
ls ../glbf/*.glr > test_glx.gdl
开始解算
网平差解算主要有两个命令:glred 和 globk。它们的输入参数类似:
glred <stdOut> <printFile> <logFile> <hList> <cmdFile>
globk <stdOut><printFile> <logFile> <hList> <cmdFile>
<stdOut> 表示输出路径,常设为 6 使其输出到当前窗口;
<printFile> 表示结果文件的输出路径;
<logFile> 表示解算记录文件输出路径;
<hList> 即上文制作的 .gdl 文件;
<cmdFile> 表示输入的 .cmd 文件。
因此本次解算的实际命令为:
glred 6 glred.org glred.log test_glx.gdl globk_comb.cmd
globk 6 globk.org glred.log test_glx.gdl globk_comb.cmd
解算成功后,会看到gsoln目录下多了些许文件:
GLRED 程序的运行成果在 glred.org 文件内,GLOBK 程序的运行成果保存在 globk.org 文件内