资源简介

高斯引数计算 大地测量学 坐标正反算 选择不同的椭球体参数

资源截图

代码片段和文件信息

#include
#include
#define PI 3.14159265358979323846
#define P0 206265 
int main ()
{int z;
printf(“\t请选择正算(1)或反算(2):“);
scanf(“%d“&z);
if(z==1) ZS();
if(z==2) FS();
}
double ZH1 (double dudouble minutedouble second)//由角度值转换为弧度制 
{double temp;
temp=du+minute/60.0+second/3600.0;
temp=temp*(PI/180.0);
return (temp);
}
double ZH2 (double temp)
{double secondx;
int duminute;
x=temp*(180/PI);
du=(int)x;
x=x-du;
x=x*60;
minute=(int)x;
x=x-minute;
second=x*60;
printf(“%d°%d′%lf″\n“duminutesecond);
}
double Abs (double a) //double 的绝对值函数 
{if (a>=0){a=a;}
else a=0-a;
return (a);
}
int ZS( )  //正算函数 
{   
int x;
double eacB1L1A1S;
double e__t1t2NBMBdBdLdAdB0dL0dA0A2B2tL2;
double BmLMAmqndb1db2xtxt1xt2dL1da1da2XdBXdLXdA;
double duminutesecond; 
printf(“请输入B1(度分秒之间用隔开):“);
scanf(“%lf%lf%lf“&du&minute&second);
B1=ZH1(duminutesecond);
printf(“请输入L1(度分秒之间用隔开):“);
scanf(“%lf%lf%lf“&du&minute&second);
L1=ZH1(duminutesecond);
printf(“请输入A1(度分秒之间用隔开):“);
scanf(“%lf%lf%lf“&du&minute&second);
A1=ZH1(duminutesecond);
printf(“请输入S:“);
scanf(“%lf“&S);
printf(“请选择椭球体参数:\n克拉索夫斯基椭球(1)\t1975年国际椭球(2)\nWGS-84椭球体(3)\tCGCS2000坐标系(4)\n“);
scanf(“%d“&x); 
switch(x) 
{
case 1:{c=6399698.9017827110;a=6378245;e=sqrt(0.006693421622966);printf(“已选择克拉索夫斯基椭球体参数.\n“);}break;
case 2:{c=6399596.6519880102;a=6378140;e=sqrt(0.006694384999588);printf(“已选择1975年国际椭球体参数.\n“);}break;
case 3:{c=6399593.6258;a=6378137;e=sqrt(0.00669437999013);printf(“已选择WGS-84椭球体参数.\n“);}break;
case 4:{c=6399593.6259;a=6378137;e=sqrt(0.00638002290);printf(“已选择CGCS2000椭球体参数.\n“);}break;
}
e__=pow(e2)/(1-pow(e2));
t1=sin(B1);
t2=cos(B1);
NB=a/pow((1-e*e*t1*t1)0.5);
MB=a*(1-e*e)/pow((1-e*e*t1*t1)1.5);
dB=S*cos(A1)/MB;
dL=S*sin(A1)/NB/cos(B1);
dA=dL*sin(B1);
do
{dB0=dB;dL0=dL;dA0=dA;
Bm=B1+dB0/2;
LM=L1+dL0/2;
Am=A1+dA0/2;
t1=sin(Am);
t2=cos(Am);
t=tan(Bm);
q=e__*cos(Bm)*cos(Bm);
n=a/sqrt(1-e*e*sin(Bm)*sin(Bm));
MB=a*(1-e*e)/pow((1-e*e*sin(Bm)*sin(Bm))1.5);
db1=t1*t1*(2+3*t*t+2*q);
db2=3*t2*t2*q*(t*t-1-(1+4*t*t)*q);
dB=S*t2*(1+S*S*(db1+db2)/n/n/24)/MB;
xt=t*t;xt1=t1*t1;xt2=t2*t2;
dL1=S*S*(xt*xt1-xt2*(1+(1-9*xt)*q))/n/n/24;
dL=S*t1*(1+dL1)/n/cos(

评论

共有 条评论