zoukankan      html  css  js  c++  java
  • baidu地图api , 地理位置转 经纬度接口

    更多可以查看    http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

    地理编码示例:

    以下是关于地理编码参数使用方法的示例。发送请求显示结果的JavaScript代码此处查看
    请求示例:对北京市百度大厦进行地理编码查询;

    http://api.map.baidu.com/geocoder/v2/?callback=renderOption&output=json&address=百度大厦&city=北京市&ak=您的ak
    

    地理编码返回结果字段:

    名称类型说明
    status Int 返回结果状态值, 成功返回0,其他值请查看下方返回码状态表。
    location object 经纬度坐标
      lat float 纬度值
    lng float 经度值
    precise Int 位置的附加信息,是否精确查找。1为精确查找,即准确打点;0为不精确,即模糊打点。
    confidence Int 可信度,描述打点准确度
    level string 地址类型

    json格式的返回值:

    renderOption&&renderOption({"status":0,"result":{"location":{"lng":116.30775539540982,"lat":40.05685561073758},"precise":1,"confidence":80,"level":"商务大厦"}})

    这对一条两条的转可以, 要大批量的呢???  一堆位置,都还没对应的经纬度,只有一个位置名称....

    思路:

    1. 在原位置功能上,增加1个设置经纬度的,手工编辑下,录入入库;

    2. 把位置这个转成经纬度, 看看有没批量的,批量操作拿到后,先入到库;

    后面直接调用接口,数据返回用就行..

    怎么用程序通过百度地图API批量获取具体地址的经纬度

    搬过来的,没试过,后面试试看

    https://zhidao.baidu.com/question/2078225436147396308.html?fr=iks&word=js%B0%D9%B6%C8%B5%D8%CD%BCapi+%CE%BB%D6%C3%C5%FA%C1%BF%D7%AA%CE%AC%B6%C8&ie=gbk

    方法一

    建议使用xGeocoding工具,可以批量获得Google Earth/Google Map/百度/腾讯/高德等地图的经纬度。工具地址如下:http://www.gpsspg.com/xgeocoding/

    方案二

    使用Python程序,直接嵌入即可。代码如下:(需要注意的是百度API获取的是墨卡托坐标,而实际使用的是WGS84坐标。代码已添加转换,只要设定语言一致即可实现。)

    #!/usr/bin/python
    #coding:utf-8
       
    import xlrd
    import xlwt
    import requests
    import urllib
    import math
    import re
       
    pattern_x=re.compile(r'"x":(".+?")')
    pattern_y=re.compile(r'"y":(".+?")')
       
    def mercator2wgs84(mercator):
        #key1=mercator.keys()[0]
        #key2=mercator.keys()[1]
        point_x=mercator[0]
        point_y=mercator[1]
        x=point_x/20037508.3427892*180
        y=point_y/20037508.3427892*180
        y=180/math.pi*(2*math.atan(math.exp(y*math.pi/180))-math.pi/2)
        return (x,y)
       
    def get_mercator(addr):
        quote_addr=urllib.quote(addr.encode('utf8'))
        city=urllib.quote(u'<a href="https://www.baidu.com/s?wd=%E9%BD%90%E9%BD%90%E5%93%88%E5%B0%94%E5%B8%82&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YznHndPHNBrjfYryR1mH9B0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0LrjczPHf1PWDYP1n4PWnsr0" target="_blank" class="baidu-highlight">齐齐哈尔市</a>龙'.encode('utf8'))
        province=urllib.quote(u'<a href="https://www.baidu.com/s?wd=%E9%BB%91%E9%BE%99%E6%B1%9F%E7%9C%81&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YznHndPHNBrjfYryR1mH9B0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0LrjczPHf1PWDYP1n4PWnsr0" target="_blank" class="baidu-highlight">黑龙江省</a>'.encode('utf8'))
        if quote_addr.startswith(city) or quote_addr.startswith(province):
            pass
        else:
            quote_addr=city+quote_addr
        s=urllib.quote(u'北京市'.encode('utf8'))
        api_addr="http://api.map.baidu.com/?qt=gc&wd=%s&cn=%s&ie=utf-8&oue=1&fromproduct=jsapi&res=api&callback=BMap._rd._cbk62300"%(quote_addr
    ,s)
        req=requests.get(api_addr)
        content=req.content
        x=re.findall(pattern_x,content)
        y=re.findall(pattern_y,content)
        if x:
            x=x[0]
            y=y[0] 
            x=x[1:-1]
            y=y[1:-1]
            x=float(x)
            y=float(y)
            location=(x,y)
        else:
            location=()
        return location
       
    def run():
        data=xlrd.open_workbook('Book2.xls')
        rtable=data.sheets()[0]
        nrows=rtable.nrows
        values=rtable.col_values(0)
           
        workbook=xlwt.Workbook()
        wtable=workbook.add_sheet('data',cell_overwrite_ok=True)
        row=0
        for value in values:
            mercator=get_mercator(value)
            if mercator:
                wgs=mercator2wgs84(mercator)
            else:
                wgs=('NotFound','NotFound')
            print "%s,%s,%s"%(value,wgs[0],wgs[1])
            wtable.write(row,0,value)
            wtable.write(row,1,wgs[0])
            wtable.write(row,2,wgs[1])
            row=row+1
       
        workbook.save('data.xls')
       
    if __name__=='__main__':
        run()
    

      

    回首过去,回望你自己,你有多少事是得过且过的完成,又有多少事是用心去做并努力达到完美?
  • 相关阅读:
    POI实现Excel导入数据库数据
    POI对Excel进行读取操作,工具类,便于操作数据
    HAProxy-1.8.20 根据后缀名转发到后端服务器
    Haproxy-1.8.20 编译安装:
    Soat控制HaProxy 动态增减服务器
    Haproxy-1.8.20 根据路径(URI)转发到后端不同集群
    Ansible User 模块添加单用户并ssh-key复制
    Ansible-playbook 安装redis
    二进制安装mysql-5.7.28
    编译安装 nginx -1.14.2
  • 原文地址:https://www.cnblogs.com/jshare/p/6775679.html
Copyright © 2011-2022 走看看