||
一、错误如下:
运行sh_sp3fit进行轨道积分,出现不识别sp3文件错误:Unrecognized SP orbit format
chaoshu@cc:~/Desktop$ ngstot cod20115.sp3 tcod20115.sp3 C
STATUS :191028:1532:16.0 NGSTOT/orbits/ngstot: Started NGSTOT ver. 10.06 2017/5/22 13::00 (Linux) Library ver. 11.24 of 2017/6/7 10:00 (Linux)
STATUS :191028:1532:16.0 NGSTOT/orbits/ngstot: Reading cod20115.sp3 to write tcod20115.sp3 for GNSS = C
FATAL :191028:1532:16.0 ORBITS/ngstot: Unrecognized SP orbit format
STOP FATAL Error: Stop from report_stat
二、问题所在:
经过对比,发现在2018-208开始,精密星历SP3文件格式改为SP3-d,而GAMIT10.61不支持读取此格式;
从上面截图可以看出来,ngstot.f文件中会判断读SP3文件是否发出错误,如果是,则跳转到代码块10,这里的作用就是判断sp3文件格式是否正确;
可以很明显的看到,SP3文件的首行头两个字符是标示版本号:
SP1 ' #'
SP3-a '# ' or '#a'
SP3-b '#b'
SP3-c '#c'
而从2018-208开始
SP3-d '#d'
GAMIT10.61版本还没有支持最新版本的SP3,GAMIT最新版本是10.70 ,不知道是否已经支持;
三、解决办法
1)在ngstot.f的174行加一个SP3-d的版本判断:
10 read(iungs,'(a2)') linesym
if ( linesym.eq." #") then
spver = '1'
elseif ( linesym.eq.'# '.or.linesym.eq.'#a' ) then
spver = 'a'
elseif ( linesym.eq.'#b' ) then
spver = 'b'
elseif ( linesym.eq.'#c' ) then
spver = 'c'
elseif ( linesym.eq.'#d' ) then
spver = 'd'
else
call report_stat('FATAL','ORBITS','ngstot',' '
. ,'Unrecognized SP orbit format',0 )
endif
rewind(iungs)
2)在.~/gamit/lib/rsp3hd.f中添加一个'#d'版本读取方法
重新编译GAMIT,解决问题!
参考资料:
1、https://www.ngs.noaa.gov/orbits/SP3_format.html
2、ftp://igs.org/pub/data/format/sp3_docu.txt
3、http://www.gnsser.com/Information/ViewDetails/375
备注另一个错误:
Number of SVs on RINEX file (=73) exceeds array dimensions (maxchn=72)
解决方法:把~/gg/gamit/includes/makex.h的第24行设置的72修改大一些,然后重新编译;
24: PARAMETER (MAXCHN=72)
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-5 08:15
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社