首頁 > 軟體

GAMIT10.6 命令的更新

2020-06-16 17:46:10

1. 問題

相信很多人安裝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')


IT145.com E-mail:sddin#qq.com