예제 #1
0
        public double ComputePRerrorOneSV(int svPRN, double svTOW, double svPseudoRange, double ionoErr, double clkBias, string RinexFileName, string IMUFileName, out string strPRtrue_ClkBiasRange_txTOW)
        {
            double num6;
            double num7;
            double num = 0.0;

            strPRtrue_ClkBiasRange_txTOW = "-1.0,-1.0,-1.0";
            this.m_SV_PRN = svPRN;
            this.m_SV_TOW = svTOW;
            double num2 = svPseudoRange / 299792458.0;

            this.m_SV_TxTOW = (this.m_SV_TOW - num2) - clkBias;
            double   ionoError  = 0.0;
            double   svClkBias  = 0.0;
            XYZCoord svVel      = new XYZCoord();
            XYZCoord a          = this.GetRinexSVPos(RinexFileName, this.m_SV_PRN, this.m_SV_TxTOW, out ionoError, out svClkBias, out svVel);
            XYZCoord iMUTruePos = this.GetIMUTruePos(IMUFileName, svTOW);
            XYZCoord coord4     = new XYZCoord();

            if ((a == coord4) || (iMUTruePos == coord4))
            {
                return(-1.0);
            }
            double num5 = XYZCoord.getDistance(a, iMUTruePos);

            double[]     svPos     = new double[] { a.X, a.Y, a.Z };
            double[]     navPos    = new double[] { iMUTruePos.X, iMUTruePos.Y, iMUTruePos.Z };
            double[]     numArray3 = new double[] { svVel.X, svVel.Y, svVel.Z };
            computeTropo tropo     = new computeTropo();

            GPSUtilsClass.ComputeAzEl(navPos, svPos, out num6, out num7);
            double alt   = GPSUtilsClass.ComputeApproxAltitude(navPos);
            double num9  = tropo.NL_ComputeTropo(alt, num7);
            double num10 = computeEarthRotation.earthRotationCorrection(svPos, navPos, numArray3);
            double num11 = num5 - num10;
            double num12 = (svPseudoRange - (clkBias * 299792458.0)) + (svClkBias * 299792458.0);

            strPRtrue_ClkBiasRange_txTOW = string.Format("{0}, {1}, {2}", num5, num12, this.m_SV_TxTOW);
            num = num5 - num12;
            return(((num - ionoErr) - num9) - num11);
        }
예제 #2
0
 public double ComputePRerrorOneSV(int svPRN, double svTOW, double svPseudoRange, double ionoErr, double clkBias, string RinexFileName, string IMUFileName, out string strPRtrue_ClkBiasRange_txTOW)
 {
     double num6;
     double num7;
     double num = 0.0;
     strPRtrue_ClkBiasRange_txTOW = "-1.0,-1.0,-1.0";
     this.m_SV_PRN = svPRN;
     this.m_SV_TOW = svTOW;
     double num2 = svPseudoRange / 299792458.0;
     this.m_SV_TxTOW = (this.m_SV_TOW - num2) - clkBias;
     double ionoError = 0.0;
     double svClkBias = 0.0;
     XYZCoord svVel = new XYZCoord();
     XYZCoord a = this.GetRinexSVPos(RinexFileName, this.m_SV_PRN, this.m_SV_TxTOW, out ionoError, out svClkBias, out svVel);
     XYZCoord iMUTruePos = this.GetIMUTruePos(IMUFileName, svTOW);
     XYZCoord coord4 = new XYZCoord();
     if ((a == coord4) || (iMUTruePos == coord4))
     {
         return -1.0;
     }
     double num5 = XYZCoord.getDistance(a, iMUTruePos);
     double[] svPos = new double[] { a.X, a.Y, a.Z };
     double[] navPos = new double[] { iMUTruePos.X, iMUTruePos.Y, iMUTruePos.Z };
     double[] numArray3 = new double[] { svVel.X, svVel.Y, svVel.Z };
     computeTropo tropo = new computeTropo();
     GPSUtilsClass.ComputeAzEl(navPos, svPos, out num6, out num7);
     double alt = GPSUtilsClass.ComputeApproxAltitude(navPos);
     double num9 = tropo.NL_ComputeTropo(alt, num7);
     double num10 = computeEarthRotation.earthRotationCorrection(svPos, navPos, numArray3);
     double num11 = num5 - num10;
     double num12 = (svPseudoRange - (clkBias * 299792458.0)) + (svClkBias * 299792458.0);
     strPRtrue_ClkBiasRange_txTOW = string.Format("{0}, {1}, {2}", num5, num12, this.m_SV_TxTOW);
     num = num5 - num12;
     return (((num - ionoErr) - num9) - num11);
 }