Exemple #1
0
        /// <summary>
        /// 设置无电离层组合
        /// </summary>
        /// <param name="result"></param>
        public void SetIonoFreeCombination(PppResult result)
        {
            EpochInformation epochInfo = result.MaterialObj;
            var nameBuilder            = (GnssParamNameBuilder)result.NameBuilder;

            foreach (var sat in epochInfo.EnabledSats)
            {
                var key = nameBuilder.GetParamName(sat.Prn);

                if (!this.Contains(key))
                {
                    this[key] = new IonoFreeCombination(sat.FrequenceA.PhaseRange, sat.FrequenceB.PhaseRange);
                }

                double ambiDistance = result.GetAmbiguityDistance(epochInfo.SiteName, sat.Prn);

                this[key].SetAmbiguity(ambiDistance);
                var  amb   = this[key];
                long ambiA = amb.NarrowPhase.Ambiguity;
                long ambiB = ambiA - amb.WidePhase.Ambiguity;

                //string msg = ambiA + "\t" + ambiB + "\r\n";
                //string path = "C:\\GnsserOutput\\模糊度\\" + result.EpochInfo.obsPath.MarkerName + "_" + result.EpochInfo.ReceiverTime.ToDateString() + "\\" + sat.Prn + "模糊度.txt";
                //if (!Directory.Exists(Path.GetDirectoryName(path))) Directory.CreateDirectory(Path.GetDirectoryName(path));
                //System.IO.File.AppendAllText(path, msg);
            }
        }
Exemple #2
0
 public override bool Revise(ref EpochInformation epochInfo)
 {
     foreach (var sat in epochInfo)
     {
         //设置无电离层载波对齐
         SetAmbiguityOfIonoFreePhase(sat);
     }
     return(true);
 }
Exemple #3
0
        public bool Add(EpochInformation info)
        {
            if (Data.Contains(info))
            {
                return(false);
            }

            Data.Add(info); //add prevObj

            if (Data.Count > AssignedEpochCount)
            {
                Data.RemoveAt(0);
            }
            return(true);
        }
Exemple #4
0
 /// <summary>
 /// 默认构造函数
 /// </summary>
 /// <param name="epochInfo">历元观测信息</param>
 /// <param name="prn">卫星编号</param>
 public EpochSatellite(
     EpochInformation epochInfo,
     SatelliteNumber prn
     )
     : base()
 {
     this.EpochInfo           = epochInfo;
     this.SiteInfo            = epochInfo == null? null: epochInfo.SiteInfo;
     this.Enabled             = true;
     this.Prn                 = prn;
     this.CommonCorrection    = new NumerialCorrectionDic();
     this.PhaseOnlyCorrection = new NumerialCorrectionDic();
     this.RangeOnlyCorrection = new NumerialCorrectionDic();
     this.StdDevOfRange       = 1;
 }
        /// <summary>
        /// 添加。
        /// </summary>
        /// <param name="EpochInformation"></param>
        /// <param name="isBase"></param>
        public void Add(EpochInformation EpochInformation, bool isBase = false)
        {
            if (Epoch == Time.Default)
            {
                Epoch = EpochInformation.ReceiverTime;
            }
            else if (Epoch != EpochInformation.ReceiverTime)
            {
                throw new ArgumentException("时间不匹配!要求:" + Epoch + ", 但输入历元是:" + EpochInformation.ReceiverTime);
            }

            if (isBase)
            {
                BaseEpochInfo = EpochInformation;
            }
            else
            {
                if (!ListExceptBase.Contains(EpochInformation))
                {
                    ListExceptBase.Add(EpochInformation);
                }
            }
        }
 /// <summary>
 /// 设置历元信息
 /// </summary>
 /// <param name="EpochInfo"></param>
 /// <returns></returns>
 public RinexEpochSatBuilder SetEpochInfo(EpochInformation EpochInfo)
 {
     this.EpochInfo = EpochInfo; this.Time = EpochInfo.ReceiverTime; return(this);
 }