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