当前位置:首页 > 大地测量学实习报告 - 图文
附录5
高斯投影主要代码:
void CMyDlg::OnButton1() {
double PI=3.14159265358979323846264338327950288; double Bhudu,L,L0,l,N,a0,a4,a5,a6,a3,x,y; UpdateData();
Bhudu=(m_du2*3600+m_fen2*60+m_miao2)*2*PI/360/3600;//化弧度 L=m_du1*3600+m_fen1*60+m_miao1;//化秒 L0=126*3600;
l=(L-L0)*2*PI/360/3600;//化弧度
N=6399698.902-(21562.267-(108.973-0.612*cos(Bhudu)*cos(Bhudu))*cos(Bhudu)*cos(Bhudu))*cos(Bhudu)*cos(Bhudu);
a0=32140.404-(135.3302-(0.7092-0.0040*cos(Bhudu)*cos(Bhudu))*cos(Bhudu)*cos(Bhudu))*cos(Bhudu)*cos(Bhudu);
a4=(0.25+0.00252*cos(Bhudu)*cos(Bhudu))*cos(Bhudu)*cos(Bhudu)-0.04166;
a6=(0.166*cos(Bhudu)*cos(Bhudu)-0.084)*cos(Bhudu)*cos(Bhudu);
a3=(0.3333333+0.001123*cos(Bhudu)*cos(Bhudu))*cos(Bhudu)*cos(Bhudu)-0.1666667;
a5=0.0083-(0.1667-(0.1968+0.0040*cos(Bhudu)*cos(Bhudu))*cos(Bhudu)*cos(Bhudu))*cos(Bhudu)*cos(Bhudu);
m_x1=6367558.4969*Bhudu-(a0-(0.5+(a4+a6*l*l)*l*l)*l*l*N)*sin(Bhudu)*cos(Bhudu);
m_y1=(1+(a3+a5*l*l)*l*l)*l*N*cos(Bhudu)+500000; UpdateData(FALSE); }
void CMyDlg::OnButton2() {
double PI=3.14159265358979323846264338327950288; double x,y,Bf,Be,l,L,Z,Nf,b2,b3,b4,b5,p,B; int B1,B2,L1,L2; UpdateData();
x=m_x2,y=m_y2-500000; p=60*60*360/(PI)/2; Be=x/6367558.4969;
Bf=Be+(50221746+(293622+(2350+22*cos(Be)*cos(Be))*cos(Be)*cos(Be))*cos(Be)*cos(Be))*1e-10*sin(Be)*cos(Be);
Nf=6399698.902-(21562.267-(108.973-0.612*cos(Bf)*cos(Bf))*cos(Bf)*cos(Bf))*cos(Bf)*cos(Bf); Z=y/(Nf*cos(Bf));
b2=(0.5+0.003369*cos(Bf)*cos(Bf))*sin(Bf)*cos(Bf);
b3=0.333333-(0.166667-0.001123*cos(Bf)*cos(Bf))*cos(Bf)*cos(Bf); b4=0.25+(0.16161+0.00562*cos(Bf)*cos(Bf))*cos(Bf)*cos(Bf); b5=0.2-(0.1667-0.0088*cos(Bf)*cos(Bf))*cos(Bf)*cos(Bf); B=(Bf-(1.0-(b4-0.12*Z*Z)*Z*Z)*Z*Z*b2)/2/(PI)*360;//度数 l=(1-(b3-b5*Z*Z)*Z*Z)*Z/2/(PI)*360; L=126+l;//度数 m_du3=(int)L;
m_fen3=(int)((L-(int)L)*60);
m_miao3=L*3600-m_du3*3600-m_fen3*60; m_du4=(int)B;
m_fen4=(int)((B-(int)B)*60);
m_miao4=B*3600-m_du4*3600-m_fen4*60; UpdateData(FALSE); }
距离改化主要代码
void CMyDlg::OnButton1()
{
double PI=3.14159265358979323846264338327950288; double eep=0.006738525414683;//第二偏心率的平方 double ee=0.006693421622966; double a=6378245.0000000000;
double t1, n1, ym,t2,n2, q12,q21,M1,N1 ,M2, N2,R1, R2, x1, y1, x2, y2, B1, B2, Rm,h1 ,h2, D;
double Bf, tf, Nf, r12, nf, Bhudu, a12,A12;//a12为坐标方位角,r12为子午线收敛角,q12为方向改化,A12为大地方位角
UpdateData(); h1=m_h1,h2=m_h2; D=m_D;
x1=m_x1,y1=m_y1-500000,x2=m_x2,y2=m_y2-500000; B1=(m_B1du+m_B1fen/60+m_B1miao/3600)*PI/180; B2=(m_B2du+m_B2fen/60+m_B2miao/3600)*PI/180; ym=0.5*(y1+y2); t1=tan(B1);
n1=sqrt(eep*cos(B1)*cos(B1)); t2=tan(B2);
n2=sqrt(eep*cos(B2)*cos(B2));
M1=a*(1-ee)/sqrt((1-ee*sin(B1)*sin(B1))*(1-ee*sin(B1)*sin(B1))*(1-ee*sin(B1)*sin(B1)));
N1=a/sqrt(1-ee*sin(B1)*sin(B1));
M2=a*(1-ee)/sqrt((1-ee*sin(B2)*sin(B2))*(1-ee*sin(B2)*sin(B2))*(1-ee*sin(B2)*sin(B2)));
N2=a/sqrt(1-ee*sin(B2)*sin(B2)); R1=sqrt(M1*N1); R2=sqrt(N2*M2); do{ Rm=R1;
q12=-(x2-x1)*(2*y1+y2-ym*ym*ym/(R1*R1))/(6*R1*R1)-n1*n1*t1*(y2-y1)*ym*ym/(R1*R1*R1);
q21=
(x2-x1)*(2*y2+y1-ym*ym*ym/(R2*R2))/(6*R2*R2)+n2*n2*t2*(y2-y1)*ym*ym/(R2*R2*R2);
a12=atan((y2-y1)/(x2-x1)); Bhudu=x1/6367588.4969;
Bf=Bhudu+(50221746+(293622+(2350+22*cos(Bhudu)*cos(Bhudu) )*cos(Bhudu)*cos(Bhudu))*cos(Bhudu)*cos(Bhudu))*1.0e-10*sin(Bhudu)*cos(Bhudu);
tf=tan(Bf);
nf=sqrt(eep*cos(Bf)*cos(Bf)); Nf=a/sqrt(1-ee*sin(Bf)*sin(Bf));
r12=y1*tf/Nf-y1*y1*y1*tf*(1+tf*tf-nf*nf)/(3*Nf*Nf*Nf)+y1*y1*y1*y1*y1*tf*(2+5*tf*tf+3*tf*tf*tf*tf)/(15*Nf*Nf*Nf*Nf*Nf); A12=a12+r12-q12;
R1=M1*N1/(N1*cos(A12)*cos(A12)+M1*sin(A12)*sin(A12));
}
while(fabs(Rm-R1)>=1.0e-10); A12=A12*180/PI;//化度 r12=r12*180/PI; a12=a12*180/PI; m_A12du=(int)A12;
m_A12fen=(int)((A12-(int)A12)*60);
m_A12miao=A12*3600-m_A12du*3600-m_A12fen*60; UpdateData(FALSE); }
void CMyDlg::OnButton2() {
double PI=3.14159265358979323846264338327950288; double B1,B2;
共分享92篇相关文档