1 / 19
文档名称:

高斯投影正反算编程.docx

格式:docx   大小:618KB   页数:19页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

高斯投影正反算编程.docx

上传人:才艺人生 2022/4/26 文件大小:618 KB

下载得到文件列表

高斯投影正反算编程.docx

文档介绍

文档介绍:高斯投影正反算编程
高斯投影正反算编程一.高斯投影正反算基本公式
(1)高斯正算基本公式
(2)高斯反算基本公式


输入大地坐标B,L
和经差L0
选择带宽3/;
double db;
db=pi/;
double B1,L1,l;
B1=Bmiao*db;
L1= Lmiao*db;
l=L1-L0miao*db;//角度转化为弧度//
double T=tan(B1)*tan(B1);
double n=e2*e2*cos(B1)*cos(B1);
double A=l*cos(B1);
double X,x,y;
X=a0*(B1)-a2*sin(2*B1)/2+a4*sin(4*B1)/4-a6*sin(6*B1)/6+a8*sin(8*B1)/8;//
求弧长//
double N=a/sqrt(1-e*e*sin(B1)*sin(B1));
int Zonewide;
int Zonenumber;
printf("\n请输入带宽:3度带或6度带Zonewide=");
scanf("%d",&Zonewide);
getchar();

if(Zonewide==3)
{
Zonenumber=(int)((g[i].L-Zonewide/2)/Zonewide+1);
}
else if(Zonewide==6)
{
Zonenumber=(int)g[i].L/Zonewide+1;
}
else
{
printf("错误");
exit(0);
}//选择带宽//
double
FE=Zonenumber*1000000+500000;//改写为国家通用坐标//
y=FE+N*A+A*A*A*N*(1-T*T+n*n)/6+A*A*A*A*A*N*(5-18*T*T+T*T*T*T+14*n*n-58*n*n*T*T)/120;
x=X+tan(B1)*N*A*A/2+tan(B1)*N*A*A*A*A*(5-T*T+9*n*n+4*n*n*n*n)/24+tan(B1)*N*A*A*A*A*A*A*(61-58*T*T+T*T*T*T)/720;
printf("\n所选坐标系的转换结果:x=%lf y=%lf\n",x,y);
fprintf(w,"%lf %lf\n",x,y);//输出结果到文本文件//

}

fclose(r);
fclose(w);
system("pause");
return 0;

}

(2)反算
# include ""
# include ""
# include ""
# include ""
#define pi (4*atan())
double X,Y,B1,B2,B3,F,t;
double m0,m2,m4,m6,m8;
double a0,a2,a4,a6,a8,a1,b1;
double BB,LL,Bf;
double e,e1;
int d,m,s,i,zuobiao;
double sort(double,double);
struct jin
{
double x;
double y;
double L0;
};
struct jin g[100];//x,y,L0为输入量:x,y坐标和中央子午线经度//
main(int argc, double *argv[])
{
FILE *r=fopen("","r");
assert(r!=NULL);
FILE *w=fopen("","w");
assert(r!=NULL);
int i=0;
while(fscanf(r,"%lf %lf %lf",&g[i].x,&g[i].y,&g[i].L0)!=EOF)//文件为空,无法打开//
{
double a1=;//克拉索夫斯基椭球参数//
double b1=;
double a75=6