高斯坐标反算坐标转经纬度
生活随笔
收集整理的這篇文章主要介紹了
高斯坐标反算坐标转经纬度
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近做項目的時候,有一塊需求是在地圖上畫圖,涉及到經(jīng)緯度。但是我們拿到的數(shù)據(jù)是北京54坐標,不是經(jīng)緯度,輾轉(zhuǎn)求方法不得,就自己在網(wǎng)上搜索算法并加以改造,實驗得出在谷歌衛(wèi)星地圖上很準確,但是在百度地圖、高德地圖/騰訊地圖會有偏差,估計也是國家保護的問題吧。下面是Java方法
1 public static void gsjs(double X ,double Y){ 2 double x,y,L0 = 0,B,L; 3 x = X; 4 y = Y; 5 double p=206264.80625; 6 for (int i = 1; Y/i >=10; i = i * 10)//對Y坐標處理并求出中央子午線經(jīng)度 7 { 8 y = Y - (int)(Y / i) * i-500000; 9 L0 =117; 10 } 11 //按6°帶克氏橢球反算 12 double bt = x / 6367558.4969*p; 13 double BT = x / 6367558.4969; 14 double c3=Math.cos(BT)*Math.cos(BT); 15 double c4=Math.sin(BT)*Math.cos(BT); 16 double Bf=(bt+(50221746+(293622+(2350+22*c3)*c3)*c3)*c4*Math.pow(10,-10)*p)/p; 17 double c5=Math.pow(Math.cos(Bf),2); 18 double c6=Math.sin(Bf)*Math.cos(Bf); 19 double Nf=6399698.902-(21562.267-(108.973-0.612*c5)*c5)*c5; 20 double Z=y/(Nf*Math.cos(Bf)); 21 double b2 = (0.5 + 0.003369 * c5) * c6; 22 double b3 = 0.333333 - (0.166667 - 0.001123 * c5) * c5; 23 double b4 = 0.25 + (0.16161 + 0.00562 * c5) * c5; 24 double b5=0.2-(0.1667-0.0088*c5)*c5; 25 double z2=Math.pow(Z,2); 26 B = (Bf*p - (1 - (b4 - 0.12 *z2) * z2) * z2 * b2 * p)/3600.0; 27 L = L0+((1 - (b3 - b5 * z2) * z2) * Z * p)/3600.0; 28 System.out.println("緯度:"+B+" 經(jīng)度:"+L+" 中央子午線:"+L0); 29 }在這里中央子午線是固定死的,為117度,因為業(yè)務(wù)范圍就是這個地區(qū),不會超出,后期有拓展可以再次修改,改成計算模式。
轉(zhuǎn)載于:https://www.cnblogs.com/godricgx/p/6678919.html
總結(jié)
以上是生活随笔為你收集整理的高斯坐标反算坐标转经纬度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “ 食物链 “ 顶端的 《应用层》原理总
- 下一篇: java的dbcp使用方法_Java d