Python實現(百度地圖API)地理編碼與逆地理編碼

地理編碼:

地理編碼是指將地址或地名等位置描述轉換爲經緯度座標的過程。得到的座標信息,可以用於製圖或空間分析操作。(出於國家安全考慮,公佈出來的座標信息一般是經過加偏的。)

通過地理編碼可快速查找到各類位置。比如建築物名稱、地址、位置描述、名勝景區等等。

逆地理編碼:

逆地理編碼可將經緯度座標轉換爲詳細、標準的地址信息。由於逆地理編碼服務是根據座標返回地址信息,所以前期提供給逆地理服務引擎的數據有下面幾類:行政區劃、道路、POI、AOI、門址等。行政區劃數據可以告訴用戶當前這個座標點所屬的省市區,道路數據保存的是所有的道路座標點串,POI/AOI記錄的是重要的點和麪信息(POI是指興趣點,AOI是指興趣面),門址一般是指某某門牌號信息。

逆地理服務實際是一個空間查詢的過程,通過輸入經緯度座標,查找這個座標所在的行政區劃,所屬道路,最近的POI/AOI等。這些數據一般比較龐雜,所以合理組織這些數據結構非常關鍵。

相互關係如下圖示:


                                  


Python具體實現:

思路:首先申請百度API的key,通過調用接口就可實現操作,需要注意的是,地理編碼返回的是百度座標。而進行逆向地理編碼地址查詢所輸入的爲WGS84座標。

Python地理編碼:

from urllib.request import urlopen,quote
import json
import coordinateTransform

address="西安市"
ak='FA8atAaqd1wajikD56lPqtiaNCleCeyz'
url='http://api.map.baidu.com/geocoder/v2/?address='
output = 'json'
#ak = '你的ak'#需填入自己申請應用後生成的ak
add = quote(address)#本文城市變量爲中文,爲防止亂碼,先用quote進行編碼
url2 = url+add+'&output='+output+"&ak="+ak
req = urlopen(url2)
res  = req.read().decode()
temp = json.loads(res)
lng = temp['result']['location']['lng']  # 獲取經度
lat = temp['result']['location']['lat']  # 獲取緯度
list1=[lng,lat]
print('百度座標爲:',list1)

結果圖示:

                                       

 

Python逆地理編碼:

import requests
address = '39.83637707633588,115.58006911450369'
# address=str(i[0])+','+str(i[1])
url = 'http://api.map.baidu.com/geocoder?output=json&key=f247cdb592eb43ebac6ccd27f796e2d2&location=' + str(address)
response = requests.get(url)
answer = response.json()
print(answer)

結果圖示:

             

Python逆地理編碼返回的是字典類型數據,可以通過解析字典的方式獲取想要的信息。


                                                                                                            ---------------------中遙信息數據中心支持 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章