示例#1
0
        // 由原始观测值对象,获取未平差的导线对象
        private void SetTraverseLineByKnowedObsData(KnowedObsData theKnowedObsData)
        {
            mTraverseLine       = new TraverseLine();
            mTraverseLine.Lines = new List <MyLine>();

            mTraverseLine.KnowedObsData = theKnowedObsData;           // 原始观测数据
            mTraverseLine.NetType       = theKnowedObsData.NetType;   // 导线类型
            mTraverseLine.AngleType     = theKnowedObsData.AngleType; // 测角类型
        }
示例#2
0
        // 平差计算,显示计算过程信息
        public void Calc(frmProcess viewForm)
        {
            KnowedObsData theKnowedObsData = GetKnowedObsDataFromWin(viewForm); // 从数据输入控件中获得原始观测数据

            SetTraverseLineByKnowedObsData(theKnowedObsData);                   // 初始化导线

            bool isOk = Adjust();                                               // 导线平差

            viewForm.txtResult.Text   = mDspStr;                                // 显示平差过程成果
            viewForm.gbResult.Enabled = true;
            viewForm.gbOutput.Enabled = isOk;
            if (isOk)
            {
                mDataOutPut = new DataOutPut(mTraverseLine);      // 实例化输出对象
            }
        }
示例#3
0
 // 从文件中获取原始数据对象
 public void ShowInputDataFromFile(frmProcess viewForm, string fileName, ref string validateInfo)
 {
     if (fileName.ToUpper().Contains(".TXT"))
     {
         mKnowedObsData = DataInput.InputDataFromTXTFile(fileName, ref validateInfo);
     }
     if (fileName.ToUpper().Contains(".XLS"))
     {
         mKnowedObsData = DataInput.InputDataFromXLSFile(fileName, ref validateInfo);
     }
     if (mKnowedObsData == null)
     {
         return;              // 读数据出错
     }
     ShowInputData(viewForm); // 显示数据
 }
示例#4
0
        /// <summary>
        ///     ''' 从Text文件中获取原始数据对象
        ///     ''' </summary>
        ///     ''' <param name="fileName ">数据文件路径字符串</param>
        ///     ''' <param name="validateInfo ">数值检查结果字符串</param>
        ///     ''' <remarks></remarks>
        public static KnowedObsData InputDataFromTXTFile(string fileName, ref string validateInfo)
        {
            KnowedObsData theKnowedObsData = new KnowedObsData();
            string        dataStr          = "";

            try
            {
                dataStr = File.ReadAllText(fileName, Encoding.Default).Trim(); // 一次读取全部数据字符串
                // 以回车换行符作为分隔符分割数据文件成行
                string[] splitStr  = new string[] { "\r\n" };
                string[] dataLines = dataStr.Split(splitStr, StringSplitOptions.RemoveEmptyEntries);
                int      pos       = 0; // 有效数据开始行数
                for (int i = 0; i <= dataLines.Length - 1; i++)
                {
                    if (dataLines[i].Contains("[数据]"))
                    {
                        pos = i + 1;
                        break;
                    }
                }
                // 处理有效数据
                theKnowedObsData.NetType = Convert.ToInt32(dataLines[pos]); // 导线类型
                // 获取点名
                string[] strInfo = dataLines[pos + 2].Split(',');
                theKnowedObsData.Pnames = new List <string>();
                theKnowedObsData.Pnames.Add(strInfo[0].Trim());
                theKnowedObsData.Pnames.Add(strInfo[1].Trim());
                if (theKnowedObsData.NetType == 1)
                {
                    for (int i = 2; i <= strInfo.Length - 3; i++)
                    {
                        theKnowedObsData.Pnames.Add(strInfo[i + 2].Trim());
                    }
                    theKnowedObsData.Pnames.Add(strInfo[2].Trim());
                    theKnowedObsData.Pnames.Add(strInfo[3].Trim());
                }
                else
                {
                    for (int i = 2; i <= strInfo.Length - 1; i++)
                    {
                        theKnowedObsData.Pnames.Add(strInfo[i].Trim());
                    }
                    theKnowedObsData.Pnames.Add(strInfo[1].Trim());
                    theKnowedObsData.Pnames.Add(strInfo[0].Trim());
                }

                // 获取已知点坐标
                theKnowedObsData.X0 = new List <double>();
                theKnowedObsData.Y0 = new List <double>();
                strInfo             = dataLines[pos + 3].Split(',');
                theKnowedObsData.X0.Add(Convert.ToDouble(strInfo[0]));
                theKnowedObsData.Y0.Add(Convert.ToDouble(strInfo[1]));
                theKnowedObsData.X0.Add(Convert.ToDouble(strInfo[2]));
                theKnowedObsData.Y0.Add(Convert.ToDouble(strInfo[3]));
                if (theKnowedObsData.NetType == 1)
                {
                    theKnowedObsData.X0.Add(Convert.ToDouble(strInfo[4]));
                    theKnowedObsData.Y0.Add(Convert.ToDouble(strInfo[5]));
                    theKnowedObsData.X0.Add(Convert.ToDouble(strInfo[6]));
                    theKnowedObsData.Y0.Add(Convert.ToDouble(strInfo[7]));
                }
                else
                {
                    theKnowedObsData.X0.Add(Convert.ToDouble(strInfo[1]));
                    theKnowedObsData.Y0.Add(Convert.ToDouble(strInfo[1]));
                    theKnowedObsData.X0.Add(Convert.ToDouble(strInfo[0]));
                    theKnowedObsData.Y0.Add(Convert.ToDouble(strInfo[0]));
                }
                // 获取测角类型
                theKnowedObsData.AngleType = Convert.ToInt32(dataLines[pos + 4]);
                // 获取观测角数据
                theKnowedObsData.bb = new List <double>();
                strInfo             = dataLines[pos + 5].Split(',');
                for (int i = 0; i <= strInfo.Length - 1; i++)
                {
                    theKnowedObsData.bb.Add(Convert.ToDouble(strInfo[i]));
                }
                // 获取观测边数据
                theKnowedObsData.SS = new List <double>();
                strInfo             = dataLines[pos + 6].Split(',');
                for (int i = 0; i <= strInfo.Length - 1; i++)
                {
                    theKnowedObsData.SS.Add(Convert.ToDouble(strInfo[i]));
                }
            }
            catch (Exception ex)
            {
                validateInfo     = ex.Message;
                theKnowedObsData = null /* TODO Change to default(_) if this is not a reference type */;
            }
            return(theKnowedObsData);
        }
示例#5
0
        /// <summary>
        ///     ''' 从XLS文件中获取原始数据对象
        ///     ''' </summary>
        ///     ''' <param name="fileName ">数据文件路径字符串</param>
        ///     ''' <param name="validateInfo ">数值检查结果字符串</param>
        ///     ''' <remarks></remarks>
        public static KnowedObsData InputDataFromXLSFile(string fileName, ref string validateInfo)
        {
            KnowedObsData theKnowedObsData = new KnowedObsData();

            Excel.Application xlsApp = new Excel.Application(); // Excel程序对象
            Excel.Workbook    Wb     = null;                    // Exce 工作簿对象
            Excel.Worksheet   WSheet;                           // Exce工作表对象

            xlsApp.Visible       = false;                       // Excel程序对象界面不可见
            xlsApp.DisplayAlerts = false;                       // 不显示系统提示
            try
            {
                Wb     = xlsApp.Workbooks.Open(fileName); // 打开Excel文件
                WSheet = Wb.Sheets[1];                    // 指定工作表

                // 获得数据表格中有效数据行数
                int    n       = 1;
                string tempstr = "";
                while (tempstr != null)
                {
                    tempstr = Convert.ToString(WSheet.Cells[n, 1].Value);
                    n      += 1;
                }

                // 获取导线类型
                if (WSheet.Cells[1, 2].Value == "附和导线")
                {
                    theKnowedObsData.NetType = 1;
                    n = n - 12; // 总点数
                }
                else
                {
                    theKnowedObsData.NetType = 2;
                    n = n - 10; // 总点数
                }
                theKnowedObsData.Pnames = new List <string>();
                theKnowedObsData.X0     = new List <double>();
                theKnowedObsData.Y0     = new List <double>();
                theKnowedObsData.bb     = new List <double>();
                theKnowedObsData.SS     = new List <double>();
                // 获取数值
                if (theKnowedObsData.NetType == 1)
                {
                    // 赋值点名
                    theKnowedObsData.Pnames.Add(WSheet.Cells[4, 1].Value);
                    theKnowedObsData.Pnames.Add(WSheet.Cells[4, 1].Value);
                    for (int i = 2; i <= n - 3; i++)
                    {
                        theKnowedObsData.Pnames.Add(Convert.ToString(WSheet.Cells[11 + i, 1].Value));
                    }
                    theKnowedObsData.Pnames.Add(Convert.ToString(WSheet.Cells[6, 1].Value));
                    theKnowedObsData.Pnames.Add(Convert.ToString(WSheet.Cells[7, 1].Value));
                    // 赋值已知点坐标
                    theKnowedObsData.X0.Add(Convert.ToDouble(WSheet.Cells[4, 2].Value));
                    theKnowedObsData.Y0.Add(Convert.ToDouble(WSheet.Cells[4, 3].Value));
                    theKnowedObsData.X0.Add(Convert.ToDouble(WSheet.Cells[5, 2].Value));
                    theKnowedObsData.Y0.Add(Convert.ToDouble(WSheet.Cells[5, 3].Value));
                    theKnowedObsData.X0.Add(Convert.ToDouble(WSheet.Cells[6, 2].Value));
                    theKnowedObsData.Y0.Add(Convert.ToDouble(WSheet.Cells[6, 3].Value));
                    theKnowedObsData.X0.Add(Convert.ToDouble(WSheet.Cells[7, 2].Value));
                    theKnowedObsData.Y0.Add(Convert.ToDouble(WSheet.Cells[7, 3].Value));
                    // 获取夹角类型
                    if (WSheet.Cells[8, 2].Value == "左角")
                    {
                        theKnowedObsData.AngleType = 1;
                    }
                    else
                    {
                        theKnowedObsData.AngleType = 2;
                    }
                    // 赋值观测夹角
                    for (int i = 0; i <= n - 3; i++)
                    {
                        theKnowedObsData.bb.Add(Convert.ToDouble(WSheet.Cells[12 + i, 2].Value));
                    }
                    // 赋值观测边长
                    for (int i = 0; i <= n - 4; i++)
                    {
                        theKnowedObsData.SS.Add(Convert.ToDouble(WSheet.Cells[13 + i, 3].Value));
                    }
                }
                else
                {
                    // 赋值点名
                    theKnowedObsData.Pnames.Add(Convert.ToString(WSheet.Cells[4, 1].Value));
                    theKnowedObsData.Pnames.Add(Convert.ToString(WSheet.Cells[4, 1].Value));
                    for (int i = 2; i <= n - 3; i++)
                    {
                        theKnowedObsData.Pnames.Add(Convert.ToString(WSheet.Cells[9 + i, 1].Value));
                    }//endfor

                    theKnowedObsData.Pnames.Add(theKnowedObsData.Pnames[1]);
                    theKnowedObsData.Pnames.Add(theKnowedObsData.Pnames[0]);

                    // 赋值已知点坐标
                    theKnowedObsData.X0.Add(Convert.ToDouble(WSheet.Cells[4, 2].Value));
                    theKnowedObsData.Y0.Add(Convert.ToDouble(WSheet.Cells[4, 3].Value));
                    theKnowedObsData.X0.Add(Convert.ToDouble(WSheet.Cells[5, 2].Value));
                    theKnowedObsData.Y0.Add(Convert.ToDouble(WSheet.Cells[5, 3].Value));
                    theKnowedObsData.X0.Add(theKnowedObsData.X0[1]);
                    theKnowedObsData.Y0.Add(theKnowedObsData.Y0[1]);
                    theKnowedObsData.X0.Add(theKnowedObsData.X0[0]);
                    theKnowedObsData.Y0.Add(theKnowedObsData.Y0[0]);

                    // 获取夹角类型
                    if (WSheet.Cells[6, 2].Value == "左角")
                    {
                        theKnowedObsData.AngleType = 1;
                    }
                    else
                    {
                        theKnowedObsData.AngleType = 2;
                    }
                    // 赋值观测夹角
                    for (int i = 0; i <= n - 3; i++)
                    {
                        theKnowedObsData.bb.Add(Convert.ToDouble(WSheet.Cells[10 + i, 2].Value));
                    }
                    // 赋值观测边长
                    for (int i = 0; i <= n - 4; i++)
                    {
                        theKnowedObsData.SS.Add(Convert.ToDouble(WSheet.Cells[11 + i, 3].Value));
                    }
                }//endelse
            }
            catch (Exception ex)
            {
                validateInfo     = ex.Message;
                theKnowedObsData = null;
            }
            finally
            {
                Wb.Close();
                xlsApp.Quit();
                Wb     = null;
                xlsApp = null;
            }

            return(theKnowedObsData);
        }
示例#6
0
        // 从窗体界面获取已知信息
        public void GetKnowedInfoFromWin(frmProcess viewForm)
        {
            mKnowedObsData = new KnowedObsData();
            if (viewForm.chkIsConnecting.Checked)
            {
                mKnowedObsData.NetType = 1;
            }
            else
            {
                mKnowedObsData.NetType = 2;
            }
            mKnowedObsData.X0 = new List <double>();
            mKnowedObsData.Y0 = new List <double>();
            mKnowedObsData.X0.Add(Convert.ToDouble(viewForm.txtX1.Text.Trim()));
            mKnowedObsData.Y0.Add(Convert.ToDouble(viewForm.txtY1.Text.Trim()));
            mKnowedObsData.X0.Add(Convert.ToDouble(viewForm.txtX2.Text.Trim()));
            mKnowedObsData.Y0.Add(Convert.ToDouble(viewForm.txtY2.Text.Trim()));

            if (mKnowedObsData.NetType == 1)
            {
                mKnowedObsData.X0.Add(Convert.ToDouble(viewForm.txtX3.Text.Trim()));
                mKnowedObsData.Y0.Add(Convert.ToDouble(viewForm.txtY3.Text.Trim()));
                mKnowedObsData.X0.Add(Convert.ToDouble(viewForm.txtX4.Text.Trim()));
                mKnowedObsData.Y0.Add(Convert.ToDouble(viewForm.txtY4.Text.Trim()));
            }
            else
            {
                mKnowedObsData.X0.Add(Convert.ToDouble(viewForm.txtX2.Text.Trim()));
                mKnowedObsData.Y0.Add(Convert.ToDouble(viewForm.txtY2.Text.Trim()));
                mKnowedObsData.X0.Add(Convert.ToDouble(viewForm.txtX1.Text.Trim()));
                mKnowedObsData.Y0.Add(Convert.ToDouble(viewForm.txtY1.Text.Trim()));
            }

            if (viewForm.chkLeftAngle.Checked)
            {
                mKnowedObsData.AngleType = 1;
            }
            else
            {
                mKnowedObsData.AngleType = 2;
            }
            int un = Convert.ToInt32(viewForm.txtUnknowPtNum.Text.Trim()); // 未知点数

            mKnowedObsData.Pnames = new List <string>();
            mKnowedObsData.Pnames.Add(viewForm.txtP1Name.Text.Trim());
            mKnowedObsData.Pnames.Add(viewForm.txtP2Name.Text.Trim());
            for (int i = 0; i <= un - 1; i++)
            {
                mKnowedObsData.Pnames.Add("P" + i + 1);
            }
            if (mKnowedObsData.NetType == 1)
            {
                mKnowedObsData.Pnames.Add(viewForm.txtP3Name.Text.Trim());
                mKnowedObsData.Pnames.Add(viewForm.txtP4Name.Text.Trim());
            }
            else
            {
                mKnowedObsData.Pnames.Add(viewForm.txtP2Name.Text.Trim());
                mKnowedObsData.Pnames.Add(viewForm.txtP1Name.Text.Trim());
            }
        }