3 An example of generating new rinex file (both v2,11 and v3.02.
4 First an existing v2.11 file is read in just so we don't have
5 to make up all the data that goes into the new files.
10 ifn = gnsstk.getPathData() +
'/test_input_rinex2_obs_RinexObsFile.06o'
11 header, data = gnsstk.readRinex3Obs(ifn, strict=
True)
15 new_header.fileType = header.fileType
17 new_header.fileProgram = header.fileProgram
18 new_header.date = header.date
19 new_header.fileAgency = header.fileAgency
20 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validRunBy
22 new_header.markerName = header.markerName
23 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validMarkerName
25 new_header.observer = header.observer
26 new_header.agency = header.agency
27 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validObserver
29 new_header.recNo = header.recNo
30 new_header.recType = header.recType
31 new_header.recVers = header.recVers
32 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validReceiver
34 new_header.antNo = header.antNo
35 new_header.antType = header.antType
36 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validAntennaType
38 newAntPosition =
gnsstk.Triple(header.antennaPosition[0],header.antennaPosition[1],header.antennaPosition[2])
39 new_header.antennaPosition = newAntPosition
40 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validAntennaPosition
42 newAntDelta =
gnsstk.Triple(header.antennaDeltaHEN[0],header.antennaDeltaHEN[1],header.antennaDeltaHEN[2])
43 new_header.antennaDeltaHEN = newAntDelta
44 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validAntennaDeltaHEN
46 for rinObsType
in header.mapObsTypes:
49 for rinObsId
in header.mapObsTypes[rinObsType]:
53 newObsIds.append(newObsId)
54 new_header.mapObsTypes[rinObsType] = tuple(newObsIds)
55 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validNumObs
57 for rin_obs_id
in header.R2ObsTypes:
59 new_header.R2ObsTypes.append(rin_obs_id)
60 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validNumObs
64 new_header.firstObs.year = header.firstObs.year
65 new_header.firstObs.month = header.firstObs.month
66 new_header.firstObs.day = header.firstObs.day
67 new_header.firstObs.hour = header.firstObs.hour
68 new_header.firstObs.minute = header.firstObs.minute
69 new_header.firstObs.second = header.firstObs.second
70 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validFirstTime
72 new_header.markerNumber = header.markerNumber
73 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validMarkerNumber
75 new_header.interval = header.interval
76 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validInterval
79 for comment
in header.commentList:
80 new_header.commentList.append(comment)
81 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validComment
82 new_header.validEoH =
True
89 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validSystemPhaseShift
90 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validGlonassSlotFreqNo
91 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validGlonassCodPhsBias
102 mjd = int(d.time.getDays())
103 sod = float(d.time.getSecondOfDay())
109 nd.auxHeader = d.auxHeader
110 nd.clockOffset = d.clockOffset
111 nd.epochFlag= d.epochFlag
114 for satkey
in d.obs.keys():
116 satObss = d.obs[newSatKey]
119 for satObs
in satObss:
122 newSatObs.data = satObs.data
123 newSatObs.lli = satObs.lli
124 newSatObs.ssi = satObs.ssi
125 newSatObss.append(newSatObs)
127 nd.obs[newSatKey] = tuple(newSatObss)
133 new_header.version = 3.02
134 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validVersion
135 ofn =
"example6_v302.o"
136 gnsstk.writeRinex3Obs(ofn, new_header, new_data)
137 print "Wrote output file: {}".format(ofn)
141 new_header.version = 2.11
142 new_header.valid = new_header.valid | gnsstk.Rinex3ObsHeader.validVersion
143 ofn =
"example6_v211.o"
144 gnsstk.writeRinex3Obs(ofn, new_header, new_data)
145 print "Wrote output file: {}".format(ofn)