您好,登錄后才能下訂單哦!
這篇文章主要講解了“Python怎么獲取各大地圖平臺經緯度數據”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python怎么獲取各大地圖平臺經緯度數據”吧!
首先,咱們需要在騰訊位置服務平臺注冊并獲得一個key,作為位置數據調用的密匙。步驟如下:
獲得key以后,咱們就可以構造API數據請求函數tengxun(),將json格式數據中的經緯度解析出來即可,Python代碼如下:
import requests def tengxun(addr): url = "https://apis.map.qq.com/jsapi?" #騰訊地圖API接口 para = { "qt": "geoc", "addr":addr, #傳入地址參數 "output": "json", "key": "D7EBZ-NHYKX-UAH4A-74TW4-6M2JE-UHFLY", #即騰訊地圖API的key "pf":"jsapi", "ref":"jsapi" } req = requests.get(url,para) #請求數據 req = req.json() #轉為json格式 #print(req) m = req["detail"] g = f"{m['pointx']},{m['pointy']}" #解析到經緯度數據 print(g) return g tengxun(addr="深圳市")
傳入自變量“深圳市”,運行Python代碼,即可獲得深圳市的經緯度數據:
'113.883080,22.553290'
函數構造好以后,導入準備好的excel文件,文件包含廣州500所學校的地址數據。可在「菜J學Python」公眾后臺回復學校自動獲取。
import pandas as pd df1 = pd.read_excel("gz_school.xlsx") df1.head()
數據預覽:
3、應用函數
將學校數據中的地址列應用于前文構造的函數,批量獲取500所學校的經緯度數據并進行程序計時。
import time time_start = time.time() #程序起始時間 df1['經緯度']=df1['address'].apply(tengxun) #調用函數 time_end = time.time() #程序結束時間 t = time_end-time_start #運行時間 print('共用時%s秒'%t)
通過騰訊地圖批量解析500個地址獲取經緯度數據共用時約52.40秒,平均1秒鐘可以獲取9個地址的經緯度。
共用時52.39904499053955秒
獲取到經緯度數據后,保存為excel文件。
df1.head() df1.to_excel('result.xlsx',index = False)
數據預覽:
高德地圖開放平臺
import pandas as pd import requests import time import csv import json def gaode(addr): para = { 'key':'你自己的', #高德地圖開放平臺申請的key 'address':addr #傳入地址參數 } url = 'https://restapi.amap.com/v3/geocode/geo?' #高德地圖API接口 req = requests.get(url,para) req = req.json() print('-' * 30) m = req['geocodes'][0]['location'] print(m) return m gaode(addr="深圳")
df2 = pd.read_excel('gz_school.xlsx') #讀取地址數據 time_start = time.time() df2['經緯度'] = df2['address'].apply(gaode) #調用函數 time_end = time.time() t = time_end-time_start print('共用時%s秒'%t)
通過高德地圖批量解析500個地址獲取經緯度數據共用時約37.74秒,平均1秒鐘可以獲取13個地址的經緯度,解析速度高于騰訊地圖。
共用時37.740272998809814秒
百度地圖批量獲取經緯度方法與高德地圖一致。
百度地圖開放平臺
import pandas as pd import requests import time import csv import json def baidu(addr): url = "http://api.map.baidu.com/geocoding/v3/?" #百度地圖API接口 para = { "address": addr, #傳入地址參數 "output": "json", "ak": "你自己的" #百度地圖開放平臺申請ak } req = requests.get(url,para) req = req.json() #print(req) print('-' * 30) m = req["result"]["location"] g = f"{m['lng']},{m['lat']}" print(g) return g baidu(addr="深圳")
df3 = pd.read_excel('gz_school.xlsx') time_start = time.time() df3['經緯度'] = df3['address'].apply(baidu) time_end = time.time() t = time_end-time_start print('共用時%s秒'%t)
通過百度地圖批量解析500個地址獲取經緯度數據共用時約24.06秒,平均1秒鐘可以獲取20個地址的經緯度,解析速度高于高德地圖和騰訊地圖。
共用時24.0550799369812秒
感謝各位的閱讀,以上就是“Python怎么獲取各大地圖平臺經緯度數據”的內容了,經過本文的學習后,相信大家對Python怎么獲取各大地圖平臺經緯度數據這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。