白塞尔大地主题解算教学提纲
- 格式:doc
- 大小:121.50 KB
- 文档页数:11
大地主题解算一、实验目的:1. 提高运用计算机语言编程开发的能力;2. 加深对大地主题解算计算公式及辅助参数的理解并掌握计算步骤;3. 通过编程语言实现大地主题解算。
二、工具:Windows XP Mode 环境下的Microsoft Visual C++ 6.0三、注意事项:1. 计算所需变量多,容易混淆;2. 正反算函数的编写;3. 函数调用;4. 弧度与角度之间的转化。
四、实验要求:1. 提交报告,实验总结,编写代码;2. 独立编程,调试运行;3. 上交成果:编写思想,编写过程,问题分析,源代码,计算结果;五、编程过程实现:1. 对白塞尔法大地主题解算有一定的了解,并参考教材P148-P150;2. 由于参数较多,而在C语言环境下很多符号无法定义,需要符合要求的定义符号替代书本上那些无法直接在C语言环境下定义的符号来达到实现实验的目的;3. 程序中采用弧度与度分秒之间转换的函数定义与调用,减轻一定的实验麻烦;4. 在C语言环境下,数学函数fabs代替abs起绝对值作用,atan代替arctan 起反函数作用;5. 程序中尤其注意弧度与角度之间转换,在C语言环境下电脑默认为弧度。
六、源程序代码:#include<stdio.h>#include<math.h>double 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",&k);/*正算*/if(k==1) { double bz,lz,az,S,bz2,lz2,az2,B1,L1,A1,B2,L2,A2,bx,by,lx,ly,ax,ay; int bx2,by2,lx2,ly2,ax2,ay2;doublee2,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",&bx,&by,&bz); printf("请输入大地线起点经度度分秒\n"); scanf("%lf%lf%lf",&lx,&ly,&lz); printf("请输入大地方位角度分秒\n"); scanf("%lf%lf%lf",&ax,&ay,&az); printf("请输入大地线长度\n"); scanf("%lf",&S); /*调用函数*/ B1=hudu(bx,by,bz); L1=hudu(lx,ly,lz); A1=hudu(ax,ay,az); /*白塞尔大地主题解算*/ 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)/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);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-sinu2*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); else q=fabs(q)-PI; L2=L1+q-g/3600/180*PI; /*求A2*/A2=atan(cosu1*sin(A1)/(cosu1*cos(o)*cos(A1)-sinu1*sin(o))); /*判断A2*/ if(sin(A1)<0 && tan(A2)>0) A2=fabs(A2); else if(sin(A1)<0&& tan(A2)<0) A2=PI-fabs(A2); else if(sin(A1)>0 && tan(A2)>0) A2=PI+fabs(A2); else A2=2*PI-fabs(A2); /*调用函数*/bx2=(int)(du(B2));by2=(int)(fen(B2)); bz2=miao(B2);lx2=(int)(du(L2));ly2=(int)(fen(L2)); lz2=miao(L2); ax2=(int)(du(A2)); ay2=(int)(fen(A2)); az2=miao(A2); printf("大地线终点纬度度分秒分别为:\n%d\n%d\n%lf\n",bx2,by2,bz2); printf("大地线终点经度度分秒分别为:\n%d\n%d\n%lf\n",lx2,ly2,lz2);} /*反算*/ else if(k==2) { printf("终点大地方位角度分秒分别为:\n%d\n%d\n%lf\n",ax2,ay2,az2);doublebz,lz,bz2,lz2,az,az2,B1,L1,B2,L2,S,A1,A2,bx,by,lx,ly,bx2,by2,lx2,ly2;int ax,ay,ax2,ay2; doublee2,W1,W2,sinu1,sinu2,cosu1,cosu2,L,a1,a2,b1,b2,g,g2,g0,r,p,q,sino,coso,o,sinA0,x, t1,t2,A,B,C,y;/*以度分秒顺序输入数据*/ printf("请输入大地线起点纬度度分秒\n"); scanf("%lf%lf%lf",&bx,&by,&bz);printf("请输入大地线起点经度度分秒\n"); scanf("%lf%lf%lf",&lx,&ly,&lz); printf("请输入大地线终点纬度度分秒\n"); scanf("%lf%lf%lf",&bx2,&by2,&bz2); printf("请输入大地线终点经度度分秒\n"); scanf("%lf%lf%lf",&lx2,&ly2,&lz2); /*调用函数*/B1=hudu(bx,by,bz); L1=hudu(lx,ly,lz); B2=hudu(bx2,by2,bz2); L2=hudu(lx2,ly2,lz2); /*白塞尔大地主题解算*/ 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*/g0=-662.904266/3600*PI/180;g=0; r=L; while(1){p=cosu2*sin(r); q=b1-b2*cos(r); A1=atan(p/q);/*判断A1*/if(p>0 && q>0)A1=fabs(A1);else if(p>0 && q<0) A1=PI-fabs(A1); else if(p<0 && q<0) A1=PI+fabs(A1); elseA1=2*PI-fabs(A1);sino=p*sin(A1)+q*cos(A1); coso=a1+a2*cos(r);o=atan(sino/coso); /*判断o*/ if(coso>0) o=fabs(o); else o=PI-fabs(o);sinA0=cosu1*sin(A1);x=2*a1-(1-sinA0*sinA0)*coso;t1=(33523299-(28189-70*(1-sinA0*sinA0))*(1-sinA0*sinA0))*0.0000000001;t2=(28189-94*(1-sinA0*sinA0))*0.0000000001; g2=(t1*o-t2*x*sino)*sinA0; /*检验循环次数*/ printf("\ng2=%lf\ng0=%lf\n",g2,g0); if(g2<=g0) break; elser=L+g2;A=6356863.020+(10708.949-13.474*(1-sinA0*sinA0))*(1-sinA0*sinA0); } /*求解S*/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(p<0 && q<0)A2=fabs(A2);else if(p<0 && q>0) A2=PI-fabs(A2); else if(p>0 && q>0) A2=PI+fabs(A2); elseA2=2*PI-fabs(A2);/*调用函数*/ax=(int)(du(A1));ay=(int)(fen(A1)); az=miao(A1); ax2=(int)(du(A2)); ay2=(int)(fen(A2)); az2=miao(A2);printf("起点大地方位角度分秒分别为:\n%d\n%d\n%lf\n",ax,ay,az);}/*度分秒转换为弧度*/double hudu(double a0,double b0,double c0){double A0; A0=(a0+b0/60+c0/3600)*PI/180; } /*数据错误*/ else printf("数据错误,请重新输入\n"); printf("终点大地方位角度分秒分别为:\n%d\n%d\n%lf\n",ax2,ay2,az2); printf("大地线长度为:%lf\n",S); 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);}/*弧度转换为秒*/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; y0=(fabs)((int)((C0*180/PI-_y)*60)); return y0;大地主题解算正算:大地主题解算反算:以上检验数据来自书本P151,P152。
白塞尔大地主题解算的基本思想
首先,白塞尔大地主题解算的基本思想之一是建立地壳变形的力学模型。
地壳变形是地球表面的一项重要现象,是由于地质作用和地球内部力
学过程的结果。
地壳变形的力学模型是研究地壳变形的重要方法。
常见的
地壳变形的力学模型有弹性模型、弹塑性模型和拟弹性模型等。
这些模型
可以描述地壳的变形过程,通过对地壳的变形过程进行建模,可以更好地
理解地壳变形的机制和动力学过程。
其次,白塞尔大地主题解算的思想之一是研究现今地球表面的动力学
过程。
地球表面的动力学过程包括板块运动、地震活动、火山喷发等。
这
些过程在地球的长期演化中起着重要的作用。
通过对现今地球表面动力学
过程的研究,可以揭示地球内部的结构和动力学机制,进而更好地理解地
壳变形的成因和发展变化的规律。
第三,白塞尔大地主题解算的基本思想之一是研究地壳变形的成因。
地壳变形的成因是地壳运动的基本原因,也是地球科学研究的一个重要问题。
地壳变形的成因包括构造运动、地壳应力状态的改变、地震活动等。
通过研究地壳变形的成因,可以更好地了解地壳变形的机制和规律,进而
为地震预测和地壳运动的控制提供科学依据。
总之,白塞尔大地主题解算的基本思想是通过建立地壳变形的力学模型,研究现今地球表面的动力学过程,探究地壳变形的成因,揭示地壳变
形与地球动力学过程之间的相互关系,以推动地壳运动的理论和应用研究。
这一思想对于研究地壳运动的机制和规律,了解地壳变形的成因和动力学
过程,提高地震预测和地壳运动控制的水平具有重要意义。
作业一:1、 请说明大地测量学与控制测量学的定义,阐述它们之间的关系。
答:大地测量学是在一定时间-空间参考系统中,测量和描绘地球及其他行星体的一门学科。
控制测量学是研究精确测定和描绘地面控制点空间位置及其变化的学科。
控制测量是在大地测量学基本理论基础上以工程建设测量为主要服务对象而发展和形成的。
可以说大地测量学是控制测量学的理论指导,控制测量是大地测量在工程实践中的具体应用。
2、 结合自己的感受,说明学习本课程的目的。
略3、 有两个已知点A 、B ,在A 上架全站仪观测P 点坐标,如图1。
两已知点坐标分别为: A :(100,200),B :(200,300)但在现场操作全站仪时,误将测站A 的坐标输为另一个控制点C 的坐标(200,250),用坐标定向时又误将控制点D 的坐标(200,400)当作B 点输入了仪器,此时测得P 点的 坐标为(300,300),试求P 点的真实坐标应该是多少?(提示:先建以A 为原点的辅助坐标系旋转,再平移)解:(以数学坐标系解,以便和教材公式对应,也可以测量坐标系解,见后图)一、以A 点为原点建立辅助坐标系: 1、 由于先误以C 、D 点数据观测的P 点坐标,设C (A )点为原点,因为αCD =90O ,故CD(AB)方向为90度方向即Y ’’轴,顺时针90度方向为X ’’轴。
P 点在此坐标系中坐标为[x ’’,y ’’]T =[100,50]T2、 实际上αAB =45O ,故以A 点为原点,以真实的方向建立坐标系:AB 逆时针45O 为Y ’轴,顺时针为45O X ’。
此坐标系可由X ’’CY ’’逆时针转θ=45O 得到。
故P 点在此坐标系中坐标为:⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡''''cos sin sin cos ''y x y x θθθθ二、坐标系平移:前述[x ’,y ’]T 为以A 点为原点建立的坐标系,实际情况为A 点坐标为(100,200),即将X ’AY ’平移Δx=100, Δy=200可得P 点在XOY 坐标系中实际坐标:⎥⎦⎤⎢⎣⎡∆∆+⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡y x y x y x ''''cos sin sin cos θθθθ 三、代入数据⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡+⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡645.164066.2062001005010045cos 45sin 45sin 45cos O O O Oy x从测量坐标系中求解示意图,注意:测量坐标系的欧勒角正方向为顺时针。
一、解释下列术语(每个2分,共10分)大地水准面球面角超底点纬度高程异常水准标尺零点差二、填空(1-15小题每空1分;16题4分,共36分)1、在地球自转中,地轴方向相对于空间的变化有______和_____。
2、时间的度量单位有______和______两种形式。
3、重力位是______和_____之和,重力位的公式表达式为_______。
4、椭球的形状和大小一般用_______来表示。
5、在大地控制网优化设计中把_____、______和_____作为三个主要质量控制标准。
6、测距精度表达式中,的单位是______,表示的意义是_____;的单位是______,表示的意义是_____。
7、利用测段往返不符值计算的用来衡量水准测量外业观测的精度指标用_____来表示,其意义是______。
8、利用闭合环闭合差计算的用来衡量水准测量外业观测的精度指标用_____来表示,其意义是______。
9、某点在高斯投影3°带的坐标表示为XA=3347256m, YA=37476543m,则该点在6°带第19带的实际坐标为xA=___________________,yA=___________________。
10、精密水准测量中每个测段设置______个测站可消除水准标尺______零点差的影响。
11、点P从B=0°变化到B=90°时,其卯酉圈曲率半径从______变化到_____。
12、某点P的大地纬度B=30°,则该点法线与短轴的交点离开椭球中心的距离为_____。
13、高斯投影中,_____投影后长度不变,而投影后为直线的有_____,其它均为凹向_____的曲线。
14、大地线克莱劳方程决定了大地线在椭球面上的_______;在椭球面上某大地线所能达到的最大纬度为60°,则该大地线穿越赤道时的大地方位角表达式为_____(不用计算出数值)。
大地测量实验报告实验名称:白塞尔大地主题解算(正算和反算)实验目的:1.通过编写白塞尔大地主题电算程序进一步掌握白塞尔法解算大地主题的基本思想。
2.熟练掌握将椭球面上的大地元素按照白塞尔投影条件投影到辅助球面上,继而在球面上进行大地主题解算,最后再将球面上的计算结果换算到椭球面上的基本方法和步骤。
3.学会掌握计算机编程的基本能力。
实验环境:Microsoft Visual C++注意事项:1.在编写程序的过程当中要注意代码的前后统一和重复。
2.注意数值类型的转换和度分秒的换算。
实验步骤:正算:1.计算起点的规划纬度2.计算辅助函数值3.计算系数A,B,C及d,e.4计算球面长度5.计算经度差改正数6.计算终点大地坐标及大地方位角。
反算:1.进行计算辅助函数值2.用逐次趋近法同时计算起点大地方位角、球面长度及经差。
3.计算系数A,B,C及大地线长度S.4.计算反方位角及确定符号。
程序源代码:正算:#include<stdio.h>#include<math.h>#define ee 0.006694384999588#define I 3.141592653double F(double,double,double);void main(void){double A1,B1,L1,S,A2,B2,L2; double x1,x2,x3,y1,y2,y3,z1,z2,z3; double W1,sinu1,sinu2,cosu1,sinA0;doublecota1,cos2a1,sin2a1,cosA0A0;double A,B,C,d,e,a0,a1,m;double n,a,Q,R;printf("请输入数据B1= "); scanf("%lf %lf %lf",&x1,&x2,&x3);B1=F(x1,x2,x3);printf("请输入数据L1= "); scanf("%lf %lf %lf",&y1,&y2,&y3);L1=F(y1,y2,y3);printf("请输入A1= ");scanf("%lf %lf %lf",&z1,&z2,&z3);A1=F(z1,z2,z3);printf("请输入S= ");scanf("%lf",&S);printf("B1=%f\n",B1);printf("L1=%f\n",L1);printf("A1=%f\n",A1);printf("S=%f\n",S);/*计算起点的规划纬度*/W1=sqrt(1-ee*sin(B1)*sin(B1));sinu1=sin(B1)*sqrt(1-ee)/W1;cosu1=cos(B1)/W1;printf("W1=%f\n",W1);printf("sinu1=%f\n",sinu1);printf("cosu1=%f\n",cosu1);/*计算辅助函数值*/sinA0=cosu1*sin(A1);cota1=cosu1*cos(A1)/sinu1;sin2a1=2*cota1/(cota1*cota1+1);cos2a1=(cota1*cota1-1)/(cota1*cota1+1);printf("sinA0=%f\n",sinA0);printf("cota1=%f\n",cota1);printf("sin2a1=%f\n",sin2a1);printf("cos2a1=%f\n",cos2a1);/*计算系数ABC及de*/cosA0A0=1-sinA0*sinA0;A=6356755.288+(10710.341-(13.534*cosA0A0))*cosA0A0;B=(5355.171-9.023*cosA0A0)*cosA0A0;C=(2.256*(cosA0A0))*cosA0A0+0.006;d=691.46768-(0.58143-0.00144*cosA0A0)*cosA0A0;e=(0.2907-cosA0A0*0.0010)*cosA0A0;printf("cosA0A0=%f\n",cosA0A0);printf("A=%f\n",A);printf("B=%f\n",B);printf("C=%f\n",C);printf("d=%f\n",d);printf("e=%f\n",e);/*计算球面长度*/a0=(S-(B+C*cos2a1)*sin2a1)/A;m=sin2a1*cos(2*a0)+cos2a1*sin(2*a0);n=(cos2a1)*(cos(2*a0))-(sin2a1)*(sin(2*a0));a=a0+((B+5*C*n))*m/A;printf("a0=%f\n",a0);printf("m=%f\n",m);printf("n=%f\n",n);printf("a=%f\n",a);/*计算经度差改正数*/Q=(d*a+(e*(m-sin2a1))/3600/180*I)*sinA0;printf("Q=%f\n",Q);/*计算终点大地坐标及大地方位角*/sinu2=sinu1*cos(a)+cosu1*cos(A1)*sin(a);B2=180*atan(sinu2/((sqrt(1-ee))*(sq rt(1-sinu2*sinu2))))/I;R=180*atan(sin(A1)*sin(a)/(cosu1*co s(a)-sinu1*sin(a)*cos(A1)))/I;printf("sinu2=%f\n",sinu2);printf("B2=%f\n",B2);printf("R=%f\n",R*180/I);/*确定R的值*/if(sin(A1)>0 && tan(R)>0)R=abs(R);else if(sin(A1)>0 && tan(R)<0)R=I-abs(R);else if(sin(A1)<0 && tan(R)<0)R=-abs(R);elseR=abs(R)-I;/*确定L2A2的值*/L2=(L1*180/I+R-(Q/206265*180/I));A2=atan(cosu1*sin(A1)/(cosu1*cos(a) *cos(A1)-sinu1*sin(a)));if(sin(A1)<0&&tan(A2)>0)A2=(fabs(A2))*180/I;else if(sin(A1)<0&&tan(A2)<0)A2=(I-fabs(A2))*180/I;else if(sin(A1)>0&&tan(A2)>0)A2=(I+fabs(A2))*180/I;elseA2=(2*I-fabs(A2))*180/I;printf("A2=%3f\n B2=%3f\nL2=%3f\n",A2,B2,L2);}double F(double a2,double b2,doublec2){double d2;d2=(double)(a2+1.0*b2/60+1.0*c2/3600);d2=(d2/180)*I;return (d2);}注:A1,B1,L1,S分别为大地线起点的大地方位角、纬度、经度、大地线长;B2,L2,A2为大地线终点纬度、经度及方位角。
下载温馨提示:该文档是学者精心编制而成,希望能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,我们为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!大地测量学基础(高起专)单选题1. _______要求在全球范围内椭球面与大地水准面有最佳的符合,同时要求椭球中心与地球质心一致或最为接近。
(A) 地心定位(B) 单点定位(C) 局部定位(D) 多点定位标准答案是::A2. _______用于研究天体和人造卫星的定位与运动。
(4分)(A) 参心坐标系(B) 空间直角坐标系C) 天球坐标系(D) 站心坐标系标准答案是::C3. 地球坐标系分为大地坐标系和_______两种形式。
(4分)(A) 天球坐标系(B) 空间直角坐标系(C) 地固坐标系(D) 站心坐标系标准答案是::B4. 地球绕地轴旋转在日、月等天体的影响下,类似于旋转陀螺在重力场中的进行,地球的旋转轴在空间围绕黄极发生缓慢旋转,形成一个倒圆锥体,旋转周期为26000年,这种运动成为_______。
(4分)(A) 极移(B) 章动(C) 岁差(D) 潮汐标准答案是::C5. 以春分点作为基本参考点,由春分点周日视运动确定的时间,称为_______。
(4分)(A) 恒星时(B) 世界时(C) 协调世界时(D) 历书时标准答案是::A多选题6. 下列属于参心坐标系的有:_______。
(4分)(A) 1954年北京坐标系(B) 1980年国家大地坐标系(C) WGS-84世界大地坐标系(D) 新1954年北京坐标系标准答案是::A,B,D7. 下列关于大地测量学的地位和作用叙述正确的有:_______。
(4分)(A) 大地测量学在国民经济各项建设和社会发展中发挥着基础先行性的重要保证作用。