/// <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); } }
/// <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); }