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); }
/// <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); }