更多>>关于我们

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

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

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

更多>>官方微博

西安鲲之鹏
陕西 西安

加关注

  • Selenium disable Image loading in different browsers >>> http://tarunlalwani.com/post/selenium-disable-image-loading-different-browsers/ ​​​​
    发布时间:2018-07-11 18:21:10
  • chromedriver 镜像 - ChromeDriver Mirror >>> http://npm.taobao.org/mirrors/chromedriver/ ​​​​
    发布时间:2018-07-11 18:20:49
  • "全国POI信息数据库" 上线:涵盖美食、休闲娱乐、酒店、丽人等15大分类,覆盖全国350多个城市,数据量超过4700万条 >>> 点击前往:http://www.poilist.cn/ ​​​​
    发布时间:2018-07-11 15:28:47
  • 【最新发布】国内知名本地生活信息平台4794万商户POI数据2018年06月份更新 >>> http://www.site-digger.com/html/articles/20180702/647.html ​​​​
    发布时间:2018-07-02 11:25:13
  • 【CSV转Excel(XLSX格式)脚本分享】
    背景:大多数情况下CSV转Excel可以使用Openoffice或者Excel实现,但是偶尔也会遇到一些BT的情况,比如转换后Excel打开显示文件异常的(如图2所示)。于是乎利用xlsxwriter这个库写了个小脚本,用法如下:
    python csv2xlsx.py path-of-csv-file  file-encoding(default is utf-8)
    运行效果如图1所示。csv2xlsx.py源码链接分享 >>>https://bitbucket.org/snippets/qi/Xerx67
    发布时间:2018-06-21 18:57:26
  • 全国各类POI(美食、休闲娱乐、丽人、酒店、生活服务等等)用户评论数据7.09亿条,更新至2018年6月15日。点击查看示例数据 >>> http://t.cn/Rrv3RpO ​​​​
    发布时间:2018-06-21 10:21:20
  • 【经验分享】如何让Squid Web隧道支持SSH协议?
    默认Web隧道下连接22端口是不被允许的,会返回403错误。
    编辑/etc/squid3/squid.conf,加入如下配置行
    acl SSL_ports port 22
    acl Safe_ports port 22
    然后重启Squid即可。 ​​​​
    发布时间:2018-05-16 11:41:42
  • 当当网有多少图书,你知道吗?>>> http://t.cn/R3h6hiH ​​​​
    发布时间:2018-05-08 13:53:19
  • 【经验分享】Ubuntu下如何识别无线网卡?
    以普联的TL-WDN6200为例,使用的是rtl8812au(https://github.com/else05/rtl8812au这个驱动):
    wget http://t.cn/RuR1DrP
    unzip master.zip
    cd rtl8812au-master
    make
    sudo install
    然后重启系统,运气好的话你就能看到Wifi图标和热点列表了,如下图所示(Ubuntu14.04下亲测)。
    发布时间:2018-05-03 19:10:52
  • 【经验分享】DeleGate跑了3天日志吃了18G硬盘,如何关掉日志呢?
    查文档(ftp://www.delegate.org/pub/DeleGate/Manual.htm#LOGDIR),找到了方法,加上参数LOGFILE=""即可,原文:
    You can stop logging by specifying null file name like LOGFILE="" or PROTOLOG="". ​​​​
    发布时间:2018-04-28 18:08:15
当前位置: 首页 > 技术文章 >
图吧地图坐标转GCJ-02(火星)坐标方法
发布时间:2014-01-16 来源:未知 浏览:

图吧地图坐标转GCJ-02(火星)坐标需要分两步进行:


1)图吧坐标->WGS84坐标。
2)WGS84坐标->火星坐标。这一步在以前是不容易做到的,因为它的算法是一个"秘密"。幸运的是,它已经被某个数学天才"破解"了,在互联网上可以轻易找到其实现算法。
 
具体算法:
1)下面是图吧坐标转WGS84坐标的JavaScript实现,来源于图吧官方的JS文件。
function mapBar2WGS84(x, y) {
    x = parseFloat(x) * 100000 % 36000000;
    y = parseFloat(y) * 100000 % 36000000;

    x1 = parseInt( - (((Math.cos(y / 100000)) * (x / 18000)) + ((Math.sin(x / 100000)) * (y / 9000))) + x);
    y1 = parseInt( - (((Math.sin(y / 100000)) * (x / 18000)) + ((Math.cos(x / 100000)) * (y / 9000))) + y);

    x2 = parseInt( - (((Math.cos(y1 / 100000)) * (x1 / 18000)) + ((Math.sin(x1 / 100000)) * (y1 / 9000))) + x + ((x > 0) ? 1 : -1));
    y2 = parseInt( - (((Math.sin(y1 / 100000)) * (x1 / 18000)) + ((Math.cos(x1 / 100000)) * (y1 / 9000))) + y + ((y > 0) ? 1 : -1));

    return [x2 / 100000.0, y2 / 100000.0];
}
对应的Python实现如下:
from __future__ import division
import math
 
def mapBar2WGS84(lng, lat):
    """图吧坐标转WGS84坐标
    参数:
    lng - 经度
    lat - 纬度
    返回值:
    (经度, 纬度)
    """
    lng = float(lng) * 100000 % 36000000;
    lat = float(lat) * 100000 % 36000000;
    lng1 = int( - (((math.cos(lat / 100000)) * (lng / 18000)) + ((math.sin(lng / 100000)) * (lat / 9000))) + lng)
    lat1 = int( - (((math.sin(lat / 100000)) * (lng / 18000)) + ((math.cos(lng / 100000)) * (lat / 9000))) + lat)
    lng2 = int( - (((math.cos(lat1 / 100000)) * (lng1 / 18000)) + ((math.sin(lng1 / 100000)) * (lat1 / 9000))) + lng + (1 if lng > 0 else -1))
    lat2 = int( - (((math.sin(lat1 / 100000)) * (lng1 / 18000)) + ((math.cos(lng1 / 100000)) * (lat1 / 9000))) + lat + (1 if lat >0 else -1))
    return lng2 / 100000.0, lat2 / 100000.0
2)WGS84坐标转火星坐标的算法最早成形的版本是https://on4wp7.codeplex.com/SourceControl/changeset/view/21483#353936,它的Python实现如下:
from __future__ import division
from math import pi,sqrt,sin,cos
 
a = 6378245.0
ee = 0.00669342162296594323
 
# World Geodetic System ==> Mars Geodetic System
def transform(wgLat, wgLon):
    """
    transform(latitude,longitude) , WGS84
    return (latitude,longitude) , GCJ02
    """
    if (outOfChina(wgLat, wgLon)):
        mgLat = wgLat
        mgLon = wgLon
        return
    dLat = transformLat(wgLon - 105.0, wgLat - 35.0)
    dLon = transformLon(wgLon - 105.0, wgLat - 35.0)
    radLat = wgLat / 180.0 * pi
    magic = sin(radLat)
    magic = 1 - ee * magic * magic
    sqrtMagic = sqrt(magic)
    dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi)
    dLon = (dLon * 180.0) / (a / sqrtMagic * cos(radLat) * pi)
    mgLat = wgLat + dLat
    mgLon = wgLon + dLon
    return mgLat,mgLon
 
def outOfChina(lat, lon):
    if (lon < 72.004 or lon > 137.8347):
        return True
    if (lat < 0.8293 or lat > 55.8271):
        return True
    return False
 
def transformLat(x, y):
    ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt(abs(x))
    ret += (20.0 * sin(6.0 * x * pi) + 20.0 * sin(2.0 * x * pi)) * 2.0 / 3.0
    ret += (20.0 * sin(y * pi) + 40.0 * sin(y / 3.0 * pi)) * 2.0 / 3.0
    ret += (160.0 * sin(y / 12.0 * pi) + 320 * sin(y * pi / 30.0)) * 2.0 / 3.0
    return ret
 
def transformLon(x, y):
    ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(abs(x))
    ret += (20.0 * sin(6.0 * x * pi) + 20.0 * sin(2.0 * x * pi)) * 2.0 / 3.0
    ret += (20.0 * sin(x * pi) + 40.0 * sin(x / 3.0 * pi)) * 2.0 / 3.0
    ret += (150.0 * sin(x / 12.0 * pi) + 300.0 * sin(x / 30.0 * pi)) * 2.0 / 3.0
    return ret
做一个测试:
大众点评的地图系统采用的是图吧地图,就拿我家附近的“小肥羊”(http://www.dianping.com/shop/550517)为例,我们测试一下它在图标地图上的标注和转换为火星坐标后在谷歌地图上的标注点十分一致。
1)它的图吧坐标是:'lat': 34.27071, 'lng': 108.98258。在图吧地图的标注位置如下图所示。
2)计算它的WGS84坐标值:mapBar2WGS84(lng=108.98258, lat=34.27071)的结果为(108.98525, 34.27116)。
3)计算它的GCj-02坐标(火星坐标):transform(wgLat=34.27116, wgLon=108.98525)的结果为(34.26968285889569, 108.99006153253407)。在谷歌地图(ditu.google.cn)中的标注位置如下图所示。
 
结论:转GCj-02坐标火星坐标后的店与图吧原标注点有很小的偏差(10M内),上述算法精确度很高。
特别说明:该文章为鲲鹏数据原创文章 ,您除了可以发表评论外,还可以转载到别的网站,但是请保留源地址,谢谢!!(尊重他人劳动,我们共同努力)
☹ Disqus被Qiang了,之前的评论内容都没了。如果您有爬虫相关技术方面的问题,欢迎发到我们的问答平台:http://spider.site-digger.com/
QQ在线客服
欢迎咨询,点击这里给我发送消息。
欢迎咨询,点击这里给我发送消息。