4 An example reading a RINEX obs, nav and met file and using
5 PRSolutionLegacy to computer a receiver position and compare
6 this to the position in the obs header.
11 obsfn = gnsstk.getPathData() +
'/arlm200z.15o'
12 navfn = gnsstk.getPathData() +
'/arlm200z.15n'
13 metfn = gnsstk.getPathData() +
'/arlm200z.15m'
15 navHeader, navData = gnsstk.readRinex3Nav(navfn)
16 ephStore = gnsstk.gnsstk.Rinex3EphemerisStore()
17 for navDataObj
in navData:
18 ephStore.addEphemeris(navDataObj)
21 metHeader, metData = gnsstk.readRinexMet(metfn)
23 obsHeader, obsData = gnsstk.readRinex3Obs(obsfn)
25 indexP1 = obsHeader.getObsIndex(
'C1W')
26 indexP2 = obsHeader.getObsIndex(
'C2W')
27 raimSolver = gnsstk.PRSolutionLegacy()
29 for obsObj
in obsData:
30 for metObj
in metData:
31 if metObj.time >= obsObj.time:
34 metDataDict = metObj.getData()
35 temp = metDataDict[gnsstk.RinexMetHeader.TD]
36 pressure = metDataDict[gnsstk.RinexMetHeader.PR]
37 humidity = metDataDict[gnsstk.RinexMetHeader.HR]
38 tropModel.setWeather(temp, pressure, humidity)
40 if obsObj.epochFlag == 0
or obsObj.epochFlag == 1:
53 for satID, datumList
in obsObj.obs.iteritems():
58 P1 = obsObj.getObs(satID, indexP1).data
59 except gnsstk.exceptions.Exception:
71 P2 = obsObj.getObs(satID, indexP2).data
72 except gnsstk.exceptions.Exception:
76 ionocorr = 1.0 / (1.0 - gnsstk.GAMMA_GPS) * ( P1 - P2 )
86 rangeList.append(P1 - ionocorr)
95 raimSolver.RMSLimit = 3e6
109 satVector = gnsstk.seqToVector(prnList, outtype=
'vector_SatID')
110 rangeVector = gnsstk.seqToVector(rangeList)
111 raimSolver.RAIMCompute(time, satVector, rangeVector, ephStore, tropModel)
121 if raimSolver.isValid():
125 pos =
gnsstk.Triple(raimSolver.Solution[0], raimSolver.Solution[1], raimSolver.Solution[2])
126 err = obsHeader.antennaPosition - pos