有关高斯投影换带数值公式报告_第1页
有关高斯投影换带数值公式报告_第2页
有关高斯投影换带数值公式报告_第3页
有关高斯投影换带数值公式报告_第4页
有关高斯投影换带数值公式报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

辽宁工程技术大学大地测量根底综合训练二教学单位测绘与地理科学学院专业测绘工程名称80椭球高斯投影坐标换带班级测绘14-1学号1404070101、1404070115、14070123学生姓名蔡文豪、林珞珂、熊楚君指导教师王佩贤目录原理………………11.1高斯投影及坐标正反算……………11.2高斯投影正算公式…………………21.3高斯投影反算公式…………………32、目的意义…………42.1换带的理由…………42.2编程的理由…………43、流程图……………54、语言简介…………64.1语言特点……………64.2工作原理……………75、有关程序…………65.1程序界面……………65.2程序源码……………65.3程序使用说明………………………65.4程序检验数据………………………75.5程序评价……………6原理高斯投影及坐标正反算参考椭球面的高斯投影是指将地表的观测元素先投影到参考椭球面上(称为高斯归化),再投影到高斯平面上(称为高斯投影改化),这样就可以在高斯平面直角坐标系中进行测量平差计算。在控制测量学中,由控制点的大地经纬度(L,B)计算其高斯平面坐标(X,Y),称为高斯投影正算;由高斯平面坐标(X,Y)计算其大地经纬度(L,B,称为高斯投影反算;由一个投影带的高斯平面坐标(x1,y1)计算其在另一个投影带的高斯平面坐标(x2,x2)称为高斯投影换带计算。为了控制测量而选择地图投影时,应根据测量的任务和目的来进行。为此,对地图投影提出了以下要求:(1)应当采用等角投影〔又称正形投影〕,可以保证在有限的范围内使地图上图形同椭球上原形保持相似,这给识图用图将带来很大便利。(2)要求长度和面积变形不大,并能够应用简单公式计算由于这些变形而带来的改正数。从理论上说,不管投影变形有多大,都是可以计算出来的。(3)将大的区域按一定规律分成假设干小区域〔或带〕。每个带单独投影,并组本钱身的角坐标系,然后,再将这些带用简单的数学方法连接在一起,从而组成统一的系统。2、高斯投影正算公式:当把1975年国际椭球参数代入正算公式,整理可得相似的正算公式:其中高斯投影反算公式将1975年国际椭球元素值代入,经整理可得高斯投影坐标反算公式:其中意义目的1、换带的理由〔1〕高斯投影虽然保证了角度投影前后没有变形,但是其长度变形仍然存在,并且距离中央子午线越远,长度变形越大。为了限制高斯投影的长度变形,将椭球面按一定经度的子午线划分成不同的投影带,把投影范围限制在中央子午线东西两侧一定的狭长地带内分别进行投影。〔2〕由于中央子午线经度不同,使得椭球面上统一的大地坐标系,分割成各带独立的平面坐标系。为了得到统一的坐标系,必须进行换带计算。2、编程的理由使用C++语言编写程序,简化计算过程,节省时间,提高工作效率,降低错误出现率。流程图语言简介C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。语言特点〔1〕支持数据封装和数据隐藏在C++中,类是支持数据封装的工具,对象那么是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。在面向对象的程序设计中,将数据和对该数据进行合法操作的函数封装在一起作为一个类的定义。对象被说明为具有一个给定类的变量。每个给定类的对象包含这个类所规定的假设干私有成员、公有成员及保护成员。完好定义的类一旦建立,就可看成完全封装的实体,可以作为一个整体单元使用。类的实际内部工作隐藏起来,使用完好定义的类的用户不需要知道类是如何工作的,只要知道如何使用它即可。〔2〕支持继承和重用在C++现有类的根底上可以声明新类型,这就是继承和重用的思想。通过继承和重用可以更有效地组织程序结构,明确类间关系,并且充分利用已有的类来完成更复杂、深入的开发。新定义的类为子类,成为派生类。它可以从父类那里继承所有非私有的属性和方法,作为自己的成员。〔3〕支持多态性采用多态性为每个类指定表现行为。多态性形成由父类和它们的子类组成的一个树型结构。在这个树中的每个子类可以接收一个或多个具有相同名字的消息。当一个消息被这个树中一个类的一个对象接收时,这个对象动态地决定给予子类对象的消息的某种用法。多态性的这一特性允许使用高级抽象。继承性和多态性的组合,可以轻易地生成一系列虽然类似但独一无二的对象。由于继承性,这些对象共享许多相似的特征。由于多态性,一个对象可有独特的表现方式,而另一个对象有另一种表现方式。工作原理C++语言的程序因为要表达高性能,所以都是编译型的。但其开发环境,为了方便测试,将调试环境做成解释型的。即开发过程中,以解释型的逐条语句执行方式来进行调试,以编译型的脱离开发环境而启动运行的方式来生成程序最终的执行代码。生成程序是指将源码〔C++语句〕转换成一个可以运行的应用程序的过程。如果程序的编写是正确的,那么通常只需按一个功能键,即可搞定这个过程。该过程实际上分成两个步骤。第一步是对程序进行编译,这需要用到编译器〔compiler〕。编译器将C++语句转换成机器码(也称为目标码);如果这个步骤成功,下一步就是对程序进行链接,这需要用到链接器〔linker〕。链接器将编译获得机器码与C++库中的代码进行合并。C++库包含了执行某些常见任务的函数〔“函数”是子程序的另一种称呼〕。例如,一个C++库中包含标准的平方根函数sqrt,所以不必亲自计算平方根。C++库中还包含一些子程序,它们把数据发送到显示器,并知道如何读写硬盘上的数据文件。五、有关程序1、程序界面图一程序源代码voidCGassDlg::OnButton1jisuan(){CFileDialogm(true);CStdioFilefp;UpdateData(true); doublex[666]={0},y[666]={0}; if(m.DoModal()==IDOK) { CStringfm=m.GetPathName(); CStringtemp; fp.Open(fm,CStdioFile::modeRead); CStringfn,n; fp.ReadString(n);sscanf(n,"%d",&zds); for(inti=0;i<zds;i++) {fp.ReadString(fn); tt+=fn+"\r\n"; sscanf(fn,"%lf%lf",&x[i],&y[i]); jss(x[i],y[i]); x6[i]=m_XINX; y6[i]=m_XINY; } fp.Close; }intN=10;charstra[666];charstrb[666]; CStringstrc; CStringstrd; CStringstr;for(inti=0;i<zds;i++){gcvt(x6[i],N,stra); gcvt(y6[i],N,strb); strc=stra; strd=strb;str=str+strc+""; str=str+strd+"\r\n";}dd=str;UpdateData(false); }doubleCGassDlg::jss(doublem_X,doublem_Y){ doubleBf,beta,Z,Nf,b2,b3,b4,b5,l,B,L,Bf2,beta2; beta=m_X*P/6367558.4969; beta2=cos(beta/P)*cos(beta/P); Bf=beta+(50228976+(293697+(2383+22*beta2)*beta2)*beta2)*sin(beta/P)*cos(beta/P)*P*0.0000000001; Bf2=cos(Bf/P)*cos(Bf/P); Nf=6399596.652-(21565.047-(109.003-0.612*Bf2)*Bf2)*Bf2; Z=m_Y/(Nf*cos(Bf/P)); b2=(0.5+0.00336975*Bf2)*sin(Bf/P)*cos(Bf/P); b3=0.333333-(0.166667-0.001123*Bf2)*Bf2; b4=0.25+(0.161612+0.005617*Bf2)*Bf2; b5=0.2-(0.1667-0.00878*Bf2)*Bf2;/ B=Bf-(1-(b4-0.147*Z*Z)*Z*Z)*Z*Z*b2*P;l=(1-(b3-b5*Z*Z)*Z*Z)*Z*P; L=m_LO*3600+l; m_B0=(int)(B/3600); m_B1=(int)((B-m_B0*3600)/60); m_B2=B-(m_B0*3600+m_B1*60); m_L0=(int)(L/3600); m_L1=(int)((L-m_L0*3600)/60); m_L2=L-(m_L0*3600+m_L1*60); doubleB1,L1,l1,N,BB,a0,a3,a4,a5,a6; L1=L/P; B1=B/P; BB=cos(B1)*cos(B1);l1=(L-m_XINL0*3600)/P; N=6399596.652-(21565.047-(109.003-0.612*BB)*BB)*BB; a0=32144.5189-(135.3646-(0.7034-0.0040*BB)*BB)*BB; a3=(0.3333333+0.001123*BB)*BB-0.1666667; a4=(0.25+0.00253*BB)*BB-0.04166; a5=0.0083-(0.1667-(0.1968+0.0040*BB)*BB)*BB; a6=(0.167*BB-0.083)*BB; m_XINX=6367452.1328*B1-(a0-(0.5+(a4+a6*l1*l1)*l1*l1)*l1*l1*N)*sin(B1)*cos(B1); m_XINY=(1+(a3+a5*l1*l1)*l1*l1)*l1*N*cos(B1); return0;}程序说明书〔1〕双击gass.exe翻开软件;〔2〕输入要换带的两条中央子午线经度,点击坐标计算读取坐标数据,格式为点个数XY〔3〕点击写出,将换带结果写入文档;4、关于程序本程序可批处理计算西安80坐标换带,参考椭球为1975国际椭球。程序编写人员蔡文豪,调试检核人员林珞珂,熊楚君。5、程序验证数据6123.123456.456789.789

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论