地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法
来源:互联网 发布:学美容知乎 编辑:程序博客网 时间:2024/04/30 11:32
原文
WGS-84 到 GCJ-02 的转换(即 GPS 加偏)算法是一个普通青年轻易无法接触到的“公开”的秘密。这个算法的代码在互联网上是公开的,详情请使用 Google 搜索 "wgtochina_lb" 。
整理后的算法代码请参考 https://on4wp7.codeplex.com/SourceControl/changeset/view/21483#353936 。知道了这个算法之后,就可以离线进行 Google 地图偏移校正,不必像之前那么麻烦。
至于 GCJ-02 到 WGS-84 的转换(即 GPS 纠偏),可以使用二分法。
评论
- 2楼 wy7212013-03-02 22:53发表[回复] [引用][举报][删除]
- 感谢博主的文章。
Google了一下 wgtochina_lb,你整理的代码多丢掉了两行,导致会有几米的误差, 加入这两行后就没有误差了。- x_add = x_add + h_add * 0.001 + yj_sin2(wg_time * 0.0174532925199433) + random_yj();
- y_add = y_add + h_add * 0.001 + yj_sin2(wg_time * 0.0174532925199433) + random_yj();
x_add = x_add + h_add * 0.001 + yj_sin2(wg_time * 0.0174532925199433) + random_yj();y_add = y_add + h_add * 0.001 + yj_sin2(wg_time * 0.0174532925199433) + random_yj();
- Re: wy7212013-03-04 09:41发表[回复] [引用][举报][删除]
- 回复wy721:GCJ-02 到 WGS-84 的转换的话,我觉得直接使用正向偏移反推回来就够了,毕竟在小范围内该算法偏移差距都不大。
- def gcj2wgs(lat, lon):
- g_lat, g_lon = wgs2gcj(lat, lon)
- d_lat = g_lat - lat
- d_lon = g_lon - lon
- return lat - d_lat, lon - d_lon
def gcj2wgs(lat, lon): g_lat, g_lon = wgs2gcj(lat, lon) d_lat = g_lat - lat d_lon = g_lon - lon return lat - d_lat, lon - d_lon
测试了一下,在广州反推结果误差在1米左右的样子。- Re: coolypf2013-03-04 09:53发表[回复] [引用][举报][删除]
- 回复wy721:二分法可以更加精确。
- Re: coolypf2013-03-03 09:11发表[回复] [引用][举报][删除]
- 回复wy721:我认为这两行代码是用于混淆的。
验证是否有误差,不能使用 GPS 传感器(手机) + 地图的方式,因为 GPS 传感器本身就有几米的误差。
准确的验证方式可以参考这个:
http://hi.baidu.com/coolypf/item/a5f05188c21d60874414cffe- Re: wy7212013-03-04 09:19发表[回复] [引用][举报][删除]
- 回复coolypf:http://api.map.baidu.com/ag/coord/convert?from=0&to=2&x=113.540124&y=23.517846
我是使用百度的官方API验证的。
URL中from,to的取值含义是 0=WGS84, 2=GCJ-02, 4=BD-09- Re: coolypf2013-03-04 09:51发表[回复] [引用][举报][删除]
- 回复wy721:百度这个 API 是直接使用的测绘局的库,当然会和加了混淆的版本一致。
- Re: wy7212013-03-04 19:36发表[回复] [引用][举报][删除]
- 回复coolypf:的确用http://hi.baidu.com/coolypf/item/a5f05188c21d60874414cffe这个方法验证和不加那两行代码的算法一致。
谷歌用的高德地图数据,难道高德不是用测绘局的库吗。。- Re: coolypf2013-03-04 19:46发表[回复] [引用][举报][删除]
- 回复wy721:坐标加偏当然是用的测绘局的库,
但是地图加偏是由测绘局内部完成的。
- 1楼 yjflinchong2013-02-04 17:13发表[回复] [引用][举报][删除]
- 不懂这块。 只能膜拜了
- 地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02)百度坐标系 (BD-09) 的转换算法
- 地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02)百度坐标系 (BD-09) 的转换算法 .
- 地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法
- 地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法
- 地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法
- 地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法
- 地球坐标系<WGS-84>转换到火星坐标系<GCJ-02>算法分析
- Objective-C上地球坐标系到火星坐标系转换算法
- Objective-C上地球坐标系到火星坐标系转换算法
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
- Swift开发教程--火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
- 《娃娃遇到兵》bug记录
- 第一次程序设计上机报告
- eclipse快捷键
- VC从文件中加载图片
- java 多线程火车票售票实例
- 地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法
- POJ 1088 滑雪
- For RW-50015 error when install EBS
- java中的读写锁
- Java中读写锁的实现及使用读写锁简单实现缓存系统的实例
- android安全机制
- 什么是Restful
- 最好的职业生涯规划的文章(二)
- JAVA 快速实现webService (同步逻辑)