高斯投影坐标正反算编程报告

上传人:小** 文档编号:32768324 上传时间:2018-02-12 格式:DOCX 页数:11 大小:64.78KB
返回 下载 相关 举报
高斯投影坐标正反算编程报告_第1页
第1页 / 共11页
高斯投影坐标正反算编程报告_第2页
第2页 / 共11页
高斯投影坐标正反算编程报告_第3页
第3页 / 共11页
高斯投影坐标正反算编程报告_第4页
第4页 / 共11页
高斯投影坐标正反算编程报告_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《高斯投影坐标正反算编程报告》由会员分享,可在线阅读,更多相关《高斯投影坐标正反算编程报告(11页珍藏版)》请在金锄头文库上搜索。

1、1高斯投影坐标正反算编程报告10021 班 张鑫 学号:20103025900401. 编程思想进行高斯投影坐标正反算的编程需要牵涉到大量的公式,为了使程序条理更清楚,各块的数据复用性更强,这里采取了结构化的编程思想。程序由四大块组成。GeodesyHomework.cpp 文件用于存放 main()函数,是整个程序的入口。通过结构化的编程尽力使 main()函数变得简单。MyFunction.h 和 MyFunction.cpp 用于存放计算过程中进行角度弧度换算时所要用到的一些自定的转换函数。Zhengsuan.h 和 Zhengsuan.cpp 用于存放 Zhengsuan 类,在 Zh

2、engsuan 类中声明了高斯投影坐标正算所要用到的所有变量,在类的构造函数中进行成员变量的初始化及正算计算。通过 get 函数获得相应的正算结果。Fansuan.h 和 Fansuan.cpp 用于存放 Fansuan 类,类似于 Zhengsuan 类,Fansuan 类中声明了高斯投影坐标反算所要用到的所有变量,在类的构造函数中进行成员变量的初始化及反算计算。通过 get 函数获得相应的反算结果。2. 计算模型高斯投影正算公式 64256 42322 )861(cosin70 )95(cosiltBN ltBimNlXx 522425 323)818(cos120(slttBltly 高

3、斯投影反算公式 22425 236425 42232868cos1201cs6590720 9ffffff ffffff ffff ffffff tttBNytyl yttMt yttNMtyt 23. 程序框图开始输入 B,L求定带号 N,中央纬度 L0,纬度差 l按照实用公式计算 x,y换算为国家统一坐标 X,Y输出 X,Y输入国家统一坐标 X,Y由 Y 取定带号 N,并换算出 x,y求出中央经线 L0按照实用公式计算 B,lL=L0+l 求出大地经度 L输出 B,L结束正算反算34. 计算结果5. 附录:程序代码/主函数入口GeodesyHomework.cpp#include MyFu

4、nction.h#include Zhengsuan.h#include Fansuan.h#include using namespace std;voidfansuan();voidzhengsuan();void main()zhengsuan();fansuan();printf(/n over!);voidzhengsuan()doublemyB,myL;coutmyXmyY;FansuanmyFansuan1(myX,myY);myFansuan1.printLocation();/自定功能函数库MyFunction.h#define PI 3.1415926#include us

5、ing namespace std;doubleangleToDegree(intdu,intfen,floatmiao);double angleToDegree();/将度分秒换算为度doubledegreeToRadian(double degree);double degreeToRadian();/将角度换算为弧度MyFunction.cpp#include MyFunction.hdoubleangleToDegree(intdu,intfen,floatmiao)double result=0;result=miao/3600.0+fen/60.0+du;return resul

6、t;doubleangleToDegree()intdu,fen;floatmiao;double result;coutdufenmiao;result=angleToDegree(du,fen,miao);return result;doubledegreeToRadian(double degree)double result=0;5result=degree/57.295779513082321;return result;doubledegreeToRadian()doubleresult,degree;degree=angleToDegree();result=degreeToRa

7、dian(degree);return result;/正算类Zhengsuan.h/ Zhengsuan.h: interface for the Zhengsuan class./#if !defined(AFX_ZHENGSUAN_H_2655EA28_E810_44A3_8F14_56421A7B4466_INCLUDED_)#define AFX_ZHENGSUAN_H_2655EA28_E810_44A3_8F14_56421A7B4466_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000#define rou

8、Second 206264.806247096355#include MyFunction.h#include #include using namespace std;classZhengsuanpublic:Zhengsuan();Zhengsuan(double fB,doublefL);doublegetX();doublegetY();doublegetrB();doublegetrL();voidprintLocation();virtual Zhengsuan();private:6double x;double y;/大地坐标double X;double Y;/国家统一坐标d

9、ouble B;doublerB;intBsecond;double L;doublerL;/输入的大地纬度 B,大地经度 L,rB,rL 为对应弧度表示值, Bsecond 为换算成秒数值int n;/带号 ndouble L0;/中央经线纬度 L0double LDot;/纬度差 L-L0intLDotSecond;/换算成秒的纬度差double l;double N;double a0;double a3;double a4;double a5;double a6;/七个计算参数;#endif / !defined(AFX_ZHENGSUAN_H_2655EA28_E810_44A3_8

10、F14_56421A7B4466_INCLUDED_)Zhengsuan.cpp/ Zhengsuan.cpp: implementation of the Zhengsuan class./#include Zhengsuan.h7/ Construction/Destruction/Zhengsuan:Zhengsuan()Zhengsuan:Zhengsuan(double fB,doublefL)B=fB;rB=degreeToRadian(fB);L=fL;rL=degreeToRadian(fL);Bsecond=B*3600;/初始化大地经度 L,大地纬度 B,Bsecond,按

11、弧度的大地纬度 rBn=(int)(L/6+1);/初始化带号 nL0=6*n-3;/中央经线经度,角度单位LDot=L-L0;/经度差LDotSecond=LDot*3600;l=(LDot)*3600/rouSecond;/计算参数 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);

12、/计算参数 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(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

13、.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);/正算 yX=x;Y=n*1000000+y+500000;/国家统一坐标8Zhengsuan:Zhengsuan()doubleZhengsuan:getX()return X;doubleZhengsuan:getY()return Y;voidZhengsuan:printLocation()printf(正算得国家统一坐标为: X= %8.8f Y=%8.8f n,

14、X,Y);doubleZhengsuan:getrB()returnrB;doubleZhengsuan:getrL()returnrL;/反算类Fansuan.h/ Fansuan.h: interface 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 #include MyFunction.h9#include using namespace std;classFansuanpublic:Fansuan();Fansuan(double X,double Y);doublegetB();doublegetL();voidprintLocation();virtual

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号