/// <summary> /// 构建数据表格。 /// </summary> /// <param name="type"></param> /// <returns></returns> private ObjectTableStorage BuildObjectTable(SatObsDataType type) { var EpochInfoBuilder = new RinexEpochInfoBuilder(ObsFile.Header.SatelliteTypes); ObjectTableStorage table = new ObjectTableStorage(); foreach (var obs in ObsFile) { var epochInfo = EpochInfoBuilder.Build(obs); table.NewRow(); table.AddItem("Epoch", epochInfo.ReceiverTime.ToShortTimeString()); foreach (var sat in epochInfo) { table.AddItem(sat.Prn + "", sat[type].Value + ""); } } table.EndRow(); return(table); }
public void Positioning(RinexEpochObservation obj) { // this.ObsFile.Header = obj.Header; if (obj == null || obj.Count == 0) { return; } var EpochInfoBuilder = new RinexEpochInfoBuilder(obj.Header.ObsInfo.SatelliteTypes); var epochInfo = EpochInfoBuilder.Build(obj); if (epochInfo.First.FrequencyCount < 2) { return; } //RTSp3InfoCorrected(obj.Time); Solver.RawRevise(epochInfo); Solver.PreProcess(epochInfo); Solver.Run(epochInfo); if (Solver.CurrentGnssResult is BaseGnssResult) { var result = ((BaseGnssResult)Solver.CurrentGnssResult); if (obj.Header.ApproxXyz == null || obj.Header.ApproxXyz.IsZero) { obj.Header.ApproxXyz = result.EstimatedXyz; Solver.RawRevise(epochInfo); Solver.PreProcess(epochInfo); Solver.Run(epochInfo); } if (Solver.CurrentGnssResult != null) { log.Info(obj.Name + "\t" + obj.ReceiverTime + ":\t" + result.XyzCorrection + ":\t" + result.EstimatedXyzRms + ""); } else { log.Info(obj + "结果为空。"); } } }