예제 #1
0
        public static FileReferBlock Read(StreamReader reader)
        {
            FileReferBlock fileRefferblock = new FileReferBlock();

            fileRefferblock.Comments = new List <string>();
            string line = null;

            while ((line = reader.ReadLine()) != null)
            {
                if (line.StartsWith(CharDefinition.COMMENT))
                {
                    fileRefferblock.Comments.Add(line.Trim());
                    continue;//注释
                }
                if (line.StartsWith(CharDefinition.TITLE_END))
                {
                    break;
                }
                line = line.Trim();
                if (line.Length <= 19)
                {
                    continue;
                }
                if (line.StartsWith(FileReferBlockLabel.DESCRIPTION))
                {
                    fileRefferblock.Description = line.Substring(19).Trim();
                }
                if (line.StartsWith(FileReferBlockLabel.OUTPUT))
                {
                    fileRefferblock.Output = line.Substring(19).Trim();
                }
                if (line.StartsWith(FileReferBlockLabel.CONTACT))
                {
                    fileRefferblock.Contack = line.Substring(19).Trim();
                }
                if (line.StartsWith(FileReferBlockLabel.SOFTWARE))
                {
                    fileRefferblock.Software = line.Substring(19).Trim();
                }
                if (line.StartsWith(FileReferBlockLabel.HARDWARE))
                {
                    fileRefferblock.Hardware = line.Substring(19).Trim();
                }
                if (line.StartsWith(FileReferBlockLabel.INPUT))
                {
                    fileRefferblock.Input = line.Substring(19).Trim();
                }
            }
            return(fileRefferblock);
        }
예제 #2
0
        /// <summary>
        ///  读取解析 Sinex 文件。
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="skipMatrix"></param>
        /// <returns></returns>
        public static SinexFile Read(Stream stream, string name = "SinexName", bool skipMatrix = false)
        {
            SinexFile file = new SinexFile();

            file.Name = name;
            using (StreamReader reader = new StreamReader(stream))
            {
                string line = "";
                //第一行
                line        = reader.ReadLine();
                file.Header = SinexFileHeader.Read(line);

                //第二行后
                while ((line = reader.ReadLine()) != null)
                {
                    if (line.StartsWith(CharDefinition.COMMENT))
                    {
                        continue;                                    //注释
                    }
                    if (line.StartsWith(CharDefinition.TITLE_START)) //+
                    {
                        string title = line.Substring(1).Trim();
                        switch (title)
                        {
                        case BlockTitle.FILE_REFERENCE: file.FileReferBlock = FileReferBlock.Read(reader); break;

                        case BlockTitle.FILE_COMMENT: file.FileCommentBlock = BlockLineFactory.Read <FileComment>(reader, title); break;

                        case BlockTitle.INPUT_HISTORY: file.InputHistoryBlock = BlockLineFactory.Read <InputHistory>(reader, title); break;

                        case BlockTitle.INPUT_FILES: file.InputFilesBlock = BlockLineFactory.Read <InputFile>(reader, title); break;

                        case BlockTitle.INPUT_ACKNOWLEDGEMENTS: file.FileAcknowledgementBlock = BlockLineFactory.Read <FileAcknowledgement>(reader, title); break;

                        case BlockTitle.SATELLITE_ID: file.SatelliteIdBlock = BlockLineFactory.Read <SatelliteId>(reader, title); break;

                        case BlockTitle.SATELLITE_PHASE_CENTER: file.SatellitePhaseCenterBlock = BlockLineFactory.Read <SatellitePhaseCenter>(reader, title); break;

                        case BlockTitle.SITE_ID: file.SiteIdBlock = BlockLineFactory.Read <SiteId>(reader, title); break;

                        case BlockTitle.SITE_RECEIVER: file.SiteReceiverBlock = BlockLineFactory.Read <SiteReceiver>(reader, title); break;

                        case BlockTitle.SITE_ANTENNA: file.SiteAntennaBlock = BlockLineFactory.Read <SiteAntenna>(reader, title); break;

                        case BlockTitle.SITE_GPS_PHASE_CENTER: file.SiteGpsPhaseCenterBlock = BlockLineFactory.Read <SiteGpsPhaseCenter>(reader, title); break;

                        case BlockTitle.SITE_ECCENTRICITY: file.SiteEccentricityBlock = BlockLineFactory.Read <SiteEccentricity>(reader, title); break;

                        case BlockTitle.SOLUTION_STATISTICS: file.SolutionStattisticsBlock = BlockLineFactory.Read <SolutionStatistic>(reader, title); break;

                        case BlockTitle.SOLUTION_EPOCHS: file.SolutionEpochBlock = BlockLineFactory.Read <SolutionEpoch>(reader, title); break;

                        case BlockTitle.SOLUTION_ESTIMATE: file.SolutionEstimateBlock = BlockLineFactory.Read <SolutionValue>(reader, title); break;

                        case BlockTitle.SOLUTION_APRIORI: file.SolutionAprioriBlock = BlockLineFactory.Read <SolutionValue>(reader, title); break;

                        case BlockTitle.SOLUTION_MATRIX_ESTIMATE_U_COVA:
                        case BlockTitle.SOLUTION_MATRIX_ESTIMATE_L_COVA: if (!skipMatrix)
                            {
                                file.SolutionMatrixEstimateCova = (SolutionMatrixBlock)BlockLineFactory.Read <SolutionMatrixBlock, MatrixLine>(reader, title);
                            }
                            break;

                        case BlockTitle.SOLUTION_MATRIX_APRIORI_U_COVA:
                        case BlockTitle.SOLUTION_MATRIX_APRIORI_L_COVA: if (!skipMatrix)
                            {
                                file.SolutionMatrixAprioriCova = (SolutionMatrixBlock)BlockLineFactory.Read <SolutionMatrixBlock, MatrixLine>(reader, title);
                            }
                            break;

                        case BlockTitle.SOLUTION_NORMAL_EQUATION_VECTOR: if (!skipMatrix)
                            {
                                file.SolutionNormalEquationVectorBlock = BlockLineFactory.Read <SolutionNomalEquationVector>(reader, title);
                            }
                            break;

                        case BlockTitle.SOLUTION_NORMAL_EQUATION_MATRIX_U:
                        case BlockTitle.SOLUTION_NORMAL_EQUATION_MATRIX_L: if (!skipMatrix)
                            {
                                file.SolutionNormalEquationMatrix = (SolutionMatrixBlock)BlockLineFactory.Read <SolutionMatrixBlock, MatrixLine>(reader, title);
                            }
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
            return(file);
        }