GAMIT分布解算学习记录以及报错解决方法记录
一、解算前的准备工作:
(1)新建一个工程文件目录:(expt为目录,这里我们设置为demo,即mkdir demo
)
mkdir <expt>
进入到目录中(//demo表示工程文件的名称;)
cd demo
(2)运行
sh_setup -yr 2017
会多生成一个tables文件
(3)在demo目录下新建rinex(观测数据o文件),brdc(广播星历n文件),igs(精密星历sp3文件) 三个目录,
mkdir rinex brdc igs
在这三个目录下下载相应的文件。
(4)进入igs目录,
cd igs
然后doy,可以查看解算的当天周和周内天。
然后,下载星历
wget -nd ftp://cddis.gsfc.nasa.gov/pub/gps/products/1931/igs19312.sp3.Z
(我们使用的是1931周的第2天igs精密星历的数据),将下载的数据进行解压,uncompress *
(5)进入brdc目录,
cd ../brdc
然后下载
wget -c ftp://nfs.kasi.re.kr/gps/data/daily/2017/010/17n/brdc0100.17n.Z
然后解压,
uncompress *
(6)进入rinex目录
cd ../rinex
然后下载几个站的数据
wget --http-user=anonymous --http-passwd=123456789@qq.com -nd http://garner.ucsd.edu/pub/rinex/2017/010/urum0100.17d.Z
下载完成之后,分别对每个站解压,
对于d.Z文件的解压,可使用
sh_crx2rnx -f urum0100.17d.Z
分别进行解压。
------------------------------------------------------------------------------~
二、文件下载完毕之后,制作表文件(station.info,process.defaults,sestbl.,sites.defaults,sittbl.,l文件)
(1)制作station.info文件
a)在rinex文件中,截取1~6行的内容作为头文件,
sed -n "1,6p" ../tables/station.info
b)将其生成到rinex目录下,
sed -n "1,6p" ../tables/station.info > ./station.info
c)更新tables文件,即可把我们下载的站按照要求的格式生成tables文件。
sh_upd_stnfo -files *.17o
如果对010这一天许多站进行批量制作tables表,可以使用`sh_upd_stnfo -files *0100.17o`
注:(也可对头尾两天进行进行更新,采用二分法检查是否更换接收机),具体参考以下链接:
[station.info制作](https://blog.youkuaiyun.com/weixin_42638388/article/details/99582813)
d)之后,将制作好的拷贝到tables下
cp station.info ../tables
Tips:(这个步骤也可以完全手动将tables下的station.info头文件拷贝到rinex下,然后更新制作)
(2)修改process.defaults文件
这个文件参数基本可以采用默认的设置。
除此之外,也可以使用rinex的头文件作为l文件的近似坐标(目前的精度较好)
a)在chen目录下,打开tables/process.defaults,即vim tables/process.defaults
设置set_use_rxc = "Y"
(原本为N)
(3)修改sestbl.解算控制文件
a)观测值的使用(LC、L1+L2),这个一般保持默认,Choice of Observable = LC_AUTCLN
b)指定处理轨道策略,设置Choice of Experiment = RELAX.
c)误差改正模型,包括各种GRID格网模型改正,具体下载以及修改可参考以下链接:
转自GNSS helper:
(4)修改sites.defaults控制文件文件
该文件一般不设置,采用默认的就好;
(5)sittbl.站点控制表文件修改
对已知起算点,进行强约束,设置为0.05,代求点松弛约束,设置为10.
(6)制作l文件,可采用设置头文件的方法,也可采用以下方法
在 rinex文件夹下依次运行:
grep POSITION *.19o > lfile.rnx
rx2apr lfile.rnx 2019 216
gapr_to_l lfile.rnx.apr lfile. “” 2019 216
到此,所有的tables表文件已经准备好了。
要是想批量运行,直接到此就可以使用sh_gamit
---------------------------------------------------------------~~
下面是进行分布解算
三、在工程文件下新建一个目录,例如010,即10号的解(具体的解算就在该目录下完成)。mkdir 010 ,进入010文件,cd 010
(1)链接导航文件
ln -s ../brdc/brdc0100.17n ./
(2)链接星历文件,
ln -s ../igs/igs19312.sp3 ./
(3)链接rinex里的o文件
ln -s ../rinex/*.17o ./
(4)将tables中的内容,全部拷贝到当前目录,即010目录下
cp ../tables/* ./
注:链接到010目录下,占用的内存空间小,也可以不使用链接,而是将igs、brdc、rinex、tables下所有的内容全部拷贝到010目录下。(但是这一般针对文件数目较少的时候,多的时候最好还是链接,只把tables的内容拷贝过去。)
---------------------------------------------------------------~
四、分布解算的步骤:
第一步:make_xp
sh_makexp -expt demo -orbt igsf -sp3file igs19312.sp3 -yr 2017 -doy 010 -sess 99 -srin -nav brdc0100.17n -apr lfile. -sinfo 30 00 00 2880
问题:这一步需要加上-sp3file,否则会提示缺少-sp3file文件(我的不加显示会报错,你可以不加试试也行)。
第二步:轨道积分sp3fit
sh_sp3fit -f igs19312.sp3 -o igsf -d 2017 010 -r BERNE -t -u
(-t可以加,也可以不加,本人没加)
第三步:sh_check_sess,检查g文件和session.info的一致性
sh_check_sess -sess 010 -type gfile -file gigsf7.010
问题1:
sh_check_sess: Removing any PRN's from session.info that are missing from: gigsf7.010
missing input file: gigsf7.010 QUIT
解答:缺少输入文件gigsf7.010,由于第二步轨道积分,得到的文件夹是gigsg7.010(一个是“gigsg”,另一个是“gigsf”,具体原因也没找到),但是可以利用手动将文件夹gigsg7.010的名称,改为gigsf7.010,就行了。
问题2:
FATAL :200803:1536:23.0 FIXDRV/fixdrv: Neither T- nor G-file available (Name tigsf7.010)
STOP FATAL Error: Stop from report_stat
解答:这一步也是因为缺少t文件或g文件,所以导致第七步fixdrv出现错误。可以在轨道积分(第二步)时,不加参数-t,重新运行,运用g文件也可。
第四步:makej,生成j文件
makej brdc0100.17n jbrdc7.010
第五步:sh_check_sess,检查j文件和session.info的一致性
sh_check_sess -sess 010 -type jfile -file jbrdc7.010
第六步:makex
makex demo.makex.batch
第七步:fixdrv
fixdrv ddemo7.010
第八步:生成q、o、h文件
csh bdemo7.bat
到此全部完成
(以上学习来自于陈超老师的《GNSS高精度数据处理——GAMIT/GLOBK入门》一书,仅作为个人学习记录)