当前位置: 代码迷 >> 综合 >> Trimble Data Conversion编程相关补充
  详细解决方案

Trimble Data Conversion编程相关补充

热度:76   发布时间:2024-02-08 21:22:59.0

Trimble Data Conversion编程相关补充

本文是对天宝数字水准仪数据转换小程序程序编写的一个补充。

界面设计

程序主界面
本程序的主要功能:

  1. 打开;
  2. 生成观测手簿;
  3. 输出平差易格式;

根据程序的三个主要功能,大致需要如下控件:

  1. 文件打开:OpenFileDialog;
  2. 文件保存:SaveFileDialog;
  3. 菜单栏:MenuStrip;
    其中菜单栏可执行观测手簿生成和输出平差易格式等功能。用户可根据自己的需求,选择一级菜单或者二级三级等。
    菜单栏

用户也可以根据自己的喜好增加或者修改相应的控件。控件基本都可以在工具箱中找到。


工具箱

找到需要的控件后,将其摆放在窗体合适的位置上,并对其进行重命名。

代码编写

  1. 定义数组;
string[,] ShuJu = new string[1000, 15];

先定义一个数组,将原始数据中的元素储存在其中。
2. 打开文件;
首先对读取的格式进行筛筛选。由于原始数据是.dat格式 ,可将输入格式进行限制,忽略其他格式文本。

OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "(天宝电子水准仪数据格式)*.dat|*.dat|(文本文件)*.txt|*.txt";
if (dlg.ShowDialog() == DialogResult.OK)
{StreamReader srd;srd = File.OpenText(dlg.FileName); srd.Close();
}
  1. 前后尺判读;
    根据水准等级不同,尺读数方式也不同,在转换过程中需要区别出来。
 if (flag % 4 == 1 || flag % 4 == 2)switch (line.Substring(49, 2)){case "Rb":ShuJu[cz, 0] = (line.Substring(20, 9)).TrimStart();ShuJu[cz, 2] = (line.Substring(59, 7)).TrimStart();ShuJu[cz, 3] = (line.Substring(82, 7)).TrimStart();break;case "Rf":ShuJu[cz, 1] = (line.Substring(20, 9)).TrimStart();ShuJu[cz, 4] = (line.Substring(59, 7)).TrimStart();ShuJu[cz, 5] = (line.Substring(82, 7)).TrimStart();break;}
  1. 输出表格
    观测手簿以EXCLE表格的形式展现,要使输出表格,须在程序最前排加入如下代码:
    using ExcelApplication = Microsoft.Office.Interop.Excel.ApplicationClass;
    输入相关的语句可对表格内容进行填充。
xlapp.get_Range("A1", "A1").ColumnWidth = 7; //列宽设置
xlapp.get_Range(xlapp.Cells[1, 1], xlapp.Cells[3 * cz + 7, 10]).HorizontalAlignment = XlHAlign.xlHAlignCenter;//设置单元格格式
xlapp.get_Range("C4", "D4").Merge(Missing.Value);//合并单元格
xlapp.get_Range("A1", "J1").Merge(Missing.Value);//表头设置
xlapp.Cells[1, 1] = "电子水准测量记录手簿";
xlapp.get_Range("A1", "J1").Font.Bold = true;
xlapp.get_Range("A1", "J1").Font.Size = 16;
xlapp.get_Range("A1", "J1").Font.Name = "黑体";
xlapp.get_Range("A1", "J1").HorizontalAlignment = XlHAlign.xlHAlignCenter;
xlapp.Cells[3 * i + 8, 3] = ShuJu[i, 3];//后视距离1
  1. 文件导出;
StreamWriter myStream;
saveFileDialog1.Filter = "文本文件txt |*.txt";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{myStream = new StreamWriter(saveFileDialog1.FileName);myStream.Write(m_show);//写入myStream.Close();//关闭流
}
  1. 测量相关。
    在程序编写过程中要结合相关水准知识。高差Δh为两次尺面读数差值之差;终点高程H2=H1+ΣΔh等。

经过上述过程,小程序已初见雏形,后期可对其进行优化升级,使其更具竞争力。

  相关解决方案