def test_str(self): a = gpstk.SatID(3, gpstk.SatID.systemGlonass) self.assertEqual('GLONASS 3', str(a)) b = gpstk.SatID(1, gpstk.SatID.systemLEO) self.assertEqual('LEO 1', str(b)) c = gpstk.SatID(4) # optional arg should be SatID.systemGPS self.assertEqual('GPS 4', str(c))
def rinex3nav_data(filename, prn): header, data = gpstk.readRinex3Nav(filename) sat = gpstk.SatID(prn, gpstk.SatID.systemGPS) g = gpstk.GPSEphemerisStore() for d in data: if prn == d.PRNID: ephem = d.toEngEphemeris() g.addEphemeris(ephem) class rinex3nav_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 rinex3nav_holder(g, sat)
def yuma_data(filename, prn): header, data = gpstk.readYuma(filename) sat = gpstk.SatID(prn, gpstk.SatID.systemGPS) almanac = gpstk.GPSAlmanacStore() for d in data: if prn == d.PRN: orbit = d.toAlmOrbit() almanac.addAlmanac(orbit) class yuma_holder: def __init__(self, almanacStore, satStore): self.almanacStore = almanacStore self.satStore = satStore def first_time(self): return self.almanacStore.getInitialTime() def last_time(self): return self.almanacStore.getFinalTime() def position(self, t): triple = self.almanacStore.getXvt(self.satStore, t).getPos() return triple2Position(triple) return yuma_holder(almanac, sat)
def test_almanac_store(self): s = gpstk.SEMAlmanacStore() s.loadFile(gpstk.data.full_path('sem_data.txt')) expected = ('x:(1.33149e+06, 1.54299e+07, -2.15873e+07), ' 'v:(-2620.86, 793.126, 415.074), ' 'clk bias:4.75373e-05, clk drift:0, relcorr:0') actual = str(s.getXvt(gpstk.SatID(1), s.getInitialTime())) self.assertEqual(expected, actual)
def test_functions(self): self.assertEqual(4, gpstk.getLegacyFitInterval(15, 27)) sat = gpstk.SatID(1, 1) self.assertAlmostEqual( 0.190293672798, gpstk.getWavelength(sat, 1), ) self.assertAlmostEqual(1.2833333333333334, gpstk.getBeta(sat, 1, 2)) self.assertAlmostEqual(0.6469444444444448, gpstk.getAlpha(sat, 1, 2))
def test_ephem_store(self): ephem = gpstk.SP3EphemerisStore() ephem.rejectBadPositions(True) ephem.rejectBadClocks(True) ephem.loadFile(gpstk.data.full_path("sp3_data.txt")) t = ephem.getInitialTime() t.addSeconds(60 * 120) # 2 hours into data s = gpstk.SatID(1) p = ephem.getPosition(s, t) self.assertAlmostEqual(17359099.884999998, p[0]) self.assertAlmostEqual(-483028.55, p[1]) self.assertAlmostEqual(-19921938.297000002, p[2])
def test_stream(self): header, data = gpstk.readRinex3Obs('rinex3obs_data.txt', strict=True) self.assertEqual(0L, header.numSVs) self.assertEqual('NATIONAL IMAGERY AND MAPPING AGENCY', header.agency) self.assertEqual(120, len(data)) dataPoint = data[0] datum = dataPoint.getObs(gpstk.SatID(4), header.getObsIndex("C1")) self.assertAlmostEqual(24236698.057, datum.data) self.assertEqual(0, dataPoint.clockOffset) expectedTime = gpstk.CommonTime() expectedTime.set(2453167) expectedTime.setTimeSystem(gpstk.TimeSystem(gpstk.TimeSystem.GPS)) self.assertEqual(expectedTime, dataPoint.time)
def compute_raim_position(gps_week, gps_sow, prns, prns_pos, pranges, bcestore): if len(prns) == 0 or len(prns_pos) == 0: return np.array([0, 0, 0]) t = gpstk.GPSWeekSecond(gps_week, gps_sow).toCommonTime() prnList = [gpstk.SatID(int(i[3:])) for i in prns] satVector = gpstk.seqToVector(list(prnList), outtype='vector_SatID') rangeVector = gpstk.seqToVector([float(i) for i in pranges]) noTropModel = gpstk.ZeroTropModel() raimSolver = gpstk.PRSolution2() raimSolver.RAIMCompute(t, satVector, rangeVector, bcestore, noTropModel) r = np.array([ raimSolver.Solution[0], raimSolver.Solution[1], raimSolver.Solution[2] ]) return r
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 sp3_data(filename, prn): store = gpstk.SP3EphemerisStore() store.loadFile(filename) sat = gpstk.SatID(prn) class sp3_holder: def __init__(self, sp3Store, satStore): self.sp3Store = sp3Store self.satStore = satStore def first_time(self): return self.sp3Store.getPositionInitialTime(self.satStore) def last_time(self): return self.sp3Store.getPositionFinalTime(self.satStore) def position(self, t): triple = self.sp3Store.getPosition(self.satStore, t) return triple2Position(triple) return sp3_holder(store, sat)
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)
def test_invalid(self): s = gpstk.SatID() # creates an invalid SatID (id=-1) self.assertFalse(s.isValid())
def test_validity(self): s = gpstk.SatID(1, gpstk.SatID.systemGPS) self.assertTrue(s.isValid())