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()

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM