




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高斯投影坐标正反算一、基本思想:高斯投影正算公式就是由大地坐标(L,B)求解高斯平面坐标(x,y),而高斯投影反算公式则是由高斯平面坐标(x,y)求解大地坐标(L,B)。二、计算模型:基本椭球参数:椭球长半轴椭球扁率椭球短半轴:椭球第一偏心率 :椭球第二偏心率 :高斯投影正算公式:此公式换算的精度为0.001m 其中:角度都为弧度为点的纬度,为点的经度,为中央子午线经度;为子午圈曲率半径,;其中为子午线弧长: 为基本常量,按如下公式计算:为基本常量,按如下公式计算:;高斯投影反算公式:此公式换算的精度为0.0001.其中:为中央子午线经度。为底点纬度,也就是当时的子午线弧长所对应的纬度。按照子午线弧长公式:,迭代进行计算;初始开始时设:以后每次迭代按下式计算:重复迭代至为止。;海福特椭球(1910)我国52年以前基准椭球a=m b=.m =0.克拉索夫斯基椭球(1940 Krassovsky) 北京54坐标系基准椭球a=m b=.m =0.1975年I.U.G.G推荐椭球(国际大地测量协会1975) 西安80坐标系基准椭球a=m b=.m =0.78WGS-84椭球(GPS全球定位系统椭球、17届国际大地测量协会) WGS-84 GPS 基准椭球a=m b=.m =0.247三、程序代码函数:/*高斯投影正算函数*输入 : double a ,f 椭球参数,B,L为大地坐标,L0为中央子午线的经度,单位为弧度,x,y为高斯平面坐标,y加上了常量返回:none*/void gaosiforward(double a,double f,double B,double L,double L0,double &x,double &y)double b, c,e1, e2; /短半轴,极点处的子午线曲率半径,第一偏心率,第二偏心率double l, W,N, M, daihao;/W为常用辅助函数,N为子午圈曲率半径,M为卯酉圈曲率半径double X;/子午线弧长,高斯投影的坐标double ruo, ita, sb, cb,t;double m5,n5;/计算一些基本常量b=a*(1-f);e1=sqrt(a*a-b*b)/a;e2=sqrt(a*a-b*b)/b;c=a*a/b;m0=a*(1-e1*e1);m1=3*(e1*e1*m0)/2.0;m2=5*(e1*e1*m1)/4.0;m3=7*(e1*e1*m2)/6.0;m4=9*(e1*e1*m3)/8.0;n0=m0+m1/2+3*m2/8+5*m3/16+35*m4/128;n1=m1/2+m2/2+15*m3/32+7*m4/16;n2=m2/8+3*m3/16+7*m4/32;n3=m3/32+m4/16;n4=m4/128; /by kjh 2014.5.22 把改成了/由纬度计算子午线弧长X=n0*B-sin(B)*cos(B)*(n1-n2+n3)+(2*n2-(16*n3/3.0)*sin(B)*sin(B)+16*n3*pow(sin(B),4)/3.0);l=L-L0;/弧度ita=e2*cos(B);sb=sin(B);cb=cos(B);W=sqrt(1-e1*e1*sb*sb);N=a/W;t=tan(B);ruo=(180/Pi)*3600;x=(X+N*sb*cb*l*l/2+N*sb*cb*cb*cb*(5-t*t+9*ita*ita+4*ita*ita*ita*ita)*l*l*l*l/24+N*sb*cb*cb*cb*cb*cb*(61-58*t*t+t*t*t*t)*l*l*l*l*l*l/720);y=(N*cb*l+N*cb*cb*cb*(1-t*t+ita*ita)*l*l*l/6+N*cb*cb*cb*cb*cb*(5-18*t*t+t*t*t*t+14*ita*ita-58*ita*ita*t*t)*l*l*l*l*l/120);y=y+;/*高斯反算函数*输入 : double a ,f 椭球参数, x,y为高斯平面坐标,L0为中央子午线的经度; B,L为大地坐标,单位为弧度*返回:none*/void gaosibackward(double a,double f,double x,double y,double L0,double &B,double &L)double b, c,e1, e2; /短半轴,极点处的子午线曲率半径,第一偏心率,第二偏心率double Bf,itaf,tf,Nf,Mf,Wf;double l;double m5,n5;y=y-;/计算一些基本常量b=a*(1-f);e1=sqrt(a*a-b*b)/a;e2=sqrt(a*a-b*b)/b;c=a*a/b;m0=a*(1-e1*e1);m1=3*(e1*e1*m0)/2.0;m2=5*(e1*e1*m1)/4.0;m3=7*(e1*e1*m2)/6.0;m4=9*(e1*e1*m3)/8.0;n0=m0+m1/2+3*m2/8+5*m3/16+35*m4/128;n1=m1/2+m2/2+15*m3/32+7*m4/16;n2=m2/8+3*m3/16+7*m4/32;n3=m3/32+m4/16;n4=m4/128;/计算Bf double Bf1,Bfi0,Bfi1,FBfi; Bf1=x/n0; Bfi0=Bf1; Bfi1=0; FBfi=0; int num=0; do num=0; FBfi=0.0-n1*sin(2*Bfi0)/2.0+n2*sin(4*Bfi0)/4.0-n3*sin(6*Bfi0)/6.0; Bfi1=(x-FBfi)/n0; if (fabs(Bfi1-Bfi0)(Pi*pow(10.0,-8)/(36*18) num=1; Bfi0=Bfi1; while (num=1); Bf=Bfi1;tf=tan(Bf);Wf=sqrt(1-e1*e1*sin(Bf)*sin(Bf);Nf=a/Wf;Mf=a*(1-e1*e1)/(Wf*Wf*Wf);itaf=e2*cos(Bf);B=Bf-tf*y*y/(2*Mf*Nf)+tf*(5+3*tf*tf+itaf*itaf-9*itaf*itaf*tf*tf)*pow(y,4)/(24*Mf*pow(Nf,3)-tf*(61+90*tf*tf+45*pow(tf,4)*pow(y,6)/(720*Mf*pow(Nf,5);l=y/(Nf*cos(Bf)-(1+2*tf*tf+itaf*itaf)*pow(y,3)/(6*pow(Nf,3)*cos(Bf)+(5+28*tf*tf+24*pow(tf,4)+6*itaf*itaf+8*itaf*itaf*tf*tf)*pow(y,5)/(120*pow(Nf,5)*cos(Bf);L=l+L0;2014-5-22 输入: double a ,f 椭球参数,B,L为大地坐标,L0为中央子午线的经度,单位为弧度,x,y为高斯平面坐标,y加上了常量 Private Function gaosiforward(ByVal a As Double, ByVal f As Double, ByVal B As Double, ByVal L As Double, ByVal L0 As Double) As Double() Dim x, y, xy(2) As Double Dim bb, c, e1, e2 As Double 短半轴,极点处的子午线曲率半径,第一偏心率,第二偏心率 Dim ll, W, N, M, daihao As Double W为常用辅助函数,N为子午圈曲率半径,M为卯酉圈曲率半径 Dim xx As Double 子午线弧长,高斯投影的坐标 Dim ruo, ita, sb, cb, t As Double Dim mm(5), nn(5) As Double bb = a * (1 - f) e1 = Math.Sqrt(a * a - bb * bb) / a e2 = Math.Sqrt(a * a - bb * bb) / bb c = a * a / bb mm(0) = a * (1 - e1 * e1) mm(1) = 3 * (e1 * e1 * mm(0) / 2.0 mm(2) = 5 * (e1 * e1 * mm(1) / 4.0 mm(3) = 7 * (e1 * e1 * mm(2) / 6.0 mm(4) = 9 * (e1 * e1 * mm(3) / 8.0 nn(0) = mm(0) + mm(1) / 2 + 3 * mm(2) / 8 + 5 * mm(3) / 16 + 35 * mm(4) / 128 nn(1) = mm(1) / 2 + mm(2) / 2 + 15 * mm(3) / 32 + 7 * mm(4) / 16 nn(2) = mm(2) / 8 + 3 * mm(3) / 16 + 7 * mm(4) / 32 nn(3) = mm(3) / 32 + mm(4) / 16 nn(4) = mm(4) / 128 xx = nn(0) * B - Sin(B) * Cos(B) * (nn(1) - nn(2) + nn(3) + (2 * nn(2) - (16 * nn(3) / 3.0) * Sin(B) * Sin(B) + 16 * nn(3) * Pow(Sin(B), 4) / 3.0) ll = L - L0 弧度 ita = e2 * Cos(B) sb = Sin(B) cb = Cos(B) W = Sqrt(1 - e1 * e1 * sb * sb) N = a / W t = Tan(B) ruo = (180 / PI) * 3600 x = (xx + N * sb * cb * ll * ll / 2 + N * sb * cb * cb * cb * (5 - t * t + 9 * ita * ita + 4 * ita * ita * ita * ita) * ll * ll * ll * ll / 24 + N * sb * cb * cb * cb * cb * cb * (61 - 58 * t * t + t * t * t * t) * ll * ll * ll * ll * ll * ll / 720) y = (N * cb * ll + N * cb * cb * cb * (1 - t * t + ita * ita) * ll * ll * ll / 6 + N * cb * cb * cb * cb * cb * (5 - 18 * t * t + t * t * t * t + 14 * ita * ita - 58 * ita * ita * t * t) * ll * ll * ll * ll * ll / 120) y = y + xy(0) = x xy(1) = y Return xy End Function Private Function gaosibackward(ByVal a As Double, ByVal f As Double, ByVal x As Double, ByVal y As Double, ByVal L0 As Double) As Double() Dim b, l, bl(2) As Double Dim bb, c, e1, e2 As Double 短半轴,极点处的子午线曲率半径,第一偏心率,第二偏心率 Dim Bf, itaf, tf, Nf, Mf, Wf As Double Dim ll As Double Dim m(5), n(5) As Double y = y - bb = a * (1 - f) e1 = Sqrt(a * a - bb * bb) / a e2 = Sqrt(a * a - bb * bb) / bb c = a * a / bb m(0) = a * (1 - e1 * e1) m(1) = 3 * (e1 * e1 * m(0) / 2.0 m(2) = 5 * (e1 * e1 * m(1) / 4.0 m(3) = 7 * (e1 * e1 * m(2) / 6.0 m(4) = 9 * (e1 * e1 * m(3) / 8.0 n(0) = m(0) + m(1) / 2 + 3 * m(2) / 8 + 5 * m(3) / 16 + 35 * m(4) / 128 n(1) = m(1) / 2 + m(2) / 2 + 15 * m(3) / 32 + 7 * m(4) / 16 n(2) = m(2) / 8 + 3 * m(3) / 16 + 7 * m(4) / 32 n(3) = m(3) / 32 + m(4) / 16 n(4) = m(4) / 128 计算BF Dim Bf1, Bfi0, Bfi1, FBfi As Double Bf1 = x / n(0) Bfi0 = Bf1 Bfi1 = 0 FBfi = 0 Dim num As Integer = 0 Do num = 0 FBfi = 0.0 - n(1) * Sin(2 * Bfi0) / 2.0 + n(2) * Sin(4 * Bfi0) / 4.0 - n(3) * Sin(6 * Bfi0) / 6.0 Bfi1 = (x - FBfi) / n(0) If (Abs(Bfi1 - Bfi0) (PI * Pow(10.0, -8) / (36 * 18) Then num = 1 Bfi0 = Bfi1 End If Loop While num = 1 Bf = Bfi1 tf = Tan(Bf) Wf = Sqrt(1 - e1 * e1 * Sin(Bf) * Sin(Bf) Nf = a / Wf Mf = a * (1 - e1 * e1) / (Wf * Wf * Wf) itaf = e2 * Cos(Bf) b = Bf - tf * y * y / (2 * Mf * Nf) + tf * (5 + 3 * tf * tf + itaf * itaf - 9 * itaf * itaf * tf * tf) * Pow(y, 4) / (24 * Mf * Pow(Nf, 3) - tf * (61 + 90 * tf * tf + 45 * Pow(tf, 4) * Pow(y, 6) / (720 * Mf * Pow(Nf, 5) ll = y / (Nf * Cos(Bf) - (1 + 2 * tf * tf + itaf * itaf) * Pow(y, 3) / (6 * Pow(Nf, 3) * Cos(Bf) + (5 + 28 * tf * tf + 24 * Pow(tf, 4) + 6 * itaf * itaf + 8 * itaf * itaf * tf * tf) * Pow(y, 5) / (120 * Pow(Nf, 5) * Cos(Bf) l = ll + L0 bl(0) = hdtod(b) bl(1) = hdtod(l) Return bl End Function 度转换为弧度 Private Function d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年农村环境综合治理方案设计大赛试题集
- 护理基础吸氧知识培训课件
- 2025秋苏教版一年级上册数学教学计划
- 2025年OLED检测系统项目发展计划
- 2025年乙二醇二乙醚合作协议书
- 黑龙江省大庆市肇源县西部五校联考(五四学制)2025-2026学年八年级上学期开学考试地理试卷(含答案)
- 河北省承德市围场县围场玉林学校2024-2025学年六年级上学期期末数学试题参考答案
- 第二单元混合运算单元测试卷(含答案) 2025-2026学年人教版三年级数学上册
- 新冠育苗考试及答案
- 幼儿语言领域考试及答案
- CJ/T 391-2012生活垃圾收集站压缩机
- 肛肠疾病中医药与西医手术治疗的结合应用
- 中国卒中学会急性缺血性卒中再灌注治疗指南(2024)解读
- 医院电梯安全保障及维保方案
- 2025年能源安全风险评估报告
- 2025-2030妇幼保健产业规划专项研究报告
- 2025年江西省安福县事业单位公开招聘辅警36名笔试题带答案
- 《物流基础》完整课件(共三个项目)
- 索菲亚全屋定制合同协议
- 证件借用免责协议书范本
- 2025年人教版小学数学二年级上册学期教学计划
评论
0/150
提交评论