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

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

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

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

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

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

高斯投影正、反算代码下载作者:boy转贴文章来源:.net/ShowPost.asp?id=25701点击数:3295更新时间:2006-7-10//高斯投影正、反算//////6度带宽54年北京坐标系//高斯投影由经纬度(Unit:DD)反算大地坐标(含带号,Unit:Metres)voidGaussProjCal(doublelongitude,doublelatitude,double*X,double*Y){intProjNo=0;intZoneWide;带宽////doublelongitude1,latitude1,longitude0,latitude0,X0,Y0,xval,yval;doublea,f,e2,ee,NN,T,C,A,M,iPI;iPI=0.0174532925199433;////3.1415926535898/180.0;ZoneWide=6;////6度带宽a=6378245.0;f=1.0/298.3;年北京坐标系参数//54////a=6378140.0;f=1/298.257;年西安坐标系参数//80ProjNo=(int)(longitude/ZoneWide);longitude0=ProjNo*ZoneWide+ZoneWide/2;longitude0=longitude0*iPI;latitude0=0;longitude1=longitude*iPI经度转换为弧度;//latitude1=latitude*纬度转换为弧度iPI;//e2=2*f-f*f;ee=e2*(1.0-e2);NN=a/sqrt(1.0-e2*sin(latitude1)*sin(latitude1));T=tan(latitude1)*tan(latitude1);C=ee*cos(latitude1)*cos(latitude1);A=(longitude1-longitude0)*cos(latitude1);M=a*((1-e2/4-3*e2*e2/64-5*e2*e2*e2/256)*latitude1-(3*e2/8+3*e2*e2/32+45*e2*e2*e2/1024)*sin(2*latitude1)+(15*e2*e2/256+45*e2*e2*e2/1024)*sin(4*latitude1)-(35*e2*e2*e2/3072)*sin(6*latitude1));xval=NN*(A+(1-T+C)*A*A*A/6+(5-18*T+T*T+72*C-58*ee)*A*A*A*A*A/120);yval=M+NN*tan(latitude1)*(A*A/2+(5-T+9*C+4*C*C)*A*A*A*A/24+(61-58*T+T*T+600*C-330*ee)*A*A*A*A*A*A/720);X0=1000000L*(ProjNo+1)+500000L;Y0=0;xval=xval+X0;yval=yval+Y0;*X=xval;*Y=yval;}//高斯投影由大地坐标(Unit:Metres)反算经纬度(Unit:DD)voidGaussProjInvCal(doubleX,double,doubleY*longitude,double*latitude){intProjNo;intZoneWide;带宽////doublelongitude1,latitude1,longitude0,latitude0,X0,Y0,xval,yval;doublee1,e2,f,a,ee,NN,T,C,M,D,R,u,fai,iPI;iPI=0.0174532925199433;////3.1415926535898/180.0;a=6378245.0;f=1.0/298.3;年北京坐标系参数//54////a=6378140.0;f=1/298.257;年西安坐标系参数//80ZoneWide=6;////6度带宽ProjNo=(int)(X/1000000L)查找带号;//longitude0=(ProjNo-1)*ZoneWide+ZoneWide/2;longitude0=longitude0*iPI中央经线;//X0=ProjNo*1000000L+500000L;Y0=0;xval=X-X0;yval-Y0;=Y//带内大地坐标e2=2*f-f*f;e1=(1.0-sqrt(1-e2))/(1.0+sqrt(1-e2));ee=e2/(1-e2);M=yval;u=M/(a*(1-e2/4-3*e2*e2/64-5*e2*e2*e2/256));