/// <summary> /// 获取 /// </summary> /// <param name="path"></param> /// <returns></returns> public static List <NamedXyzAndTime> GetCoordsAndTime(string path) { string extension = Path.GetExtension(path).ToLower(); switch (extension) { case ".xls": return(NamedXyzAndTime.ReadNamedXyz(path)); default: break; } return(new List <NamedXyzAndTime>()); }
private void Read() { string pathA = this.textBox_PathA.Text; if (!File.Exists(pathA)) { FormUtil.ShowFileNotExistBox(pathA); return; } string pathB = this.textBox_PathB.Text; List <NamedXyzAndTime> coordsA = NamedXyzParser.GetCoordsAndTime(pathA); this.bindingSourceA.DataSource = coordsA; List <NamedXyzAndTime> coordsResult = new List <NamedXyzAndTime>(); List <NamedXyzEnuAndTime> namedXyzEnusAndTime = new List <NamedXyzEnuAndTime>(); TableTextManager = new ObjectTableManager(); TableTextManager.OutputDirectory = Path.GetDirectoryName(pathA); // "D:\\Temp\\errorSSR\\"; var paramTable = TableTextManager.GetOrCreate("CoordinationErrorOfTimeSeries" + Time.UtcNow.DateTime.ToString("yyyy-MM-dd_HH_mm_ss")); //.ToString("yyyy-MM-dd_HH_mm_ss")); foreach (var item in coordsA) { string dayOfWeek = item.dayOfWeek; string pathB0 = Path.GetFileNameWithoutExtension(pathB); string dayOfWeekfileName = null; if (pathB0.Substring(0, 3).ToLower() == "gfz" || pathB0.Substring(0, 3).ToLower() == "cod") { dayOfWeekfileName = pathB0.Substring(3, 5); } else { dayOfWeekfileName = pathB0.Substring(6, 5); } string path = pathB.Replace(dayOfWeekfileName, dayOfWeek); if (!File.Exists(path)) { //FormUtil.ShowFileNotExistBox(path); continue; } List <NamedXyz> coordsB = NamedXyzParser.GetCoords(path); var staXyz = coordsB.Find(m => String.Equals(m.Name, item.Name, StringComparison.CurrentCultureIgnoreCase)); if (staXyz != null) { NamedXyzAndTime NamedXyzAndTime = new NamedXyzAndTime(); NamedXyzAndTime.Name = item.Name; NamedXyzAndTime.dayOfWeek = item.dayOfWeek; NamedXyzAndTime.Value = item.Value - staXyz.Value; var enu = NamedXyzEnuAndTime.Get(item.Name, dayOfWeek, NamedXyzAndTime.Value, new XYZ(staXyz.X, staXyz.Y, staXyz.Z)); namedXyzEnusAndTime.Add(enu); paramTable.NewRow(); paramTable.AddItem("Day", item.dayOfWeek); paramTable.AddItem("Name", item.Name); paramTable.AddItem("dX", enu.X); paramTable.AddItem("dY", enu.Y); paramTable.AddItem("dZ", enu.Z); paramTable.AddItem("dE", enu.E); paramTable.AddItem("dN", enu.N); paramTable.AddItem("dU", enu.U); paramTable.AddItem("length", Math.Sqrt(enu.X * enu.X + enu.Y * enu.Y + enu.Z * enu.Z)); paramTable.EndRow(); } } TableTextManager.WriteAllToFileAndCloseStream(); if (coordsResult == null) { return; } this.bindingSourceC.DataSource = namedXyzEnusAndTime; //更进一步,计算偏差RMS var table2 = Geo.Utils.DataGridViewUtil.GetDataTable(this.dataGridView1); ObjectTableStorage table = new ObjectTableStorage(table2); var vector = table.GetAveragesWithStdDev(); StringBuilder sb = new StringBuilder(); sb.AppendLine("参数\t 平均数\t 均方差"); foreach (var item in vector) { sb.AppendLine(item.Key + "\t" + item.Value[0] + "\t" + item.Value[1]); } var info = sb.ToString(); MessageBox.Show(info); log.Info(info); ObjectTableStorage summeryTable = new ObjectTableStorage(); summeryTable.NewRow(); summeryTable.AddItem("Name", "Ave"); foreach (var item in vector) { summeryTable.AddItem(item.Key, item.Value[0]); } summeryTable.NewRow(); summeryTable.AddItem("Name", "Rms"); foreach (var item in vector) { summeryTable.AddItem(item.Key, item.Value[1]); } summeryTable.EndRow(); Geo.Utils.FileUtil.OpenDirectory(TableTextManager.OutputDirectory); this.dataGridView_summery.DataSource = summeryTable.GetDataTable("结果汇总"); }