Python实现(百度地图API)地理编码与逆地理编码

地理编码:

地理编码是指将地址或地名等位置描述转换为经纬度坐标的过程。得到的坐标信息,可以用于制图或空间分析操作。(出于国家安全考虑,公布出来的坐标信息一般是经过加偏的。)

通过地理编码可快速查找到各类位置。比如建筑物名称、地址、位置描述、名胜景区等等。

逆地理编码:

逆地理编码可将经纬度坐标转换为详细、标准的地址信息。由于逆地理编码服务是根据坐标返回地址信息,所以前期提供给逆地理服务引擎的数据有下面几类:行政区划、道路、POI、AOI、门址等。行政区划数据可以告诉用户当前这个坐标点所属的省市区,道路数据保存的是所有的道路坐标点串,POI/AOI记录的是重要的点和面信息(POI是指兴趣点,AOI是指兴趣面),门址一般是指某某门牌号信息。

逆地理服务实际是一个空间查询的过程,通过输入经纬度坐标,查找这个坐标所在的行政区划,所属道路,最近的POI/AOI等。这些数据一般比较庞杂,所以合理组织这些数据结构非常关键。

相互关系如下图示:


                                  Python实现(百度地图API)地理编码与逆地理编码_第1张图片


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逆地理编码返回的是字典类型数据,可以通过解析字典的方式获取想要的信息。


                                                                                                            ---------------------中遥信息数据中心支持 

你可能感兴趣的:(Python)