高斯投影正反算实习报告

合集下载

高斯投影正算实习报告

高斯投影正算实习报告

一、实习目的本次实习旨在通过实际操作,了解高斯投影正算的基本原理和方法,掌握高斯投影在工程测量中的应用,提高自己的实践能力和专业技能。

二、实习时间2022年X月X日至2022年X月X日三、实习地点XX大学测量实验室四、实习内容1. 高斯投影原理及性质高斯投影是一种将地球椭球面投影到平面的数学方法,具有等角、等积、等距等性质。

本次实习主要学习了高斯-克吕格投影的原理及性质。

2. 高斯投影正算方法高斯投影正算是指将地球椭球面上的点投影到高斯投影平面上,并计算出该点在高斯投影平面上的坐标。

本次实习主要学习了以下两种方法:(1)公式法:根据高斯投影公式,计算点在高斯投影平面上的坐标。

(2)程序法:利用计算机编程,编写高斯投影正算程序,实现点的坐标转换。

3. 实际应用在实习过程中,我们选取了实际工程中的测量数据进行高斯投影正算,将椭球面上的点投影到高斯投影平面上,并计算出其坐标。

五、实习过程1. 学习高斯投影原理及性质通过查阅资料和课堂讲解,我们对高斯投影原理及性质有了初步的了解。

了解到高斯投影在地球椭球面和平面间具有等角、等积、等距等性质,且中央经线无变形,自中央经线向投影带边缘,变形逐渐增加。

2. 学习高斯投影正算方法在掌握了高斯投影原理及性质的基础上,我们学习了高斯投影正算的方法。

首先,通过公式法,我们计算了几个典型点的坐标;其次,利用计算机编程,我们编写了高斯投影正算程序,实现了点的坐标转换。

3. 实际应用在实习过程中,我们选取了实际工程中的测量数据进行高斯投影正算。

首先,将测量数据输入计算机,然后调用高斯投影正算程序,计算出点在高斯投影平面上的坐标。

最后,将计算结果与实际测量数据进行对比,分析误差来源,总结经验。

六、实习成果1. 掌握了高斯投影原理及性质。

2. 熟悉了高斯投影正算的方法,包括公式法和程序法。

3. 能够将实际工程中的测量数据进行高斯投影正算,并计算出点在高斯投影平面上的坐标。

4. 分析了误差来源,总结了经验。

高斯投影反算实习报告

高斯投影反算实习报告

一、实习背景高斯投影是一种广泛应用的地图投影方法,它将地球表面的经纬度坐标转换为平面直角坐标。

高斯投影在测绘、地理信息系统、地图编制等领域有着重要的应用。

为了更好地掌握高斯投影的相关知识,提高自己的实践能力,我们进行了高斯投影反算的实习。

二、实习目的1. 理解高斯投影的基本原理和方法;2. 掌握高斯投影反算的计算步骤;3. 提高自己的实践操作能力;4. 培养团队协作精神。

三、实习内容1. 高斯投影原理高斯投影是一种等角投影,其基本原理是将地球椭球面上的经纬度坐标转换为平面直角坐标。

高斯投影具有以下特点:(1)等角投影:保持地球椭球面上任意两点间的夹角不变;(2)等积投影:保持地球椭球面上任意两块区域的面积比不变;(3)高斯-克吕格投影:以中央子午线和赤道为基准线,将地球椭球面投影到平面上。

2. 高斯投影反算步骤高斯投影反算是指将平面直角坐标转换为地球椭球面上的经纬度坐标。

其计算步骤如下:(1)计算投影面大地坐标(φ,λ):根据给定的平面直角坐标(X,Y),利用高斯投影公式计算投影面大地坐标(φ,λ);(2)计算大地坐标(φ,λ):根据投影面大地坐标(φ,λ)和投影带参数,计算大地坐标(φ,λ);(3)计算经纬度坐标(B,L):根据大地坐标(φ,λ)和椭球参数,计算经纬度坐标(B,L)。

3. 实习过程在实习过程中,我们首先学习了高斯投影的基本原理和方法,了解了高斯投影在地图编制、地理信息系统等领域的应用。

然后,我们通过查阅相关资料,掌握了高斯投影反算的计算步骤。

在实践操作环节,我们使用高斯投影软件,对给定的平面直角坐标进行反算,得到对应的经纬度坐标。

在操作过程中,我们遇到了一些问题,如坐标转换误差、投影带参数设置等。

通过查阅资料、请教老师,我们解决了这些问题,最终完成了实习任务。

四、实习总结通过本次高斯投影反算实习,我们取得了以下成果:1. 掌握了高斯投影的基本原理和方法;2. 熟悉了高斯投影反算的计算步骤;3. 提高了实践操作能力;4. 培养了团队协作精神。

大地正反算实验报告(3篇)

大地正反算实验报告(3篇)

第1篇一、实验目的本次实验旨在通过大地正反算的方法,加深对大地测量学基本原理和方法的理解,掌握大地坐标转换和坐标平差的基本步骤,提高实际操作能力。

二、实验原理大地正反算是指在地心坐标系(或任意坐标系)中,根据已知的地面点大地坐标(经度、纬度、高程)计算该点在某一投影面上的坐标(如平面直角坐标),以及根据已知的地面点平面坐标计算该点的大地坐标。

实验中主要涉及以下基本原理:1. 地球椭球模型:实验采用克拉索夫椭球参数,该椭球能够较好地描述地球的形状和大小。

2. 大地坐标转换:将地面点的大地坐标转换为平面坐标,通常采用高斯投影方法。

3. 坐标平差:在计算过程中,由于各种误差的存在,需要对计算结果进行平差处理,以提高精度。

三、实验步骤1. 数据准备:选取一组地面点的大地坐标数据,包括经度、纬度和高程。

2. 正算过程:a. 根据选取的大地坐标数据,利用高斯平均引数公式计算地面点的大地经纬度。

b. 利用高斯投影公式,将大地经纬度转换为平面直角坐标。

c. 计算地面点的高斯平面坐标。

3. 反算过程:a. 根据地面点的高斯平面坐标,利用高斯投影公式反算出地面点的大地经纬度。

b. 利用大地坐标转换公式,将大地经纬度转换为大地坐标。

4. 坐标平差:对计算结果进行平差处理,以提高精度。

四、实验结果与分析1. 正算结果:a. 通过计算,得到了地面点的高斯平面坐标,包括x坐标和y坐标。

b. 计算过程中,注意选取不同的已知数据序号,以确保计算结果的准确性。

2. 反算结果:a. 通过反算,得到了地面点的大地经纬度,与原始数据进行了对比。

b. 计算过程中,注意选取不同的已知数据序号,以确保计算结果的准确性。

3. 坐标平差结果:a. 对计算结果进行了平差处理,以提高精度。

b. 平差后的坐标值与原始数据相比,精度得到了显著提高。

五、实验总结1. 通过本次实验,掌握了大地正反算的基本原理和方法,提高了实际操作能力。

2. 计算过程中,注意选取不同的已知数据序号,以确保计算结果的准确性。

测绘程序设计(VS2008)实验报告--高斯投影正反算

测绘程序设计(VS2008)实验报告--高斯投影正反算

《测绘程序设计()》上机实验报告(Visual C++.Net)班级:学号:姓名:序号:二零一一年五月实验7 常用测量程序设计1.实验目的:1.1 巩固类的创建与使用;1.2 掌握数组参数的传递;1.3 掌握常用测绘程序设计的技巧。

1.42.实验内容:编写高斯投影正反算程序。

3.设计思路:这次的实验目的是实现高斯正反算。

需要考虑投影方式即分带的方式,又要考虑椭球参数的类型,所以我添加了两个函数来完成此功能。

分别是int SetProjectType(int m)和void SetParameter(int m,double &a,double &b)。

4.界面设计:界面设计很简单,具体见运行结果。

5.主要代码:文件名:GaussProjectDlg.cpp代码:const double PI=4*atan(1.0);//获得分带方式返回中央子午线经度int CGaussProjectDlg::SetProjectType(int m){UpdateData(TRUE);int n; //记录分带带号double L; //经度L=iDegreeL+iMinL/60+dSecondL/3600;if(m==1) //6度带{n=int(L/6)+1;L0=6*n-3;}else if(m==2) //3度带{n=int((L+1.5)/3);L0=3*n;}else if(m==3) //自主分带L0=L0;return L0;}//获取椭球参数void CGaussProjectDlg::SetParameter(int m,double &a,double &b) {if(m==1) //克拉索夫斯基椭球{a=6378245.0;b=6356863.0187730473;//e=sqrt(0.006693421622966);}else if(m==2) //1975国际协议椭球{a=6378140.0;b=6356755.2881575287;//e=sqrt(0.006694384999588);}else if(m==3) //WGS-84椭球{a=6378137.0;b=6356752.3142;//e=sqrt(0.0066943799013);}}void CGaussProjectDlg::OnBnClickedButtonpositivecal(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);double N;double t;double Eta;double X;double A0,A2,A4,A6,A8;double RadB;double Rou;Rou=180*3600/PI;double a,b,e1,e2; //椭球参数SetParameter(iParameterType,a,b);e1=sqrt(a*a-b*b)/a;e2=sqrt(a*a-b*b)/b;double l;L0=SetProjectType(iProjectType);double L;L=iDegreeL+double(iMinL)/60+dSecondL/3600;l=(L-L0)*3600;RadB=(iDegreeB+double(iMinB)/60+dSecondB/3600)*PI/180;N=a/sqrt(1-e1*e1*sin(RadB)*sin(RadB));t=tan(RadB);Eta=e2*cos(RadB);A0=1+3.0/4*e1*e1+45.0/64*pow(e1,4)+350.0/512*pow(e1,6)+11025.0/16384*pow(e1,8);A2=-1.0/2*(3.0/4*e1*e1+60.0/64*pow(e1,4)+525.0/512*pow(e1,6)+17640.0/16384*pow(e1,8));A4=1.0/4*(15.0/64*pow(e1,4)+210.0/512*pow(e1,6)+8820.0/16384*pow(e1,8));A6=-1.0/6*(35.0/512*pow(e1,6)+2520.0/16384*pow(e1,8));A8=1.0/8*(315.0/16384*pow(e1,8));X=a*(1-e1*e1)*(A0*RadB+A2*sin(2*RadB)+A4*sin(4*RadB)+A6*sin(6*RadB)+A8*sin(8*RadB));x=X+N/(2*Rou*Rou)*sin(RadB)*cos(RadB)*l*l+N/(24*pow(Rou,4))*sin(RadB)*pow(cos(RadB),3)*(5-t*t+9*Eta*Eta+4*pow(Eta,4))*pow(l,4)+ N/(720*pow(Rou,6))*sin(RadB)*pow(cos(RadB),5)*(61-58*t*t+pow(t,4))*pow(l,6);y=N/Rou*cos(RadB)*l+N/(6*pow(Rou,3))*pow(cos(RadB),3)*(1-t*t+Eta*Eta)*pow(l,3)+N/(120*pow(Rou,5))*pow(cos(RadB),5)*(5-18*t*t+pow(t,4)+14*Eta*Eta-58*Eta*Eta*t*t)*pow( l,5);UpdateData(FALSE);}void CGaussProjectDlg::OnBnClickedButtonantical(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);double t_f;double Eta_f;double B_f;double N_f;double M_f;double X=x;double B0;double K0,K2,K4,K6;double a,b,e1,e2; //椭球参数SetParameter(iParameterType,a,b);e1=sqrt(a*a-b*b)/a;e2=sqrt(a*a-b*b)/b;double A0;A0=1+3.0/4*e1*e1+45.0/64*pow(e1,4)+350.0/512*pow(e1,6)+11025.0/16384*pow(e1,8);B0=X/(a*(1-e1*e1)*A0);K0=1.0/2*(3.0/4*e1*e1+45.0/64*pow(e1,4)+350.0/512*pow(e1,6)+11025.0/16384*pow(e1,8));K2=-1.0/3*(63.0/64*pow(e1,4)+1108.0/512*pow(e1,6)+58239.0/16384*pow(e1,8));K4=1.0/3*(604.0/512*pow(e1,6)+68484.0/16384*pow(e1,8));K6=-1.0/3*(26328.0/16384*pow(e1,8));B_f=B0+sin(2*B0)*(K0+sin(B0)*sin(B0)*(K4+K6*sin(B0)*sin(B0)));t_f=tan(B_f);Eta_f=e2*cos(B_f);N_f=a/sqrt(1-e1*e1*sin(B_f)*sin(B_f));M_f=N_f/(1+e2*e2*cos(B_f)*cos(B_f));double B;B=B_f-t_f/(2*M_f*N_f)*y*y+t_f/(24*M_f*pow(N_f,3))*(5+3*t_f*t_f+Eta_f*Eta_f-9*Eta_f*Eta_f*t_f*t_f)*pow(y,4)- t_f/(720*M_f*pow(N_f,5))*(61+90*t_f*t_f+45*pow(t_f,4))*pow(y,6);double l;l=1.0/(N_f*cos(B_f))*y-1.0/(6*pow(N_f,3)*cos(B_f))*(1+2*t_f*t_f+Eta_f*Eta_f)*pow(y,3)+1.0/(120*pow(N_f,5)*cos(B_f))*(5+28*t_f*t_f+24*pow(t_f,4)+6*Eta_f*Eta_f+8*Eta_f*Eta_f* t_f*t_f)*pow(y,5);//将B转化为度分秒的形式double dDegB;dDegB=B*180/PI;iDegreeB=int(dDegB);iMinB=int((dDegB-iDegreeB)*60);dSecondB=((dDegB-iDegreeB)*60-iMinB)*60;double dDegL;dDegL=l*180/PI+L0;iDegreeL=int(dDegL);iMinL=int((dDegL-iDegreeL)*60);dSecondL=((dDegL-iDegreeL)*60-iMinL)*60;UpdateData(FALSE);}6.运行结果:实验的运行结果如下图所示:正算:反算:7.实验总结这次实验是实现高斯投影的正反算,方法很多,实现并不复杂,但是计算公式复杂,变量繁多,稍有不慎,就会造成计算错误。

高斯投影正反算实习

高斯投影正反算实习

大地测量学编程实习报告姓名:鲁尼学号:10 班级:曼联编程思想:这个投影是由德国数学家、物理学家、天文学家高斯于19 世纪20 年代拟定,后经德国大地测量学家克吕格于1912 年对投影公式加以补充,故称为高斯-克吕格投影。

即等角横切椭圆柱投影。

假想用一个圆柱横切于地球椭球体的某一经线上,这条与圆柱面相切的经线,称中央经线。

以中央经线为投影的对称轴,将东西各3°或1°30′的两条子午线所夹经差6°或3°的带状地区按数学法则、投影法则投影到圆柱面上,再展开成平面,即高斯-克吕格投影,简称高斯投影。

这个狭长的带状的经纬线网叫做高斯-克吕格投影带。

高斯投影正算公式就是由大地坐标(L,B)求解高斯平面坐标(x,y),而高斯投影反算公式则是由高斯平面坐标(x,y)求解大地坐标(L,B)。

现行的高斯投影用表都是采用克拉索夫斯基椭球参数,这次编程计算就是采用这种椭球参数,并采用实用公式按6度分带投影。

编程环境是在VC下,采用C++语言编写。

程序主要分为两部分,第一部分是高斯正反算函数,第二部分是主函数。

高斯正反算函数,参考书上175页的电算公式,正算时先将度数换算成秒,再定带号n,求中央经线l0,经度差l'',然后根据实用公式计算高斯平面坐标x,y。

最后计算国家统一坐标的x,y,再将其输出。

计算和数据模型:正算是指:由大地坐标(L,B)求得高斯平面坐标(x,y)的过程。

反算是指:由高斯平面坐标(x,y)求得大地坐标(L,B)的过程。

正算:高斯投影必须满足的三个条件:(1),中央子午线投影后为直线。

(2),中央子午线投影后长度不变。

(3),投影具有正性性质,即正性投影条件。

由第一个条件可知,中央子午线东西两侧的投影必然对称于中央子午线。

设在托球面上有P1 ,P2,且对称于中央子午线。

其大地坐标为(l,B),(-l,B)则投影后的平面坐标一定为P1·(x,y),P2·(x,-y).由第二个条件可知,位于中央子午线上的点,投影后的纵坐标x应该等于投影前从赤道量至该点的子午弧长。

高斯投影坐标正反算编程报告

高斯投影坐标正反算编程报告

高斯投影坐标正反算编程报告1. 编程思想进行高斯投影坐标正反算的编程需要牵涉到大量的公式,为了使程序条理更清楚,各块的数据复用性更强,这里采取了结构化的编程思想。

程序由四大块组成。

文件用于存放main()函数,是整个程序的入口。

通过结构化的编程尽力使main()函数变得简单。

和用于存放计算过程中进行角度弧度换算时所要用到的一些自定的转换函数。

和用于存放Zhengsuan 类,在Zhengsuan 类中声明了高斯投影坐标正算所要用到的所有变量,在类的构造函数中进行成员变量的初始化及正算计算。

通过get 函数获得相应的正算结果。

和用于存放Fansuan 类,类似于Zhengsuan 类,Fansuan 类中声明了高斯投影坐标反算所要用到的所有变量,在类的构造函数中进行成员变量的初始化及反算计算。

通过get 函数获得相应的反算结果。

2. 计算模型高斯投影正算公式6425644223422)5861(cos sin 720)495(cos 24cos sin 2lt t B B N lt B simB N l B B N X x ''+-''+''++-''+''⋅''+=ρηηρρ5222425532233)5814185(cos 120)1(cos 6cos lt t t B N lt B N l B N y ''-++-''+''+-''+''⋅''=ηηρηρρ高斯投影反算公式()()()()22242552233642542222328624285cos 12021cos 6cos 459061720935242f f f f f ff ff ff f f ff ff ff f f f ff f ff f f t t t B N y t B N y B N y l y t t y NM t yt tNM t y N M t B B ηηηηη+++++++-=++--+++-=3. 程序框图4. 计算结果5.附录:程序代码517"<<endl;cin>>myX>>myY;Fansuan myFansuan1(myX,myY);();}////////////////////////////////////////////////////////////////////////#include ""//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////Fansuan::Fansuan(){}Fansuan::Fansuan(double X,double Y){this->X=X;this->Y=Y;//初始化x,yN=(int)(Y/1000000);//取出带号L0=6*N-3;//初始化该带号的中央经线经度x=X;y=Y-1000000*N-500000;beta=x/;//初始化beta,弧度单位betaSecond=beta*rouSecond;//初始化beta,秒单位betaDegree=betaSecond/3600;//初始化beta,整度数单位Bf=beta+(+(293622+(2350+22*cos(beta)*cos(beta))*cos(beta)*cos(beta))*co s(beta)*cos(beta))*(1e-10)*sin(beta)*cos(beta);//初始化Bf,弧度单位BfSecond=Bf*rouSecond;//初始化Bf,秒单位BfDegree=BfSecond/3600;//初始化Bf,整度数单位Nf= Z=y/(Nf*cos(Bf));b2=+*cos(Bf)*cos(Bf))*sin(Bf)*cos(Bf);b4=++*cos(Bf)*cos(Bf))*cos(Bf)*cos(Bf);b3= b5= Bsecond=BfSecond-(1-*Z*Z)*Z*Z)*Z*Z*b2*rouSecond;//计算大地经度B,单位为秒B=Bsecond/3600;//用整度数表示Blsecond=(1-(b3-b5*Z*Z)*Z*Z)*Z*rouSecond;//计算经度差l,单位为秒l=lsecond/3600;//用整度数表示lL=L0+l;//计算大地经度L}double Fansuan::getB(){return B;}double Fansuan::getL(){return L;}void Fansuan::printLocation(){printf("反算得大地坐标为:大地纬度B= %f°大地经度L=%f°\n",B,L);}Fansuan::~Fansuan(){}。

高斯投影转换实验报告

高斯投影转换实验报告

高斯投影转换实验报告1. 实验目的本实验旨在探究高斯投影转换的原理和应用,通过实际操作了解高斯投影转换的过程,并熟悉其在地图制作和测绘中的应用。

2. 实验原理高斯投影转换是一种将地球表面的经纬度坐标转换为平面坐标的方法。

其原理是利用球面三角学和投影转换的相关理论,将地球表面划分成若干个带状区域,并在每个带状区域内进行具体的投影计算。

高斯投影转换的具体步骤如下:1. 将地球表面划分成带状区域,每个区域的中央经线与原点相交,该经线的经度为0度。

2. 对每个带状区域,利用球面三角学计算该区域内每个点的平面坐标。

3. 利用逆高斯函数将平面坐标转换为经纬度坐标。

3. 实验材料和方法3.1 材料本实验所需材料如下:- 高斯投影转换软件- 地图数据3.2 方法1. 使用高斯投影转换软件打开地图数据。

2. 选择所需的带状区域,确认对应的中央经线和带号。

3. 将经纬度坐标导入软件,进行高斯投影转换。

4. 确认平面坐标的结果是否符合预期。

4. 实验结果与分析经过实验,我们得到了一组从经纬度坐标转换而来的平面坐标。

通过与实际地图上的坐标进行对比,我们发现高斯投影转换的结果较为准确,与实际情况吻合度较高。

高斯投影转换的优点是能够将地球表面的曲面坐标转换为平面坐标,便于地图制作和测绘。

然而,由于该方法忽略了地球的椭球形状,存在一定的误差。

在实际应用中,为了提高精度,可以采用更复杂的投影方式,如UTM投影。

5. 实验总结高斯投影转换是一种常用的地图制作和测绘方法,通过将地球表面的经纬度坐标转换为平面坐标,方便地图的绘制和测量。

本次实验我们通过实际操作,深入了解了该方法的原理和应用。

实验中我们注意到,高斯投影转换虽然能够提供较为准确的结果,但仍存在一定的误差。

在实际运用中,我们需要根据具体情况选择合适的投影方式,并注意误差的控制。

6. 参考文献[1] 吴邦国, 李鹏鹏, 陈明东. 《圆球面高斯投影法及其实现》[J]. 温州大学学报, 2007, 27(2): 118-122.[2] 孙正坤. 《测绘学与地理信息系统》. 武汉: 武汉大学出版社, 2010.附录本实验使用的地图数据来源于XXXX。

高斯投影正反算介绍课件

高斯投影正反算介绍课件

04
高斯投影在绘制地形图上的坐标转换中的应用
导航定位
高斯投影在导航系统中的应用
01
高斯投影在定位系统中的应用
02
高斯投影在导航定位系统中的误差分析
03
高斯投影在导航定位系统中的优化方法
04
误差影响因素:投影方式、投影参数、地形特征等
误差控制方法:选择合适的投影方式、优化投影参数、采用误差校正技术等
02
误差计算方法:采用数学模型进行误差分析
误差处理
误差来源:高斯投影的变形和失真
误差计算:通过数学模型计算误差大小
误差修正:采用地图投影变换方法进行误差修正
误差控制:通过选择合适的投影参数和投影方法,降低误差影响
投影分类
反投影:将平面上的投影还原为三维物体,保持物体与投影面之间的角度不变
透视投影:将物体投影到平面上,保持物体与投影面之间的角度可变
轴测投影:将物体投影到平面上,保持物体与投影面之间的角度不变,但投影面与物体之间的角度可变
正投影:将物体投影到平面上,保持物体与投影面之间的角度不变
投影参数
投影中心:投影平面的中心点
演讲人
01.
02.
03.
04.
目录
高斯投影基础
正算与反算
高斯投影误差分析
高斯投影在实际工程中的应用
投影原理
高斯投影是一种等角投影,即投影前后角度保持不变
投影面为椭圆柱面,投影中心为椭圆柱面的中心
投影方式为正投影,即投影前后长度保持不变
高斯投影分为正投影和反投影,正投影为将球面坐标转换为平面坐标,反投影为将平面坐标转换为球面坐标
控制测量
控制测量是工程建设的基础,用于确定工程位置和标高

实验十 高斯投影坐标正

实验十  高斯投影坐标正

实验十高斯投影坐标正、反算及相邻带的坐标换算一、实验目的掌握高斯投影坐标正、反算及相邻带的坐标换算的方法。

二、实验要求《大地测量学基础》教程包含着许多测量基本计算问题,如常见坐标系的计算,坐标系之间的转换计算,椭球大地计算、高斯投影计算、相邻带的坐标换算、平面网与高程网平差数据处理等。

对于上述相关计算必须要求测绘专业学生加以掌握,其目的是通过计算加深学生对相关基本理论与方法的理解与掌握,同时有益于学生计算能力的培养。

采用计算机编程进行数据处理计算,其计算语言较多,比如Basic语言、C语言、Tortran、Pascal、Delphi等,不同语言各自具有不同的特点,学生可根据自己的优势选择相关计算语言编程三、计算数据及要求1.高斯投影坐标正、反算计算数据起算点A大地坐标: BA=56°18′24.379″,LA=131°07′59.236″。

采用适用于电算的高斯投影坐标正、反算公式进行高斯平面直角坐标及平面子午线收敛角的计算,自编程序并进行正反算检核。

2.相邻带的坐标换算计算数据已知P点在6°20带中的高斯平面直角坐标为:x=3589644.287,y=17916.439(自然值)。

采用间接换算法自编程序求:(1)P点在3°40带中的高斯平面直角坐标;(2)P点在6°21带中的高斯平面直角坐标。

3.用VB语言编写的程序具有图形用户界面特点,操作简单。

最好能用VB语言编写同时进行高斯投影正算、反算及任意带的换带计算的程序。

四、测量中两种常用的计算角度化为弧度、弧度化为角度的计算在测量数据处理中是经常遇到的计算问题。

也是最基本的计算问题。

1 角度化为弧度将度、分、秒形式的角度angle化为弧度,采用函数功能来实现,其函数值为返回的弧度值。

其数据格式为:参数angle的整数为表示度,小数点后两位表示分, 小数点后第三位开始表示秒,如180度34分54.23秒, 即 angle=180.345423。

高斯正反算

高斯正反算

3、CComboBox 控件的使用 (1)在 CFormView 中添加 CComboBox 控件(同时添加控件变量 m_combo),并设置参 数“Type”为“DropList”:
图 6 设置 CComboBox 控件的属性 (2)在 OnInitalUpdate 函数中添加 CComboBox 控件的显示数据
实验四 参心大地坐标转换及 高斯坐标正反算实验
4.1 实验目的
坐标转换是空间实体的位置描述, 是从一种坐标系统变换到另一种坐标系统的过程。 通 过建立两个坐标系统之间一一对应关系来实现。坐标转换问题的详细了解对于测量很重要, 也是测绘专业人员必须了解掌握的一项基本知识。 本节实验将引领大家实现测量程序设计中 2 项基本的坐标转换方法:参心大地坐标与参心空间直角坐标转换以及高斯坐标正反算。
第一偏心率平方 =0.00669438499959 WGS-84 椭球两个最常用的几何常数: 长半轴: 6378137±2(m) 短半轴 b=6356752.3142m 扁 率 α=1/298.257223563
第二偏心率平方=0.00673950181947
第一偏心率平方 =0.00669437999013 第二偏心率平方 =0.00673949674223 (2)高斯投影正算公式:
(3)同时,添加设置 ListCtrl 列项的代码:
m_list1.InsertColumn(0, _T("序号"),LVCFMT_CENTER,40); m_list1.InsertColumn(1, _T("X"),LVCFMT_CENTER,100);
m_list1.InsertColumn(2, _T("Y"),LVCFMT_CENTER,100); m_list1.InsertColumn(3, _T("Z"),LVCFMT_CENTER,100);

matlab大地测量高斯投影正反算程序设计实验

matlab大地测量高斯投影正反算程序设计实验

N sin( B) cos 5 ( B)(61 58t 2 t 4 270 2 330 2 t 2 )l 6 720 N N y N cos( B)l cos 3 ( B)(1 t 2 2 )l 3 cos 5 ( B)(5 18t 2 t 4 14 2 58 2 t 2 )l 5 6 120
-2-
degree = fix(jiaodu); mimute = fix((jiaodu-degree)*100); second = (jiaodu-degree-mimute/100)*10000; degree = degree+mimute/60+second/3600; end 度转度分秒函数如下: function dms=degree3dms(du) degree=fix(du); min=fix((du-degree)*60); second=(((du-degree)*60-min)*60); dms=degree+min/100+second/10000; end 度分秒转弧度 dms2rad 函数如下: function rad=dms2rad(n) deg=fix(n); min_tem=(n-deg)*100; min=fix(min_tem); sec=(min_tem-min)*100; %度取所给数 n 的整数部分 %去掉整数部分后小数点后移两位 %分取整 %秒是小数点再向后移两位的数字 %度->度分秒 (dd.mmss)
-1-
%计算高斯平面坐标(x,y) x=X+(N.*(sin(B)).*(cos(B)).*(l.^2))./2+(N.*(sin(B)).*((cos(B)).^3).*(5-((t).^2)+9.* (p.^2)+4.*(p.^4)).*(l.^4))./24 ... +(N.*sin(B).*(cos(B)).^5.*(61-58.*(t.^2)+(t.^4)+270.*(p.^2)-330.*(p.^2).*(t.^2)).*(l .^6))./720; y=N.*cos(B).*l+(N.*(cos(B)).^3.*(1-t.^2+p.^2).*(l.^3))./6+(N.*((cos(B)).^5).*(5-18 .*(t.^2)+ ... t.^4+14.*(p.^2)-58.*(p.^2).*(t.^2)).*(l.^5))./120; L0=degree3dms(L0); end latitude2meridian 函数如下: function x = latitude2meridian(B,a,e) %由纬度 B 求对应的子午线弧长 x,计算公式 m0=a*(1-e^2); m2=(3*(e^2)*m0)/2; m4=(5*(e^2)*m2)/4; m6=(7*(e^2)*m4)/6; m8=(9*(e^2)*m6)/8; a0=m0+m2/2+3*m4/8+5*m6/16+35*m8/128; a2=m2/2+m4/2+15*m6/32+7*m8/16; a4=m4/8+3*m6/16+7*m8/32; a6=m6/32+m8/16; a8=m8/128; x=a0*B-(a2*sin(2*B))/2+(a4*sin(4*B))/4-(a6*sin(6*B))/6+(a8*sin(8*B))/8; end 度分秒转度函数如下: function degree = dms2degree(jiaodu) %度分秒(dd.mmss) ->度

高斯投影正反算实习报告

高斯投影正反算实习报告

高斯投影正反算实习报告程序代码#include <stdio.h>#include <iostream.h>#include <math.h>#include<iomanip.h>class Angle{public:double degree,cent,second,Hudu,seconds;//构造函数Angle(double _degree,double _cent,double _second){degree=_degree;cent=_cent;second=_second;seconds=(degree*3600+cent*60+second);Hudu=(degree*3600+cent*60+second)*2*3.1415926535/(360*60*60);}Angle(){}SToD(){second=seconds-int(seconds/60)*60;degree=int((seconds-second)/3600);cent=int((seconds-second-degree*3600)/60);}~Angle(){}};void main(){//正算过程//定义变量Angle B(51,38,43.9023),L(126,2,13.1360),_B,_L;double L0,l,N,a0,a4,a6,a3,a5,x,y,rou;rou=(360*60*60)/(2*3.1415926535);if(int(L.degree)%6!=0){L0=6*(int(L.degree)/6+1)-3;}elseL0=6*(int(L.degree)/6)-3;l=L.Hudu-L0*3600*2*3.1415926535/(360*60*60);N=6399698.902-(21562.267-(108.973-0.612*cos(B.Hudu)*cos(B.Hudu))*cos(B.Hudu)*co s(B.Hudu))*cos(B.Hudu)*cos(B.Hudu);a0=32140.404-(135.3302-(0.7092-0.0040*cos(B.Hudu)*cos(B.Hudu))*cos(B.Hudu)*cos(B .Hudu))*cos(B.Hudu)*cos(B.Hudu);a4=(0.25+0.00252*cos(B.Hudu)*cos(B.Hudu))*cos(B.Hudu)*cos(B.Hudu)-0.04166;a6=(0.166*cos(B.Hudu)*cos(B.Hudu)-0.084)*cos(B.Hudu)*cos(B.Hudu);a3=(0.3333333+0.001123*cos(B.Hudu)*cos(B.Hudu))*cos(B.Hudu)*cos(B.Hudu)-0.1666 667;a5=0.0083-(0.1667-(0.1968+0.0040*cos(B.Hudu)*cos(B.Hudu))*cos(B.Hudu)*cos(B.Hud u))*cos(B.Hudu)*cos(B.Hudu);x=6367558.4969*B.Hudu-(a0-(0.5+(a4+a6*l*l)*l*l)*l*l*N)*sin(B.Hudu)*cos(B.Hudu);y=(1+(a3+a5*l*l)*l*l)*l*N*cos(B.Hudu);//结果输出cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;// 反算过程double b,Bf,Nf,Z,b2,b3,b4,b5,l1;b=(x/6367558.4969);Bf=b+(50221746+(293622+(2350+22*cos(b)*cos(b))*cos(b)*cos(b))*cos(b)*cos(b))*0.000 0000001*sin(b)*cos(b);Nf=6399698.902-(21562.267-(108.973-0.612*cos(Bf)*cos(Bf))*cos(Bf)*cos(Bf))*cos(Bf)*c os(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.seconds=Bf*rou-(1-(b4-0.12*Z*Z)*Z*Z)*Z*Z*b2*rou;l1=(1-(b3-b5*Z*Z)*Z*Z)*Z*rou;_L.seconds=L0*3600+l1;_B.SToD();_L.SToD();//结果输出cout<<"_B="<<_B.degree<<"du"<<_B.cent<<"fen"<<setprecision(8)<<_B.second<<" miao"<<endl;cout<<"_L="<<_L.degree<<"du"<<_L.cent<<"fen"<<setprecision(8)<<_L.second<<" miao"<<endl;计算结果x=5.72816e+006y=-205080_B=51du38fen43.902358miao_L=126du2fen13.135972miaoPress any key to continue程序设计流程图。

高斯投影坐标正反算编程报告

高斯投影坐标正反算编程报告

高斯投影坐标正反算编程报告The Standardization Office was revised on the afternoon of December 13, 2020高斯投影坐标正反算编程报告1. 编程思想进行高斯投影坐标正反算的编程需要牵涉到大量的公式,为了使程序条理更清楚,各块的数据复用性更强,这里采取了结构化的编程思想。

程序由四大块组成。

文件用于存放main()函数,是整个程序的入口。

通过结构化的编程尽力使main()函数变得简单。

和用于存放计算过程中进行角度弧度换算时所要用到的一些自定的转换函数。

和用于存放Zhengsuan 类,在Zhengsuan 类中声明了高斯投影坐标正算所要用到的所有变量,在类的构造函数中进行成员变量的初始化及正算计算。

通过get 函数获得相应的正算结果。

和用于存放Fansuan 类,类似于Zhengsuan 类,Fansuan 类中声明了高斯投影坐标反算所要用到的所有变量,在类的构造函数中进行成员变量的初始化及反算计算。

通过get 函数获得相应的反算结果。

2. 计算模型高斯投影正算公式6425644223422)5861(cos sin 720)495(cos 24cos sin 2lt t B B N lt B simB N l B B N X x ''+-''+''++-''+''⋅''+=ρηηρρ5222425532233)5814185(cos 120)1(cos 6cos lt t t B N lt B N l B N y ''-++-''+''+-''+''⋅''=ηηρηρρ高斯投影反算公式()()()()22242552233642542222328624285cos 12021cos 6cos 459061720935242f f f f f ff ff ff f f ff ff ff f f f ff f ff f f t t t B N y t B N y B N y l y t t y NM t yt tNM t y N M t B B ηηηηη+++++++-=++--+++-=3. 程序框图4. 计算结果5.附录:程序代码517"<<endl;cin>>myX>>myY;Fansuan myFansuan1(myX,myY);();}////////////////////////////////////////////////////////////////////////#include ""//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////Fansuan::Fansuan(){}Fansuan::Fansuan(double X,double Y){this->X=X;this->Y=Y;//初始化x,yN=(int)(Y/1000000);//取出带号L0=6*N-3;//初始化该带号的中央经线经度x=X;y=Y-1000000*N-500000;beta=x/;//初始化beta,弧度单位betaSecond=beta*rouSecond;//初始化beta,秒单位betaDegree=betaSecond/3600;//初始化beta,整度数单位Bf=beta+(+(293622+(2350+22*cos(beta)*cos(beta))*cos(beta)*cos(beta))*cos(b eta)*cos(beta))*(1e-10)*sin(beta)*cos(beta);//初始化Bf,弧度单位BfSecond=Bf*rouSecond;//初始化Bf,秒单位BfDegree=BfSecond/3600;//初始化Bf,整度数单位Nf= Z=y/(Nf*cos(Bf));b2=+*cos(Bf)*cos(Bf))*sin(Bf)*cos(Bf);b4=++*cos(Bf)*cos(Bf))*cos(Bf)*cos(Bf);b3= b5= Bsecond=BfSecond-(1-*Z*Z)*Z*Z)*Z*Z*b2*rouSecond;//计算大地经度B,单位为秒B=Bsecond/3600;//用整度数表示Blsecond=(1-(b3-b5*Z*Z)*Z*Z)*Z*rouSecond;//计算经度差l,单位为秒l=lsecond/3600;//用整度数表示lL=L0+l;//计算大地经度L}double Fansuan::getB(){return B;}double Fansuan::getL(){return L;}void Fansuan::printLocation(){printf("反算得大地坐标为:大地纬度B= %f°大地经度L=%f°\n",B,L);}Fansuan::~Fansuan(){}。

高斯正反算实验报告

高斯正反算实验报告

实验报告高斯正反算*名:**学号:********班级:测绘10-1班指导老师:***目录一、实验目的-----------------2二、实验内容及步骤--------2三、程序代码-----------------4四、流程图--------------------24五、运算结果-----------------26六、实验感想-----------------29一、实验目的1、了解高斯正反算的基本思想。

2.学会编写高斯正反算程序,加深理解。

二、实验内容及步骤高斯投影正算公式是由大地坐标(L,B)求解高斯平面坐标(x,y),而高斯投影反算公式则是由高斯平面坐标(x,y)求解大地坐标(L,B)。

现行的高斯投影用表都是采用克拉索夫斯基椭球参数,这次编程计算不仅采用这种椭球参数,还可以选择IAG椭球进行计算。

编程环境是在VC下,采用C++语言编写。

程序主要分为两部分,第一部分是高斯正反算函数,第二部分是主函数。

三、程序代码1.高斯投影正算// mydlg1.cpp : implementation file#include "stdafx.h"#include "高斯正反算.h"#include "mydlg1.h"#include"math.h"#define P 206264.8062471#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endifCmydlg1::Cmydlg1(CWnd* pParent /*=NULL*/) : CDialog(Cmydlg1::IDD, pParent){//{{AFX_DATA_INIT(Cmydlg1)m_num1 = 0;m_num2 = 0;m_num3 = 0.0;m_num4 = 0;m_num5 = 0;m_num6 = 0.0;m_num7 = 0;m_num8 = 0.0;m_num9 = 0.0;//}}AFX_DATA_INIT}void Cmydlg1::DoDataExchange(CDataExchange* pDX) {CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(Cmydlg1)DDX_Text(pDX, IDC_EDIT1, m_num1);DDX_Text(pDX, IDC_EDIT2, m_num2);DDX_Text(pDX, IDC_EDIT3, m_num3);DDX_Text(pDX, IDC_EDIT4, m_num4);DDX_Text(pDX, IDC_EDIT5, m_num5);DDX_Text(pDX, IDC_EDIT6, m_num6);DDX_Text(pDX, IDC_EDIT7, m_num7);DDX_Text(pDX, IDC_EDIT8, m_num8);DDX_Text(pDX, IDC_EDIT9, m_num9);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(Cmydlg1, CDialog) //{{AFX_MSG_MAP(Cmydlg1)ON_BN_CLICKED(IDC_RADIO1, OnRadio1)ON_BN_CLICKED(IDC_RADIO2, OnRadio2)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON3, OnButton3)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////// //////////////////// Cmydlg1 message handlersvoid Cmydlg1::OnRadio1(){// TODO: Add your control notification handler code here}void Cmydlg1::OnRadio2(){// TODO: Add your control notification handler code here}void Cmydlg1::OnButton2(){// TODO: Add your control notification handler code here CEdit* pedt1 = (CEdit*)GetDlgItem(IDC_EDIT1);pedt1->SetWindowText("");CEdit* pedt2 = (CEdit*)GetDlgItem(IDC_EDIT2);pedt2->SetWindowText("");CEdit* pedt3 = (CEdit*)GetDlgItem(IDC_EDIT3);pedt3->SetWindowText("");CEdit* pedt4 = (CEdit*)GetDlgItem(IDC_EDIT4); pedt4->SetWindowText("");CEdit* pedt5= (CEdit*)GetDlgItem(IDC_EDIT5); pedt5->SetWindowText("");CEdit* pedt6 = (CEdit*)GetDlgItem(IDC_EDIT6); pedt6->SetWindowText("");CEdit* pedt7 = (CEdit*)GetDlgItem(IDC_EDIT7); pedt7->SetWindowText("");CEdit* pedt8 = (CEdit*)GetDlgItem(IDC_EDIT8); pedt8->SetWindowText("");CEdit* pedt9 = (CEdit*)GetDlgItem(IDC_EDIT9); pedt9->SetWindowText("");}void Cmydlg1::OnCancel(){// TODO: Add extra cleanup hereCDialog::OnCancel();}void Cmydlg1::OnButton1(){// TODO: Add your control notification handler code here double N,a0,a3,a4,a5,a6,B,L,l,x,y;UpdateData();B=m_num1*3600+m_num2*60+m_num3;L=m_num4*3600+m_num5*60+m_num6;B=B/P;l=(L-m_num7*3600)/P;N=6399698.902-(21562.267-(108.973-0.612*cos(B)*cos(B))*cos( B)*cos(B))*cos(B)*cos(B);a0=32140.404-(135.3302-(0.7092-0.0040*cos(B)*cos(B))*cos(B) *cos(B))*cos(B)*cos(B);a4=(0.25+0.00252*cos(B)*cos(B))*cos(B)*cos(B)-0.04166;a6=(0.166*cos(B)*cos(B)-0.084)*cos(B)*cos(B);a3=(0.3333333+0.001123*cos(B)*cos(B))*cos(B)*cos(B)-0.16666 67;a5=0.0083-(0.1667-(0.1968+0.0040*cos(B)*cos(B))*cos(B)*cos( B))*cos(B)*cos(B);x=6367558.4969*B-(a0-(0.5+(a4+a6*l*l)*l*l)*l*l*N)*sin(B)*co s(B);y=(1+(a3+a5*l*l)*l*l)*l*N*cos(B);m_num8=x;m_num9=y;UpdateData(FALSE);}void Cmydlg1::OnButton3(){// TODO: Add your control notification handler code here double N,a0,a3,a4,a5,a6,B,L,l,x,y;UpdateData();B=m_num1*3600+m_num2*60+m_num3;L=m_num4*3600+m_num5*60+m_num6;B=B/P;l=(L-m_num7*3600)/P;N=6399596.652-(21565.045-(108.996-0.603*cos(B)*cos(B))*cos( B)*cos(B))*cos(B)*cos(B);a0=32144.5189-(135.3646-(0.7034-0.0041*cos(B)*cos(B))*cos(B )*cos(B))*cos(B)*cos(B);a4=(0.25+0.00253*cos(B)*cos(B))*cos(B)*cos(B)-0.04167;a6=(0.167*cos(B)*cos(B)-0.083)*cos(B)*cos(B);a3=(0.3333333+0.001123*cos(B)*cos(B))*cos(B)*cos(B)-0.16666 67;a5=0.00878-(0.1702-(0.20382*cos(B)*cos(B)))*cos(B)*cos(B);x=6367452.1328*B-(a0-(0.5+(a4+a6*l*l)*l*l)*l*l*N)*sin(B)*co s(B);y=(1+(a3+a5*l*l)*l*l)*l*N*cos(B);m_num8=x;m_num9=y;UpdateData(FALSE);}2.高斯投影反算// mydlg2.cpp : implementation file//#include "stdafx.h"#include "高斯正反算.h"#include "mydlg2.h"#include "math.h"#define P 206264.8062471#define PI 3.1415926535898#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////// //////////////////// Cmydlg2 dialogCmydlg2::Cmydlg2(CWnd* pParent /*=NULL*/): CDialog(Cmydlg2::IDD, pParent){//{{AFX_DATA_INIT(Cmydlg2)m_num1 = 0.0;m_num2 = 0.0;m_num4 = 0;m_num5 = 0;m_num6 = 0;m_num7 = 0.0;m_num8 = 0;m_num9 = 0;m_num10 = 0.0;//}}AFX_DATA_INIT}void Cmydlg2::DoDataExchange(CDataExchange* pDX) {CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(Cmydlg2)DDX_Text(pDX, IDC_EDIT1, m_num1);DDX_Text(pDX, IDC_EDIT2, m_num2);DDX_Text(pDX, IDC_EDIT4, m_num4);DDX_Text(pDX, IDC_EDIT5, m_num5);DDX_Text(pDX, IDC_EDIT6, m_num6);DDX_Text(pDX, IDC_EDIT7, m_num7);DDX_Text(pDX, IDC_EDIT8, m_num8);DDX_Text(pDX, IDC_EDIT9, m_num9);DDX_Text(pDX, IDC_EDIT10, m_num10);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(Cmydlg2, CDialog) //{{AFX_MSG_MAP(Cmydlg2)ON_BN_CLICKED(IDC_RADIO2, OnRadio2)ON_BN_CLICKED(IDC_RADIO1, OnRadio1)ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICKED(IDC_BUTTON4, OnButton4)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////// //////////////////// Cmydlg2 message handlersvoid Cmydlg2::OnRadio2(){// TODO: Add your control notification handler code here}void Cmydlg2::OnRadio1(){// TODO: Add your control notification handler code here }void Cmydlg2::OnButton1(){// TODO: Add your control notification handler code here CEdit* pedt1 = (CEdit*)GetDlgItem(IDC_EDIT1);pedt1->SetWindowText("");CEdit* pedt2 = (CEdit*)GetDlgItem(IDC_EDIT2);pedt2->SetWindowText("");CEdit* pedt4= (CEdit*)GetDlgItem(IDC_EDIT4);pedt4->SetWindowText("");CEdit* pedt5= (CEdit*)GetDlgItem(IDC_EDIT5);pedt5->SetWindowText("");CEdit* pedt6 = (CEdit*)GetDlgItem(IDC_EDIT6); pedt6->SetWindowText("");CEdit* pedt7 = (CEdit*)GetDlgItem(IDC_EDIT7); pedt7->SetWindowText("");CEdit* pedt8 = (CEdit*)GetDlgItem(IDC_EDIT8); pedt8->SetWindowText("");CEdit* pedt9 = (CEdit*)GetDlgItem(IDC_EDIT9); pedt9->SetWindowText("");CEdit* pedt10 = (CEdit*)GetDlgItem(IDC_EDIT10); pedt10->SetWindowText("");}void Cmydlg2::OnCancel(){// TODO: Add extra cleanup hereCDialog::OnCancel();}void Cmydlg2::OnButton2(){// TODO: Add your control notification handler code here double B,L,l,Bf,Nf,b2,b3,b4,b5,b,Z;UpdateData();b=(m_num1/6367558.4969)*P;b=(b/3600)*(PI/180);Bf=b+(50221746+(293622+(2350+22*cos(b)*cos(b))*cos(b)*cos(b ))*cos(b)*cos(b))*pow(10,-10)*sin(b)*cos(b)*P/3600*(PI/180) ;Nf=6399698.902-(21562.267-(108.973-0.612*cos(Bf)*cos(Bf))*c os(Bf)*cos(Bf))*cos(Bf)*cos(Bf);Z=m_num2/(Nf*cos(Bf));b2=(0.5+0.003369*cos(Bf)*cos(Bf))*sin(Bf)*cos(Bf);b3=0.333333-(0.1666667-0.001123*cos(Bf)*cos(Bf))*cos(Bf)*co s(Bf);b4=0.25+(0.16161+0.00562*cos(Bf)*cos(Bf))*cos(Bf)*cos(Bf); b5=0.2-(0.16667-0.0088*cos(Bf)*cos(Bf))*cos(Bf)*cos(Bf);Bf=Bf*(180/PI);B=Bf-(1-(b4-0.12*Z*Z)*Z*Z)*Z*Z*b2*P/3600;l=(1-(b3-b5*Z*Z)*Z*Z)*Z*P;L=m_num4+l/3600;m_num5=int(B);m_num6=int((B-m_num5)*60);m_num7=((B-m_num5)*60-m_num6)*60;m_num8=int(L);m_num9=int((L-m_num8)*60);m_num10=((L-m_num8)*60-m_num9)*60;UpdateData(FALSE);}void Cmydlg2::OnButton4(){// TODO: Add your control notification handler code here double B,L,l,Bf,Nf,b2,b3,b4,b5,b,Z;UpdateData();b=m_num1/6367558.4969*P;b=(b/3600)*(PI/180);Bf=b+(50221746+(293622+(2350+22*cos(b)*cos(b))*cos(b)*cos(b ))*cos(b)*cos(b))*pow(10,-10)*sin(b)*cos(b)*P/3600*(PI/180) ;Nf=6399698.902-(21562.267-(108.973-0.612*cos(Bf)*cos(Bf))*c os(Bf)*cos(Bf))*cos(Bf)*cos(Bf);Z=m_num2/(Nf*cos(Bf));b2=(0.5+0.00336975*cos(Bf)*cos(Bf))*sin(Bf)*cos(Bf);b3=0.333333-(0.1666667-0.001123*cos(Bf)*cos(Bf))*cos(Bf)*co s(Bf);b4=0.25+(0.161612+0.005617*cos(Bf)*cos(Bf))*cos(Bf)*cos(Bf) ;b5=0.2-(0.16667-0.00878*cos(Bf)*cos(Bf))*cos(Bf)*cos(Bf);Bf=Bf*(180/PI);////////B=Bf-(1-(b4-0.147*Z*Z)*Z*Z)*Z*Z*b2*P/3600;l=(1-(b3-b5*Z*Z)*Z*Z)*Z*P;L=m_num4+l/3600;m_num5=int(B);m_num6=int((B-m_num5)*60);m_num7=((B-m_num5)*60-m_num6)*60; m_num8=int(L);m_num9=int((L-m_num8)*60);m_num10=((L-m_num8)*60-m_num9)*60; UpdateData(FALSE);}四、流程图1、高斯投影正算投影2.高斯投影反算五、运算结果1.主界面2.高斯投影正算(克氏椭球)3.高斯投影正算(IAG椭球)4.高斯投影反算(克氏椭球)5. 高斯投影反算(IAG椭球)六、实验感想我在这次实验编程中主要完成了在两种椭球下的高斯正反算。

(完整版)高斯投影正反算

(完整版)高斯投影正反算

高斯投影正反算学院:资源与环境工程工程学院专业:测绘工程学号:X51414012姓名:孙超一、高斯投影概述想象有一个椭圆柱面横套在地球椭球体外面,并与某一条子午线相切,椭圆柱的中心轴通过椭球体的中心,然后用一定投影方法,将中央子午线两侧各一定经差范围内的地区投影到椭圆柱面上,再将此柱面展开即成为投影面。

高斯投影由于是正形投影,故保证了投影的角度不变性,图形的相似性以及在某点各方向上长度比的同一性。

由于采用了同样法则的分带投影,这即限制了长度变形,又保证了在不同投影带中采用相同的简便公式和数表进行变形引起的各项改正的计算,并且带与带间的互相换算也能用相同的公式和方法进行。

高斯投影的这些优点必将使它得到广泛的推广和具有国际意义。

二、高斯投影坐标正算公式1.高斯投影必须满足以下三个条件1)中央子午线投影后为直线2)中央子午线投影后长度不变3)投影具有正形性质,即正形投影条件2.高斯正算公式推导1)由第一个条件可知,由于地球椭球体是一个旋转椭球体,所以高斯投影必然有这样一个性质,即中央子午线东西两侧的投影必然对称于中央子午线。

2)由于高斯投影是换带投影,在每带内经差l是不大的,lρ是一个微小量,所以可以将 X=X (l,q ),Y=Y (l ,q )展开为经差为l 的幂级数,它可写成如下的形式X=m 0+m 2l 2+m 4l 4+…Y=m 1l+m 3l 2+m 5l 5+…式中m 0,m1,m2,…是待定系数,他们都是纬度B 的函数。

3)由第三个条件:∂y ∂l =∂x ∂q 和∂x ∂l =-∂y ∂q ,将上式分别对l 和q 求偏导2340123423401234...........x m m l m l m l m l y n n l n l n l n l =+++++=+++++可得到下式0312123403121234111,,,, 234111,,,,234dm dm dm dm n n n n dq dq dq dq dn dn dn dn m m m m dq dq dq dq ⎧====⎪⎪⎨⎪=-=-=-=-⎪⎩L L 经过计算可以得出232244524632235242225sin cos sin cos (594)224sin cos (6158)720cos cos (1) 6cos (5181458)120N N x X B B l B B t l N B B t t l N y N B l B t l N B t t t l ηηηηη=+⋅+-+++-+=⋅+-++-++-三、高斯投影坐标反算公式推导1.思路:级数展开,应用高斯投影三个条件,待定系数法求解。

[GB][21][高斯投影正反算实习]

[GB][21][高斯投影正反算实习]
4

UTM投影变形的特点:
UTM投影的中央经线长度比为0.999 6,这是为了使得
B=00,l=30处的最大变形值小于0.001而选择的数值。 两条割线(在赤道上,它们位于离中央子午线大约 ±180km(约± 10 40’)处)上没有长度变形;离开这两条 割线愈远变形愈大;在两条割线以内长度变形为负值;
q q q0 ln 0
1
B B B0 t1 ' q t2 ' q2 t3 ' q3 t4 ' q4 t5 ' q5 ,
23

方向改化及距离改化的简化公式:
1.2 " "
6R
2 0
( y2 y1 )(2 x1 x2 )
18

因为 d ( N cos B) dr dB M sin B N cos B dq dB dq M
d dq
sin B0
0 0
0 N0 cot B0 Ke sin B q 将上述两式代入微分方程得:
则有:
(q 0e
) 0 q
Ke
9
§4.11 兰勃脱投影概述 4.11.1兰勃脱投影基本概念 兰勃脱(Lambert)投影是正形正轴圆锥投影。 设想用一个圆锥套在地球椭球面上,使圆锥轴与椭 球自转轴相一致,使圆锥面与椭球面一条纬线相切, 将椭球面上的纬线投影到圆锥面上成为同心圆,经 线投影圆锥面上成为从圆心发出的辐射直线,然后 沿圆锥面某条母线(一般为中央经线L0),将圆锥面 切开而展成平面,从而实现了兰勃脱切圆锥投影。
25
26

兰勃脱投影是正形正轴圆锥投影,它的长度变形(m-1)与 经度无关,但随纬差Δ B,即纵坐标x的增大而迅速增大, 为限制长度变形,采用按纬度的分带投影,因此,这种 投影适宜南北狭窄,东西延伸的国家和地区。这些国家 根据本国实际情况,采用相应的分带方法和统一的坐标 系统。但与高斯投影相比较,这种投影子午线收敛角有 时过大,精密的方向改化和距离改化公式也较高斯投影 要复杂,故目前国际上还是建议采用高斯投影。

高斯投影及换带计算

高斯投影及换带计算

x
y
o
500km
=500000+ = 636780.360m = 500000+ = 227559.720m
国家统一坐标:
(带号)
(带号)
例:有一国家控制点的坐标:x=3102467.280m ,y=19367622.380m,(1)该点位于6˚ 带的第几带?(2)该带中央子午线经度是多少?(3)该点在中央子午线的哪一侧? (4)该点距中央子午线和赤道的距离为多少?
3)、高斯投影的特点:
(1)中央子午线投影后为直线,且长度不变。(2) 除中央子午线外,其余子午线的投影均为凹向中央子午线的曲线,并以中央子午线为对称轴。投影后有长度变形。(3) 赤道线投影后为直线,但有长度变形。
赤道
中央子午线
平行圈
子午线
O
x
y
(4) 除赤道外的其余纬线,投影后为凸向赤道的曲线,并以赤道为对称轴。(5)经线与纬线投影后仍然保持正交。 (6) 所有长度变形的线段,其长度变形比均大于l。(7)离中央子午线愈远,长度变形愈大。
工程测量采用3 º带,特殊工程可采用1.5 º带或任意带
按照6º带划分的规定,第1带中央子午线的经度为3º,其余各带中央子午线经度与带号的关系是: L。=6ºN-3º (N为6º带的带号) 例:20带中央子午线的经度为: L。=6º× 20-3º=117 º 按照3º带划分的规定,第1带中央子午线的经度为3º,其余各带中央子午线经度与带号的关系是: L。=3ºn (n为3º带的带号) 例:120带中央子午线的经度为 L。=3º× 120=360 º
2、高斯投影坐标反算公式:x,y B,l
满足以下三个条件:①x坐标轴投影后为中央子午线是投影的对称轴;② x坐标轴投影后长度不变;③投影具有正形性质,即正形投影条件。

投影仪测量员的实习报告

投影仪测量员的实习报告

实习报告实习岗位:投影仪测量员实习时间:2023年2月24日至2023年3月10日实习单位:某光电科技有限公司一、实习背景及目的随着科技的发展,投影仪在各个领域得到了广泛应用,如教育、医疗、企业等。

作为投影仪生产厂家,某光电科技有限公司致力于为客户提供高品质的产品和专业的服务。

为了更好地了解投影仪的测量方法和技巧,提高自身的业务能力,我参加了公司组织的投影仪测量员实习。

本次实习的主要目的是掌握投影仪的基本测量方法,提高投影仪的装配和调试技能,培养良好的团队合作意识和敬业精神。

二、实习内容与过程1. 实习前的培训在实习开始前,公司为我们组织了为期一周的培训,内容包括投影仪的基本原理、结构组成、测量方法、装配与调试等。

通过培训,我们对投影仪有了更深入的了解,为后续的实习奠定了基础。

2. 实习过程(1)投影仪测量在实习过程中,我们主要负责投影仪的测量工作。

测量内容包括投影仪的分辨率、亮度、色彩偏差等。

我们学会了使用专业的测量仪器和软件,如光度计、色度计等,并掌握了相应的测量方法和技巧。

(2)投影仪装配与调试除了测量工作,我们还参与了投影仪的装配和调试环节。

在装配过程中,我们严格遵循操作规程,确保每个部件安装准确无误。

在调试环节,我们根据测量结果调整投影仪的各项参数,以达到最佳性能。

(3)团队协作与沟通在实习过程中,我们充分体会到了团队合作的重要性。

每个成员都有自己的专长,通过相互协作和沟通,我们共同解决了许多实际问题,提高了工作效率。

三、实习收获与反思1. 实习收获通过本次实习,我掌握了投影仪的基本测量方法、装配和调试技巧,提高了自己的实际操作能力。

同时,我也学会了如何与团队成员协作,共同完成任务。

2. 实习反思在实习过程中,我发现自己在理论知识方面还有待加强。

今后,我要努力学习相关知识,提高自己的综合素质。

此外,我要注重实践操作,将所学知识运用到实际工作中,提高自己的实践能力。

四、总结通过本次实习,我对投影仪测量工作有了更深入的了解,取得了丰硕的成果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高斯投影正反算实习报告
程序代码
#include <stdio.h>
#include <iostream.h>
#include <math.h>
#include<iomanip.h>
class Angle
{
public:
double degree,cent,second,Hudu,seconds;
//构造函数
Angle(double _degree,double _cent,double _second)
{
degree=_degree;
cent=_cent;
second=_second;
seconds=(degree*3600+cent*60+second);
Hudu=(degree*3600+cent*60+second)*2*3.1415926535/(360*60*60);
}
Angle()
{
}
SToD()
{
second=seconds-int(seconds/60)*60;
degree=int((seconds-second)/3600);
cent=int((seconds-second-degree*3600)/60);
}
~Angle()
{
}
};
void main()
{
//正算过程
//定义变量
Angle B(51,38,43.9023),L(126,2,13.1360),_B,_L;
double L0,l,N,a0,a4,a6,a3,a5,x,y,rou;
rou=(360*60*60)/(2*3.1415926535);
if(int(L.degree)%6!=0)
{
L0=6*(int(L.degree)/6+1)-3;
}
else
L0=6*(int(L.degree)/6)-3;
l=L.Hudu-L0*3600*2*3.1415926535/(360*60*60);
N=6399698.902-(21562.267-(108.973-0.612*cos(B.Hudu)*cos(B.Hudu))*cos(B.Hudu)*co s(B.Hudu))*cos(B.Hudu)*cos(B.Hudu);
a0=32140.404-(135.3302-(0.7092-0.0040*cos(B.Hudu)*cos(B.Hudu))*cos(B.Hudu)*cos(B .Hudu))*cos(B.Hudu)*cos(B.Hudu);
a4=(0.25+0.00252*cos(B.Hudu)*cos(B.Hudu))*cos(B.Hudu)*cos(B.Hudu)-0.04166;
a6=(0.166*cos(B.Hudu)*cos(B.Hudu)-0.084)*cos(B.Hudu)*cos(B.Hudu);
a3=(0.3333333+0.001123*cos(B.Hudu)*cos(B.Hudu))*cos(B.Hudu)*cos(B.Hudu)-0.1666 667;
a5=0.0083-(0.1667-(0.1968+0.0040*cos(B.Hudu)*cos(B.Hudu))*cos(B.Hudu)*cos(B.Hud u))*cos(B.Hudu)*cos(B.Hudu);
x=6367558.4969*B.Hudu-(a0-(0.5+(a4+a6*l*l)*l*l)*l*l*N)*sin(B.Hudu)*cos(B.Hudu);
y=(1+(a3+a5*l*l)*l*l)*l*N*cos(B.Hudu);
//结果输出
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
// 反算过程
double b,Bf,Nf,Z,b2,b3,b4,b5,l1;
b=(x/6367558.4969);
Bf=b+(50221746+(293622+(2350+22*cos(b)*cos(b))*cos(b)*cos(b))*cos(b)*cos(b))*0.000 0000001*sin(b)*cos(b);
Nf=6399698.902-(21562.267-(108.973-0.612*cos(Bf)*cos(Bf))*cos(Bf)*cos(Bf))*cos(Bf)*c os(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.seconds=Bf*rou-(1-(b4-0.12*Z*Z)*Z*Z)*Z*Z*b2*rou;
l1=(1-(b3-b5*Z*Z)*Z*Z)*Z*rou;
_L.seconds=L0*3600+l1;
_B.SToD();
_L.SToD();
//结果输出
cout<<"_B="<<_B.degree<<"du"<<_B.cent<<"fen"<<setprecision(8)<<_B.second<<" miao"<<endl;
cout<<"_L="<<_L.degree<<"du"<<_L.cent<<"fen"<<setprecision(8)<<_L.second<<" miao"<<endl;
计算结果
x=5.72816e+006
y=-205080
_B=51du38fen43.902358miao
_L=126du2fen13.135972miao
Press any key to continue
程序设计流程图。

相关文档
最新文档