logo资料库

高斯投影正反算公式.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
一、相关概念
二、计算模型:
三、程序代码函数:
*返回:none
高斯投影坐标正反算 一、相关概念 大地坐标系由大地基准面和地图投影确定,由地图投影到特定椭 圆柱面后在南北两极剪开展开而成,是对地球表面的逼近,各国或地 区有各自的大地基准面,我国目前主要采用的基准面为: 1.WGS84 基准面,为 GPS 基准面,17 届国际大地测量协会上推荐, 椭圆柱长半轴 a=6378137m,短半轴 b=6356752.3142451m; 2.西安 80 坐标系,1975 年国际大地测量协会上推荐,椭圆柱长 半轴 a=6378140m,短半轴 b=6356755.2881575m; 3.北京 54 坐标系,参照前苏联克拉索夫斯基椭球体建立,椭圆柱 长半轴 a=6378245m, 短半轴 b=6356863.018773m; 通常所说的高斯投影有三种,即投影后: a) 角度不变(正角投影),投影后经线和纬线仍然垂直; b) 长度不变; c) 面积不变; 大地坐标一般采用高斯正角投影,即在地球球心放一点光源,地 图投影到过与中央经线相切的椭圆柱面上而成;可分带投影,按中央 经线经度值分带,有每 6 度一带或每 3 度一带两种(1 带中央经线经 度为均为 3 度),即所谓的高斯-克吕格投影。
图表 11 高斯投影和分带 地球某点经度(L)为过地球自转轴所在半圆与子午线所在半圆 夹角,东半球为东经,西半球为西经;地球某点纬度(B)为所在水 平面法线与赤道圆面的线面角。 正算是已知大地坐标(L,B),求解高斯平面坐标(X,Y),为 确保 Y 值为正,Y 增加 500 公里;反算则是由高斯平面坐标(X,Y) 求解大地坐标(L,B)。 二、计算模型: 地球椭球面由椭圆绕地球自转轴旋转 180 度而成。 椭圆长半轴 a ,椭圆短半轴 b, 椭圆方程: 图表 1 椭圆
(1) 椭球面方程: 图表 2 椭球面 /*************************************** 与网上充斥的将函数关系先展开为泰勒级数,再依据投影规则确 定各参数不同,本文直接依据空间立体三角函数关系得出结果。 *****/ (一)正算 由图表 1,
由方程式(1), 令 ,可得 ,则 在图表 2 中, 由椭圆方程,令 可知: (二)反算 由式(6)根据 X 值求出 ,由式(5)得到 r 值, 由式(4)可得,
三、程序代码函数: /************高斯投影正算函数*************** 输入 : double a ,double b,(m_B,m_L)为大地坐标, L0为带号 (6度带),(x,y)为高斯平面坐标,y加上了500000常量 返回:none ******************************************/ void gaosiforward(double a,double b,double m_B,double m_L,double L0,double &x,double &y) { double B=m_B*3.14159265/180;//换算成弧度 double L=(m_L-6.0*L0+3.0)*3.14159265/180; //换算成弧度 double xita=atan(b*b*tan(B)/a/a/cos(L)); double dxita=0.000001; double xi=dxita; x=0.0; double c=a*a/b/b; while(xi
} x*=a; y=a*cos(xita)*tan(L)/sqrt(c*sin(xita)*sin(xita)+cos(x ita)*cos(xita)); y+=500000.0; } /**************高斯反算函数*************** 输入 : double a ,double b,(B,L)为大地坐标, L0为带号(6 度带),(x,y)为高斯平面坐标,y加上了500000常量 *返回:none *****************************/ void gaosibackward(double a,double b,double x,double y,double L0,double &B,double &L) { double dxi=0.000001; double xi=dxi; double X=0.0; double c= a* a/ b/b; while(X< x/ a) { X+=dxi/sqrt(c*sin(xi)*sin(xi)+cos(xi)*cos(xi));
xi+=dxi; } double r= a/sqrt(c*sin(xi)*sin(xi)+cos(xi)*cos(xi)); double Y=y-500000.0; L=atan(Y/r/cos(xi)); L=L*180/3.14159265-3.0+6.0*L0; B=atan(m_a*m_a*tan(xi)*cos(L)/m_b/m_b); B=B*180/3.14159265; }
分享到:
收藏