预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

高斯投影的正算反算C++源代码-课程设计高斯投影的正算反算C++源代码一、设计目的:加深理解高斯—克吕格投影的实质,掌握高斯—克吕格投影直角坐标的运用,理解通用坐标和自然坐标值的关系。二、设计内容:1、编程实现由经纬度到直角坐标的转换;2、正确计算点所在的分度带;3、准确计算出点的通用坐标值。三、方法与步骤:1、理解公式中每个字母的含义;2、编程。3、编程的程序如下://高斯投影正反算公式.cpp:Definestheentrypointfortheconsoleapplication.//#include"iostream.h"#include"math.h"intmain(intargc,char*argv[]){intn,a,d,c;intL[4],B[4],C[3],D[3],L0;doublel,N,a0,a4,a6,a3,a5,x,y,BB,P,b,Z,Bf,b2,b3,b4,b5,Nf,LL,xx,yy;cout<<"1----正算(L,B-->x,y)2----反算(x,y-->L,B)"<<endl;cout<<"请选择正算(1)或反算(2):"<<endl;cin>>n;/////////////////正算if(n==1){cout<<"请按顺序输入L,B:"<<endl;cout<<"输入L(度,分,秒):"<<endl;cin>>L[1]>>L[2]>>L[3];cout<<"请输入B(度,分,秒):"<<endl;cin>>B[1]>>B[2]>>B[3];BB=3.141592654*(B[1]+B[2]/60.0+B[3]/3600.0)/180;P=3.141592654*(B[1]*3600+B[2]*60+B[3])/(180*3600);////////////////计算点所在投影带的中央子午线L[0]=6*(int((L[1]+L[2]/60.0+L[3]/3600.0)/6)+1)-3;cout<<"点所在投影带的中央子午线为:"<<endl;cout<<L[0]<<"度"<<endl;l=3.141592654*(L[1]+L[2]/60.0+L[3]/3600-L[0])/180;N=6399698.902-(21562.267-(108.973-0.612*cos(BB)*cos(BB))*cos(BB)*cos(BB))*cos(BB)*cos(BB);a0=32140.404-(135.3302-(0.7092-0.0040*cos(BB)*cos(BB))*cos(BB)*cos(BB))*cos(BB)*cos(BB);a4=(0.25+0.00252*cos(BB)*cos(BB))*cos(BB)*cos(BB)-0.04166;a6=(0.166*cos(BB)*cos(BB)-0.084)*cos(BB)*cos(BB);a3=(0.3333333+0.001123*cos(BB)*cos(BB))*cos(BB)*cos(BB)-0.1666667;a5=0.0083-(0.1667-(0.1968+0.0040*cos(BB)*cos(BB))*cos(BB)*cos(BB))*cos(BB)*cos(BB);///////////代号计算a=L[0]/6+1;d=L[0]-1.5;c=d/3+1;///////////////计算坐标x=6367558.4969*P-(a0-(0.5+(a4+a6*l*l)*l*l)*l*l*N)*sin(BB)*cos(BB);y=(1+(a3+a5*l*l)*l*l)*l*N*cos(BB);/////////////格式控制cout.setf(ios::fixed);cout.setf(ios::showpoint);cout.precision(3);cout<<"正算结果为:"<<endl;cout<<"平面坐标:"<<endl;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;cout<<"分度带号为:"<<endl;cout<<"六度带号为:"<<a<<endl;cout<<"三度带号为:"<<c<<endl;cout<<"通用坐标为(米):"<<endl;cout<<"x="<<x<<endl;cout<<"y="<<y+500000<<endl;//通用坐标计算}elseif(n==2)////////////