更多可以查看 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()