差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
public:it:location [2015/11/11 11:53] – [关于地理位置信息] oakfirepublic:it:location [2024/04/23 14:57] (当前版本) – [关于地理位置信息] oakfire
行 4: 行 4:
   * [[wp>Geographic_coordinate_system|经纬度]]   * [[wp>Geographic_coordinate_system|经纬度]]
   * [[wp>GPS]] , [[wp>World_Geodetic_System|WGS-84]]   * [[wp>GPS]] , [[wp>World_Geodetic_System|WGS-84]]
-  * [[wp>Restrictions_on_geographic_data_in_China]], GCJ-02 国标, BD-09 +  * [[wp>Restrictions_on_geographic_data_in_China]], GCJ-02, BD-09 
-  * [[http://bbs.amap.com/thread-18617-1-1.html#rd|如何解决坐标转换,坐标偏移]]+  * <del>[[http://bbs.amap.com/thread-18617-1-1.html#rd|如何解决坐标转换,坐标偏移]]</del> 
 +  * [[http://kongxz.com/2013/10/wgs-cgj/|关于流传的转换算法]] 
 +    * 最早流出的 WGS-84 至 GCJ-02 的转换算法出自 https://on4wp7.codeplex.com/SourceControl/changeset/view/21483。我们看一下它的代码中的一小部分,处理纬度加偏的前半部分:<code javascript> 
 +-100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.Sqrt(Math.Abs(x)) + (20.0 * Math.Sin(6.0 * x * pi) + 20.0 * Math.Sin(2.0 * x * pi)) * 2.0 / 3.0 + (20.0 * Math.Sin(y * pi) + 40.0 * Math.Sin(y / 3.0 * pi)) * 2.0 / 3.0 + (160.0 * Math.Sin(y / 12.0 * pi) + 320 * Math.Sin(y * pi / 30.0)) * 2.0 / 3.0 </code> 
 +    * 这一部分已经体现了 GCJ-02 设计精巧的几点:这是一个很长的多项式,并且是很复杂的多项超越式。于是它难以进行反向运算、难以根据已知数据点反推出计算公式。且就算我们拿到了这个已知的转换算法的公式,要想求出它的反函数是非常困难的,于是如果我们要完成 GCJ-02 到 WGS-84 的逆转换,只能通过二分法来逼近。这个转换算法需要达到的要求是显而易见的:它必须是连续的,并且是单调的。连续才能确保地图不出现断点且覆盖所有区域;单调才能保证原先的位置相互关系转换后依旧成立。
  
  
  • public/it/location.1447213993.txt.gz
  • 最后更改: 2015/11/11 11:53
  • oakfire