def test_ephemeris(self): isblock9 = (lambda x: x.blockNum == 9) header, data = gpstk.readFIC('fic_data.txt', filterfunction=isblock9, strict=True) g = gpstk.GPSEphemerisStore() for d in data: ephem = gpstk.Rinex3NavData(d.toEngEphemeris()) g.addEphemeris(ephem) sat = gpstk.SatID(4, gpstk.SatID.systemGPS) sys = gpstk.TimeSystem(gpstk.TimeSystem.GPS) t = gpstk.CivilTime(2012, 11, 10, 2, 0, 0, sys) t = t.toCommonTime() xvt= g.getXvt(sat, t) self.assertAlmostEqual(6887268.768807452, xvt.x[0]) self.assertAlmostEqual(1036.3167828001287, xvt.v[1])
def test_almanac(self): isblock62 = (lambda x: x.blockNum == 62) header, data = gpstk.readFIC('fic_data.txt', filterfunction=isblock62, strict=True) self.assertEqual(96, len(data)) g = gpstk.GPSAlmanacStore() for d in data: orbit = d.toAlmOrbit() g.addAlmanac(orbit) sat = gpstk.SatID(4, gpstk.SatID.systemGPS) sys = gpstk.TimeSystem(gpstk.TimeSystem.GPS) t = gpstk.CivilTime(2012, 11, 10, 2, 0, 0, sys) t = t.toCommonTime() xvt= g.getXvt(sat, t) self.assertAlmostEqual(6888490.4337890595, xvt.x[0]) self.assertAlmostEqual(1036.1894772036476, xvt.v[1])
def fic_data(filename, prn): isblock9 = (lambda x: x.blockNum == 9) header, data = gpstk.readFIC(filename, filterfunction=isblock9) sat = gpstk.SatID(prn, gpstk.SatID.systemGPS) g = gpstk.GPSEphemerisStore() for d in data: ephem = gpstk.Rinex3NavData(d.toEngEphemeris()) g.GPSEphemerisStore(ephem) class fic_holder: def __init__(self, gpsStore, satStore): self.gpsStore = gpsStore self.satStore = satStore def first_time(self): return self.gpsStore.getInitialTime() def last_time(self): return self.gpsStore.getFinalTime() def position(self, t): triple = self.gpsStore.getXvt(self.satStore, t).getPos() return triple2Position(triple) return fic_holder(g, sat)