C#编写三维自主导线高级计算器

一、软件说明
这是一款可以用来进行闭合或者附和导线计算、三角高程计算以及高差平赋以及绘制导线缩略图的多功能软件。该软件可以自主选择二等、三等等级标准以及闭合或者附和导线模式,通过TXT文件导入已经观测好的数据结果,自动计算相应各点的坐标增量以及坐标值,并计算出闭合差以及K值等关键值,求算出各点坐标后,根据其值再进行改正求值计算,最后,根据已经计算出的坐标值,在相应界面上画出导线图。

二.程序架构
1、主窗体:
①导线计算界面:
该界面为程序的主界面,在该界面中,您可以选择导线计算等级以及导线模式,导入相关数据,手动输入已知的起始坐标值以及起始方位角,程序则自动计算出各点坐标值并相应误差值,此外,在该界面中还可以实现对最终结果的评定。该界面使用的主要控件有:menustrip控件、tabcontrol控件、dataGridview控件、button控件、text控件、radio button控件、group box控件、label控件、picture box控件
在这里插入图片描述

②高差计算界面:
该界面为三角高程计算界面,根据已导入的数据,求算出各点相应的高差值,并求出观测误差。该界面使用的主要控件有:dataGridview控件、button控件、text控件、radio button控件、label控件。
在这里插入图片描述

③导线绘制界面
该界面根据主界面计算出的各点的坐标值在picture box中绘制出基本的点位位置图。该界面使用的主要控件有:button控件、picture box控件。

2、设计思想:
设计的多功能导线计算检核绘图仪根据目前测绘工作人员在进行内业计算遇到的的种种问题,实现了高程,坐标值,点位图的电脑自动求算数据,并对数据实现检验改正,节省了测绘工人的工作量,同时提高了结果的正确性与精准性。同时该多功能软件实现了对观测结果的评定功能,测量人员可以根据评定结果选择是否重新测量或者其他措施。

三.关键技术
1.角度类
本程序中,先定义了一个庞大的角度类的算法,然后在该算法中,我组规定了标准角,即其相应的角度值、分度值、秒度值皆为正值或者皆为负值,在此基础上,设计了读取文件数据,将字符串转化为角度,并自动判断该角度是否为标准化角度,如果不是则自动转化为标准角度,并设计了根据已知角度求算其余值的求值函数和重载函数。具体即为角度标准化算法,角度弧度转换算法,运算符重载算法,to string函数重载算法,字符串转换成为角度算法,最后将此角度作为动态链接库引用到主程序中。

(1)角度标准化算法
(该算法的设计解决了观测结果中出现负角的情况,有效地实现角度的标准化)
在这里插入图片描述
在这里插入图片描述
2.点类
在本程序中,我们还设计了一个点类,在该类中不仅继承了角度类,还添加了新的函数,而该类作为本程序的核心,主要实现的目标是存储观测出的水平角、仪器高、前视垂直角、本测站前视棱镜高、本测站后视棱镜高、本测站到前视站距离(斜距离)、本测站到后视站距离(斜距离),此外,设计求解两点间距离的算法、根据已知两点高程求高差算法、三角高程求高差的算法、求坐标增量算法
、方位角的计算的算法,在最后一个算法中又包括.由坐标反算 p1到p2的方位角算法、导线左角、导线右角的算法。最后,将该点类作为动态链接库引用到主程序中。在以下算法中,主要展示本组核心算法:即方位角计算算法、坐标计算算法、三角高程计算算法。
(1)求两点间距离算法
在这里插入图片描述
(2)三角高程求高差的算法
在这里插入图片描述
(3)方位角的计算的算法
1.由坐标反算 p1到p2的方位角
在这里插入图片描述
2.导线左角
在这里插入图片描述

3.主窗体程序
在窗体程序设计中,本组设计了庞大的运行算法,主要运用list控件对程序进行操作,在改程序中,主要包含的基本变量为角度改正数、改正后水平观测角、方位角、x的改正数、y的改正数、x的增量、y的增量、平距、往测高差、反测高差、高差、改正数等。
(1)本程序中,通过运用类似于C语言中全局变量的列表List来对数据进行动态存储,下图为列表。
在这里插入图片描述
(2)本程序的文件读写功能较为别致,它设计了两种读文件的方式,其一是通过读文件的方式,另一种是读表格的方式,再经过对导线点的个数判断实现文件读取功能。在该算法中,我们手动输入观测点数,则自动生成表格,读取数据核心代码如下:
Point b11 = new Point();
degree a11 = new degree();
b11.Name = (string)this.dataGridView1.Rows[j12].Cells[0].Value;
b11.H_angle = a11.par((string)this.dataGridView1.Rows[j12].Cells[1].Value);
leadlist.Add(b11);
s.Add(Convert.ToDouble(this.dataGridView1.Rows[j12].Cells[4].Value));
(3)导线计算表格自助生成、三角高程计算表格自助生成算法:在该算法中,程序实现了时时、动态地根据导线点的个数生产表格的功能)
在这里插入图片描述
(4)导线的计算算法
在该算法中,我们主要进行了导线符合点坐标的计算、闭合导线的计算、角度闭合差的计算、方位角的计算、改正后的观测角的计算、差量平赋分配、坐标的计算、三角高程的计算、各段高差的计算并赋值。

(5)导线计算最终成果的评定,在该算法中,我们实现了根据事先选择好的计算等级对程序得出的结果的评定功能,标识错误的核心算法如下:

(6) 绘图算法
在该算法中,程序实现了导线的绘图功能,在绘图过程中,其核心算法是根据先求算好的坐标值,即世界坐标系下的坐标值,转换为NDC(规格化坐标系)、再转换为DC(设备坐标系),进而在Picture box 中绘制图像。其核心算法具体如下:

在这里插入图片描述
在这里插入图片描述

四.功能演示
1.首先我们用记事本随机写好一组数据
在这里插入图片描述
2.手动输入导线的定向点坐标以及起算点坐标,并输入第一条边与定向边的夹角,点击计算按钮自动计算出相应待求量,
在这里插入图片描述

3.接下来,再点击成果评定按钮,可以该组数据的角度闭合差、坐标闭合差、相对误差等值。

在这里插入图片描述
4.再选择三角高程计算模式,手动输入起算点坐标与附和点坐标,点击左下方的计算按钮,则计算出相应的值。
在这里插入图片描述
5.点击三角高程模式中的成果评定按钮,则程序中,显示蓝色与红色交互的地方则提示改组数据有错误,并在下方的Picture box 中提示给使用者。
在这里插入图片描述

若上图所示中,我们将第一组数据的棱镜高更改为6m,则程序计算出结果后,指出错误所在位置处,并在下方的Picture box 中给出以下提示。
在这里插入图片描述
6.切换到导线路线图绘制模式,点击绘图按钮,在自动生成相应的点的路线,并在点的所在位置处标注出它的横坐标值、纵坐标值以及角度。

在这里插入图片描述

ps:第一次发文,求轻喷.

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值