第一篇:大地测量上机实习报告
题目: 大地测量学上机实习
学 号:
姓 名: 班 级:
专 业: 测绘工程 课程名称: 大地测量学基础 课程老师:
大地测量学上机实习报告
一、实习目的:
了解大地测量学的定义以及作用,让同学们充分了解大地测量学在现代社会的重要地位及其广泛的应用,让同学们体验大地测量的一些解题计算方法与运用。也让同学们对于复杂的测绘计算如何用计算机通过编程来解决,同时对于坐标转化和高斯投影的处理方法进行一定的了解。
二、实习任务:
1、2、空间坐标转换编程; 高斯投影正算编程;
3、高斯投影反算编程;
三、实习时间与地点:
地点:核工楼410教室;
时间:每周四上午一二节课,共三周;
四、实习仪器:
电脑,C++编程软件;
5、实习步骤: 5.1实验方法步骤
1、先了解书本上关于大地主题解算的步骤;
2、根据公式用VC编写程序
3、对编写的程序代码进行调试运行 5.1.1大地坐标空间直角坐标系转换
X(NH)cosBcosL1)空间大地坐标系向空间直角坐标系的转换公式为:Y(NH)cosBsinLZ[N(1e2)H]sinB式中,Na,a为椭球的长半轴,N为椭球的卯酉圈曲率半径a=6378.137km W W1e2sin2B,e2a2b2a2,e为椭球的第一偏心率,b=6356.7523141km。
2)程序代码 #include
a=a/180*PI;return a;} void deg(double d,int *d1,int *d2,double *d3){d=d/PI;*d1=(int)d;*d2=(int)((d-*d1)*60);*d3=((d-*d1)*60-*d2)*60;} void X1(double a1,double e){double l,b,h,x,y,z,a,b1,c,n,w;printf(“please input L:n”);scanf(“%lf%lf%lf”,&a,&b1,&c);l=rad(a,b1,c);
b为椭球的短半轴 printf(“please input B:n”);scanf(“%lf%lf%lf”,&a,&b1,&c);b=rad(a,b1,c);printf(“please input H:n”);scanf(“%lf”,&h);w=sqrt((1-e*e*sin(b)*sin(b)));n=a1/w;x=(n+h)*cos(b)*cos(l);y=(n+h)*cos(b)*sin(l);z=(n*(1-e*e)+h)*sin(b);printf(“X=%fnY=%fnZ=%fn”,x,y,z);} void X2(double a1,double e){double l,b,h,x,y,z,n,w,m,g,m1,g1,l3,b3;int l1,l2,b1,b2;printf(“please input X:n”);scanf(“%lf”,&x);printf(“please input Y:n”);scanf(“%lf”,&y);printf(“please input Z:n”);scanf(“%lf”,&z);l=atan2(y,x);do{m=(z+a1*e*e*g/sqrt(1+g*g-e*e*g*g))/sqrt(x*x+y*y);m1=atan(m);g1=atan(g);m1=m1/PI*180*3600;g1=g1/PI*180*3600;g=m;} while(sqrt((m1-g1)*(m1-g1))>0.0001);b=atan(m);w=sqrt(1-e*e*sin(b)*sin(b));n=a1/w;h=sqrt(x*x+y*y)/cos(b)-n;deg(l,&l1,&l2,&l3);deg(b,&b1,&b2,&b3);printf(“L=%d°%d'%2.6f''nB=%d°%d'%2.6f''nH=%5.6fmn”,l1,l2,l3,b1,b2,b3,h);} void f(int a){double a1,e,e2;int b,c;printf(“please input L,B,H→X,Y,Z:请输入1 或 X,Y,Z→L,B,H:请输入2n”);scanf(“%d”,&b);printf(“请选择参考椭球面:n克拉索夫斯基椭球(请输入1)n或 IUGG 1975椭球(请输入2)n或 CGCS 2000椭球(请输入3)n或WGS-84椭球体(请输入4)”);scanf(“%d”,&c);if(c==1){a1=6378245.0000,e2=0.00669342162297;} else if(c==2){a1=6378140.0000,e2=0.00669438499959;} else if(c==3){a1=6378137.0000,e2=0.00669438002290;} else if(c==4){a1=6378137.0000,e2=0.00669437999013;};e=sqrt(e2);if(b==1)X1(a1,e);else if(b==2)X2(a1,e);} main(){int a=1;do {f(a);printf(“A,B,0n”);scanf(“%d”,&a);} while(a);} 调试运行:
5.1.2高斯投影正算
1)由第二条件知 : 位于中央子午线上的点,投影后的纵坐标 x 应等于投影前从赤道量至该点的子午线弧长 X,即(8-33)式第一式中,当 有:
顾及(对于中央子午线)
时
得:
依次求得
并代入(8-33)式,得到高斯投影正算公式
2)程序代码: #include
x=X+(N/(2*p*p))*sin(B)*cos(B)*l*l+(N/(24*p*p*p*p))*sin(B)*cos(B)*cos(B)*cos(B)*(5-t*t+9*n)*l*l*l*l;y=(N/p)*cos(B)*l+(N/(6*p*p*p))*cos(B)*cos(B)*cos(B)*(1-t*t+n)*l*l*l+(N/(120*p*p*p*p*p))*cos(B)*cos(B)*cos(B)*cos(B)*cos(B)*(5-18*t*t+t*t*t*t)*l*l*l*l*l;printf(“x=%lfny=%lfn”,x,y);return 0;} 运行调试结果:
5.1.3高斯投影反算 公式
BBftftf2MfNf5fy2tf24MfN3f53t2f22429tyfff720MfNNfy6190t2t4y6f45flyy32212tffcosBf6N3cosBffy5120N5fcosBf2)程序代码: #include
528t2f224t422f6f8ftf#define PI 3.14***932 #define P 206264.806247096355 void main(){ long double RadianToAngle(long double alfa);long double Bf(long double a,long double b,long double x);void GSFS(long double a,long double b,long double Bf,long double y,long double *B,long double *l);long double a,b,x,y,L0;long double FSB,FSL;long double *pointer_B,*pointer_L;long double DH;pointer_B=&FSB;pointer_L=&FSL;a=6378140.0000000000;b=6356755.2881575287;printf(“请输入x坐标和y坐标:(输入时x坐标和y坐标之间用逗号隔开)n”);scanf(“%lf,%lf”,&x,&y);FSB=Bf(a,b,x);DH=floor(y/1000000);y=y-DH*1000000-500000;GSFS(a,b,FSB,y,pointer_B,pointer_L);FSB=RadianToAngle(FSB);FSL=RadianToAngle(FSL);L0=DH*6-3;printf(“nt===========================计算结果===========================n”);printf(“nttB=%-20.10lfttL=%-20.10lfn”,FSB,DH*6-3+FSL);printf(“nt===============n”);} long double RadianToAngle(long double alfa){ long double alfa1,alfa2;alfa=alfa*180./PI;alfa1=floor(alfa)+floor((alfa-floor(alfa))*60.)/100.;alfa2=(alfa*60.-floor(alfa*60.))*0.006;alfa1+=alfa2;return(alfa1);} long double Bf(long double a,long double b,long double x){ long double e,m0,m2,m4,m6,m8;long double a0,a2,a4,a6,a8;long double B,FB,Bn1,Bn;int n=0;e=(sqrt(a*a-b*b))/a;m0=a*(1-e*e);m2=3.0/2.0*e*e*m0;m4=5.0/4.0*e*e*m2;m6=7.0/6.0*e*e*m4;m8=9.0/8.0*e*e*m6;a0=m0+m2/2.0+3.0/8.0*m4+5.0/16.0*m6+35.0/128.0*m8;a2=m2/2.0+m4/2.0+15.0/32.0*m6+7.0/16.0*m8;a4=m4/8.0+3.0/16.0*m6+7.0/32.0*m8;a6=m6/32.0+m8/16.0;a8=m8/128.0;B=x/a0;FB=a2/2.0*sin(2*B)-a4/4.0*sin(4*B)+a6/6.0*sin(6*B)-a8/8.0*sin(8*B);do { Bn=B;B=(x+FB)/a0;FB=a2/2.0*sin(2*B)-a4/4.0*sin(4*B)+a6/6.0*sin(6*B)-a8/8.0*sin(8*B);Bn1=B;} while(fabs((Bn1-Bn)*P)>=0.000000000001);return(B);} void GSFS(long double a,long double b,long double Bf,long double y,long double *B,long double *l){ long double e,e1,V,t,u2;long double n0,n2,n4,n6,n8,sin2B,sin4B,sin6B,sin8B,N;e=(sqrt(a*a-b*b))/a;e1=(sqrt(a*a-b*b))/b;V=sqrt(1+e1*e1*cos(Bf)*cos(Bf));t=tan(Bf);u2=e1*e1*cos(Bf)*cos(Bf);n0=a;n2=1.0/2.0*e*e*n0;n4=3.0/4.0*e*e*n2;n6=5.0/6.0*e*e*n4;n8=7.0/8.0*e*e*n6;sin2B=pow(sin(Bf),2);sin4B=pow(sin(Bf),4);sin6B=pow(sin(Bf),6);sin8B=pow(sin(Bf),8);N=n0+n2*sin2B+n4*sin4B+n6*sin6B+n8*sin8B;
*B=Bf-1.0/2.0*V*V*t*((y/N)*(y/N)-1.0/12.0*(5+3*t*t+u2-9*u2*t*t)*pow((y/N),4)+1.0/360.0*(61+90*t*t+45*pow(t,4))*pow((y/N),6));*l=1.0/cos(Bf)*((y/N)-1.0/6.0*(1+2*t*t+u2)*pow((y/N),3)+1.0/120.0*(5+28*t*t+24*pow(t,4)+6*u2+8*u2*t*t)*pow(y/N,5));} 3)运行结果:
7、实习总结:
通过这次大地坐标转换及高斯投影正反算程序代码编写设计的上机操作学习,我更加了解了如何运用计算机编程去处理复杂的测绘计算,并且也知道了对于编程时遇到的一般问题该如何解决,对于坐标转换和高斯正反算的一些理念也有一定的了解。本次实习,利用计算机编程来实现测量数据的处理,让我对坐标系之间的转化,高斯投影正反算的原理以及计算过程有了更深刻的理解和记忆,感觉受益匪浅。不过在本次实习期间,也出现了一些小问题。在编写程序的时候,略显生疏,花费了较多的时间,以后有待提高;对于计算公式中的有的字母,忘记其所代表的具体意义,不过最终通过复习,搞明白每一个字母的含义。
实习就是一个理论与实践相结合的过程,希望自己能在这一方面有更大的进步!
第二篇:大地测量实习报告
控制测量实习心得
通过测量实习,首先我学到了很多,比如对仪器的操作更加熟练,加强了对所学 知识的理解和掌握,很大程度上提高了动手和动脑的能力。书上得来终觉浅,绝知此事要躬行。在实习中,面对的是实实在在的任务,来不得半点推委和逃避,野外作业也没有给你回去翻书的时间,一切都必须在现场解决。因此,这让我深 深明白理论知识的重要,在学校余下的时间里,我要安心把所学的理论知识进行 梳理和回顾,做到胸中有沟壑,一目了然。为以后实际的工作打下坚实的基础。其次,拓展了与人交际、合作的能力。我深感一次测量工作的圆满完成,单靠一 个人的力量和构思是远远不够的,只有小组的合作和团结才能快速而高效。因此,在以后的工作中自己在不断加强业务能力的同时,要学会和同伴和睦相处,学会 包容,学会忍受。再次,通过实习我也认识到虚心求教的重要性。在工作中,同伴有的只是中专或 者中学学历,他们没有受过高等教育,在理论知识上他们往往有些欠缺,但是他 们丰富的经验却是一种宝贵的财富,这种财富在课本上是学习不到的。因此,在 以后的工作中需要向常年工作在一线的测绘工作人员学习,不能摆架子,耍脾气。虚心求教,认真学习,坚持理论和实际相结合,使自己更快的成为一名合格的工 程人员 一次测量实习要完整的做完,单单靠一个人的力量和构思是远远不够的,只 有小组的合作和团结才能让实习快速而高效的完成。而这些,就是在测量之外所 收获的了。小组成员的合作很重要,实习小组的气氛很大程度上影响实验的进度。此次外业实习的每个步骤都以了然于胸,对于书本上的知识已基本掌握,这样来 讲,也就没有太多的遗憾了。测量也是一项务实求真的工作,半点马虎都不行,在测量实习中必须保持数据的原始性,这也是很重要的。为了确保计算的正确性和有效性,必须得反复核对各个测点的数据是否正确。我在测量中不可避免的犯下一些错误,比如读数不够准确,气泡没居中等等,都会引起一些误差。因此,我在测量中内业计算和测量同时进行,这样就可以及时发现错误,及时纠正,同时也避免了很多不必要的麻烦,节省了时间,也提高了工作效率。测量也是一项精确的工作,通过测量学的学习和实习,在我的脑海中形成了一个基本的测量学的轮廓。测量学内容主要包括测定和测设两个部分,要完成的任务在宏观上是进行精密控制,从微观方面讲,测量学的任务为按照要求测绘各种比例尺地形图;为各个领域提供定位和定向服务,建立工程控制网,辅助设备安装,检测建筑物变形的任务以及工程竣工服务等。而这一任务是所有测量学的三个基本元素的测量实现的:角度测量、距离测量、高程测量。对于水准测量我还有几点注意要说:1 标尺要立直,尽量避免晃动,有晃动时,应该选择数据最小的时候进行读取。在读数前一定将水准仪视野的水准气泡调平,否则造成的误差会很大。2 当用经纬仪测量角度时,如果目标较小,最好使 单线与目标重合,如果目标有一定宽度,可以用双丝夹住目标。3 在测量时候一 定要小心,因为稍微碰了一下仪器,就要重新调整对中水平,否则就会导致数据 错误,也可能导致仪器的损坏。4 在读取数据时,每位成员都要细心,既要看得 准,还要果断,不能犹豫不决,任何人的一个小错误都有可能导致最终的成果的。
在这次实习中,我学到了测量的实际能力,更有面对困难的忍耐力。首先,是熟悉了水准仪、、全站仪的用途,熟练了水准仪、全站仪的使用方法,掌握了仪器的检验和校正的方法;其次,在对数据的检查和校正的过程中,明白了各种测量误差的来源,其主要有三方面:仪器误差、外界影响误差(如温度、大气折射等)、观测误差。了解如何避免测量结果误差,最大限度的就是减少误差的出现,即要做到:
1、在仪器选择上要选择精度较高的合适仪器。
2、提高自身的测量水平,降低误差。
3、通过各种处理数据的数学方法如:多次测量取平均数等来减少误差。除此之外,还应掌握一套科学的测量方法,在测量中要遵循一定的测量
原则,如“从整体带局部”、“先控制后碎步”、“由高级到低级”的工作原则,并做到步步有检核。这样做不但可以防止误差的积累,及时发现错误,更可以提高测量的效率。通过工程实践,学会了数字化地形图的绘制和碎步的测量等课堂上无法做到的东西,很大程度上提高了动手和动脑的能力。我觉的不管什么时候,自己都应该去伸手去拿,而不是等着别人拿东西给你。不是有句话说机会总是给又准备的人吗。我们在平常就应该让自己全面的发展。利用可以利用的一切资源,去发掘自己的潜力,让知识武装自己。只有这样你才能成为一个强者。实习的结束,只是一个时期的结束。自己学到的体会到的会对将来自己的学习工作生活起到积极的作用。学习是一个没有尽头的事情。只有去坚持,不懈的努力,你才会收获自己想要的。
两周以来,我们都坚守在自己的“阵地”,观测、记录、计算、描点.....我们分工合作,力求更好地完成任务。在测量过程中,我们也有遇到了很多问题,疑难以及困难。通过老师的提点以及我们的认真地对待还是很好的克服了。非常感谢这一次实习,为我们提供了一个共同学习,共同进步,团结合作完成一项项目的机会,我从中受益颇多。
我们在实习过程中,不可避免的遇到了一些困难,在我们实习之初,我还有点担心测不好,担心只有三个星期的测量时间,自己不能按时的完成任务,但是,经过我们小组的反复测量,我们的团结、默契,克服了测量中的种种问题,终于按时完成了任务。在测量实习的过程中,我们也遇到了各种各样的困难。比如:
(1)立标尺时,标尺除立直外,还应选在重要的地方。因此,选点就非常重要,点一定要选在有代表性的地方,同时要注意并非点越多越好,相反选取的无用点过多不但会增加测量,计算和绘图的劳动量和多费时间,而且会因点多而杂乱产生较大的误差。
(2)在用水准仪和全站仪测量的过程当中,有的过程出现了大的误差,经过我们的重新测量计算,误差范围也减小到了可以允许的范围里。
(3)还有就是计算问题,计算必须由两个人完成,一个初步的计算,一个检验,不过,在此过程当中,也还是出现了计算错误的问题,我们在不断的重复检验之中算出了正确的数值,尽量让误差减少到了最少。比较难的还是检验校核,不过,我之所以认为它难,也是因为在此之前不是很会计算它,在这次实习中,我又重新了解它的计算方法,现在也能自己把它计算检验出来了,顿时觉得校核也并不如自己想像中的那么难。
在实习过程中,也发现实习的普及非常重要。我国政府为推进经济建设而进行的多年的教育活动,取得了很大成就。人们的观念、意识都有了很大的提高。但是在经济发展的深度与广度上还有一些不足。我们的活动不能只做表面文章,要深入实际,真真正正的让人们了解含义。并在这个基础上,逐步确立人们对经济发展的信仰,确立经济发展神圣地位,只有这样我们国家的经济建设才有希望
第三篇:大地测量实习报告
《大地测量基础》
实 验 指 导 书
黄
鹤 编
班级:
测111
姓名:
曹毕铮
学号:
2103061111141
测绘工程系
2013.11
实验一 利用EGM2008模型绘制中国大地水准面
一、GMT软件的安装
1.1 DOS界面输入命令
1.2 运行W4Gsetup.exe
1.3 安装成功
二、简述大地水准面定义
大地水准面是由静止海水面并向大陆延伸所形成的不规则的封闭曲面。它是重力等位面,即物体沿该面运动时,重力不做功(如水在这个面上是不会流动的)。
大地水准面是描述地球形状的一个重要物理参考面,也是海拔高程系统的起算面。大地水准面的确定是通过确定它与参考椭球面的间距——大地水准面差距(对于似大地水准面而言,则称为高程异常)来实现的。
三、EGM96模型
3.1 输入命令
3.2 运行
3.3 结果
四、出现的问题、解决的途径和心得
完成试验任务的一开始,需要安装EMT软件,首先遇到的问题就是安装不成功,手头没有xp系统的软件,决定去机房,但是安装软件过程涉及需要重启电脑,重启后机房电脑又自动清楚之前的操作。最后,找了一台特别卡的古董级电脑装上了软件。
完成实验一时,由于不清楚命令的含义,所以半天执行不出结果,在看了指导书之后,明白了其中一行代码表示读取辅助数据的路径,因此,改了路径之后,成功的完成了试验一。
对于试验一,我最大的收获是对照着命令说明,可以看懂老师给出的命令代码的意思。懂得了如何粘贴命令并稍加改正实现自己想要的效果。
实验二:利用任意一种投影绘制地图
一、采用投影----高斯-克吕格投影
1.1 基本概念:
假想有一个椭圆柱面横套在地球椭球体外面,并与某一条子午线(此子午线称为中央子午线或轴子午线)相切,椭圆柱的中心轴通过椭球体中心,然后用一定投影方法,将中央子午线两侧各一定经差范围内的地区投影到椭圆柱面上,再将此柱面展开即成为投影面,如图2所示,此投影为高斯投影。高斯投影是正形投影的一种。
1.2 地图投影要求
1)应当采用等角投影(又称为正形投影)
采用正形投影时,在三角测量中大量的角度观测元素在投影前后保持不变;在测制的地图时,采用等角投影可以保证在有限的范围内使得地图上图形同椭球上原形保持相似。
(2)在采用的正形投影中,要求长度和面积变形不大,并能够应用简单公式计算由于这些变形而带来的改正数。(3)能按分带投影
1.3 投影方式
(1)等角投影——投影前后的角度相等,但长度和面积有变形;(2)等距投影——投影前后的长度相等,但角度和面积有变形;(3)等积投影——投影前后的面积相等,但角度和长度有变形。
二、绘图
2.1 绘制我国地图
从网上查得,我国经纬范围为
北纬4°-53°30′,东经73°40′-135°05′
2.2 相应代码
xyz2grd-R73/153/4/53 EGM96ChinaN.dat-GEGM96ChinaN.grd-I30m –V surface-R73/153/4/53 EGM96ChinaN.dat-GEGM96ChinaN.grd-I1m-V makecpt-CGMT_rainbow-T-100/60/1 >g_n.cpt grdimage EGM96ChinaN.grd-Jm0.095i-Cg_n.cpt-K-P-V> EGM96ChinaN.ps pscoast-W1/43-R70/140/15/55-Jm0.095i-B10g5-Dh-Na/1/43-A500-K-O-P-V >> EGM96ChinaN.ps
2.3 执行过程
2.4 结果
三、出现的问题、解决的途经和心得
为了概括投影的原理和特点,我翻阅了以前的书籍,《新编地图制图学教程》,对地图投影这一章重新翻看了一遍,对地图投影的概念、变形、分类和选择有了更深的认识。巩固了以前的基础知识。
第四篇:大地测量实习报告1范文
大地测量实习报告
<一> 二等精密水准测量
观测过程
1.熟悉观测的地形 观测水塔公园及北辰楼地带,一共有11个水准点,则有11个测段。每一测段往返测设偶数站按后前前后的顺序进行测量。
2.开始观测(1)置平仪器,使水准气泡居中不得超过1cm。(2)用望远镜照准后视水准标尺,上下丝分别照准标尺基本分划进行视距读书。视距读取四位,前四位估读,记下读数。然后,使用测微螺旋用锲行平分线精确照准标尺的基本分划,读取基本分划和测微分划的读数,接着将平分线照准标准尺的辅助分划,读取辅助分划和测微分划的读数,测微分划读数取至测微器最小分划。(3)旋转望远镜照准前视标尺再进行读数,记下读数,一测站完成,接着到下一测站,往测完成后按同样的方法进行反测。
注意的问题
1.水准仪观测时,仪器距前后视水准标尺的距离尽量相等,其差应小于规定的限差,且前后视标准尺与测站尽量位于一直线上。
2.在立尺的过程中应尽量使标尺的气泡居中,这是我们在观测过程中遇到的最大的问题,因此我们找来两根木棍来固定,否则基辅分划读数之差超过限差。
<二> 一级导线测量
观测过程
1.先按等级精度确定测回数,进行往返2个测回。
2.选择距离适中,通视良好,成像清晰的方向作为零方向,调焦消除视差后,照准零方向安置度盘。
3.对中整平,设置好全站仪里的相关要素,棱镜系数,温度,气压等
4.进行观测,先是盘左对准一棱镜方向,按下方向读数和距离读数,再顺时针照准另一方向,读下方向和距离,上半测回完成;然后顺时针换为盘右照准方向读数,下半测回完成,这样一测回就完成了,一测站上一共测两个测回数,完成一测站后再到下一测站,最后完成一闭合导线测量。
注意的问题
1.观测过程中水准气泡要居中,水准管气泡中心偏离不得超过一格
2.我们在观测的过程中发现测站之间的距离差有很大,应在15mm内,原因是棱镜的系数设置错误,经校正后在限差范围内。
<三> 实习体会
在实习的过程中我体会到了实习的艰辛,要有吃苦耐劳的精神,要不怕观测时所带来的腿酸,要不怕观测是的雨打日晒,同时在测量中要一丝不苟,做到百分之百的集中,具有严谨而又认真的态度,尊重客观事实,坚决不能半途而废,在艰苦的过程中还深深地体会到了我们测量工作人员的艰辛,不怕劳累的精神。虽然过程曲折,但是我们也快乐着,学习到了很多的知识,不仅仅是队课本知识的回顾和温习,还有增进了与同学的交流,懂得了团结的重要性,只有相互配合,团
结一致就能完成任务。在实习中痛并快乐着!
第五篇:大地测量实习报告
大地测量综合实习
实习报告
学院 :遥感信息工程学院
姓名 :王海斌 学号 :2008302590134 指导老师 :丁老师
一.实习目的和意义
通过编程掌握大地测量的特点,加深对课本中基本公式的理解和运用,提高编程计算的能力通过用VC++语言编写大地坐标解算的一些基本算法程序,使我们巩固和掌握使用MFC进行大地测量解算的基本技能,提高实际动手能力,并通过实际编程了解测绘软件的实现的基本原理。为我们进一步学习大地测量、遥感等专业课程处理解决实际问题奠定基础。
二.实习内容
第一部分:大地测量主题解算(高斯正算和高斯反算):
一,函数头文件:
#include “stdafx.h”
#include
#define NN 8 #define PI 3.14***93 #define P 206265
二,控制变量:(数值按课本上给出赋初值);
void OuDegree(double);
//声明格式输出控制函数
double A12, B0, L0, A0, Bm, Am, deltaB, deltaL, deltaA, B2, L2, A21;double M, N, Nm, Vm, tm, gm;double a=6378245.0;double e2=0.***;double e12=0.***;double c=6399698.9017827110;高斯平均引数的正算公式:
cout<<“您选择了【高斯大地平均引数正算】正算的结果为:”< double degree[NN]={47,35,44},minute[NN]={46,49,12},second[NN]={52.6470,36.3300,13.664};//定义3个数组,第一个存放°,第二个存放′,第三个存放″ double B1=(degree[0]+minute[0]/60+second[0]/3600)*PI/180;//将 B1 化成弧度 double L1=(degree[1]+minute[1]/60+second[1]/3600)*PI/180;//将 A1化成弧度 double A1=(degree[2]+minute[2]/60+second[2]/3600)*PI/180;//将 L1 化成弧度 double S=44797.2826; M=(a*(1-e2))/sqrt(pow((1-e2*pow(sin(B1),2)),3));N=a/sqrt(1-e2*pow(sin(B1),2)); deltaB=B0=S*cos(A1)/M;deltaL=L0=S*sin(A1)/(cos(B1)*N);deltaA=A0=L0*sin(B1); do { B0=deltaB; A0=deltaA; L0=deltaL; Bm=B1+B0/2; Am=A1+A0/2; tm=tan(Bm); gm=sqrt(e12)*cos(Bm); Nm=a/sqrt(1-e2*pow(sin(Bm),2)); Vm=sqrt(1+e12*pow(cos(Bm),2)); deltaB=Vm*Vm*S*cos(Am)*(1+S*S*(sin(Am)*sin(Am)*(2+3*tm*tm+2*gm*gm)+3*gm*gm*cos(Am)*cos(Am)*(tm*tm-1-gm*gm-4*tm*tm*gm*gm))/(24*Nm*Nm))/Nm; deltaL=S*sin(Am)*(1+S*S*(sin(Am)*sin(Am)*tm*tm-cos(Am)*cos(Am)*(1+gm*gm-9*tm*tm*gm*gm))/(24*Nm*Nm))/(Nm*cos(Bm)); deltaA=S*sin(Am)*tm*(1+S*S*(cos(Am)*cos(Am)*(2+7*gm*gm+9*tm*tm*gm*gm+5*pow(gm,4))+sin(Am)*sin(Am)*(2+tm*tm+2*gm*gm))/(24*Nm*Nm))/Nm; }while((deltaB-B0)>1e-10&&(deltaL-L0)>1e-10&&(deltaA-A0)>1e-10); B2=B1+deltaB; L2=L1+deltaL; A21=A1+deltaA+PI; cout<<“B2的值为:”< double degree[NN]={47,35,48,36},minute[NN]={46,49,04,14},second[NN]={52.6470,36.3300,09.6384,45.0505};//定义3个数组,第一个存放°,第二个存放′,第三个存放″ double B1=(degree[0]+minute[0]/60+second[0]/3600)*PI/180;//将 B1 化成弧度 double L1=(degree[1]+minute[1]/60+second[1]/3600)*PI/180;//将 A1化成弧度 double B2=(degree[2]+minute[2]/60+second[2]/3600)*PI/180;//将 L1 化成弧度 double L2=(degree[3]+minute[3]/60+second[3]/3600)*PI/180;//将 L1 化成弧度 double U,V,r01,r21,r03,s10,s12,s30,t01,t21,t03,T,S; Bm=(B1+B2)/2;deltaB=B2-B1;deltaL=L2-L1; tm=tan(Bm);gm=sqrt(e12)*cos(Bm);Nm=a/sqrt(1-e2*pow(sin(Bm),2));Vm=sqrt(1+e12*pow(cos(Bm),2)); r01=Nm*cos(Bm);r21=Nm*cos(Bm)*(1-gm*gm-9*gm*gm*tm*tm)/24;r03=Nm*pow(cos(Bm),3)*tm*tm/24;s10=Nm/(Vm*Vm);s12=Nm*cos(Bm)*cos(Bm)*(-2-3*tm*tm+3*tm*tm*gm*gm)/24;s30=Nm*(gm*gm-tm*tm*gm*gm)/8;t01=tm*cos(Bm);t21=cos(Bm)*tm*(3+2*gm*gm-2*pow(gm,4))/24;t03=pow(cos(Bm),3)*tm*(1+gm*gm)/12; U=r01*deltaL+r21*deltaB*deltaB*deltaL+r03*pow(deltaL,3);V=s10*deltaB+s12*deltaB*deltaL*deltaL+s30*pow(deltaB,3);deltaA=t01*deltaL+t21*deltaB*deltaB*deltaL+t03*pow(deltaL,3); Am=atan(U/V);S=U/sin(Am);A12=Am-deltaA/2;A21=Am+deltaA/2+PI; cout<<“S的值为:”< void OuDegree(double m){ int aa,bb;double cc;aa=m*206265/3600;bb=m*206265/60-aa*60;cc=m*206265-aa*3600-bb*60;printf(“%d°%d′%f″nn”,aa,bb,cc);} 四:结果: 1,正算: 2,反算: 第二部分:坐标系坐标转换:(MFC)(克氏椭球,国际椭球,WGS—84椭球); 一,TCITEM item; item.mask = TCIF_TEXT; item.pszText = “ 克氏椭球 ”; m_tab.InsertItem(0,&item); item.pszText = “1975国际椭球”; m_tab.InsertItem(1,&item); item.pszText = “ WGS—84椭球”; m_tab.InsertItem(2,&item);二:Dialog: 三:赋予初值; m_Ld = 111;m_Lm = 17;m_Ls = 58.3596; //经度坐标; m_Bd = 30;m_Bm = 45;m_Bs = 25.4425; //纬度坐标; m_x = 0.0;m_y = 0.0;m_nLd = 0;m_nLm = 0;m_nLs = 0;m_nBd = 0; m_nBm = 0;m_nBs = 0;四:选择坐标计算类型 case 0 : _a = 6378245.0; _b = 6356863.0187730473; break; case 1 : _a = 6378140.0; _b = 6356755.2881575287; break;case 2 : _a = 6378137.0; _b = 6356752.3142; break;} e =pow((_a*_a_b*_b), 0.5)/ _b; m[0] = _a *(1e*e * sin(B_r)*sin(B_r)),-0.5);t = tan(B_r);nl_squr = e_*e_ * pow(cos(B_r), 2); l = Le*e * sin(Bf)*sin(Bf)),-0.5);Mf = _a *(1e*e * sin(Bf)*sin(Bf)),-1.5);tf = tan(Bf);nlf_squr = e_*e_ * pow(cos(Bf), 2); double B_, L_;B_ = Bftf*(61+90*tf*tf+45*pow(tf,4))*pow(m_y,6)/(720*Mf*pow(Nf,5));L_ = 111*PI/180 + m_y/(Nf*cos(Bf))-(1+2*tf*tf+nlf_squr)*pow(m_y,3)/(6*pow(Nf,3)*cos(Bf))+(5+28*tf*tf+24*pow(tf,4)+6*nlf_squr+8*nlf_squr*tf*tf)*pow(m_y,5)/(120*pow(Nf,5)*cos(Bf)); double B_s, L_s;int B_d, B_m, L_d, L_m;B_ *= 3600*180/PI;L_ *= 3600*180/PI;m_nBd = int(B_/3600); m_nLd = int(L_/3600);m_nBm = int((B_-m_nBd*3600)/60); m_nLm = int((L_-m_nLd*3600)/60);m_nBs = B_-m_nBd*3600-m_nBm*60; m_nLs = L_-m_nLd*3600-m_nLm*60; CDialog::UpdateData(false);第三部分:高斯投影带计算; 一.三度投影带: void CGuasscaltDlg::OnButton1()//三度带投影 { // TODO: Add your control notification handler code here if(bzs){ int n=int(m_L1/3.0+0.5); L0=3*n*3600; ZSGuassCalculate();} if(bfs){ L0=m_mL1*3600; FSGuassCalculate();} UpdateData(false);二.六度投影带; void CGuasscaltDlg::OnButton2()//六度带投影 { // TODO: Add your control notification handler code here if(bzs){ int n=int(m_L1/6.0)+1; L0=(6*n-3)*3600; ZSGuassCalculate();} if(bfs){ L0=m_mL1*3600; FSGuassCalculate();} UpdateData(false);三.成果分析 通过数据的输入和输出,并将自己得到的结果与参考结果作出比较,不断改正自己的错误,得到正确的结果; 四.实习总结与体会 通过实习,对课堂上所学的有关大地测量结算的内容有了更深的认识和了解,也从本质上了解了大地测量数据的处理方法。对各种算法有了较清楚的了解和掌握。在这次实习过后,对VC++的使用和MFC的理解也有了进一步的加强,仍旧发现MFC是难点。由于水平有限,很多算法太过复杂,对此部分代码不得不借鉴已有的程序,而只能达到大致的理解。但在实习得到最终成果后,还是比较有成就感的,对课程和专业也有了更深的认识,增强了今后学习的兴趣,也明确了今后努力的方向。 十分感谢学院和老师给我们这次实习的机会,使我们加强了课程的学习,跟让我们认识到了自身的不足。