gcj_02和wgs84地理座標系的相互轉換原理

百度Place API 的一點解釋

百度的Place API 返回值的座標系統是百度經緯度座標系統算法

請求參數中的coord_type控制的是請求參數中的bounds或者location的座標系統api

gcj_02 轉換爲wgs84的原理

地理座標的加密存在侷限性。app

由於:函數

  1. 地理座標是連續的(空間的本質)
  2. 加密後的地理座標是連續的(地圖的本質)
  3. 加密函數是連續的(地圖的本質)加密

  4. 若是假設加密函數是$f(x)$
    咱們還能夠直觀地知道,
    對於鄰近的兩個地理座標x1,x2
f(x1) - f(x2) \approx x1 - x2

f(x) - x = \delta

$\delta$的值應該是無規律的,小的。
道理很簡單,由於加密後的地圖,仍然要是可用的地圖。code

  1. 地理座標是不精確地,容許偏差(測量偏差,數字計算機的精度)
  2. GPS的精度大概是百萬分之一度[1]

基於此,假設加密函數$f(x)$已知,咱們能夠用數值的方法來解密。blog

對於給定的加密值$x^{'}$, 咱們設$x$爲真實地理座標get

$x_1 = x^{'}$ 爲真實地理座標的一個鄰近點。(δ很小)io

根據上面的假設:class

x - x_1 = f(x) - f(x_1)

x = x_1 + f(x) - f(x_1)

  = x^{'} + x^{'} - f(x^{'})

以上的式子給出了x的一個估計值。

咱們能夠重複上面的過程。

$x_2 = 2x^{'} - f(x^{'})$ 重複上面的過程

x - x_2 = f(x) - f(x_2)

x = x_2 + f(x) - f(x_2)

  = x_2 + x^{'} - f(x_2)
 
  = 3x^{'} - f(x^{'}) - f(2x^{'} - f(x^{'}))

重複這個過程當$f(x)$$x^{'}$的差值小於要求的偏差時,即認爲解密成功。

參考文獻:

  1. 關於gcj02與dbII09的反向算法即地理座標的不可加密性
相關文章
相關標籤/搜索