大地测量学基础编程作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《大地测量学基础》编程作业报告
姓名:周于涛学号:2014301610157
一、作业内容
1.大地主题解算(正反算)
2.高斯投影计算(正反算)
二、作业要求
1.大地主题解算
(1)完成大地主题解算正反算;
(2)采用克拉索夫斯基椭球参数;
(3)高斯平均引数(或白塞尔)方法解算;
(4)最好有程序框图,界面和表格输出结果;
2.高斯投影计算
(1)完成高斯投影正反算;
(2)采用克拉索夫斯基椭球参数;
(3)按3°带和6°带投影;
三、编程思路
1.由于最后的结果要求有界面,我选择了C#语言完成本次编程作业;
2.我将这两个作业写在同一个工程文件中,使用同一个界面展现;
3.程序主要由3个部分组成,分别是:控件设计文件(Form1.Designer.cs)、控件响应文件(Form1.cs)、完成计算过程的类文件(Calcu.cs);
4.基本思路为:从控件中获取预定格式的已知值,根据计算类型创建相应的类,传入初始值,使用类中的方法进行计算,最后返回计算结果,再根据结果类型以给定的格式输出显示。
5.计算使用的类:考虑到四种计算中都会涉及到:度分秒格式与十进制浮点格式角度值互相转换、弧度制与角度制相互转换、使用常数ρ’’、克拉索夫斯基椭球基本参数等操作,我先定义了Calcu这个基类,添加以上功能和常数,以便其他子类使用。
6.对于大地主题正反算,我分别定义两个类A_Calcu、B_Calcu,继承基类Calcu。我采用白塞尔法进行大地主题正反算,参考教材上的计算步骤和计算公式。
7.对于高斯投影正反算,我再次分别定义两个类GA_Calcu、GB_Calcu,,继承基类Calcu。采用教材上适用于电算的高斯投影计算步骤和公式。考虑到程序的完善性,在确定中央子午线经度的时候,我采用了自动识别和手动添加两种方式,这样不仅可以完成按3°带和6°带投影,还可以实现按任意带投影,只需手动输入投影中央子午线经度即可。
四、程序框图
图1 大地主题正算(左)、反算(右)程序框图
图2 高斯投影正算(左)、反算(右)程序框图
六、程序运行结果
1.大地主题正反算
运行结果:
图3 大地主题正算结果
图4 大地主题反算结果
2.高斯投影正反算
起算数据:
B = 51°38' 43.9023'' L=111°2' 13.1360''
运行结果:
图5 高斯投影正算结果(6°带)
图6 高斯投影正算结果(3°带)
图7 高斯投影反算结果(6°带)
图8 高斯投影反算结果(3°带)
经检查,所有结果均满足限差要求。
2016年5月28日