C#高斯换带计算报告和代码资料.pdf
《C#高斯换带计算报告和代码资料.pdf》由会员分享,可在线阅读,更多相关《C#高斯换带计算报告和代码资料.pdf(34页珍藏版)》请在三一文库上搜索。
1、设计说明书 设计题目 : 高斯投影换带计算 姓名: 指导教师: 专业:测绘工程 2013 年 7 月 2 日 课程设计说明书 矿业工程学院 1 成绩评分表 学号姓名课程设计具体工作内容个人得分 208 程序总体设计与分析 207 C#界面开发 210 程序编程和调试 215 制作答辨 PPT 程序设计与测试 (0.7) 小组得分 界面设计友好,用户数据输入及操作自由度高, 有测试数据;20 数据结构设计合理,代码模块化,通用性强;20 设计思想清晰,代码编写采取逐层递进格式,注释可读性 高; 20 程序总体运行通过,各部分功能实现程度高,注重容错处理40 设计说明书部分 (0.3) 设计报告说
2、明书内容全面,层次清楚、完整程度高30 设计思路清析、对设计思想、完成情况等重要内容说明表达 清晰,总体分析、详细设计、界面设计各部分内容表述清楚 50 数据结构和算法合理,知识点明晰20 教 师 评 语 课程设计说明书 矿业工程学院 2 1 设计内容 1.1 设计意义 高斯投影虽然保证了角度投影前后没有变形,但其长度变形仍然存在,并且距离中 央子午线愈远,长度变形愈大。为了限制高斯投影的长度变形,将椭球面按一定经度 的子午线划分成不同的投影带,把投影范围限制在中央子午线东西两侧一定的狭长地 带内分别进行投影。 由于中央子午线的经度不同,使得椭球面上统一的大地坐标系,分割成为各带独立 的平面坐
3、标系。为了得到统一的坐标系,必须进行换带计算。 在实际测量工作中,我们常常遇到坐标不统一的情况,为了计算简便,把不同形式 的坐标转换成我们所需的坐标,为我们的工程服务,经常需要进行高斯投影正算、反 算、坐标换带和子午线收敛角的计算工作。为此,我们编写了这一程序设计,希望能 使以后的转换工作更加简便。本软件主要应用相关的转换公式,采用C# 编程可随时随 地实现任何参考椭球体下高斯坐标转换与大地坐标之间的正反算和换带计算,达到高 斯平面坐标转换的目的。本文所编程序的特点是,操作简单输出简捷、结果完整, 不需要另加辅助内容。 本设计主要是利用C# 作为前端开发工具进行应用程序开发。 1.2 基础理论
4、 正算是指:由大地坐标( L,B)求得高斯平面坐标( x,y)的过程。 反算是指:由高斯平面坐标(x,y)求得大地坐标( L,B)的过程。 正算:高斯投影必须满足的三个条件: (1),中央子午线投影后为直线。 (2),中央子午线投影后长度不变。 (3),投影具有正性性质,即正性投影条件。 由第一个条件可知,中央子午线东西两侧的投影必然对称于中央子午线。设在托球 面上有 P1 ,P2,且对称于中央子午线。其大地坐标为(l,B),(-l,B)则投影后的平面坐 标一定为 P1(x,y),P2(x,-y). 由第二个条件可知,位于中央子午线上的点,投影后的纵坐标x 应该等于投影前从 赤道量至该点的子午
5、弧长。 相应计算公式: (克氏椭球 ) 其中: 课程设计说明书 矿业工程学院 3 (IAG 椭球) 反算:在高斯投影坐标反算时,原面是高斯平面,投影面是椭球面,则有如下的投 影方程: 则其的三个条件: (1),x 坐标轴投影成中央子午线,是投影的对称轴; (2),x 轴上的长度投影保持不变; (3),正性投影条件。 相应计算公式: (克氏椭球) 其中: (克氏椭球) 222 42 22 350 (1(0.147) 1() , f BBbZZZ b lbb ZZZLLl BlNllaay BBNlllaaa B x cos)(1( sincos)(5.0(1328.6367452 22 53 2
6、22 640 BBa BBa BBa BBa BBBa BBBN 22 5 22 3 22 6 22 4 222 0 222 cos)cos20382.01702. 0(00878.0 1666667. 0cos)cos001123.03333333.0( cos)083.0cos167.0( 04167. 0cos)cos00253. 025.0( coscos)cos0041. 07034.0(3646.1355189.32144 coscos)cos603. 0996.108(045.21565652.6399596 课程设计说明书 矿业工程学院 4 1.3 数据流程图 2-1 数据流程
7、图 ff ff ff fff ff BBb BBb BBb BBBb BN y N 22 5 22 4 22 3 2 2 cos)cos00878.016667.0(2.0 cos)cos005617.0161612.0(25.0 cos)cos001123.01666667.0(333333.0 cossin)cos00336975.05.0( cos 进入系统 选择带转换和椭球系统 输入已知数据 和中央子午线 任意带 输入已知数据 3-3 3-6 带 重置 计算 课程设计说明书 矿业工程学院 5 1.4 详细设计 主要研究内容是利用c#软件把高斯换带计算从手算实现电算的一个过程。 主要分为
8、四个界面: (1)欢迎界面 主要结构过程名功能与作用 进入功能label3_Click 欢迎界面进入主页面 (2)主程序界面 主要结构 过程名功能与作用 读入函数 public void ReadData() 读入数据 反算函数 public void FS() 高斯反算 正算函数 public void ZS() 高斯正算 弧度转角度函数 redian_a(double alfa) 弧度转角度 角度转弧度函数 angle_r(double alfa) 角度转弧度 输出函数 public void WriteData() 输出数据 计算 button1_Click 进行换带计算 重置 butt
9、on2_Click_1 恢复原状态 改变属性 radioButton3_CheckedChanged 点 击3-3换 带 时 改 变 textbox 的属性 改变属性 radioButton4_CheckedChanged 点 击3-3换 带 时 改 变 textbox 的属性 改变属性 radioButton5_CheckedChanged 点 击3-3换 带 时 改 变 textbox 的属性 课程设计说明书 矿业工程学院 6 带号与中央子午线转 换 带 号 与 中 央 子 午 线 转 换 ToolStripMenuItem_Click 进入带号与中央子午线转 换 窗体 弧度角度转换 弧度
10、角度转换 ToolStripMenuItem_Click 进入弧度角度转换窗体 关闭 Form1_FormClosing 关闭整个程序 (3)带号与中央子午线转换界面 主要结构过程名功能与作用 求中央子午线button1_Click 由带号求中央子午线 求带号 button2_Click 中央子午线由求带号 关闭 Form3_FormClosing 关闭该窗体 (4)弧度角度转换界面 主要结构过程名功能与作用 角转弧button1_Click 角度转弧度 弧转角button2_Click 弧度转角度 关闭Form3_FormClosin g 关闭该窗体 2 功能实现 2.1 关键技术和难点 /
11、 / 反算函数 / public void FS() / 克氏椭球反算 if (radioButton1.Checked = true) 课程设计说明书 矿业工程学院 7 = x / 6367558.4969; Bf = + (50221746 + (293622 + (2350 + 22 * Math.Pow (Math.Cos( ) ,2) * Math.Pow (Math.Cos( ) ,2) * Math.Pow (Math.Cos( ) ,2) * Math .Pow (10,-10) * Math.Sin() * Math.Cos(); Nf = 6399698.902 - (21
12、562.267 - (108.973 - 0.612 * Math.Pow(Math.Cos(Bf), 2) * Math.Pow(Math.Cos(Bf), 2) * Math.Pow(Math.Cos(Bf), 2); Z = y / (Nf * Math.Cos(Bf); b2 = (0.5 + 0.003369 * Math.Pow(Math.Cos(Bf), 2) * Math.Sin(Bf) * Math.Cos(Bf); b3 = 0.333333 - (0.166667 - 0.001123 * Math.Pow(Math.Cos(Bf), 2) * Math.Pow(Math
13、.Cos(Bf), 2); b4 = 0.25 + (0.16161 + 0.00562 * Math.Pow(Math.Cos(Bf), 2) * Math.Pow(Math.Cos(Bf), 2); b5 = 0.2 - (0.1667 - 0.0088 * Math.Pow(Math.Cos(Bf), 2) * Math.Pow(Math.Cos(Bf), 2); B = Bf - (1 - (b4 - 0.12 * Z * Z) * Z * Z) * Z * Z * b2; B1 = redian_a(B); l = (1 - (b3 - b5 * Z * Z) * Z * Z) *
14、Z; L = L01 + l; L1 = redian_a(L); / IAG 椭球反算 else = x / 6367452.1328; Bf = + (50228976 + (293697 + (2383 + 22 * Math.Pow(Math.Cos(), 2) * Math.Pow(Math.Cos( ), 2) * Math.Pow(Math.Cos( ), 2) * Math.Pow(10, -10) * Math.Sin( ) * Math.Cos(); Nf = 6399596.652 - (21565.045 - (108.996 - 0.603 * Math.Pow(Ma
15、th.Cos(Bf), 2) * Math.Pow(Math.Cos(Bf), 2) * Math.Pow(Math.Cos(Bf), 2); Z = y / (Nf * Math.Cos(Bf); b2 = (0.5 + 0.00336975 * Math.Pow(Math.Cos(Bf), 2) * Math.Sin(Bf) * Math.Cos(Bf); b3 = 0.3333333 - (0.1666667 - 0.001123 * Math.Pow(Math.Cos(Bf), 2) * Math.Pow(Math.Cos(Bf), 2); b4 = 0.25 + (0.161612
16、+ 0.005617 * Math.Pow(Math.Cos(Bf), 2) * Math.Pow(Math.Cos(Bf), 2); b5 = 0.2 - (0.16667 - 0.00878 * Math.Pow(Math.Cos(Bf), 2) * Math.Pow(Math.Cos(Bf), 2); B = Bf - (1 - (b4 - 0.147 * Z * Z) * Z * Z) * Z * Z * b2; B1 = redian_a(B); l = (1 - (b3 - b5 * Z * Z) * Z * Z) * Z; L = (L01 + l); L1 = redian_a
17、(L); / 克氏椭球 课程设计说明书 矿业工程学院 8 if (radioButton1.Checked = true) / / 3-3 正算函数 / if (radioButton3.Checked = true) if (MessageBox.Show(“您确定向右换带吗?“, “确定向右换带 吗?“, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes) l1 = l - 3 * Math.PI / 180; else l1 = l + 3 * Math.PI / 180; / / 3-6 正算函数
18、/ else if (radioButton4.Checked = true) if (MessageBox.Show(“您确定向右换带吗?“, “确定向右换带 吗?“, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes) l1 = l - 6 * Math.PI / 180; else l1 = l + 3 * Math.PI / 180; / / 任意正算函数 / else if (radioButton5.Checked = true) l1 = L - L02; N = 6399698.902 -
19、(21562.267 - (108.973 - 0.612 * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B); a0 = 32140.404 - (135.3302 - (0.7092 - 0.004 * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B); a4 = (0.25 + 0.00252 * Math.Cos(B) * Math.Cos(B) * Math
20、.Cos(B) * Math.Cos(B) - 0.04166; 课程设计说明书 矿业工程学院 9 a6 = (0.166 * Math.Cos(B) * Math.Cos(B) - 0.084) * Math.Cos(B) * Math.Cos(B); a3 = (0.3333333 + 0.001123 * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) - 0.1666667; a5 = 0.0083 - (0.1667 - (0.1968 + 0.004 * Math.Cos(B) * Math.Cos(B) * Math.C
21、os(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B); X = 6367558.4969 * B - (a0 - (0.5 + (a4 + a6 * l1 * l1) * l1 * l1) * l1 * l1 * N) * Math.Sin(B) * Math.Cos(B); Y = (1 + (a3 + a5 * l1 * l1) * l1 * l1) * l1 * N * Math.Cos(B); / 克氏椭球 else / / 3-3 正算函数 / if (radioButton3.Checked = true) if (MessageBox.S
22、how(“您确定向右换带吗?“, “确定向右换带 吗?“, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes) l1 = l - 3 * Math.PI / 180; else l1 = l + 3 * Math.PI / 180; / / 3-6 正算函数 / else if (radioButton4.Checked = true) if (MessageBox.Show(“您确定向右换带吗?“, “确定向右换带 吗?“, MessageBoxButtons.YesNo, MessageBoxIcon.
23、Question) = DialogResult.Yes) l1 = l - 6 * Math.PI / 180; else l1 = l + 3 * Math.PI / 180; / / 任意正算函数 / else if (radioButton5.Checked = true) 课程设计说明书 矿业工程学院 10 l1 = L - L02; N = 6399596.652 - (21565.045 - (108.996 - 0.603 * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.C
24、os(B); a0 = 32144.5189 - (135.3646 - (0.7034 - 0.0041 * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B); a4 = (0.25 + 0.00253 * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) * Math.Cos(B) - 0.04167; a6 = (0.167 * Math.Cos(B) * Math.Cos(B) - 0.084) * Math.Cos(B) * Math.Cos
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 高斯换带 计算 报告 代码 资料
链接地址:https://www.31doc.com/p-5196569.html