/// <summary> /// 数据源读取 /// </summary> private static void ReadFiles(GnsserConfig config) { //加载文件数据 observationDataSource = new RinexFileObsDataSource(config.ObsPath); SiteInfo = observationDataSource.SiteInfo; //是否读取星历文件,如果设置了,且存在则读取只 if (File.Exists(config.NavPath)) { ephemerisDataSource = EphemerisDataSourceFactory.Create(config.NavPath); } //是否有精密星历 if (File.Exists(config.ClkPath)) { clockFile = new ClockService(config.ClkPath); } }
/// <summary> /// 命令行参数是以空格符分开的。 /// </summary> /// <param name="args"></param> static void Main(string[] args) { try { //首先欢迎 ShowInfo(" GNSSer——GNSS数据处理软件 "); ShowInfo("------------- Version 0.1, Email:[email protected] --------------------"); ProcessCount = 0; startTime = DateTime.Now; string configPath = "gnsser.conf"; if (args.Length > 0) { ShowInfo("请在配置文件“" + configPath + "”中修改后运行本程序。此版本不需要命令行参数。"); return; } IStreamGnssService pp = null; //读取配置文件 ConfigReader configReader = new ConfigReader(configPath); GnsserConfig = new Gnsser.GnsserConfig(configReader.Read()); ShowInfo("配置文件:" + configPath); ShowInfo("观测文件:" + GnsserConfig.ObsPath); if (File.Exists(GnsserConfig.NavPath)) { ShowInfo("导航文件:" + GnsserConfig.NavPath); } if (File.Exists(GnsserConfig.ClkPath)) { ShowInfo("钟差文件:" + GnsserConfig.ClkPath); } //读取观测数据 ReadFiles(GnsserConfig); ProcessCount = 0; ShowInfo("请稍后,GNSSer 正在努力计算中....."); GnssProcessOption option = GnssProcessOption.GetDefault(GnsserConfig, observationDataSource.ObsInfo); //pp = new AdaptablePointPosition(observationDataSource, option, ephemerisDataSource, clockFile); pp.Produced += pp_Produced; var results = pp.Gets(StartEphoch, MaxProcessCount); ShowInfo(""); TimeSpan span = DateTime.Now - startTime; ShowInfo("计算完毕, 呵呵 :-D,耗时(秒):" + span.TotalSeconds); if (results.Count > 0) { var last = results[results.Count - 1] as SingleSiteGnssResult; //ShowInfo("以下为最后历元结果:"); //ShowInfo(last.GetTabTitles()); //ShowInfo(last.GetTabValues()); ShowInfo("最后历元:" + last.ReceiverTime.ToString()); ShowInfo("估值坐标: " + last.EstimatedXyz); string projectName = new ProjectNameBuilder(SiteInfo.SiteName, results[0].ReceiverTime).Build(); string ProjectOutputDirectory = Path.Combine(GnsserConfig.OutputDirectory, projectName); if (GnsserConfig.IsOutputResult) { ShowInfo("请稍后!正在写入计算结果。。。"); GnssResultWriter writer = new GnssResultWriter(option, GnsserConfig.IsOutputAdjust); writer.Write(results); } if (GnsserConfig.IsOutputResult) { ShowInfo("详细计算结果在:" + ProjectOutputDirectory); } } else { ShowInfo("程序执行完毕,%>_<% 但是没有计算结果!"); } } catch (Exception ex) { ShowInfo(ex.Message); } //暂停屏幕 System.Console.ReadLine(); }
public void Init(GnsserConfig GnsserConfig, IEphemerisService ephemerisDataSource, Data.ISimpleClockService clockFile) { this.GnsserConfig = GnsserConfig; this.EphemerisDataSource = ephemerisDataSource; this.ClockFile = clockFile; }