This example demonstrates the basic I/O processing of RINEX files.
1 #!/usr/bin/python
2 from gpstkPython import *
3 rin = RinexObsStream('bahr1620.04o')
4 rout = RinexObsStream('bahr1620.04o.new', ios_out_trunc())
5 head = RinexObsHeader()
6 write(rin, head)
7 rout.header = rin.header
8 read(rout, rout.header)
9 data = RinexObsData()
10 while write(rin, data):
11 read(rout, data)
Line 3 and 4 instantiate RinexObsStream object, for input and output, respectively. Note by example that the simpler constructor defaults to input-only behavior. All of the complexity of reading and writing RINEX observation classes has been encapsulated by the RinexObsStream class.
Lines 5 through 8 demonstrate reading and writing of the RINEX observation file header.
The observations are read into a RinexObsData object, epoch by epoch in lines 9 through 11. The C++ streaming operators have been renamed to read() and write(). Note that the streaming operator serves as a loop control variable as well as a method of "filling" a RinexObsData object. The RinexObsData class contains the epoch time stamp, and a map of satellites to observations.