コード例 #1
0
        private void Solver_ResultProduced(SimpleGnssResult entity, ObsFileProcessStreamer <MultiSiteEpochInfo, SimpleGnssResult> streamer)
        {
            if (entity == null)
            {
                return;
            }


            if (entity is SingleSiteGnssResult)
            {
                SingleSiteGnssResult result = entity as SingleSiteGnssResult;
                this.Coords.Add(new NamedRmsXyz(entity.Name, new RmsedXYZ(result.EstimatedXyz, result.EstimatedXyzRms)));
            }

            if (entity is IEstimatedBaseline)
            {
                var result = entity as IEstimatedBaseline;
                this.Coords.Add(new NamedRmsXyz(entity.Name, new RmsedXYZ(result.EstimatedXyzOfRov, XYZ.Parse(entity.ResultMatrix.Estimated.GetRmsVector()))));
            }
            if (this.Coords.Count == 0)
            {
                foreach (var item in streamer.Current)
                {
                    Coords.Add(new NamedRmsXyz(item.SiteName, new RmsedXYZ(item.SiteInfo.ApproxXyz, XYZ.Zero)));
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// 批量写入文件,写入批量和最后一个结果。
        /// </summary>
        /// <param name="results">计算结果</param>
        public void Write(List <SingleSiteGnssResult> results)
        {
            if (results == null || results.Count == 0)
            {
                return;
            }
            SingleSiteGnssResult last = results[results.Count - 1];

            Write(results, last);
        }
コード例 #3
0
        /// <summary>
        /// 计算完毕一个测站
        /// </summary>
        /// <param name="Solver"></param>
        void OneSolver_Processed(SingleSiteGnssSolveStreamer Solver)
        {
            var entity = Solver.CurrentGnssResult;
            SingleSiteGnssResult result = entity as SingleSiteGnssResult;

            this.OutputFinalResult(result);
            this.AppendFinalResultOnUI(result);

            //只截获和显示这一个,文件输出将自动处理
            if (Solver == GnssSolver)
            {
                this.SetResultsToUITable(this.GnssSolver.TableTextManager);
            }
        }
コード例 #4
0
        private void Solver_ResultProduced(SimpleGnssResult entity, ObsFileProcessStreamer <EpochInformation, SimpleGnssResult> streamer)
        {
            if (entity == null)
            {
                return;
            }

            if (entity is SingleSiteGnssResult)
            {
                SingleSiteGnssResult result = entity as SingleSiteGnssResult;
                this.Coords.Add(new NamedRmsXyz(entity.Name, new RmsedXYZ(result.EstimatedXyz, result.EstimatedXyzRms)));
            }

            if (entity is IWithEstimatedBaseline)
            {
                var result = entity as IWithEstimatedBaseline;
                this.Coords.Add(new NamedRmsXyz(entity.Name, result.GetEstimatedBaseline().EstimatedRmsXyzOfRov));
            }
        }
コード例 #5
0
 /// <summary>
 /// 写到文件
 /// </summary>
 /// <param name="path"></param>
 /// <param name="result"></param>
 public static void WriteToSinex(string path, SingleSiteGnssResult result)
 {
     File.WriteAllText(path, ResultSinexBuillder.Build(result).ToString(), Encoding.Default);
 }
コード例 #6
0
        /// <summary>
        /// 当批量和最优结果分开时,或有参数有可能为NULL时,采用此方法。
        /// </summary>
        /// <param name="results"></param>
        /// <param name="best"></param>
        public void Write(List <SingleSiteGnssResult> results, SingleSiteGnssResult best)
        {
            WriteFinal(best);

            WriteDetails(results);
        }
コード例 #7
0
ファイル: HtmlReportBuilder.cs プロジェクト: yxw027/GNSSer
        /// <summary>
        /// 单站结果
        /// </summary>
        /// <param name="mainSb"></param>
        /// <param name="firstObject"></param>
        private void BuildGeneraInfoTableOfSingleSite(StringBuilder mainSb, SingleSiteGnssResult firstObject)
        {
            var last = Results.Last();
            var sb   = new StringBuilder();

            sb.Append(BuildTableHeaderCell("Num"));
            sb.Append(BuildTableHeaderCell("Name"));
            sb.Append(BuildTableHeaderCell("StdDev"));

            if (firstObject.EstimatedXyz != null)
            {
                sb.Append(BuildTableHeaderCell("X"));
                sb.Append(BuildTableHeaderCell("Y"));
                sb.Append(BuildTableHeaderCell("Z"));
                sb.Append(BuildTableHeaderCell("Lon"));
                sb.Append(BuildTableHeaderCell("Lat"));
                sb.Append(BuildTableHeaderCell("Height"));
                sb.Append(BuildTableHeaderCell("RmsE"));
                sb.Append(BuildTableHeaderCell("RmsN"));
                sb.Append(BuildTableHeaderCell("RmsU"));
            }

            if (last.HasParamAccuracyInfos)
            {
                foreach (var kv in firstObject.ParamAccuracyInfos.KeyValues)
                {
                    sb.Append(BuildTableHeaderCell(kv.Key));
                }
            }


            sb.Append(BuildTableHeaderCell("Epoch"));

            var row = BuildTableRow(sb.ToString());

            mainSb.Append(row);

            var format = "G5";

            if (HasResults())
            {
                int i = 1;
                foreach (var item in this.Results)
                {
                    if (item == null)
                    {
                        continue;
                    }
                    sb = new StringBuilder();
                    var result = item as SingleSiteGnssResult;
                    sb.Append(BuildTableCell(i));
                    sb.Append(BuildTableCell(result.Material.Name));
                    sb.Append(BuildTableCell(result.ResultMatrix.StdDev.ToString(format)));
                    if (result.EstimatedXyz != null)
                    {
                        sb.Append(BuildTableCell(result.EstimatedXyz.X.ToString("0.#####")));
                        sb.Append(BuildTableCell(result.EstimatedXyz.Y.ToString("0.#####")));
                        sb.Append(BuildTableCell(result.EstimatedXyz.Z.ToString("0.#####")));
                        sb.Append(BuildTableCell(new DMS(result.GeoCoord.Lon).ToReadableDms()));
                        sb.Append(BuildTableCell(new DMS(result.GeoCoord.Lat).ToReadableDms()));
                        sb.Append(BuildTableCell(result.GeoCoord.Height.ToString("0.#####")));

                        var tmsenu = CoordTransformer.LocaXyzToEnu(result.EstimatedXyzRms, result.ApproxXyz);
                        sb.Append(BuildTableCell(Math.Abs(tmsenu.E).ToString(format)));
                        sb.Append(BuildTableCell(Math.Abs(tmsenu.N).ToString(format)));
                        sb.Append(BuildTableCell(Math.Abs(tmsenu.U).ToString(format)));
                    }
                    if (last.HasParamAccuracyInfos)
                    {
                        foreach (var kv in result.ParamAccuracyInfos.KeyValues)
                        {
                            var val  = kv.Value.RmsValue.Value;
                            var isOk = result.ParamAccuracyInfos.IsOk(kv.Value);
                            var str  = (val * 1e3).ToString("0.000");
                            if (!isOk)
                            {
                                str = "<b class='red'>" + str + "</b>";
                            }
                            sb.Append(BuildTableCell(str));
                        }
                    }

                    sb.Append(BuildTableCell(result.ReceiverTime));

                    var rowContent = BuildTableRow(sb.ToString());
                    mainSb.Append(rowContent);
                    mainSb.AppendLine();
                    i++;
                }
            }
        }