批量調用百度地圖API獲取地址經緯度坐標


1 申請密匙

注冊百度地圖API:http://lbsyun.baidu.com/index.php?title=webapi

 點擊左側 “獲取密匙” ,經過填寫個人信息、郵箱注冊等,成功之后在開放平台上點擊“創建應用”,填寫相關信息,在這里特別說明的是,在IP白名單框里,如果不清楚自己的IP地址,最好設置為:*。提交后,在你創建應用的訪問應用(AK)那一欄就是你的密鑰。

 

 

2 構造經緯度獲取函數

使用百度Web服務API下的Geocoding API接口來獲取你所需要地址的經緯度坐標
接口文檔見:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

 導入所需的庫

from urllib.request import urlopen,quote
import requests,csv
import pandas as pd
#導入庫

根據服務文檔中的請求格式寫出獲取經緯度的函數:

def getlnglat(adress):
    url = 'http://api.map.baidu.com/geocoder/v2/?address='
    output = 'json'
    ak = '密匙編號'
    add = quote(adress)#使用quote進行編碼 為了防止中文亂碼
    url2 = url + add + '&output=' + output + '&ak=' + ak
    req = urlopen(url2)
    res = req.read().decode()
    temp = json.loads(res)
    return temp

3 根據地址獲取經緯度

用python讀取csv文件的數據,並將location列單獨讀出來,批量獲取經度、緯度坐標

#打開csv
df = pd.read_csv('sites.csv',encoding = 'GBK')
df['lng'] = 'collng'#創建新列存放經度
df['lat'] = 'collat'#創建新列存放緯度
dim = df.shape
[row,col] = dim#獲取行列
for i in df.values:
    b = i[2]  #第三列的地址
    print(b)
    i[3] = getlnglat(b)['result']['location']['lng']#獲取經度並寫入
    i[4] = getlnglat(b)['result']['location']['lat']#獲取緯度並寫入
    print(i)
df
df.to_excel('sites2.xlsx')

原始sites.csv如下

 輸出結果

 注意

http://lbsyun.baidu.com/index.php?title=coordinate

 

 參考:

如果您想調用服務器端的坐標轉換方法,請參考坐標轉換API

如果您想在JS的前端網頁中使用坐標轉換功能,請參考JavaScript API坐標轉換示例

如果您想在Android終端系統上使用坐標轉換功能,請參考Android地圖SDK坐標轉換開發指南

如果您想在iOS的終端系統上使用坐標轉換功能,請參考iOS地圖SDK坐標轉換開發指南

 


免責聲明!

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



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