相信很多人安装GAMIT 10.6以后,按照GAMIT 10.5的操作和命令是没法进行基线解算的。这个问题也困扰了我很久,后来时间解决了一切。
首先GAMIT 10.6 在makexp 和 sh_sp3fit两个命令里都加入了新的选项-gnss;其次svnav.dat这个文件的格式也变了。认识到了这两个问题就好办了,GAMIT的命令都是自解算的,也是是当你输入不参数命令时,出来的就是帮助信息而不是一堆的错误信息。再往下看之前各位看官可以自己先试一下看看能不能解决上面的这两个问题。
2. 解决办法
• GAMIT单天解(单时段)的一般流程为:
makexp -> sh_sp3fit -> sh_check_sess -> makej -> sh_check_sess -> makex -> fixdrv -> csh
• 在执行makexp时,第三次提示输入时应输入导航系统代码,提示的导航代码有 G R C ...但实际上目前只支持G,所以在makexp这个命令下,与GAMIT 10.5不同之处就是这个导航系统代码。
• 在执行sh_sp3fit时,GAMIT 10.5的格式为:
sh_sp3fit -f *.sp3 #(* 星号指星历的周天)
而在GAMIT 10.6中则为:
sh_sp3fit -f *.sp3 -gnss G -o cors #(cors为makexp 时输入的星历名称)
• 如果是新安装GAMIT 10.6的话那么你需要将svnav.dat文件替换成increment_install/tables/svnav.dat ,这是GAMIT 10.6发布的新格式,这一点定要注意。
3. 主要代码
f_makexp_in = open('makexp.in', 'w')
f_makexp_in.write('cors' + os.linesep)
f_makexp_in.write('cors' + os.linesep)
f_makexp_in.write('G' + os.linesep) # gamit 10.6需要此条语句
f_makexp_in.write(year + os.linesep)
f_makexp_in.write(doy + os.linesep)
f_makexp_in.write('1' + os.linesep)
f_makexp_in.write('lcors' + year[-1] + '.' + doy + os.linesep)
f_makexp_in.write('ecors' + year[-1] + '.' + doy + os.linesep)
f_makexp_in.write(str(project.INTERVAL).ljust(2, '0') + ' 00 ' + '00 ' + str(86400 / project.INTERVAL))
f_makexp_in.close()
os.system('makexp < makexp.in')
os.system('sh_sp3fit -f %s -gnss G -o cors' % igs_eph_name)
os.system('sh_check_sess -sess %s -type gfile -file %s' % (doy, 'gcors' + year[-1] + '.' + doy))
os.system('makej %s %s' % ('ecors' + year[-1] + '.' + doy, 'jcors' + year[-1] + '.' + doy))
os.system('sh_check_sess -sess %s -type jfile -file %s' % (doy, 'jcors' + year[-1] + '.' + doy))
os.system('makex cors.makex.batch')