java火星坐标转百度坐标,火星坐标(GCJ-02)转百度坐标(BD-09)算法验证

百度官方本身就提供有谷歌坐标转百度坐标(BD-09)的API,而谷歌坐标中国部分采用的正是火星坐标(GCJ-02)。关于这个API的详细介绍可以参见这篇文章 http://gooderlee.iteye.com/blog/1186512。

本文我们主要来验证一下网上流传的火星坐标转百度坐标算法的准确性。

算法我最早是在这个地址看到的http://blog.csdn.net/coolypf/article/details/8569813,是C++的实现。

下面是对应的Python实现:

from __future__ import division

from math import pi, sqrt, sin, cos, atan2

# 火星坐标(GCJ-02)转百度坐标(BD-09)算法

X_PI = 3.14159265358979324 * 3000.0 / 180.0

def gcj02_to_bd09(lat, lng):

z = sqrt(lng * lng + lat * lat) + 0.00002 * sin(lat * X_PI)

theta = atan2(lat, lng) + 0.000003 * cos(lng * X_PI)

bd_lng = z * cos(theta) + 0.0065

bd_lat = z * sin(theta) + 0.006

return bd_lat, bd_lng

if __name__ == '__main__':

# 测试

google_lat, google_lng = 31.2883064, 121.4904417

print gc202_to_bd09(lat=google_lat, lng=google_lng)

验证一下准确性:

1)我们从大众点评网上选取一家商户http://www.dianping.com/shop/500000,其采用的是高德地图(也是火星坐标),其坐标值是:31.2883064, 121.4904417。

2)我们在谷歌地图上验证一下这个点,结果是吻合的。

3)使用上述算法转换后得到的百度坐标是:31.293981660287436, 121.49700476064442,我们在百度坐标拾取系统中进行验证,肉眼看这个点也是吻合的。详见下图所示(点击查看大图)。

ebc5238ee27c6e952489097cd7e34b82.png

特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。

☹ Disqus被Qiang了,之前所有的评论内容都看不到了。如果您有爬虫相关技术方面的问题,欢迎发到我们的问答平台:http://spider.site-digger.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值