# include \#define pi (4*atan(1.0)) double X,Y,B1,B2,B3,F,t; double m0,m2,m4,m6,m8; double a0,a2,a4,a6,a8,a1,b1; doubleBB,LL,Bf; double e,e1; intd,m,s,i,zuobiao;
double sort(double,double); structjin { double x; double y; double L0; };
structjin g[100];//x,y,L0为输入量:main(intargc, double *argv[]) {
FILE *r=fopen(\
assert(r!=NULL);
FILE *w=fopen(\
assert(r!=NULL);
x,y坐标和中央子午线经度//
int i=0;
while(fscanf(r,\%lf %lf\文
件为空,无法打开// {
double a1=6378245.0000000000;//克拉索夫斯基椭球参数//
double b1=6356863.0187730473;
double a75=6378140.0000000000;//1975国际椭球参数//
double b75=6356755.2881575287;
double a84=6378137.0000000000;//WGS-84系椭球参数// double b84=6356752.3142000000;
double M,N;//mouyou圈曲率半径,子午圈曲率半径//
doublet,n; double A,B,C;
double BB,LL,Bf,LL0,BB0;
doublea,b;
printf(\选择参考椭球:1=克拉索夫斯基椭球,2=1975国际
椭球,3=WGS-84系椭球:\scanf(\
getchar(); if(zuobiao==1)
{ a=a1;
b=b1;
if(zuobiao==2) { }
a=a75; b=b75; }
if(zuobiao==3) {
a=a84; b=b84;
}//选择参考椭球,求解第一偏心率e,第二偏心率e1//
Bf=sort(a,b);
//调用求解底点纬度的函数//
double q=sqrt(1-e*e*sin(Bf)*sin(Bf)); double G=cos(Bf); M=a*(1-e*e)/(q*q*q);
N=a/q;
double H,I; A=g[i].y/N;
H=A*A*A; I=A*A*A*A*A; t=tan(Bf); n=e1*cos(Bf); B=t*t; C=n*n;
BB0=Bf-g[i].y*t*A/(2*M)+g[i].y*t*H/(24*M)*(5+3*B+C-9*B*C)-g[i].y*t*I/(720*M)*(61+90*B+45*B*B);
LL0=g[i].L0*pi/180.0+A/G-H/(6*G)*(1.0+2*B+C)+I/(120*G)*(5.0+28*B+24*B*B+6*C+8*B*C);//利用公式求解经纬度//
intBdu,Bfen,Ldu,Lfen; doubleBmiao,Lmiao; Ldu=int(LL0/pi*180);
Lfen=int((LL0/pi*180)*60-Ldu*60);
Lmiao=LL0/pi*180*3600-Ldu*3600-Lfen*60; Bdu=int(BB0/pi*180);
Bfen=int((BB0/pi*180)*60-Bdu*60);
Bmiao=BB0/pi*180*3600-Bdu*3600-Bfen*60;
//将弧度转化为角度//
printf(\所选坐标系的转换结果:%d度%d分%lf秒 %d度%d分%lf秒 \\n\
fprintf(w,\°%d’%lf”%d°%d’%lf”
\\n\将结果输出到文本文件//
fclose(r); }
fclose(w);
system(\return 0;
}
double sort(double a,double b) { double e,e1;
e=sqrt(1-(b/a)*(b/a));
e1=sqrt((a/b)*(a/b)-1);
double m0,m2,m4,m6,m8; double a0,a2,a4,a6,a8; m0=a*(1-e*e);
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库高斯投影正反算编程(3)在线全文阅读。
相关推荐: