更多>>关于我们

西安鲲之鹏网络信息技术有限公司从2010年开始专注于Web(网站)数据抓取领域。致力于为广大中国客户提供准确、快捷的数据采集相关服务。我们采用分布式系统架构,日采集网页数千万。我们拥有海量稳定高匿HTTP代理IP地址池,可以有效绕过各种反采集策略。

您只需告诉我们您想抓取的网站是什么,您感兴趣的字段有哪些,你需要的数据是哪种格式,我们将为您做所有的工作,最后把数据(或程序)交付给你。

数据的格式可以是CSV、JSON、XML、ACCESS、SQLITE、MSSQL、MYSQL等等。

更多>>官方微博

当前位置: 首页 > 技术文章 >
火星坐标(GCJ-02)转百度坐标(BD-09)算法验证
发布时间:2014-03-06 来源:未知 浏览:

百度官方本身就提供有谷歌坐标转百度坐标(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,我们在百度坐标拾取系统中进行验证,肉眼看这个点也是吻合的。详见下图所示(点击查看大图)。

 

特别说明:该文章为鲲鹏数据原创文章 ,您除了可以发表评论外,还可以转载到别的网站,但是请保留源地址,谢谢!!(尊重他人劳动,我们共同努力)
☹ Disqus被Qiang了,之前的评论内容都没了。现在改用国产的友言。如果您有爬虫相关技术方面的问题,欢迎发到我们的问答平台:http://spider.site-digger.com/
QQ在线客服
欢迎咨询,点击这里给我发送消息。
欢迎咨询,点击这里给我发送消息。