地球座標系 (WGS-84) 到火星座標系 (GCJ-02) 的轉換演算法
阿新 • • 發佈:2019-01-30
原文
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- x_add = x_add + h_add * 0.001 + yj_sin2(wg_time * 0.0174532925199433) + random_yj();
- y_add = y_add + h_add * 0.001 + yj_sin2(wg_time * 0.0174532925199433) + random_yj();
- x_add = x_add + h_add * 0.001 + yj_sin2(wg_time * 0.0174532925199433) + random_yj();
-
y_add = y_add + h_add * 0.001
- Re: wy7212013-03-04 09:41發表
-
回覆wy721:GCJ-02 到 WGS-84 的轉換的話,我覺得直接使用正向偏移反推回來就夠了,畢竟在小範圍內該演算法偏移差距都不大。
[python] view plaincopyprint?- def gcj2wgs(lat, lon):
- g_lat, g_lon = wgs2gcj(lat, lon)
- d_lat = g_lat - lat
-
d_lon = g_lon - lon
- return lat - d_lat, lon - d_lon
- def gcj2wgs(lat, lon):
- g_lat, g_lon = wgs2gcj(lat, lon)
- d_lat = g_lat - lat
- d_lon = g_lon - lon
- 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