1. 引言
在测绘程序设计大赛入门教程-2中林黛玉带领大家实现了简单的点云数据处理相关的测绘程序设计,本期将接着在同一解决方案下以空间前方交会为例,编写相应测绘程序进行简单的练习!!!
另:该比赛学习难度大,时间成本高,但慎终如始,则无败事!!!
正式阅览本文前,恳请各位读者先读一读下面这段文字,在此先行致谢
编者本人也是一个小白,刚接触测绘程序设计大赛,如若下述文章中有不足之处,敬请指正。另外在这个AI飞速发展的时代,希望读者们能够善于利用AI解决相应问题,绝大部分都能查到的,既然准备参加测绘程序设计大赛,必然是拥有思考能力的。所以,还请各位读者朋友们能够善用网络及AI助力自己学习。
2. Winforms窗口设计
(详细设置见【派大星学C#】测绘程序设计大赛入门教程-1,这里就不过多赘述,可直接跳转至2.3 整体效果(FileHelper.cs))
2.1 新建项目
VS2022 解决方案包含多个项目,每个项目对应多个独立类,每个类(.cs)实现相应功能,右击解决方案'CSDN_C#'——添加——新建项目——控制台应用(.NET Framework)——修改名称(空间前方交会)——右击(空间前方交会)——新建项目——Windows窗体应用(.NET Framework)...为了方便管理,派大星将CSDN_C#项目重命名为点云数据处理。
2.2 特殊字符
在空间前方交会中会出现特殊字符和数学字符,在VS2022中导入需撰写相应代码,对于小白派大星来说较为麻烦,建议采用系统自带的Windows 字符映射表解决上述问题。
打开任务管理器(Win + R)——输入charmap回车打开字符映射表——字体下拉找到Cambria Math——找到字母Φ——选择复制
类似的很多字符都可以通过上述方式找到。
2.3 窗口效果
上图窗口效果仍有不足,表头单元格左右分隔竖线消失,表头行高,列宽等。
2.3.1 表头和表格
| CellBorderStyle | 单元格边框样式 | Single:单细实线(默认) None:隐藏所有分隔线 Raised Sunken |
| ColumnHeadersBorderStyle | 列标题边框样式 | Custom:自定义 Single:单细实线 Raised:凸起立体边框(浮雕 3D 效果) Sunken:凹陷立体边框(下沉 3D 效果) None:隐藏所有分隔线 |
| ColumnHeadersHeightSizeMode | 调整表头高度 |
|
| ColumnHeadersDefaultCellStyle | 列标题样式 | 点击选择Font更改相应字体字号 |
更改表格中数据的位置
ColumnHeadersDefaultCellStyle——Alignment——下拉找到MiddleCenter
相应调整列宽类似于上述,具体不在赘述。
更改完上述设置,表头单元格左右分隔竖线消失并未解决,是因为Windows 系统主题接管表头的绘制样式(即Windows 系统主题权限>VS2022主题权限)
EnableHeadersVisualStyles设为false后:
彻底脱离 Windows 系统主题控制,所有样式以在 VS 属性面板手动设置为准。
2.3.2 整体效果及功能
3. 导入数据|编写计算
计算要求:空间前方交会
数据:空间前方交会数据
3.1 数据分析
第一行不用读取,sr.ReadLine();//读走无用行
接着分为string类型点名,double类型Xs坐标,double类型Ys坐标等,所以创建Datacenter.cs类来定义变量,创建Algorithm.cs类来书写计算逻辑
Datacenter:只做「数据仓库」存放项目全部全局数据,只定义变量,不写计算逻辑。
Algorithm:只做「计算工具」只写数学算法、计算逻辑,不存储永久数据。
3.2 数据读取
新建Point.cs用来管理数据(建类方法同前)。
之后可以开始调试运行(下图中蓝框位置)一下,查看是否开始读取文件中的数据。
如果出现上述图片中的报错,可在Program.cs中加入[STAThread],便可运行。
如果出现的是点云数据统计的页面,右击空间前方交会——设置为启动项,再运行即可。
在string[] str=sr.ReadLine().Trim().Split(',');处按F9插入断点-最左侧出现红色圆点(后期调试有关,先不深入介绍),按F10开始进程,选择文件导入之后,在黄光标到达图示位置,在下侧监视1中输入str,查看列表,图示右侧显示为P1数据的话即读取文件成功。
将分隔的string类型数据name、x、y提取出来,提取出来之后就要新建一个空的列表用于展示数据(新建Datacenter.cs)
double.Parse用于将string类型转为double类型
按F9插入断点-最左侧出现红色圆点,按F10开始进程,选择文件导入之后,在黄光标到达图示位置,显示读取了P1、P2点即创建列表成功。
下图在Form.cs中(Ctrl+F5)打开文件后面编码展示数据,dataGridView1[列索引, 行索引].Value = 值;
如实操和右侧Form1中一样,则数据读取成功!!!
上述代码较为繁琐,整个设计思想和【派大星学C#】测绘程序设计大赛入门教程-2中点云数据处理一样便于派大星练习理解。
3.3 计算空间辅助坐标
与之前相同,新建一个Algorithm.cs类专门用来实现计算空间辅助坐标、获取投影系数、计算地面坐标功能。
| static public double u1; static public double v1; static public double w1; | static public double u2; static public double v2; static public double w2; |
5.4 获取投影系数
| static public double Bu; static public double Bv; static public double Bw; | static public double N1; static public double N2; |
3.4计算地面坐标
| static public double X; static public double Y; static public double Z; |
3.5 Algorithm.cs
using中有变化
4. 一键计算|输出报告
4.1 一键计算
4.2 输出报告
输出时可能会出现控制台和窗口同时出现,影响观感。
右击空间前方交会——应用程序——输出类型——Windows应用程序——确定
5. 结语
上述便是空间前方交会测绘程序设计全过程,涉及到数组计算的编写,设置DataGridView控件样式,希望能好好理解!!!
感谢阅读!!!
命运反复考验只为看到一颗坚定的心!!!