Ejemplo n.º 1
0
        /// <summary>
        /// 所有测站与指定参考星的差分值(浮点数)。
        /// 必须与测站共视才可以差分。结果中包括了共视时段。
        /// </summary>
        /// <param name="basePrn"></param>
        /// <returns></returns>
        public MultiSitePeriodValueStorage GetRawDiffer(SatelliteNumber basePrn)
        {
            if (CasheOfRawDiffers.Contains(basePrn))
            {
                return(CasheOfRawDiffers[basePrn]);
            }
            lock (rawDifferLocker)
            {
                if (CasheOfRawDiffers.Contains(basePrn))
                {
                    return(CasheOfRawDiffers[basePrn]);
                }

                log.Info("开始生成 星间单差浮点数,基准星:" + basePrn);
                MultiSitePeriodValueStorage sitePeriodDifferFloat = new MultiSitePeriodValueStorage("所有站星间单差宽巷浮点数模糊度(MW)");
                foreach (var siteKv in this.Data)
                {
                    if (!siteKv.Value.Contains(basePrn))
                    {
                        continue;
                    }
                    string siteName   = siteKv.Key;
                    var    periodVals = siteKv.Value;
                    MultiSatPeriodRmsNumeralStorage newSite = periodVals.GetRawDiffer(basePrn);
                    sitePeriodDifferFloat.Add(siteName, newSite);
                }
                log.Info("星间单差浮点数生成完毕,基准星:" + basePrn);

                CasheOfRawDiffers[basePrn] = sitePeriodDifferFloat;

                return(sitePeriodDifferFloat);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 四舍五入法固定模糊度
        /// </summary>
        /// <param name="maxDifferForAmbi">允许的最大偏差</param>
        /// <param name="maxRms">允许的最大的RMS</param>
        /// <param name="fractions">小数部分产品</param>
        /// <returns></returns>
        public MultiSitePeriodValueStorage GetRoundInt(Dictionary <SatelliteNumber, RmsedNumeral> fractions, double maxDifferForAmbi, double maxRms)
        {
            MultiSitePeriodValueStorage result = new MultiSitePeriodValueStorage("所有站宽巷星间单差整数模糊度");

            foreach (var siteKv in this.Data) //遍历计算所有测站
            {
                string siteName   = siteKv.Key;
                var    periodVals = siteKv.Value;
                MultiSatPeriodRmsNumeralStorage newSite = periodVals.GetRoundInt(siteName, fractions, maxDifferForAmbi, maxRms);
                if (newSite.Count > 0)
                {
                    result.Add(newSite.Name, newSite);
                }
            }
            return(result);
        }