更多>>关于我们

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

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

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

更多>>官方微博

西安鲲之鹏
陕西 西安

加关注

  • 【经验分享】代理服务器出现大量TIME_WAIT怎么破?爬虫客户端用什么库更高效?在本文我们将通过实验给你解答 “与TIME_WAIT相关的一些实验” >>>  http://www.site-digger.com/html/articles/20181109/683.html ​​​​
    发布时间:2018-11-09 16:58:07
  • 【备忘】mitmproxy v0.18.2版本Python script示例  
    归纳了一下公司近期常用的mitmproxy Python script编写示例,通过本示例你将学会在mitmproxy中如何通过外挂Python脚本修改请求和应答数据, >>> http://www.site-digger.com/html/articles/20181109/682.html ​​​​
    发布时间:2018-11-09 16:56:27
  • 【经验分享】自己gcc编译出来的squid可执行程序体积比官方rpm包里的体积大9倍(官方的6MB,自己编译出来的59MB)!使用strip --strip-unneeded file-path 处理之后,体积也变成6MB了!(running strip is a good way to get the size down after you have a binary and the binary is in ELF format. strip just removes debug and unreferenced symbols after the binary has been created.) >>> 参考:http://www.cplusplus.com/forum/unices/123451/
    发布时间:2018-11-07 14:02:55
  • 【干货干货】整整花了2天时间搞的。 iptables DNAT Web流量截取实验 >>> http://www.site-digger.com/html/articles/20181105/681.html ​​​​
    发布时间:2018-11-05 13:09:48
  • 【经验分享-纯干货】SNI导致Python 2.7建立TLS连接出现104错误问题的解决 >>> http://www.site-digger.com/html/articles/20181026/680.html ​​​​
    发布时间:2018-10-26 18:05:14
  • 【经验分享】使用openssl模拟与HTTPS网站的交互 >>> http://www.site-digger.com/html/articles/20181026/679.html ​​​​
    发布时间:2018-10-26 18:01:45
  • 美团外卖北京/上海/广州/杭州/成都五城市商户数据2018年10月份采集更新

    详细字段说明:
    “province” – 省份
    “city” – 城市
    “shop_name” – 店铺名称
    “address” – 店铺地址
    “category” – 大分类
    “third_category” – 小分类
    “phones” – 电话号码
    “score” – 店铺评分
    “min_price” – 起送价
    “month_sales” – 月售
    “shipping_fee” – 配送费
    “per_cost” – 人均消费
    “delivery_time” – 配送时间
    “delivery_tip” – 配送服务信息
    “pic_url” – 店铺图片
    “qualification” – 营业执照
    “shiping_time” – 营业时间
    “lat” – 纬度
    “lng” – 经度
    “comment_num” – 评论数

    >>> http://www.data-shop.net/2018/10/%E7%BE%8E%E5%9B%A2%E5%A4%96%E5%8D%96%E5%8C%97%E4%BA%AC%E4%B8%8A%E6%B5%B7%E5%B9%BF%E5%B7%9E%E6%9D%AD%E5%B7%9E%E6%88%90%E9%83%BD%E4%BA%94%E5%9F%8E%E5%B8%82%E5%95%86%E6%88%B7%E6%95%B0%E6%8D%AE2018/
    发布时间:2018-10-25 17:47:47
  • Selenium+Chrome淘宝正常登录方案演示:
    1. 不做特殊处理情况下,Selenium无法正常登录淘宝,会出验无法完成的验证码;
    2. 经过特殊处理后,成功突破淘宝对Selenium的检测,完美登录成功(连验证码都不会出现)。
    点击链接查看演示视频: >>> http://t.cn/EzdwqSY ​​​​
    发布时间:2018-10-22 16:55:09
  • 【经验分享】如何根据淘宝/天猫的分类ID(categoryId值)获取对应的分类名称?

    (1) 如图1所示,先从商品源码获取"categoryId"参数值,例如1512;
    (2)如图2所示,查表可知对应分类名称为"手机";

    点击这里购买该分类映射表(2018年10月份采集更新):
    http://t.cn/EzwnBs1 ​​​​
    发布时间:2018-10-17 11:46:05
  • FontEditor Online 赞! >>> http://t.cn/RKDTzTV ​​​​
    发布时间:2018-10-11 14:14:20
当前位置: 首页 > 技术文章 >
图吧地图坐标转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在线客服
欢迎咨询,点击这里给我发送消息。
欢迎咨询,点击这里给我发送消息。