您好,欢迎访问三七文档
高斯投影换带计算专业:测绘工程班级:测绘2班高斯投影换带计算1.设计内容1.1设计意义1.2基础理论1.3数据流程图1.4详细设计2.功能实现2.1关键技术和难点2.2程序使用说明书3.总结1.设计内容1.1设计意义在实际测量工作中,我们常常遇到坐标不统一的情况,为了计算简便,把不同形式的坐标转换成我们所需的坐标,为我们的工程服务,经常需要进行高斯投影正算、反算、坐标换带和子午线收敛角的计算工作。为此,我们编写了这一程序设计,希望能使以后的转换工作更加简便。本软件主要应用相关的转换公式,采用C#编程可随时随地实现任何参考椭球体下高斯坐标转换与大地坐标之间的正反算和换带计算,达到高斯平面坐标转换的目的。本文所编程序的特点是,操作简单.输出简捷、结果完整,不需要另加辅助内容。高斯投影虽然保证了角度投影前后没有变形,但其长度变形仍然存在,并且距离中央子午线愈远,长度变形愈大。为了限制高斯投影的长度变形,将椭球面按一定经度的子午线划分成不同的投影带,把投影范围限制在中央子午线东西两侧一定的狭长地带内分别进行投影。由于中央子午线的经度不同,使得椭球面上统一的大地坐标系,分割成为各带独立的平面坐标系。为了得到统一的坐标系,必须进行换带计算。1.2基础理论利用高斯正反算间接换带平面坐标大地坐标平面坐标把椭球面上的大地坐标作为过渡坐标:这种方法,理论上最简明严密,精度最高,通用性最强。不仅适用于3°-3°带以及6°-3°带互相之间的邻带坐标换算,且适用于任意带之间的坐标换算。虽计算量稍大,但由于计算机的普及和本法的通用性及计算的高精度,它自然便成为坐标邻带换算中最基本的方法。反算正算计算和数据模型正算是指:由大地坐标(L,B)求得高斯平面坐标(x,y)的过程。反算是指:由高斯平面坐标(x,y)求得大地坐标(L,B)的过程。正算:高斯投影必须满足的三个条件:(1),中央子午线投影后为直线。(2),中央子午线投影后长度不变。(3),投影具有正性性质,即正性投影条件。由第一个条件可知,中央子午线东西两侧的投影必然对称于中央子午线。设在托球面上有P1,P2,且对称于中央子午线。其大地坐标为(l,B),(-l,B)则投影后的平面坐标一定为P1·(x,y),P2·(x,-y).由第二个条件可知,位于中央子午线上的点,投影后的纵坐标x应该等于投影前从赤道量至该点的子午弧长。反算:在高斯投影坐标反算时,原面是高斯平面,投影面是椭球面,则有如下的投影方程:则其的三个条件:(1)x坐标轴投影成中央子午线,是投影的对称轴;(2)x轴上的长度投影保持不变;(3)正性投影条件。高斯反算公式(克氏椭球)2224222350(1(0.147))[1()],fBBbZZZblbbZZZLLlfffffffffffBBbBBbBBbBBBbBNyN22522422322cos)cos00878.016667.0(2.0cos)cos005617.0161612.0(25.0cos)cos001123.01666667.0(333333.0cossin)cos00336975.05.0(cos高斯反算公式(IAG椭球)高斯正算公式:(克氏椭球)高斯正算公式:(IAG椭球)BlNllaayBBNlllaaaBxcos))(1(sincos)))(5.0((1328.63674522253222640BBaBBaBBaBBaBBBaBBBN2252232262242220222cos)cos20382.01702.0(00878.01666667.0cos)cos001123.03333333.0(cos)083.0cos167.0(04167.0cos)cos00253.025.0(cos]cos)cos0041.07034.0(3646.135[5189.32144cos]cos)cos603.0996.108(045.21565[652.63995961.3数据流程图1.4详细设计主要研究内容是利用C#软件把高斯换带计算从手算到实现电算的一个过程。主要分为四个界面(1)欢迎界面主要结构过程名功能与作用进入功能label3_Click欢迎界面进入主页面(2)主程序界面主要结构过程名功能与作用读入函数publicvoidReadData()读入数据反算函数publicvoidFS()高斯反算正算函数publicvoidZS()高斯正算弧度转角度函数redian_a(doublealfa)弧度转角度角度转弧度函数angle_r(doublealfa)角度转弧度输出函数publicvoidWriteData()输出数据计算button1_Click进行换带计算重置button2_Click_1恢复原状态(2)主程序界面主要结构过程名功能与作用改变属性radioButton3_CheckedChanged点击3-3换带时改变textbox的属性改变属性radioButton4_CheckedChanged点击3-3换带时改变textbox的属性改变属性radioButton5_CheckedChanged点击3-3换带时改变textbox的属性带号与中央子午线转换带号与中央子午线转换ToolStripMenuItem_Click进入带号与中央子午线转换窗体弧度角度转换弧度角度转换ToolStripMenuItem_Click进入弧度角度转换窗体关闭Form1_FormClosing关闭整个程序主要结构过程名功能与作用求中央子午线button1_Click由带号求中央子午线求带号button2_Click中央子午线由求带号关闭Form3_FormClosing关闭该窗体(3)带号与中央子午线转换界面(4)弧度角度转换界面主要结构过程名功能与作用角转弧button1_Click角度转弧度弧转角button2_Click弧度转角度关闭Form3_FormClosing关闭该窗体2.功能实现2.1关键技术和难点///summary///反算函数////summarypublicvoidFS(){///克氏椭球反算if(radioButton1.Checked==true){β=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-(21562.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.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)*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(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.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+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(L);}}///summary///正算函数////summarypublicvoidZS(){///克氏椭球if(radioButton1.Checked==true){///summary///3-3正算函数////summaryif(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;}}///summary///3-6正算函数////summaryelseif(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;}}///summary///任意正算函数////summaryelseif(radioButton5.Checked==true){l1=L-L02;}N=6399698.902-(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);a
本文标题:C#高斯换带
链接地址:https://www.777doc.com/doc-4673994 .html