高斯投影正反算实习

更新时间:2023-10-13 01:40:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

大地测量学编程实习报告

姓名:鲁尼 学号: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),x坐标轴投影成中央子午线,是投影的对称轴; (2),x轴上的长度投影保持不变; (3),正性投影条件。 相应计算公式:

其中:

输入大地纬度和经度 计算中央子午线经度 计算N,a0,a4,a6,a3,a5的值

5计算结果

计算高斯投影坐标x,y 换算成国家统一坐标.. 输入此时的国家同一坐标X,Y 定中央经线l0 利用实用公式反算B,l,, L=L0+l 输出B,L 计算结束 程序流程图

6代码

#include \#include #include

#include

const double pmm=206264.8062470964;//一个弧度换算成秒 ////高斯正算函数

void EtranG(int xd,int xf,int yd,int yf,

double xm,double ym,double x,double y,int N0) { double xmm,ymm;

int L0,N01;

double l2,l,N,a0,a4,a6,a3,a5,B,x1,y1; double cosB2;

//////此处将角度转化为用秒表示 xmm=xd*3600 + xf*60 + xm; ymm=yd*3600 + yf*60 + ym; N01=(yd/6+1);//////定带号

L0=6*N01-3;/////中央子午线的经度 l2=ymm-3600*L0;////l的秒表示 }

//////高斯反算函数

void GtranE(double x,double y,int N0,double B,double L) {

double Bf,Beta,Z,Nf,b2,b3,b4,b5; double cosb2,cosbf,z2; double B1,l,L1; double L0;

L0=(N0*6-3)*3600;/////计算中央子午线经度的秒表示 a5=0.0083-(0.1667-(0.1968+0.004*cosB2)*cosB2)*cosB2; ///////////计算x,y坐标

x1=6367558.4969*B-(a0-(0.5+(a4+a6*l*l)*l*l)*l*l*N)*sin(B)*cos(B); y1=(1+(a3+a5*l*l)*l*l)*l*N*cos(B); /////////将值赋给函数参数 x=x1; y=y1; N0=N01;

B = xmm/pmm;////////纬度转化为弧度 l=l2/pmm;///////将l化为弧度表示

cosB2=cos(B)*cos(B);//////定义一个cos(B)的平方

//////以下为实用公式中所对应的量N,a0,a4,a6,a3,a5, N=6399698.902-(21562.267-(108.973-0.612*cosB2)*cosB2)*cosB2; a0=32140.404-(135.3302-(0.7092-0.004*cosB2)*cosB2)*cosB2; a4=(0.25+0.00252*cosB2)*cosB2-0.04166; a6=(0.166*cosB2-0.084)*cosB2;

a3=(0.3333333+0.001123*cosB2)*cosB2-0.1666667;

///////以下为反算公式中的所对应的Beta,Bf,Beta,Z,Nf,b2,b3,b4,b5;

本文来源:https://www.bwwdw.com/article/3def.html

Top