Esempio n. 1
0
        /// <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>());
        }
Esempio n. 2
0
        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("结果汇总");
        }