版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选文档高斯投影坐标正反算编程报告1. 编程思想进行高斯投影坐标正反算的编程需要牵涉到大量的公式,为了使程序条理更清楚,各块的数据复用性更强,这里实行了结构化的编程思想。程序由四大块组成。GeodesyHomework.cpp文件用于存放main()函数,是整个程序的入口。通过结构化的编程尽力使main()函数变得简洁。MyFunction.h和MyFunction.cpp用于存放计算过程中进行角度弧度换算时所要用到的一些自定的转换函数。Zhengsuan.h和Zhengsuan.cpp用于存放Zhengsuan类,在Zhengsuan类中声明白高斯投影坐标正算所要用到的全部变量,在类的构造函
2、数中进行成员变量的初始化及正算计算。通过get函数获得相应的正算结果。Fansuan.h和Fansuan.cpp用于存放Fansuan类,类似于Zhengsuan类,Fansuan类中声明白高斯投影坐标反算所要用到的全部变量,在类的构造函数中进行成员变量的初始化及反算计算。通过get函数获得相应的反算结果。2. 计算模型 高斯投影正算公式 高斯投影反算公式 3. 程序框图开头输入B,L求定带号N,中心纬度L0,纬度差l依据有用公式计算x,y换算为国家统一坐标X,Y输出X,Y输入国家统一坐标X,Y由Y取定带号N,并换算出x,y求出中心经线L0依据有用公式计算B,lL=L0+l求出大地经度L输出B
3、,L结束正算反算4. 计算结果5. 附录:程序代码/主函数入口GeodesyHomework.cpp#include "MyFunction.h"#include "Zhengsuan.h"#include "Fansuan.h"#include <iostream>using namespace std;void fansuan();void zhengsuan();void main()zhengsuan();fansuan();printf("/n over!");void zhengsuan()
4、double myB,myL;cout<<"【正算】"<<endl;cout<<"请输入大地纬度B"<<endl;myB=angleToDegree();cout<<"请输入大地经度L"<<endl;myL=angleToDegree();Zhengsuan myZhengsuan1(myB,myL);printf("Radian B=%f L=%f n",myZhengsuan1.getrB(),myZhengsuan1.getrL();my
5、Zhengsuan1.printLocation();void fansuan()double myX,myY;cout<<"【反算】"<<endl;cout<<"请输入国家统一坐标 X Y。例如 3378627.1819 20243953.4517"<<endl;cin>>myX>>myY;Fansuan myFansuan1(myX,myY);myFansuan1.printLocation();/自定功能函数库MyFunction.h#define PI 3.1415926#i
6、nclude <iostream>using namespace std;double angleToDegree(int du,int fen,float miao);double angleToDegree();/将度分秒换算为度double degreeToRadian(double degree);double degreeToRadian();/将角度换算为弧度MyFunction.cpp#include "MyFunction.h"double angleToDegree(int du,int fen,float miao)double result
7、=0;result=miao/3600.0+fen/60.0+du;return result;double angleToDegree()int du,fen;float miao;double result;cout<<"请输入度 分 秒。例如:30 20 00"<<endl;cin>>du>>fen>>miao;result=angleToDegree(du,fen,miao);return result;double degreeToRadian(double degree)double result=0;
8、result=degree/57.295779513082321;return result;double degreeToRadian()double result,degree;degree=angleToDegree();result=degreeToRadian(degree);return result;/正算类Zhengsuan.h/ Zhengsuan.h: interface for the Zhengsuan class./#if !defined(AFX_ZHENGSUAN_H_2655EA28_E810_44A3_8F14_56421A7B4466_INCLUDED_)#
9、define AFX_ZHENGSUAN_H_2655EA28_E810_44A3_8F14_56421A7B4466_INCLUDED_#if _MSC_VER > 1000#pragma once#endif / _MSC_VER > 1000#define rouSecond 206264.806247096355#include "MyFunction.h"#include <iostream>#include <math.h>using namespace std;class Zhengsuan public:Zhengsuan
10、();Zhengsuan(double fB,double fL);double getX();double getY();double getrB();double getrL();void printLocation();virtual Zhengsuan();private:double x;double y;/大地坐标double X;double Y;/国家统一坐标double B;double rB;int Bsecond;double L;double rL;/输入的大地纬度B,大地经度L,rB,rL为对应弧度表示值,Bsecond为换算成秒数值int n;/带号ndouble
11、L0;/中心经线纬度L0double LDot;/纬度差L-L0int LDotSecond;/换算成秒的纬度差double l;double N;double a0;double a3;double a4;double a5;double a6;/七个计算参数;#endif / !defined(AFX_ZHENGSUAN_H_2655EA28_E810_44A3_8F14_56421A7B4466_INCLUDED_)Zhengsuan.cpp/ Zhengsuan.cpp: implementation of the Zhengsuan class./#include "Zhe
12、ngsuan.h"/ Construction/Destruction/Zhengsuan:Zhengsuan()Zhengsuan:Zhengsuan(double fB,double fL)B=fB;rB=degreeToRadian(fB);L=fL;rL=degreeToRadian(fL);Bsecond=B*3600;/初始化大地经度L,大地纬度B,Bsecond,按弧度的大地纬度rBn=(int)(L/6+1);/初始化带号nL0=6*n-3;/中心经线经度,角度单位LDot=L-L0;/经度差LDotSecond=LDot*3600;l=(LDot)*3600/rou
13、Second;/计算参数lN=6399698.902-(21562.267-(108.973-0.612*cos(rB)*cos(rB)*cos(rB)*cos(rB)*cos(rB)*cos(rB);/计算参数Na0=32140.404-(135.3302-(0.7092-0.004*cos(rB)*cos(rB)*cos(rB)*cos(rB)*cos(rB)*cos(rB);/计算参数a0a4=(0.25+0.00252*cos(rB)*cos(rB)*cos(rB)*cos(rB)-0.04166;/计算参数a4a6=(0.166*cos(rB)*cos(rB)-0.084)*cos(
14、rB)*cos(rB);/计算参数a6a3=(0.3333333+0.001123*cos(rB)*cos(rB)*cos(rB)*cos(rB)-0.1666667;/计算参数a3a5=0.0083-(0.1667-(0.1968+0.004*cos(rB)*cos(rB)*cos(rB)*cos(rB)*cos(rB)*cos(rB);/计算参数a5x=6367558.4969*Bsecond/rouSecond-(a0-(0.5+(a4+a6*l*l)*l*l)*l*l*N)*sin(rB)*cos(rB);/正算xy=(1+(a3+a5*l*l)*l*l)*l*N*cos(rB);/正
15、算yX=x;Y=n*1000000+y+500000;/国家统一坐标Zhengsuan:Zhengsuan()double Zhengsuan:getX()return X;double Zhengsuan:getY()return Y;void Zhengsuan:printLocation()printf("正算得国家统一坐标为: X= %8.8f Y=%8.8f n",X,Y);double Zhengsuan:getrB()return rB;double Zhengsuan:getrL()return rL;/反算类Fansuan.h/ Fansuan.h: in
16、terface for the Fansuan class./#if !defined(AFX_FANSUAN_H_5B5E4668_EE81_463F_8D65_FFE2AEACE745_INCLUDED_)#define AFX_FANSUAN_H_5B5E4668_EE81_463F_8D65_FFE2AEACE745_INCLUDED_#if _MSC_VER > 1000#pragma once#endif / _MSC_VER > 1000#define rouSecond 206264.806247096355#include <math.h>#inclu
17、de "MyFunction.h"#include <iostream>using namespace std;class Fansuan public:Fansuan();Fansuan(double X,double Y);double getB();double getL();void printLocation();virtual Fansuan();private:double x;double y;/高斯投影坐标double X;double Y;int N;/国家统一坐标,N为带号double B,Bsecond;double L;/最终反算得到B
18、、Ldouble L0;/中心经线经度double l,lsecond;/L=L0+l,L0=6*N-3double Bf,BfSecond,BfDegree;double beta,betaSecond,betaDegree;double Z;double Nf;double b2;double b3;double b4;double b5;/计算的8个参数;#endif / !defined(AFX_FANSUAN_H_5B5E4668_EE81_463F_8D65_FFE2AEACE745_INCLUDED_)Fansuan.cpp/ Fansuan.cpp: implementatio
19、n of the Fansuan class./#include "Fansuan.h"/ Construction/Destruction/Fansuan:Fansuan()Fansuan:Fansuan(double X,double Y)this->X=X;this->Y=Y;/初始化x,yN=(int)(Y/1000000);/取出带号L0=6*N-3;/初始化该带号的中心经线经度x=X;y=Y-1000000*N-500000;beta=x/6367558.4969;/初始化beta,弧度单位betaSecond=beta*rouSecond;/初始化beta,秒单位betaDegree=betaSecond/3600;/初始化beta,整度数单位Bf=beta+(50221746+(293622+(2350+22*cos(beta)*cos(beta)*cos(beta)*cos(beta)*cos(beta)*cos(beta)*(1e-10)*sin(beta)*cos(beta);/初始化Bf,弧度单位BfSecond=Bf*rouSecond;/初始化Bf,秒单位BfDegree=BfSecond/3600;/初始化Bf,整度数单位Nf=6399698.902-(21562
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026.07护理查房急性心衰合并呼衰
- 初中八年级历史上册“革命先行者”孙中山专题探究教学设计
- 八年级地理上册第一章《从世界看中国》大单元教学设计
- Unit3FamilymattersUnderstandingideasLikeFatherLikeSon课件-高一英语外研版
- 北师大版三年级数学上册“小熊购物”教学设计
- 第三单元第9课《好戏进校园》教学课件-苏少版初中美术七年级下册
- 初中八年级道德与法治(上册)遵守规则知识清单
- Unit6Learningbydoing单元复习课件沪教版八年级英语下册
- 初中八年级道德与法治大单元导学案:从社交礼仪到公共生活伦理
- 初中八年级历史导学案:甲午中日战争与民族觉醒的悲歌
- 2026年加油站安全生产月应急演练方案
- 2026上半年山东文旅集团有限公司招聘48人笔试历年参考题库附带答案详解
- 2026四川泸州翰飞航天科技发展有限责任公司招聘17人笔试备考题库及答案详解
- 脱髓鞘性视神经炎靶向生物制剂治疗专家共识2026
- 志愿者剧院工作制度
- 2026年中考语文一轮复习:对联 专项练习题汇编(含答案解析)
- 2026年春季学期校长在开学安全工作专题会议上的部署讲话稿
- 2026河北中考:历史重点知识点总结
- 检测工具培训课件
- 门诊投诉处理课件
- 新员工入职须知完整版
评论
0/150
提交评论