资源描述:
《经纬度BL算到高斯平面直角坐标XY(高斯投影正算)的源.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、经纬度BL换算到高斯平面直角坐标XY(高斯投影正算)的源码及算法收藏新一篇:C#的6种常用集合类大比拼
2、旧一篇:Silverlight中使用图片及常见问题一、经纬度BL换算到高斯平面直角坐标XY(高斯投影正算)的源码及算法//GaussBL2xy.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include"math.h"#include"CoorTrans.h"#includeusingnamespacestd;voidmain(intargc,char*argv[]){doub
3、leMyL0=108;//中央子午线doubleMyB=33.44556666;//33du44fen55.6666miaodoubleMyL=109.22334444;//3度带,109d22m33.4444sPrjPoint_KrasovskyMyPrj;MyPrj.SetL0(MyL0);MyPrj.SetBL(MyB,MyL);doubleOutMyX;//结果应该大致是:3736714.783,627497.303doubleOutMyY;OutMyX=MyPrj.x;//正算结果:北坐标xOutMyY=MyPrj.y;//结果:东坐标y//////////////////反算///
4、/////////////////////////////////////doubleInputMyX=3736714.783;//如果是独立计算,应该给出中央子午线L0doubleInputMyY=627497.303;MyPrj.Setxy(InputMyX,InputMyY);MyPrj.GetBL(&MyPrj.B,&MyPrj.L);//把计算出的BL的弧度值换算为dms形式doubleOutputMyB;doubleOutputMyL;OutputMyB=MyPrj.B;//反算结果:BOutputMyL=MyPrj.L;//反算结果:L//分析表明,此程序的结果和Coord4.2
5、的转换结果是一样的,只差到毫米级//原程序有几个问题,1.Pi的值不对。2.SetBL中多了两行错误代码}doubleDms2Rad(doubleDms){doubleDegree,Miniute;doubleSecond;intSign;doubleRad;if(Dms>=0)Sign=1;elseSign=-1;Dms=fabs(Dms);Degree=floor(Dms);Miniute=floor(fmod(Dms*100.0,100.0));Second=fmod(Dms*10000.0,100.0);Rad=Sign*(Degree+Miniute/60.0+Second/3600
6、.0)*PI/180.0;returnRad;}doubleRad2Dms(doubleRad){doubleDegree,Miniute;doubleSecond;intSign;doubleDms;if(Rad>=0)Sign=1;elseSign=-1;Rad=fabs(Rad*180.0/PI);Degree=floor(Rad);Miniute=floor(fmod(Rad*60.0,60.0));Second=fmod(Rad*3600.0,60.0);Dms=Sign*(Degree+Miniute/100.0+Second/10000.0);returnDms;}///////
7、//////////////////////////////////////////////DefinitionofPrjPoint///////////////////////////////////////////////////boolPrjPoint::BL2xy(){doubleX,N,t,t2,m,m2,ng2;doublesinB,cosB;X=A1*B*180.0/PI+A2*sin(2*B)+A3*sin(4*B)+A4*sin(6*B);sinB=sin(B);cosB=cos(B);t=tan(B);t2=t*t;N=a/sqrt(1-e2*sinB*sinB);m=co
8、sB*(L-L0);m2=m*m;ng2=cosB*cosB*e2/(1-e2);//x,y的计算公式见孔祥元等主编武汉大学出版社2002年出版的《控制测量学》的第72页//书的的括号有问题,(和[应该交换x=X+N*t*((0.5+((5-t2+9*ng2+4*ng2*ng2)/24.0+(61-58*t2+t2*t2)*m2/720.0)*m2)*m2);y=N*m*(1+m2*((1-t2+