-
一、转换原理
参见这一篇文章《使用ceres实现WGS84到GCJ-02坐标相互转换》。
在上一篇日志提到,如果公开的WGS84坐标到GSJ-02坐标转换公式是精确公式,可借助Ceres自动求导进行高精度坐标转换;如果公开的WGS84坐标到GSJ-02坐标转换公式并非精确公式,且国测局使用的转换公式依然是多项式,在黑箱模式下,通过调用国测局提供的加密插件的WGS84坐标转GSJ-02坐标API,利用Ceres数值求导方式,依然可以实现高精度坐标转换。
利用Ceres库实现高精度转换已经是可行的,只是经过测试,Ceres的自动求导与数值求导相对于简单迭代法速度慢太多,在批量转换坐标时,已经不具备实用性了。因此,这一篇日志对坐标相互转换进行了改进。
- 假定公开的WGS84转GCJ-02公式是精确公式:进行逆转换时,以GCJ-02坐标为观测值,WGS84坐标为未知数列误差方程,对误差方程进行泰勒展开,取线性项作为近似方程。通过解析求导计算线性化后误差方程的系数矩阵(雅克比矩阵),进行迭代求解,获得高精度的转换坐标。
- 假定未知WGS84转GCJ-02公式,但是可以调用加密插件API:与1中方法类似,只是计算误差方程系数矩阵时因为不知道数学模型而无法解析求导,可以利用数值求导做替代。数值求导的效率会低于解析求导,但依然可以在“黑箱模式”下获取高精度的转换坐标。
公开的WGS84坐标转GCJ-02坐标公式为: