chaoshu的个人博客分享 http://blog.sciencenet.cn/u/chaoshu

博文

makex生成x-file里面观测值为空

已有 2426 次阅读 2022-3-13 23:10 |个人分类:GAMIT/GLOBK|系统分类:科研笔记

帮铁四院的大佬计算一批数据,发现如下问题:

makex jiny.makex.batch

运行正常结束,生成了所有测站文件对应的x-文件,但是自己的测站的数据内容都是空的,IGS站生成的x-文件却是有观测值内容的.情况如下截图:

Screenshot from 2022-03-13 21:00:32.png

上面看上去,观测数据都是空的,IGS站的x-文件如下:

Screenshot from 2022-03-13 20:59:12.png

解决思路:

1.首先想到的是最可能观测文件o-file存在问题;

打开头文件查看,观测值类型:

6    C1    C2    L1    L2    P1    P2                  # / TYPES OF OBSERV

上面显示具有双频观测值(C1/C2),但是查看下面的观测数据缺失C2(也缺失P2)感觉是因为这个原因造成的;

Screenshot from 2022-03-13 21:11:18.png


2.仔细查看其他观测文件,特别是BJFS的数据

观测值也只存在C1,没有C2,但是存在P2观测值

Screenshot from 2022-03-13 21:22:32.png


3.为了证实,gamit双频必须需要C2或者P2观测值

做一个实验,利用TEQC将BJFS的观察值P2去掉,看看是否还能生成正常的x-file

teqc -O.obs L1+L2+C1+P1+S1+S2 bjfs0451.22o > bjfs0450.22o

Screenshot from 2022-03-13 21:34:08.png

再次运行makex,

STATUS :220313:2145:14.0 MAKEX/makex: **Begin processing: BJFS 2022  45
WARNING:220313:2145:14.0 MAKEX/makex: **Begin processing: BJFS 2022  45
STATUS :220313:2145:14.0 MAKEX/openf: Opened: session.info
STATUS :220313:2145:14.0 MAKEX/openf: Opened: lfile.
STATUS :220313:2145:14.0 MAKEX/openf: Opened: station.info
STATUS :220313:2145:14.0 MAKEX/openf: Opened: jbrdc2.045
STATUS :220313:2145:14.0 MAKEX/openf: Opened: kbjfs2.045
STATUS :220313:2145:14.0 MAKEX/openf: Opened: brdc0450.22n
STATUS :220313:2145:14.0 MAKEX/openf: Opened: hi.dat
STATUS :220313:2145:14.0 MAKEX/makex: Epochs 2880  X-file interval  30  Length of session (hrs) 24.0
STATUS :220313:2145:14.0 MAKEX/get_rxfiles: Searching for data in ./bjfs0450.22o
STATUS :220313:2145:14.0 MAKEX/openf: Opened: xbjfs2.045
STATUS :220313:2145:14.0 MAKEX/openf:
Opened: ./bjfs0450.22o
WARNING:220313:2145:14.0 MAKEX/settyp: No L2 pseudorange: codeless tracking
WARNING:220313:2145:14.0 MAKEX/settyp: No P-code but nwave2=1; reset nwave2 = 2

很不幸,BJFS的x-file依然有观测数据

32 SATELLITES   PRN       4 DATA TYPES:  1  2  3  0   L1  L2  P1

Screenshot from 2022-03-13 21:42:20.png

好吧,来个猛的

teqc -O.obs L1+L2+P1+S1+S2 bjfs0451.22o > bjfs0450.22o

Screenshot from 2022-03-13 21:46:39.png

makex运行后如下,

每个EPOCH都没有具体的数据,由此可以证实,gamit必须得有一个伪距观测值.

Screenshot from 2022-03-13 21:48:03.png


4.仔细对比makex处理文件的输出信息,发现如下:

x-file文件不正常的都有:End of file encountered in reading RINEX input file.

x-file文件正常的都是:Wrote all the epochs requested

STATUS :220313:2154:38.0 MAKEX/makex: TRM  5.20: accept data within +-1.000s of nominal epochs
STATUS :220313:2154:39.0 MAKEX/makex: End of file encountered in reading RINEX input file.
STATUS :220313:2154:39.0 MAKEX/makex:   10931 observations written to xfile    33 observations rejected as unreasonable
STATUS :220313:2154:39.0 MAKEX/makex: End processing: CP1C 2022  45  1

...

STATUS :220313:2154:35.0 MAKEX/makex: TRM  4.80: accept data within +-1.000s of nominal epochs
STATUS :220313:2154:36.0 MAKEX/makex:  Wrote all the epochs requested
STATUS :220313:2154:36.0 MAKEX/makex:   24534 observations written to xfile   661 observations rejected as unreasonable
STATUS :220313:2154:36.0 MAKEX/makex: End processing: BJFS 2022  45  1


打开/opt/gamit10.71/gamit/makex/makex.f文件查看一下

Screenshot from 2022-03-13 22:39:00.png

上面这段代码从注释和具体逻辑可以看出,fend(表示文件结束的bool类型)

Screenshot from 2022-03-13 22:17:11.png

fend定义和赋值如下:

logical          fend,ferr,newfile,ant_event,ircint_msg

Screenshot from 2022-03-13 22:48:53.png

在rrinex里面进行赋值,具体遇到什么结束符号,导致读取o-file错误

打开/opt/gamit10.71/gamit/lib/rrinex.f,fend定义,赋值false和true

76 c    value set to .true. at end of file
77       logical fend

...

196     fend = .false.

Screenshot from 2022-03-13 22:52:28.png

查找所有goto 4000的行(以及上下几行)语句:

sudo grep -rn -C 3 'goto 4000' /opt/gamit10.71/gamit/lib/rrinex.f

找出如下几种可能的原因,只能一个个去o-file观测文件中查找排除了

Five cases:
1. Error on read:  increment the error count error read the next line
2. Error decoding epoch line:  increment the error count and read the next line
3. Good epoch line but number records (SVs) exceeds channels: Exit the program  
4. Good epoch line but with event flag set:  read the event info and then the SV lines
5. Normal epoch line: decode and exit After any read error, call rxerr (at the end of this file) to count the errors and print out the line; after 100, stop the run.


375-            call rxerr(urinex,line,ioerr,nerr)  
376-            if(debug) write(*,*) 'Error decoding epoch line',ioerr
377-            if( ioerr.eq.-1 ) then
378:              goto 4000
379-            else
380-              goto 100
381-            endif
--
397-                call rxerr (urinex,line,ioerr,nerr)
398-                if(debug) write(*,*) 'Error on SV ID line ioerr ',ioerr
399-                if( ioerr.eq.-1 ) then
400:                  goto 4000
401-                else
402-                  goto 100
403-                endif
--
407-              if( ioerr.ne.0 ) then
408-                call rxerr(urinex,line,ioerr,nerr)
409-                if( ioerr.eq.-1 ) then
410:                  goto 4000
411-                else
412-                  goto 100
413-                endif

--

310-c           RINEX 2
311-            do i=1,nprn
312-c             here nprn indicates number of event records, not SVs
313:              read( urinex,iostat=ioerr,end=4000,fmt='(a80)') line
314-              call report_stat('WARNING',prog_name,'lib/rrinex',' '
315-     .                        ,line,0)
316-              if (line(61:80) .eq. 'ANTENNA: DELTA H/E/N') then

--

473-c         read and decode the data lines - skip the lines that are not the requested GNSS
474-          nprnx = 0
475-          do i=1,nprn
476:            read(urinex,'(a)',iostat=ioerr,end=4000) line
477-cd            print *,'read line  ioerr ',ioerr,line
478-            if(ioerr.ne.0 )
479-     .        call report_stat('FATAL',prog_name,'lib/rrinex',' '





https://blog.sciencenet.cn/blog-858128-1329274.html

上一篇:sh_upd_stnfo RRXHED rxver nwave1 nwave2 nobtyp rxobtyp
下一篇:MATLAB给多个子图实现统一的xlabel,ylabel,colorbar
收藏 IP: 58.19.92.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-23 19:24

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部