예제 #1
0
        public List <ENU> GetEnus()
        {
            var        strs = this.richTextBox_neu.Lines;
            List <ENU> list = new List <ENU>();

            foreach (string item in strs)
            {
                if (String.IsNullOrWhiteSpace(item))
                {
                    continue;
                }
                list.Add(ENU.Parse(item));
            }

            return(list);
        }
예제 #2
0
        /// <summary>
        /// 增加参数到存储表
        /// </summary>
        /// <param name="epoch"></param>
        /// <param name="result"></param>
        private void AddEpochParam(ISiteSatObsInfo epoch, SimpleGnssResult result)
        {
            var fileName = ResultFileNameBuilder.BuildEpochParamFileName(epoch.Name);



            var table = TableTextManager.GetOrCreate(fileName);

            table.NewRow();
            table.AddItem("Epoch", epoch.ReceiverTime);//ToShortTimeString());

            if (result is SingleSiteGnssResult ||
                result is IWithEstimatedBaselines ||
                result is SingleSitePeriodInfoGnssResult ||
                result is IWithEstimatedBaseline)
            {
                XYZ appXyz = new XYZ();
                XYZ estXyz = new XYZ();
                if (result is SingleSiteGnssResult)
                {
                    var singleSiteResult = result as SingleSiteGnssResult;
                    appXyz = singleSiteResult.ApproxXyz;
                    estXyz = singleSiteResult.EstimatedXyz;
                }
                if (result is SingleSitePeriodInfoGnssResult)
                {
                    var period = result as SingleSitePeriodInfoGnssResult;
                    appXyz = period.MaterialObj[0].SiteInfo.ApproxXyz;
                }
                if (result is IWithEstimatedBaseline)
                {
                    var info     = result as IWithEstimatedBaseline;
                    var baseLine = info.GetEstimatedBaseline();
                    estXyz = baseLine.EstimatedXyzOfRov;
                    appXyz = baseLine.ApproxXyzOfRov;
                }
                if (result is IWithEstimatedBaselines)
                {
                    var info     = result as IWithEstimatedBaselines;
                    var baseLine = info.GetEstimatedBaselines().First;
                    estXyz = baseLine.EstimatedXyzOfRov;
                    appXyz = baseLine.ApproxXyzOfRov;
                }


                var dxyz = ((BaseGnssResult)result).XyzCorrection; // XYZ.Parse(result.Adjustment.Estimated);

                if (dxyz != null)                                  //&& epoch.ReceiverTime.SecondsOfDay % 30 == 0
                {
                    ENU enu = null;
                    if (this.Option.IsUpdateEstimatePostition)
                    {
                        dxyz = estXyz - appXyz;

                        enu = CoordTransformer.XyzToEnu(estXyz, appXyz);
                    }
                    else
                    {
                        enu = CoordTransformer.LocaXyzToEnu(dxyz, appXyz);
                    }

                    table.AddItem(Gnsser.ParamNames.De, enu.E);
                    table.AddItem(Gnsser.ParamNames.Dn, enu.N);
                    table.AddItem(Gnsser.ParamNames.Du, enu.U);

                    if (this.Option.IsUpdateEstimatePostition || this.Option.PositionType == PositionType.动态定位)
                    {
                        table.AddItem("EstX", estXyz.X);
                        table.AddItem("EstY", estXyz.Y);
                        table.AddItem("EstZ", estXyz.Z);
                    }
                }
            }

            #region 添加钟结果改正
            if (result is ClockEstimationResult)
            {
                var           mEpochInfo = epoch as MultiSiteEpochInfo;
                List <string> paranames  = result.ResultMatrix.ParamNames;
                int           CountOfSat = epoch.EnabledSatCount * 2;
                foreach (var item in epoch.EnabledPrns)
                {
                    double qq = result.ResultMatrix.Corrected.CorrectedValue[paranames.IndexOf(item + "_" + ParamNames.SatClkErrDistance)];
                    table.AddItem(item.ToString(), qq);
                    int    count = 0;
                    double time  = 0;
                    Time   EmissionSatClockTime = new Time();// Time.Default;
                    //Time EmissionSatClockTime1 = Time.Default;
                    foreach (var item2 in mEpochInfo)
                    {
                        foreach (var item3 in item2)
                        {
                            if (item3.Prn == item)
                            {
                                count++;
                                time += item3.Ephemeris.ClockBias - ((Ephemeris)item3.Ephemeris).RelativeCorrection;
                                //EmissionSatClockTime.TickTime.SecondTicks += item3.EmissionTime.TickTime.SecondTicks;

                                EmissionSatClockTime.TickTime += item3.EmissionTime.TickTime;
                                break;
                            }
                        }
                    }
                    double aa    = qq / 0.3 + time * 1e9 / count;
                    double time1 = (EmissionSatClockTime.TickTime.SecondTicks + EmissionSatClockTime.TickTime.Fraction) / count;
                    EmissionSatClockTime.TickTime = SecondTime.FromSecond(time1);
                    table.AddItem(item + "EmissionSatClockTime", EmissionSatClockTime.ToString());
                    table.AddItem(item + "_Corrected", aa);
                }
            }
            #endregion

            //table.AddItem((IVector)result.Adjustment.Estimated);
            foreach (var name in result.ParamNames)
            {
                //if (item.Length == 6 && item.Substring(3, 3) == "_λN")
                //{
                //    table.AddItem(item.Substring(0, 3), result.Adjustment.Estimated[item]);
                //}
                //else
                {
                    table.AddItem(name, result.ResultMatrix.Estimated[name]);
                }
            }
            if (epoch.UnstablePrns.Count > 0 || epoch.RemovedPrns.Count > 0)
            {
                StringBuilder sb = new StringBuilder();
                if (epoch.UnstablePrns.Count > 0)
                {
                    sb.Append(String.Format(new EnumerableFormatProvider(), "{0}", epoch.UnstablePrns));
                }

                if (epoch.RemovedPrns.Count > 0)
                {
                    sb.Append(";" + String.Format(new EnumerableFormatProvider(), "{0}", epoch.RemovedPrns));
                }

                table.AddItem("CsOrRemoved", sb.ToString());
            }

            table.AddItem(ParamNames.ResultType, result.ResultMatrix.ResultType);
            table.AddItem(ParamNames.StdDev, result.ResultMatrix.StdDev);

            table.EndRow();
        }