Trimble Data Conversion编程相关补充
本文是对天宝数字水准仪数据转换小程序程序编写的一个补充。
界面设计
本程序的主要功能:
- 打开;
- 生成观测手簿;
- 输出平差易格式;
根据程序的三个主要功能,大致需要如下控件:
- 文件打开:OpenFileDialog;
- 文件保存:SaveFileDialog;
- 菜单栏:MenuStrip;
其中菜单栏可执行观测手簿生成和输出平差易格式等功能。用户可根据自己的需求,选择一级菜单或者二级三级等。
用户也可以根据自己的喜好增加或者修改相应的控件。控件基本都可以在工具箱中找到。
找到需要的控件后,将其摆放在窗体合适的位置上,并对其进行重命名。
代码编写
- 定义数组;
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();
}
- 前后尺判读;
根据水准等级不同,尺读数方式也不同,在转换过程中需要区别出来。
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;}
- 输出表格
观测手簿以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
- 文件导出;
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();//关闭流
}
- 测量相关。
在程序编写过程中要结合相关水准知识。高差Δh为两次尺面读数差值之差;终点高程H2=H1+ΣΔh等。
经过上述过程,小程序已初见雏形,后期可对其进行优化升级,使其更具竞争力。