1、 long double *pointer_B,*pointer_L; long double DH; pointer_B=&FSB; pointer_L=&FSL; pointer_x=&x; pointer_y=&y; printf(n=欢迎使用高斯投影计算程序=n); 说明n1.程序可实现在任意椭球上进行高斯三度带和六度带正算和反算;n2.经纬度的输入输出格式为:度分秒,例如:1130513.68466输入时为:113.051368466;3.y坐标的输入输出格式为:带号*10E6+500公里+自然坐标,例如:y=18637682.388,18为带号,自然坐标为137682.388;4.
2、其余可按照提示完成,如有疑问可发送Email至gys_long,我们将尽快为您解答。n=n请选择计算方式:A.三度带正算;tB.三度带反算;tC.六度带正算;tD.六度带反算n请选择字母后回车: scanf(%c,&XZ); if(XZ=A|XZ=a) XZZF=ZXZSL=Sprintf(注意:您将要进行的是三度带正算! else if(XZ=BbF您将要进行的是三度带反算!CcL您将要进行的是六度带正算!Dd您将要进行的是六度带反算! else printf(警告:您操作有误!是否继续Y/N: scanf(%sYN); do if(YN=N|YN=n printf(欢迎您继续使用此程序,如
3、有疑问可发送Email至gys_long,我们将尽快为您解答! break; if(XZZF=|XZZF=z请选择椭球:n1.克拉索夫斯基椭球; 2.1975年国际椭球体; 3.WGS-84椭球体; 4.自定义椭球n请选择数字后回车: scanf(%dnum); switch(num) case 1: a=6378245.0000000000;b=6356863.0187730473;您选择的是克拉索夫斯基椭球!n请输入经度L和纬度B:(输入时经度和纬度之间用逗号隔开)n%lf,%lfL,&B); L0=(XZSL=|XZSL=l)?(N=(int)(L+3)/6.+0.5)*6-3):(N=
4、(int)(L/3.+0.5)*3);t=中间计算过程结果=nnttN=%dnttL0=%fn,N,L0); B1=AngleToRadian(B); /printf(HD=%lf,B1); L0=AngleToRadian(L0); L1=AngleToRadian(L); l=L1-L0; GSZS(a,b,l,B1,pointer_x,pointer_y);nt=计算结果=nnttx=%-20.4lftty=%-20.4lfn,x,(y+500000+N*1000000);nt=n break; case 2: a=6378140.0000000000;b=6356755.2881575
5、287;您选择的是1975年国际椭球体!nt=计算结果为=nnttx=%-20.3lftty=%-20.3lfn case 3: a=6378137.0000000000;b=6356752.3142;您选择的是WGS-84椭球体! case 4:您选择的是自定义椭球体!n请输入长半轴a、短半轴b、经度L和纬度B:(输入时数据之间用逗号隔开)n%lf,%lf,%lf,%lfa,&b,&t=中间计算过程结果=nn default:您选择了错误的数字n if(YN=欢迎您下次使用此程序,如有疑问可发送Email至gys_long,我们将尽快为您解答! else if(XZZF=f /printf(
6、请输入中央子午线L0: /scanf(N);n请输入x坐标和y坐标:(输入时x坐标和y坐标之间用逗号隔开)nx,&y); FSB=Bf(a,b,x);ttBf=%-20.10lfn,FSB); / DH=floor(y/1000000); y=y-DH*1000000-500000;/ GSFS(a,b,FSB,y,pointer_B,pointer_L); FSB=RadianToAngle(FSB); FSL=RadianToAngle(FSL);(DH*6-3):(DH*3);ttDH=%-20.0lfnttL0=%-20.0lfnttl=%-20.10lfn,DH,L0,FSL);nt
7、tB=%-20.10lfttL=%-20.10lfn,FSB,L0+FSL);n请输入长半轴a、短半轴b、x坐标和y坐标:您选择错误!while(YN=Yylong double AngleToRadian(long double alfa) long double alfa1,alfa2; long double HS; alfa = alfa + 0.00000000000001; alfa1=floor(alfa)+floor(alfa-floor(alfa)*100.)/60; alfa2=(alfa*100.-floor(alfa*100.0)/36; alfa1+=alfa2; H
8、S=alfa1/180.*PI; return(HS);long double RadianToAngle(long double alfa) alfa=alfa*180./PI; alfa1=floor(alfa)+floor(alfa-floor(alfa)*60.)/100.; alfa2=(alfa*60.-floor(alfa*60.)*0.006; return(alfa1);void GSZS(long double a,long double b,long double l,long double B,long double *x,long double *y) long do
9、uble e,e1,t,u2; long double m0,m2,m4,m6,m8,a0,a2,a4,a6,a8,X; long double n0,n2,n4,n6,n8,sin2B,sin4B,sin6B,sin8B,N; e=(sqrt(a*a-b*b)/a; e1=(sqrt(a*a-b*b)/b; t=tan(B); u2=e1*e1*cos(B)*cos(B); m0=a*(1-e*e); m2=3.0/2.0*e*e*m0; m4=5.0/4.0*e*e*m2; m6=7.0/6.0*e*e*m4; m8=9.0/8.0*e*e*m6; a0=m0+m2/2.0+3.0/8.0*m4+5.0/16.0*m6+35.0/128.0*m8; a2=m2/2.0+m4/2.0+15.0/32.0*m6+7.0/16.0*m8; a4=m4/8.0+3.0/1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1