gcj_02和wgs84地理坐标系的相互转换原理

百度Place API 的一点解释

百度的Place API 返回值的坐标系统是百度经纬度坐标系统

请求参数中的coord_type控制的是请求参数中的bounds或者location的坐标系统

gcj_02 转换为wgs84的原理

地理坐标的加密存在局限性。

因为:

  1. 地理坐标是连续的(空间的本质)

  2. 加密后的地理坐标是连续的(地图的本质)

  3. 加密函数是连续的(地图的本质)

  4. 如果假设加密函数是$f(x)$
    我们还可以直观地知道,
    对于邻近的两个地理坐标x1,x2

f(x1) - f(x2) \approx x1 - x2

f(x) - x = \delta

$\delta$的值应该是无规律的,小的。
道理很简单,因为加密后的地图,仍然要是可用的地图。

  1. 地理坐标是不精确地,允许误差(测量误差,数字计算机的精度)
  2. GPS的精度大概是百万分之一度[1]

基于此,假设加密函数$f(x)$已知,我们可以用数值的方法来解密。

对于给定的加密值$x^{'}$, 我们设$x$为真实地理坐标

$x_1 = x^{'}$ 为真实地理坐标的一个邻近点。(δ很小)

根据上面的假设:


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的反向算法即地理坐标的不可加密性
posted @ 2017-07-20 22:30  hao_ming  阅读(9032)  评论(0编辑  收藏  举报