高斯投影坐标反算C语言代码,如需交流请联系我:799318025
高斯投影坐标反算c语言代码
#include
#include
#include
main()
{
printf("#####################################################\n");
printf("# 角度输入说明:如26°12′45.2″输入为26,12,45.2 #\n");
printf("#####################################################\n");
double x,y;
int j,L0;
printf("请输入高斯投影坐标(自然坐标),中间用逗号隔开:\n");
scanf("%lf,%lf",&x,&y);
//自然坐标输入
printf("请输入中央子午线L0:\n");
scanf("%d,%d,%lf",&L0); //中
央子午线输入
printf("请选择参考椭球:1.北京1954参考椭球 。\n 2.西安1980参考
椭球。\n");
printf("选择的参考椭球为:");
scanf("%d",&j);
//选择椭球参数
if(j==1)
{
long double Bf0=0.157046064172*pow(10,-6)*x;
long double
Bf=Bf0+cos(Bf0)*(0.005051773759*sin(Bf0)-0.000029837302*pow(sin(Bf0),3)+0.00000023818
9*pow(sin(Bf0),5));
long double t=tan(Bf);
long double m=0.00673852541468*pow(cos(Bf),2);
long double V=1+m;
long double N=6378245.000/sqrt(1-0.00669342162297*pow(sin(Bf),2));
long double
B1=Bf-1.0/2*V*t*pow(y/N,2)+1.0/24*(5+3*pow(t,2)+m-9*m*pow(t,2))*V*t*pow(y/N,4)-1.0/72
0*(61+90*pow(t,2)+45*pow(t,4))
*V*t*pow(y/N,6);
long double l1=(1/cos(Bf))*(y/N)-1.0/6*(1+2*pow(t,2)+m)*(1/cos(Bf))*pow(y/N,3)
+1.0/120*(5+28*pow(t,2)+24*pow(t,4)+6*m+8*m*pow(t,2))*(1/cos(Bf))*pow(y/N,5);
long double B=B1*57.29577951;
long double l=l1*57.29577951;
long double L=L0+l;
int d2=int(B);