1、大地测量学课程设计设计题目:白塞尔大地主题解算 学 院: 矿业学院 专 业: 测绘工程 班 级: * 学 号: 120801024* 学生姓名: 武 * 指导教师: 张 * 2014年12月31日目录1.基本原理及思想 12.白塞尔法大地主题正算步骤 23.白塞尔法大地主题反算步骤 44.同一平行圈弧长、子午线弧长与大地线比较大小 65.程序代码 86.演算示例 137.参考文献 168.心得体会 179.教师评语 183白塞尔大地主题解算一:基本原理建立以椭球中心为中心,以任意长(或单位长)为半径的辅助球,按以下三个步骤计算。第一, 按一定条件将椭球面元素投影到辅助球面上。第二, 在球面上解
2、算大地问题。第三, 将求得的球面元素按投影关系换算到相应的椭球元素。 关键:确定球面元素与椭球面元素的关系,即它们间的投影关系。二:白塞尔法解算大地主题的基本思想:以辅助球面为基础,将椭球面三角形转换为辅助球面的相应三角形,由三角形对应元素关系,将椭球面上的大地元素按照白塞尔投影条件投影到辅助球面上,然后在球面上进行大地主题解算,最后再将球面上的计算结果换算到椭球面上。三:在球面上进行大地主题解算球面上的大地主题正算:球面上的大地主题反算: 球面三角元素间的相互关系:四:正反算步骤1.白塞尔法大地主题正算步骤已知 、()、S,计算、()。(1)将椭球面元素投影到球面上由求:计算辅助量和 , 计
3、算球面长度,将S化为 式中系数分别为: 上式右端含有,因此需要迭代计算。第一次迭代取近似值,第二次计算取 以后计算用代换代入上式迭代计算,直到所要求的精度为止。一般取。(2) 解算球面三角形 计算 计算 或 计算 (3)将球面元素换算到椭球面上 由求 或 将球面经差化为椭球面经差l,求 l式中 式中的最大值为,故在计算时通常可以略去不计。象限的判定符号+ +-符号 +-+- -l符号-+ 符号+- +- 其中、为锐角。2.白塞尔法大地主题反算步骤已知 、,计算()、()、S。 (1)将椭球面元素投影到球面上 由B求u ,l= , , 采用逐次趋近法,由l计算在反算中,已知椭球面上经差l,球面经
4、差上的对应经差未知,为了由l求,由下式可知还需计算、,计算又还需量,故需要进行迭代计算。第一次趋近,取l;,或判断的象限p符号+ +-q符号 +-+- 判断象限+- l+仿照上述计算步骤迭代计算,直到为止。(2) 将球面元素换算到椭球面上 或 象限的判断与前面一致五:同一平行圈弧长、子午线弧长与大地线比较大小子午线弧长计算公式:式中: 平行圈弧长公式:()不同纬度对应的一些弧长的数值B子午线弧长平行圈弧长11110110 576m1 842.94m30.716m111 321m1 855.36m30.923m15110 6561 844.2630.738107 5521 792.5429.87
5、630110 8631 847.7130.79596 4881 608.1326.80245111 1431 852.3930.87378 8481 314.1421.90260111 4231 857.0430.95155 801930.0215.575111 6251 860.4231.00728 902481.718.02890111 6961 861.631.027000利用白塞尔大地主题反算求解大地线长S 纬度为30,经差为1的平行圈弧长S=96 488m,两点间大地线长为96 487.595m经度为30,纬度差为1的子午线弧长X=110 863m,两点间大地线长为110 862.8
6、69m通过比较可知,同一平行圈或同一子午线两点间大地线长度与对应的平行圈弧长或子午线弧长相等。六:程序代码#include#includedouble hudu(double,double,double); /*度分秒转换为弧度*/double du(double); /*弧度转换为度*/double fen(double); /*弧度转换为分*/double miao(double); /*弧度转换为秒*/#define PI 3.1415926void main (void)int k;printf(请选择大地主题算法,若执行正算,请输入1;若执行反算,请输入2。n);scanf(%d,&
7、k); /*大地主题正算*/if(k=1) double ax,ay,az,bx,by,bz,cx,cy,cz,S,dz,ez,fz,B1,B2,L1,L2,A1,A2;intdx,dy,ex,ey,fx,fy;double e2,W1,sinu1,cosu1,sinA0,coto1,sin2o1,cos2o1,sin2o,cos2o,A,B,C,r,t,o0,o,g,sinu2,q;/*输入度分秒数据*/printf(请输入大地线起点纬度度分秒n);scanf(%lf%lf%lf,&ax,&ay,&az);printf(请输入大地线起点经度度分秒n);scanf(%lf%lf%lf,&bx,
8、&by,&bz);printf(请输入大地方位角度分秒n);scanf(%lf%lf%lf,&cx,&cy,&cz);printf(请输入大地线长度n);scanf(%lf,&S);/*调用函数*/B1=hudu(ax,ay,az);L1=hudu(bx,by,bz);A1=hudu(cx,cy,cz);/*白塞尔大地主题解算*/e2=0.006693421622966;W1=sqrt(1-e2*sin(B1)*sin(B1);sinu1=sin(B1)*(sqrt(1-e2)/W1;cosu1=cos(B1)/W1;sinA0=cosu1*sin(A1);coto1=cosu1*cos(A1
9、)/sinu1;sin2o1=2*coto1/(coto1*coto1+1);cos2o1=(coto1*coto1-1)/(coto1*coto1+1);A=6356863.020+(10718.949-13.474*(1-sinA0*sinA0)*(1-sinA0*sinA0); B=(5354.469-8.978*(1-sinA0*sinA0)*(1-sinA0*sinA0);C=(2.238*(1-sinA0*sinA0)*(1-sinA0*sinA0)+0.006; r=691.46768-(0.58143-0.00144*(1-sinA0*sinA0)*(1-sinA0*sinA0
10、);t=(0.2907-0.0010*(1-sinA0*sinA0)*(1-sinA0*sinA0); o0=(S-(B+C*cos2o1)*sin2o1)/A;sin2o=sin2o1*cos(2*o0)+cos2o1*sin(2*o0); cos2o=cos2o1*cos(2*o0)-sin2o1*sin(2*o0);o=o0+(B+5*C*cos2o)*sin2o/A;g=(r*o+t*(sin2o-sin2o1)*sinA0;/*求B2*/sinu2=sinu1*cos(o)+cosu1*cos(A1)*sin(o);B2=atan(sinu2/(sqrt(1-e2)*sqrt(1-s
11、inu2*sinu2); /*求L2*/q=atan(sin(A1)*sin(o)/(cosu1*cos(o)-sinu1*sin(o)*cos(A1);/*判断q*/if(sin(A1)0 & tan(q)0)q=fabs(q);else if(sin(A1)0 & tan(q)0)q=PI-fabs(q);else if(sin(A1)0 & tan(q)0)q=-fabs(q);elseq=fabs(q)-PI;L2=L1+q-g/3600/180*PI; /*求A2*/A2=atan(cosu1*sin(A1)/(cosu1*cos(o)*cos(A1)-sinu1*sin(o);/*
12、判断A2*/if(sin(A1)0)A2=fabs(A2);else if(sin(A1)0 & tan(A2)0 & tan(A2)0)A2=PI+fabs(A2);elseA2=2*PI-fabs(A2);/*调用函数*/dx=(int)(du(B2);dy=(int)(fen(B2);dz=miao(B2);ex=(int)(du(L2);ey=(int)(fen(L2);ez=miao(L2);fx=(int)(du(A2);fy=(int)(fen(A2);fz=miao(A2);printf(大地线终点纬度度分秒分别为:n%dn%dn%lfn,dx,dy,dz);printf(大地
13、线终点经度度分秒分别为:n%dn%dn%lfn,ex,ey,ez);printf(终点大地方位角度分秒分别为:n%dn%dn%lfn,fx,fy,fz);/*大地主题反算*/else if(k=2) double fx,fy,fz,gx,gy,gz,hx,hy,hz,ix,iy,iz,jz,kz,B1,B2,L1,L2,S,A1,A2;int jx,jy,kx,ky;double e2,W1,W2,sinu1,sinu2,cosu1,cosu2,L,a1,a2,b1,b2,g,g2,g0=0.0,r,p,q,sino,coso,o,sinA0,x,t1,t2,A,B,C,y;/*输入度分秒数据
14、*/printf(请输入大地线起点纬度度分秒n);scanf(%lf%lf%lf,&fx,&fy,&fz);printf(请输入大地线起点经度度分秒n);scanf(%lf%lf%lf,&gx,&gy,&gz);printf(请输入大地线终点纬度度分秒n);scanf(%lf%lf%lf,&hx,&hy,&hz);printf(请输入大地线终点经度度分秒n);scanf(%lf%lf%lf,&ix,&iy,&iz); /*调用函数*/B1=hudu(fx,fy,fz);L1=hudu(gx,gy,gz);B2=hudu(hx,hy,hz);L2=hudu(ix,iy,iz);/*白塞尔大地主题
15、解算*/ e2=0.006693421622966;W1=sqrt(1-e2*sin(B1)*sin(B1);W2=sqrt(1-e2*sin(B2)*sin(B2);sinu1=sin(B1)*sqrt(1-e2)/W1;sinu2=sin(B2)*sqrt(1-e2)/W2;cosu1=cos(B1)/W1;cosu2=cos(B2)/W2;L=L2-L1;a1=sinu1*sinu2;a2=cosu1*cosu2;b1=cosu1*sinu2;b2=sinu1*cosu2;/*逐次趋近法求解A1*/g=0;r=L;while(1) p=cosu2*sin(r);q=b1-b2*cos(r
16、);A1=atan(p/q); /*判断A1*/if(p0 & q0) A1=fabs(A1);else if(p0 & q0)A1=PI-fabs(A1);else if(p0 & q0)o=fabs(o);elseo=PI-fabs(o); sinA0=cosu1*sin(A1);x=2*a1-(1-sinA0*sinA0)*coso; t1=(33523299-(28189-70*(1-sinA0*sinA0)*(1-sinA0*sinA0)*1e-10;t2=(28189-94*(1-sinA0*sinA0)*1e-10;g2=(t1*o-t2*x*sino)*sinA0;if(fab
17、s(g2-g0)=1e-100)break;elser=L+g2;g0=g2;/*求解S*/A=6356863.020+(10708.949-13.474*(1-sinA0*sinA0)*(1-sinA0*sinA0);B=10708.938-17.956*(1-sinA0*sinA0);C=4.487; y=(1-sinA0*sinA0)*(1-sinA0*sinA0)-2*x*x)*coso;S=A*o+(B*x+C*y)*sino;/*求解A2*/A2=atan(cosu1*sin(r)/(b1*cos(r)-b2);/*判断A2*/if(p0 & q0) A2=fabs(A2);els
18、e if(p0) A2=PI-fabs(A2);else if(p0 & q0)A2=PI+fabs(A2);else A2=2*PI-fabs(A2);/*调用函数*/jx=(int)(du(A1);jy=(int)(fen(A1);jz=miao(A1);kx=(int)(du(A2);ky=(int)(fen(A2);kz=miao(A2);printf(起点大地方位角度分秒分别为:n%dn%dn%lfn,jx,jy,jz);printf(终点大地方位角度分秒分别为:n%dn%dn%lfn,kx,ky,kz);printf(大地线长度为:%lfn,S);/*数据错误*/elseprint
19、f(数据错误,请重新输入n);/*度分秒转换为弧度*/double hudu(double x,double y,double z) double A0; A0=(x+y/60+z/3600)*PI/180;return A0;/*弧度转换为度*/+double du(double B0)double x0;x0=(int)(B0*180/PI);return x0;/*弧度转换为分*/double fen(double C0)double _y,y0; _y=(int)(C0*180/PI);y0=(fabs)(int)(C0*180/PI-_y)*60);return y0;/*弧度转换为
20、秒*/double miao(double D0)double _z1,_z2,z0;_z1=(int)(D0*180/PI);_z2=(int)(D0*180/PI-_z1)*60);z0=(fabs)(double)(D0*180/PI-_z1)*60-_z2)*60);return z0; 七:演算示例 正算 反算正算计算结果303000.00-0.505 246 7861142000.00-0.610 640 7702250000.00-0.707 105 781S10000000.00 0.356 537 8880.5308581490.003 350 562-0.609789472
21、1.766 987 874E-060.7925632244.622 109 698E-10-0.692911606-1.103 777 2801.571 441 3545.270 424 445E-031.055 977 930-374344.13511.393 840 997511632.49761.572 478 988502122.4896-0.609 789 747反算计算结果0.530 858 149-0.656 869 486-0.309 151 2840.682 919 788-0.526 600 0700.400 921 954计算值趋近次数1234-1.100 563 429
22、-1.103 768 055-1.103 777 253-1.103 777 280p-0.705 956 271-0.707 102 492-0.707 105 771-0.707 105 781q-0.708 255 369-0.707 109 082-0.707 105 789-0.707 105 7802245424.67372245959.03902245959.99732250000.00020.999 999 9960.999 998 5940.999 998 5840.999 998 5842.755 182 939E-04-1.677 035 942E-04-1.682 64
23、4 780E-04-1.682 660 878E-041.570 520 8091.572 473 3641.572 478 9731.572 478 989 0.608 797 6010.609 786 9050.609 789 7390.609 789 747-0.692 114 035-0.692 909 315-0.692 911 599-0.692 911 6063.350 558 481E-033.350 561 868E-033.350 561 878E-033.350 561 878E-031.770 381 674E-61.766 997 603E-61.766 987 90
24、1E-61.766 987 874E-64.639 919 221E-104.622 160 703E-104.622 109 841E-104.622 109 695E-10xx5.263 861 5645.270 405 5945.270 424 3925.270 424 446-1.103 768 055-1.103 777 253-1.103 777 280-1.103 777 2801.571 441 354-0.6097897471.055 977 929-0.5052467861.393 840 996502122.4897Y-4.367 643 449E-10S10000000
25、.003八:参考文献1史国友,周晓明,贾传荧. 贝塞尔大地主题正解的改进算法J. 大连海事大学学报,2008,01:15-19. 2郭际明,丁士俊,苏新洲,刘宗泉.大地测量学基础实践教程.武汉:武汉大学出版社,20093裴连磊. 用C语言实现大地主题解算J. 价值工程,2013,20:235-236. 4周振宇,郭广礼,贾新果. 大地主题解算方法综述J. 测绘科学,2007,04:190-191+174+200. 5丁士俊,杨艳梅,史俊波,程新明. 大地主题解算几种不同算法在计算中应注意的问题J. 黑龙江工程学院学报(自然科学版),2013,03:1-5. 6王建强,胡明庆. 贝赛尔大地主题解
26、算分析J. 测绘科学,2012,01:30-31. 7徐晓晗,谢云开,李亚军. 大地主题解算实用算法J. 科学技术与工程,2012,09:2062-2068. 8许厚泽. 关于正反大地主题解算方法的综合研究J. 测量制图学报,1958,04:274-288. . 心得体会学习课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,测绘技术也不断发展,这次课程设计让我进一步了解和掌握大地线是椭球面上最短程曲线的特性以及大地主题解算在测绘学科中的地位和在实际应用中的意义,同时,我也学会利用计算
27、机解决问题的基本技能得到训练和提高,为我走向工作岗位打下一定实践基础。这次课程设计最难得地方就是程序设计,虽然之前学过C语言,但是只是懂得一些基础,而且之前学习了的c语言也忘记的差不多了,所以我又重新开始看书,复习了一下c语言才开始做课程设计在这次课程设计中,我发现教材上有一些印刷错误,虽然问题不大,但对于还不熟悉这门课的我们来说,在学习过程中难免会造成疑惑,多走弯路。此外,教材上的算法虽然简单易懂,但是它在计算系数时是用椭球参数直接代入后化简的公式,一个程序只能依据一个参考椭球,不够灵活。我在此基础上稍微做了修改,可以以不同参考椭球为依据,使程序更具普遍性,让课程设计更完善。回想起起此次课程
28、设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正学以致用,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 虽然课程设计已经结束了,但是在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。学会了合作,学会了运筹帷幄。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健的在社会大潮中走的更远。我会继续努力专业知识,将自己所学学以致用。十:教师评语