溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python怎么實現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換

發(fā)布時間:2020-07-23 15:08:42 來源:億速云 閱讀:251 作者:小豬 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了python怎么實現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換,內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

中文領(lǐng)域:

指的是提取境內(nèi)地址的經(jīng)緯度,的主要調(diào)用的是百度API。中間經(jīng)歷了一些波折,剛開始直接使用網(wǎng)上代碼debug半天都不行,才發(fā)現(xiàn)要隨時跟進官方改動,使用別人的API一定要看說明書??!

首先需要從百度地圖平臺上注冊一個AK(在這之前要注冊百度的開發(fā)者身份,免費),進入其地理編碼網(wǎng)址

頁面:

python怎么實現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換

由于我們是要從地址轉(zhuǎn)換經(jīng)緯度,因此看地理編碼就可以了。

python怎么實現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換

官網(wǎng)給出了服務(wù)文檔(千萬要看),因為爬取地址時需要提供url,這個url必須和官方提供的一致。這里需要注意兩點:

1. 網(wǎng)上有的代碼里給出的是v2,但是現(xiàn)在已經(jīng)更新到了v3

2. 中文需要編碼,使用urllib.request庫里的quote默認(rèn)的就行,但是可能在別的網(wǎng)址中會使用非大眾的漢字編碼方式,這個時候可以查一下相應(yīng)的編碼并encode一下

import json
from urllib.request import urlopen, quote
import requests
def getlnglat(address):
  url = 'http://api.map.baidu.com/geocoding/v3/'
  output = 'json'
  ak = '你的AK' # 百度地圖ak,具體申請自行百度,提醒需要在“控制臺”-“設(shè)置”-“啟動服務(wù)”-“正逆地理編碼”,啟動
  address = quote(address) # 由于本文地址變量為中文,為防止亂碼,先用quote進行編碼
  uri = url + '?' + 'address=' + address + '&output=' + output + '&ak=' + ak +'&callback=showLocation%20'+'//GET%E8%AF%B7%E6%B1%82'
#   req = urlopen(uri)
#   res = req.read().decode() 這種方式也可以,和下面的效果一樣,都是返回json格式
  res=requests.get(uri).text
  temp = json.loads(res) # 將字符串轉(zhuǎn)化為json
  lat = temp['result']['location']['lat']
  lng = temp['result']['location']['lng']
  return lat,lng  # 緯度 latitude,經(jīng)度 longitude

結(jié)果:

address='北京市海淀區(qū)上地十街10號'
getlnglat(address)

>>(40.05703033345938, 116.3084202915042)

以上就是關(guān)于python怎么實現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換的內(nèi)容,如果你們有學(xué)習(xí)到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI