gcj_02和wgs84地理坐标系的相互转换原理
百度Place API 的一点解释
百度的Place API 返回值的坐标系统是百度经纬度坐标系统
请求参数中的coord_type控制的是请求参数中的bounds或者location的坐标系统
gcj_02 转换为wgs84的原理
地理坐标的加密存在局限性。
因为:
-
地理坐标是连续的(空间的本质)
-
加密后的地理坐标是连续的(地图的本质)
-
加密函数是连续的(地图的本质)
-
如果假设加密函数是
$f(x)$
我们还可以直观地知道,
对于邻近的两个地理坐标x1
,x2
f(x1) - f(x2) \approx x1 - x2
f(x) - x = \delta
$\delta$
的值应该是无规律的,小的。
道理很简单,因为加密后的地图,仍然要是可用的地图。
- 地理坐标是不精确地,允许误差(测量误差,数字计算机的精度)
- 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^{'}$
的差值小于要求的误差时,即认为解密成功。