下载的源码程序包中,共有16个例子,这里记录它们的调试及运行结果,尤其是哪些可用,哪些不可用,今后使用时用作参考。

总结:

(1)在 18 个示例程序中,example16 和 example17 编译报错,example7 和 example12 编译正常但是运行时报错(“已放弃(吐核)”),example3 运行正常但结果错误,其余程序可以正常运行。

(2)对库文件 libgpstk.so 文件的依赖,使库内函数的调试很麻烦:这是因为在安装 GPSTK 时由编译  cmake 和安装命令 sudo make install 生成了libgpstk.so 文件,这就与源代码切断了联系;后续对源代码做的修改,需要再次执行 GPSTK 的编译和安装命令才能更新 libgpstk.so 尤其是安装命令需要10-20分钟,比较耗时。而且对 libgpstk.so 文件的调试也很麻烦,它不能方便地设置断点, 不方便查看程序的跳转和变量,令调试工作一度陷入困顿中。

(3)鉴于 example3.cpp 程序中关于 P1 & P2 只能识别出 P1 变量, 以及 Rinex 3.02 文件中不支持含有北斗卫星观测文件的问题,我们最终放弃了对 GPSTK 源代码的依赖,转而自行开发相应的读取程序,以避开其中的 bug。

 

各程序的运行示例详列在此。

1. example1.cpp

$ ../example1
Hello world!
   The current civil time is 06/07/2017 08:28:57 UTC
   The current year is 2017
   The current day of year is 158
   The current second of day is 30537.5
   The current full GPS week is 1952
   The current short GPS week is 928
   The current day of GPS week is 3
   The current second of GPS week is 289738
   The current Modified Julian Date is 57911.353443289 UTC

 

2.  example2.cpp, OK。

自动生成新文件:bahr1620.04o.new

./example2

 

3. example3.cpp, 看似正常,其实有误!

[She@she-centos7 examples]$ ./example3
Required argument is a RINEX obs file.
[She@she-centos7 examples]$ ./example3 bahr1620.04o
Name your PRN of interest (by number: 1 through 32): 3
Reading bahr1620.04o.
---------------------------------- REQUIRED ----------------------------------
Rinex Version  2.10,  File type Observation,  System G (GPS).
Prgm: GFW - ROW,  Run: 06/09/2004 23:59:50,  By: NIMA
Marker type: .
Observer : NIMA,  Agency: NATIONAL IMAGERY AND MAPPING AGENCY
Rec#: 03215,  Type: ASHTECH Z-XII3,  Vers: 1Y07-1DY4
Antenna # : 11942,  Type : ASH700936B_M    SNOW
Position      (XYZ,m) : (3633909.1016, 4425275.5033, 2799861.2736).
Antenna Delta (HEN,m) : (3.1220, 0.0000, 0.0000).
GPS Observation types (9):
 Type #01 (L1C) L1 GPSC/A phase
 Type #02 (L2X) L2 GPSC2L+M phase
 Type #03 (C1C) L1 GPSC/A pseudorange
 Type #04 (C1P) L1 GPSP pseudorange
 Type #05 (C2W) L2 GPScodelessZ pseudorange
 Type #06 (D1C) L1 GPSC/A doppler
 Type #07 (D2X) L2 GPSC2L+M doppler
 Type #08 (S1C) L1 GPSC/A snr
 Type #09 (S2X) L2 GPSC2L+M snr
Time of first obs 2004/06/10 00:00:00.000 UNK
(This header is VALID)
---------------------------------- OPTIONAL ----------------------------------
Marker number : 24901M002
Signal Strenth Unit = 
Interval =  30.000
Wavelength factor L1: 1 L2: 1
Comments (1) :
Data are thinned (not smoothed) 30s. observations
-------------------------------- END OF HEADER --------------------------------
text 0:GC2P RinexObsID is not stored!.
location 0:/home/She/Downloads/GPSTK/gpstk-2.5.src/dev/ext/lib/FileHandling/RINEX3/Rinex3ObsHeader.cpp:2163

实际上,该观测文件的观测变量包括 P1 和 P2 参量,但是该程序却只能读出 P1 的值,找不到 P2 的值,导致程序中断退出。

[She@she-centos7 examples]$ cat bahr1620.04o | grep "# / TYPES OF OBSERV"
     9    L1    L2    C1    P1    P2    D1    D2    S1    S2# / TYPES OF OBSERV

 

4. example4.cpp, OK。

[She@she-centos7 examples]$ ./example4 bahr1620.04o bahr1620.04n
3633917.14508 4425281.93387 2799868.07476
3633916.70007 4425281.95696 2799867.33565
3633916.53802 4425282.23082 2799867.57637
3633917.38703 4425282.2806 2799867.85073
3633917.09456 4425282.76769 2799868.04387
3633916.55241 4425282.22131 2799867.29408
3633917.55883 4425282.49571 2799867.32582
3633917.44541 4425281.83514 2799867.2195
3633917.31666 4425281.71065 2799867.09384
3633917.19143 4425281.94326 2799867.20896
...

 

5. example5.cpp,OK。

[She@she-centos7 examples]$ ./example5
Required option -i | --datainput was not found.
Required option -n | --navinput was not found.
Usage: example5 [OPTION] ...

Program to print the position solution in ECEF and longitude, latitude, height,
based in C1 and given a RINEX observations file and a RINEX broadcast navigation
file.

The output is: 
 Time(sec) X(m) Y(m) Z(m) Lon(deg) Lat(deg) Height(m)


Required arguments:
  -i, --datainput=ARG [-i|--datainput] Name of RINEX observations file.
  -n, --navinput=ARG  [-n|--navinput] Name of RINEX broadcast navigation file.

Optional arguments:
  -d, --debug         Increase debug level
  -v, --verbose       Increase verbosity
  -h, --help          Print help usage

[She@she-centos7 examples]$ ./example5 -i bahr1620.04o -n bahr1620.04n
WARNING: Navigation file bahr1620.04n doesn't have valid ionospheric correction parameters.
Bancroft method was used at epoch 0
Bancroft method was used at epoch 30
30.00000000   3633911.61526279   4425277.16374086   2799864.64313676   50.60813429   26.20915473   -12.95938696   
60.00000000   3633911.27294441   4425277.29382556   2799864.72140608   50.60813776   26.20915583   -13.02953000   
90.00000000   3633911.72144069   4425276.53504681   2799864.39705302   50.60812947   26.20915441   -13.44353101   
120.00000000   3633912.70730754   4425277.96528185   2799865.20612008   50.60813093   26.20915406   -11.53320100   
150.00000000   3633911.50029482   4425277.35231622   2799863.95125127   50.60813637   26.20914884   -13.19966526   
...
3510.00000000   3633915.05584311   4425279.01996892   2799863.23598481   50.60811947   26.20912891   -10.33482742   
3540.00000000   3633914.02925495   4425278.45113254   2799862.44004908   50.60812379   26.20912682   -11.66527738   
3570.00000000   3633914.94178493   4425279.25564098   2799863.64853409   50.60812185   26.20913182   -10.05415985

[She@she-centos7 examples]$ ./example5 -i bell0300.02o -n brdc0300.02n
Bancroft method was used at epoch 0
0.00000000   4775853.47654020   116813.84203186   4213023.93446090   1.40113300   41.59962739   859.74948096   
30.00000000   4775853.92901513   116814.01332576   4213024.06419099   1.40113492   41.59962554   860.17700436   
60.00000000   4775853.79906886   116814.08023521   4213024.16856845   1.40113576   41.59962701   860.15038115   
90.00000000   4775853.61836924   116814.07826280   4213024.23307484   1.40113579   41.59962852   860.05808505   
120.00000000   4775853.58267418   116814.07468504   4213024.20737107   1.40113576   41.59962856   860.01426948   
150.00000000   4775853.67207896   116814.10319962   4213024.24733056   1.40113608   41.59962829   860.10815795   
180.00000000   4775853.60199151   116814.07684942   4213024.24030878   1.40113578   41.59962867   860.05061833   
210.00000000   4775853.49177923   116814.03766845   4213024.28838846   1.40113534   41.59962966   859.99943066   
240.00000000   4775853.50161516   116814.00936825   4213024.28751768   1.40113500   41.59962960   860.00568818  
...
86249.98900000   4775850.73846418   116816.59904808   4213026.24533273   1.40116686   41.59965891   859.28720471   
86279.98900000   4775850.70088181   116816.57470326   4213026.24143232   1.40116658   41.59965911   859.25607420   
86309.98900000   4775850.71443751   116816.53725675   4213026.23800576   1.40116613   41.59965901   859.26324846   
86339.98900000   4775850.70538967   116816.53198443   4213026.34238378   1.40116607   41.59965977   859.32568691   
86369.98900000   4775850.58927617   116816.52446428   4213026.36751647   1.40116601   41.59966063   859.25543160    

 

6. example6.cpp, OK。

[She@she-centos7 examples]$ ./example6
WARNING: Navigation file bahr1620.04n doesn't have valid ionospheric correction parameters.
Exception at epoch: 2453167 00000000 0.000000000000000 GPS
0.00000000 3633909.10160000   4425275.50330000   2799861.27360000   50.60814318   26.20913892   -17.03005082   
30.00000000 3633911.74073445   4425277.20389675   2799864.68208009   50.60813357   26.20915461   -12.84290456   
60.00000000 3633911.54304831   4425277.19265836   2799865.01849144   50.60813503   26.20915787   -12.81467844   
90.00000000 3633911.81361812   4425276.26562604   2799864.73369240   50.60812705   26.20915773   -13.42917878   
120.00000000 3633913.22368762   4425278.04550679   2799865.35504803   50.60812745   26.20915371   -11.11778824   
150.00000000 3633911.88342197   4425277.11127474   2799864.48218737   50.60813188   26.20915291   -12.91416557   
180.00000000 3633911.83589123   4425276.61525403   2799864.34496730   50.60812910   26.20915345   -13.34575635   
...

 

7. example7.cpp, Error

[She@she-centos7 examples]$ ./example7
39600.009  Case 1. Exception at epoch: 2452305 39600008 0.000999999998196 GPS
terminate called after throwing an instance of 'gpstk::GeometryException'
已放弃(吐核)

 

8. example8.cpp,OK。

[She@she-centos7 examples]$ ./example8
0.000  2.565  0.291  -6.283  1.379  1.401  0.399  11.800  0.650  9  2.504  2.170  1.250  1.168  1.828  
900.000  0.441  -0.464  -1.616  0.149  0.773  0.188  6.838  0.398  10  2.764  2.371  1.420  1.291  1.989  
1800.000  -0.012  -0.120  -0.054  0.110  0.006  0.009  0.016  0.000  9  2.934  2.522  1.499  1.488  2.036  
2700.000  -0.013  -0.021  -0.059  0.111  0.002  0.004  0.006  0.000  8  3.839  3.236  2.066  1.911  2.611  
3600.000  -0.033  -0.018  -0.076  0.111  0.001  0.002  0.002  0.000  8  3.498  2.978  1.836  1.875  2.314  
4500.000  -0.021  -0.027  -0.056  0.103  0.000  0.002  0.001  0.000  7  3.135  2.751  1.505  1.718  2.148  
...

 

9. example9.cpp,OK。

[She@she-centos7 examples]$ ./example9
Starting processing for station: 'COCO'.
Processing finished for station: 'COCO'. Results in file: 'coco2370-04.out'.
Starting processing for station: 'MADR'.
Processing finished for station: 'MADR'. Results in file: 'madr1480-08.out'.
Starting processing for station: 'ONSA'.
Processing finished for station: 'ONSA'. Results in file: 'onsa2240-05.out'.

 

10. example10.cpp,OK???

[She@she-centos7 examples]$ ./example10
Exception at epoch: 2452305 00000000 0.000000000000000 GPS; text 0:SolverPPP:text 0:Weight matrix is not square
location 0:/home/She/Downloads/GPSTK/gpstk-2.5.src/dev/ext/lib/Procframe/SolverPPP.cpp:192

location 0:/home/She/Downloads/GPSTK/gpstk-2.5.src/dev/ext/lib/Procframe/SolverPPP.cpp:722

Exception at epoch: 2452305 00030000 0.000000000000000 GPS; text 0:SolverPPP:text 0:Weight matrix is not square
location 0:/home/She/Downloads/GPSTK/gpstk-2.5.src/dev/ext/lib/Procframe/SolverPPP.cpp:192

location 0:/home/She/Downloads/GPSTK/gpstk-2.5.src/dev/ext/lib/Procframe/SolverPPP.cpp:722

Exception at epoch: 2452305 00060000 0.000000000000000 GPS; text 0:SolverPPP:text 0:Weight matrix is not square
location 0:/home/She/Downloads/GPSTK/gpstk-2.5.src/dev/ext/lib/Procframe/SolverPPP.cpp:192

location 0:/home/She/Downloads/GPSTK/gpstk-2.5.src/dev/ext/lib/Procframe/SolverPPP.cpp:722

Exception at epoch: 2452305 00090000 0.000000000000000 GPS; text 0:SolverPPP:text 0:Weight matrix is not square
location 0:/home/She/Downloads/GPSTK/gpstk-2.5.src/dev/ext/lib/Procframe/SolverPPP.cpp:192

location 0:/home/She/Downloads/GPSTK/gpstk-2.5.src/dev/ext/lib/Procframe/SolverPPP.cpp:722

 

  11. example11.cpp,添加gv软件包( $ sudo yum install gv )之后, OK。

[She@she-centos7 examples]$ ./example11
Going to launch ggv
sh: ggv: 未找到命令
... couldn't execute: ggv lineScatterPlotsExample.eps
Going to launch gv
sh: gv: 未找到命令
... couldn't execute: gv lineScatterPlotsExample.eps
Going to launch kghostview --portrait
sh: kghostview: 未找到命令
... couldn't execute: kghostview --portrait lineScatterPlotsExample.eps
Going to launch ghostview
Warning: Cannot convert string "-*-Helvetica-Medium-R-Normal--*-140-*-*-P-*-ISO8859-1" to type FontStruct
Warning: Missing charsets in String to FontSet conversion
Warning: Cannot convert string "-*-Helvetica-Medium-R-Normal--*-120-*-*-P-*-ISO8859-1" to type FontStruct
Warning: Cannot convert string "-*-Helvetica-Medium-R-Normal--*-100-*-*-P-*-ISO8859-1" to type FontStruct
Warning: Cannot convert string "-*-Helvetica-Bold-R-Normal--*-120-*-*-P-*-ISO8859-1" to type FontStruct

在CentOS 7 系统上安装 gv 软件包之后,可以打开图片文件 ~/GPSTK/gpstk-2.5.src/dev/examples/lineScatterPlotsExample.eps。

 

12. example12.cpp,Error。   

[She@she-centos7 examples]$ ./example12
terminate called after throwing an instance of 'gpstk::InvalidParameter'
已放弃(吐核)

 

13. example13.cpp,OK。

功能是打开一张图片  surfacePlotExample.eps

[She@she-centos7 examples]$ ./example13
Going to launch ggv
sh: ggv: 未找到命令
... couldn't execute: ggv surfacePlotExample.eps
Going to launch kghostview --portrait
sh: kghostview: 未找到命令
... couldn't execute: kghostview --portrait surfacePlotExample.eps
Going to launch ghostview
Warning: Cannot convert string "-*-Helvetica-Medium-R-Normal--*-140-*-*-P-*-ISO8859-1" to type FontStruct
Warning: Missing charsets in String to FontSet conversion
Warning: Cannot convert string "-*-Helvetica-Medium-R-Normal--*-120-*-*-P-*-ISO8859-1" to type FontStruct
Warning: Cannot convert string "-*-Helvetica-Medium-R-Normal--*-100-*-*-P-*-ISO8859-1" to type FontStruct
Warning: Cannot convert string "-*-Helvetica-Bold-R-Normal--*-120-*-*-P-*-ISO8859-1" to type FontStruct

 

14. example14.cpp,OK。

[She@she-centos7 examples]$ ./example14
Starting processing for station: 'ACOR'.
Processing finished for station: 'ACOR'.
Starting processing for station: 'MADR'.
Processing finished for station: 'MADR'.
Starting processing for station: 'SCOA'.
Processing finished for station: 'SCOA'.
Starting processing for station: 'SFER'.
Processing finished for station: 'SFER'.
Starting processing for station: 'TLSE'.
Processing finished for station: 'TLSE'.
0.00000 0.96351 0.36898 2.63270 1.27138
30.00000 1.51249 -0.80217 2.74550 1.76894
60.00000 -1.05850 -0.59825 7.78966 0.82128
90.00000 0.72250 -1.04334 5.51055 0.60794
120.00000 0.88845 -1.38029 8.63975 0.14118
150.00000 0.69855 -0.38192 3.98268 0.89917
180.00000 0.62761 -0.12038 1.11617 1.30303
210.00000 0.49831 -0.18068 0.12812 1.62024
240.00000 0.33078 -0.02410 0.10592 1.73208
270.00000 0.25720 -0.22573 0.11656 2.02044
300.00000 0.07949 -0.31696 0.14422 2.17535
330.00000 0.00535 -0.19065 0.09094 2.24695
360.00000 -0.07861 -0.22373 0.29576 2.18388
390.00000 -0.06248 -0.28896 0.31730 2.15903

 

15. example15.cpp,OK。

[She@she-centos7 examples]$ ./example15

Before perturbation: sample mean is               10.0586, 
                     sample standard deviation is 1.99072

Altering measurement 773 to take the value of 10000

After perturbation:  sample mean is                20.0485, 
                     sample standard deviation is 315.916

Robust statistics:
                     number    = 1000
                     quartiles =   8.6755863   11.334482
                     median    =   10.126592
                     MAD       =   1.9174815

Using robust stats:  sample mean is                10.058538, 
                     sample standard deviation is 1.9917154

 

16.  example16.cpp, Error:编译报错

[She@she-centos7 examples]$ make
g++    -c -o example16.o example16.cpp
example16.cpp: 在函数‘int main(int, char**)’中:
example16.cpp:1025:18: 错误‘class gpstk::SP3EphemerisStore’没有名为‘enableDataGapCheck’的成员
       SP3EphList.enableDataGapCheck();
                  ^
example16.cpp:1026:18: 错误:‘class gpstk::SP3EphemerisStore’没有名为‘setGapInterval’的成员
       SP3EphList.setGapInterval(
                  ^
example16.cpp:1033:18: 错误:‘class gpstk::SP3EphemerisStore’没有名为‘enableIntervalCheck’的成员
       SP3EphList.enableIntervalCheck();
                  ^
example16.cpp:1034:18: 错误:‘class gpstk::SP3EphemerisStore’没有名为‘setMaxInterval’的成员
       SP3EphList.setMaxInterval(
                  ^
example16.cpp:2040:54: 错误:expression cannot be used as a function
                  << YDSTime(gRover.header.epoch).sod()
                                                      ^
example16.cpp:2270:45: 错误:‘class gpstk::CommonTime’没有名为‘DOYsecond’的成员
             fAverage << gRover.header.epoch.DOYsecond()
                                             ^
example16.cpp:2294:38: 错误:‘class gpstk::CommonTime’没有名为‘DOYsecond’的成员
          cout << gRover.header.epoch.DOYsecond()   << "  "        // #1
                                      ^
make: *** [example16.o] 错误 1

 

17 example17.cpp,Error:编译报错

[She@she-centos7 examples]$ make
g++    -c -o example17.o example17.cpp
example17.cpp: 在成员函数‘virtual void example17::process()’中:
example17.cpp:433:18: 错误:‘class gpstk::SP3EphemerisStore’没有名为‘enableDataGapCheck’的成员
       SP3EphList.enableDataGapCheck();
                  ^
example17.cpp:434:18: 错误:‘class gpstk::SP3EphemerisStore’没有名为‘setGapInterval’的成员
       SP3EphList.setGapInterval(
                  ^
example17.cpp:441:18: 错误:‘class gpstk::SP3EphemerisStore’没有名为‘enableIntervalCheck’的成员
       SP3EphList.enableIntervalCheck();
                  ^
example17.cpp:442:18: 错误:‘class gpstk::SP3EphemerisStore’没有名为‘setMaxInterval’的成员
       SP3EphList.setMaxInterval(
                  ^
example17.cpp: 在成员函数‘virtual void example17::shutDown()’中:
example17.cpp:1576:31: 错误:‘class gpstk::CommonTime’没有名为‘DOYsecond’的成员
                  << workEpoch.DOYsecond() << endl;
                               ^
make: *** [example17.o] 错误 1

 

 18. example18.cpp,OK。  

[She@she-centos7 examples]$ ./example18
This is example 18 of GPSTk. 
process...
   0   1.000000   2.004536   4.000000
   1   1.000000   2.002924   4.000000
   2   1.000000   1.999229   4.000000
   3   1.000000   1.994481   4.000000
   4   1.000000   1.996261   4.000000
   5   1.000000   1.996434   4.000000
   6   1.000000   1.994959   4.000000
...
  97   1.000000   2.000722   4.000000
  98   1.000000   2.000658   4.000000
  99   1.000000   2.000705   4.000000
Finished.

 



 

posted on 2017-06-07 17:01  Certainly  阅读(2211)  评论(0编辑  收藏  举报