private void button_run_Click(object sender, EventArgs e) { var floatPath = fileOpenControl_ionoFreeFloat.FilePath; var mwPath = this.fileOpenControl_mwWide.FilePath; var mwTable = ObjectTableReader.Read(mwPath); var floatTable = ObjectTableReader.Read(floatPath); //Group 文件包括, Index Site Name Group Value Rms //参数文件包括,ParamName,Value, Rms //首先求取宽项模糊度 GroupedValueService wmValues = new GroupedValueService(mwTable); ParamValueService paramValueService = new ParamValueService(floatTable); NameRmsedNumeralVector wideLaneVector = GetIntMwDoubleDiffers(paramValueService, wmValues); WeightedVector rawFloatAmbiCycles = paramValueService.GetWeightedVector(); WeightedVector fixedParams = DoFixIonoFreeDoubleDifferAmbiguity(rawFloatAmbiCycles, wideLaneVector); //输出结果 ObjectTableStorage fixedParam = BuildFixedParamTable(fixedParams); objectTableControl1.DataBind(fixedParam); var path = Path.Combine(directorySelectionControl1.Path, "FixedParams" + Setting.AmbiguityFileExtension); ObjectTableWriter.Write(fixedParam, path); Geo.Utils.FormUtil.ShowOkAndOpenDirectory(path); }
private NameRmsedNumeralVector GetIntMwDoubleDiffers(ParamValueService paramValueService, GroupedValueService wmValues) { NameRmsedNumeralVector wideLaneVector = new NameRmsedNumeralVector(); // RmsedVector wideLaneVector = new RmsedVector(); var paramNames = paramValueService.ParamNames; foreach (var item in paramNames) { if (!NetDoubleDifferName.IsDifferParam(item)) { continue; } var paramName = NetDoubleDifferName.Parse(item); CurrentBasePrn = paramName.RefPrn; if (!paramName.IsValid) { continue; } var floatWideAmbi = wmValues.GetFirstDoubleDiffer(paramName); if (floatWideAmbi == null) { continue; } var wideAmbi = new RmsedNumeral(Math.Round(floatWideAmbi.Value), 1e-10); var differ = (floatWideAmbi.Value - wideAmbi.Value); if (Math.Abs(differ) > 0.3) { log.Info(item + " 宽项(MW)整数偏差为 " + differ + "取消固定。"); continue; } wideLaneVector[item] = wideAmbi; } return(wideLaneVector); }