1. 程式人生 > >地球座標系 (WGS-84) 到火星座標系 (GCJ-02) 的轉換演算法

地球座標系 (WGS-84) 到火星座標系 (GCJ-02) 的轉換演算法

原文


WGS-84 到 GCJ-02 的轉換(即 GPS 加偏)演算法是一個普通青年輕易無法接觸到的“公開”的祕密。這個演算法的程式碼在網際網路上是公開的,詳情請使用 Google 搜尋 "wgtochina_lb" 。

至於 GCJ-02 到 WGS-84 的轉換(即 GPS 糾偏),可以使用二分法。


評論


2樓 wy7212013-03-02 22:53發表 [回覆] [引用][舉報] [刪除]
感謝博主的文章。
Google了一下 wgtochina_lb,你整理的程式碼多丟掉了兩行,導致會有幾米的誤差, 加入這兩行後就沒有誤差了。
[java] view plaincopyprint
?
  1. x_add = x_add + h_add * 0.001 + yj_sin2(wg_time * 0.0174532925199433) + random_yj();  
  2. y_add = y_add + h_add * 0.001 + yj_sin2(wg_time * 0.0174532925199433) + random_yj();  
[java] view plaincopyprint?
  1. x_add = x_add + h_add * 0.001 + yj_sin2(wg_time * 0.0174532925199433) + random_yj();  
  2. y_add = y_add + h_add * 0.001
     + yj_sin2(wg_time * 0.0174532925199433) + random_yj();  
Re: wy7212013-03-04 09:41發表 [回覆]
回覆wy721:GCJ-02 到 WGS-84 的轉換的話,我覺得直接使用正向偏移反推回來就夠了,畢竟在小範圍內該演算法偏移差距都不大。
[python] view plaincopyprint?
  1. def gcj2wgs(lat, lon):  
  2.     g_lat, g_lon = wgs2gcj(lat, lon)  
  3.     d_lat = g_lat - lat  
  4.     d_lon = g_lon - lon  
  5.     return lat - d_lat, lon - d_lon  
[python] view plaincopyprint?
  1. def gcj2wgs(lat, lon):  
  2.     g_lat, g_lon = wgs2gcj(lat, lon)  
  3.     d_lat = g_lat - lat  
  4.     d_lon = g_lon - lon  
  5.     return lat - d_lat, lon - d_lon  

測試了一下,在廣州反推結果誤差在1米左右的樣子。
Re: coolypf2013-03-04 09:53發表 [回覆]
回覆wy721:二分法可以更加精確。
Re: coolypf2013-03-03 09:11發表 [回覆] [引用][舉報] [刪除]
回覆wy721:我認為這兩行程式碼是用於混淆的。
驗證是否有誤差,不能使用 GPS 感測器(手機) + 地圖的方式,因為 GPS 感測器本身就有幾米的誤差。
準確的驗證方式可以參考這個:
http://hi.baidu.com/coolypf/item/a5f05188c21d60874414cffe
Re: wy7212013-03-04 09:19發表 [回覆] [引用][舉報] [刪除]
回覆coolypf:http://api.map.baidu.com/ag/coord/convert?from=0&to=2&x=113.540124&y=23.517846
我是使用百度的官方API驗證的。
URL中from,to的取值含義是 0=WGS84, 2=GCJ-02, 4=BD-09
Re: coolypf2013-03-04 09:51發表 [回覆] [引用][舉報] [刪除]
回覆wy721:百度這個 API 是直接使用的測繪局的庫,當然會和加了混淆的版本一致。
Re: wy7212013-03-04 19:36發表 [回覆] [引用][舉報] [刪除]
回覆coolypf:的確用http://hi.baidu.com/coolypf/item/a5f05188c21d60874414cffe這個方法驗證和不加那兩行程式碼的演算法一致。
谷歌用的高德地圖資料,難道高德不是用測繪局的庫嗎。。
Re: coolypf2013-03-04 19:46發表 [回覆] [引用][舉報] [刪除]
回覆wy721:座標加偏當然是用的測繪局的庫,
但是地圖加偏是由測繪局內部完成的。