高斯投影坐标反算c语言代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高斯投影坐标反算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);

int f2=int((B-d2)*60);

long double m2=((B-d2)*60-f2)*60;

printf("B=%d %d %.12lf\n",d2,f2,m2);

int d3=int(L);

int f3=int((L-d3)*60);

long double m3=((L-d3)*60-f3)*60;

printf("L=%d %d %.12lf\n",d3,f3,m3); //北京1954参考椭球

}

if(j==2)

{long double Bf0=0.157048687473*pow(10,-6)*x;

long double Bf=Bf0+cos(Bf0)*(0.005052505593*sin(Bf0)-0.000029847335*pow(sin(Bf0),3)+0.0000002416* pow(sin(Bf0),5)

+0.0000000022*pow(sin(Bf0),7));

long double t=tan(Bf);

long double m=0.006739501819473*pow(cos(Bf),2);

long double V=1+m;

long double N=6378140.000/sqrt(1-0.006694384999588*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);

int f2=int((B-d2)*60);

long double m2=((B-d2)*60-f2)*60;

printf("B=%d %d %.12lf\n",d2,f2,m2);

int d3=int(L);

int f3=int((L-d2)*60);

long double m3=((L-d2)*60-f2)*60;

printf("L=%d %d %.12lf\n",d3,f3,m3); //西安1980参考椭球

}

getch();

}

相关文档
最新文档