地理編碼:
地理編碼是指將地址或地名等位置描述轉換爲經緯度座標的過程。得到的座標信息,可以用於製圖或空間分析操作。(出於國家安全考慮,公佈出來的座標信息一般是經過加偏的。)
通過地理編碼可快速查找到各類位置。比如建築物名稱、地址、位置描述、名勝景區等等。
逆地理編碼:
逆地理編碼可將經緯度座標轉換爲詳細、標準的地址信息。由於逆地理編碼服務是根據座標返回地址信息,所以前期提供給逆地理服務引擎的數據有下面幾類:行政區劃、道路、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逆地理編碼返回的是字典類型數據,可以通過解析字典的方式獲取想要的信息。
---------------------中遙信息數據中心支持