예제 #1
0
        /// <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);
        }
예제 #2
0
        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 + "结果为空。");
                }
            }
        }