ObsRngDev::ObsRngDev( const double prange, const SatID& svid, const DayTime& time, const ECEF& rxpos, const XvtStore<SatID>& eph, GeoidModel& gm, bool svTime) : obstime(time), svid(svid), ord(0), wonky(false) { computeOrd(prange, rxpos, eph, gm, svTime); Geodetic gx(rxpos, &gm); NBTropModel nb(gx.getAltitude(), gx.getLatitude(), time.DOYday()); computeTrop(nb); }
ObsRngDev::ObsRngDev( const double prange, const SatID& svid, const DayTime& time, const ECEF& rxpos, const XvtStore<SatID>& eph, GeoidModel& gm, const IonoModelStore& ion, IonoModel::Frequency fq, bool svTime) : obstime(time), svid(svid), ord(0), wonky(false) { computeOrd(prange, rxpos, eph, gm, svTime); Geodetic gx(rxpos, &gm); NBTropModel nb(gx.getAltitude(), gx.getLatitude(), time.DOYday()); computeTrop(nb); iono = ion.getCorrection(time, gx, elevation, azimuth, fq); ord -= iono; }
ObsRngDev::ObsRngDev( const double prange1, const double prange2, const SatID& svid, const DayTime& time, const ECEF& rxpos, const XvtStore<SatID>& eph, GeoidModel& gm, bool svTime) : obstime(time), svid(svid), ord(0), wonky(false) { // for dual frequency see ICD-GPS-211, section 20.3.3.3.3.3 double icpr = (prange2 - GAMMA * prange1)/IGAMMA; iono = prange1 - icpr; computeOrd(icpr, rxpos, eph, gm, svTime); Geodetic gx(rxpos, &gm); NBTropModel nb(gx.getAltitude(), gx.getLatitude(), time.DOYday()); computeTrop(nb); }