高德地图
使用高德地图的逆地址解析将经纬度信息转换为具体地址。
注:高德地图逆地址解析API每日免费额度30000,每秒最多请求200次
1.导入需要使用的包
import requests
import time
import hashlib
import json
import pandas as pd
2.拼接出请求的url,使用get请求获取结果
# 拼接请求API的url
req_path = 'https://restapi.amap.com/v3/geocode/regeo?'
key = 'key=a5XXXXXccbf2XXXXX3815267f90XXXXX'
jingdu = str(113.9657)#(data['经纬度'][1400].split(",")[0])
weidu = str(22.6769)#(data['经纬度'][1400].split(",")[1])
location = jingdu + ',' + weidu
url = req_path+key+'&'+"location="+location
# 使用get请求获取结果
req = requests.get(url)
# 将请求结果解码,并对返回的JSON结果进行解析
xx = json.loads(req.content.decode('utf-8'))
# 获取详细地址信息
xx['regeocode']['formatted_address']
3.批量进行逆地址解析
# 导入数据
data = pd.read_excel('a.xlsx')
# list用于存储区、县地址信息
list = []
# list_long用于存储详细地址信息
list_long = []
for i in range(data.shape[0]):
# 高德地图每秒最多请求200次
if (i%200==0):
time.sleep(1)
print(i)
req_path = 'https://restapi.amap.com/v3/geocode/regeo?'
key = 'key=a5XXXXXccbf2XXXXX3815267f90XXXXX'
jingdu = (data['经纬度'][i].split(",")[0])
weidu = (data['经纬度'][i].split(",")[1])
location = jingdu + ',' + weidu
#拼接url
url = req_path+key+'&'+"location="+location
req = requests.get(url)
xx = json.loads(req.content.decode('utf-8'))
list.append(xx['regeocode']['addressComponent']['district'])
list_long.append(xx['regeocode']['formatted_address'])
解析返回结果样例
腾讯地图
使用腾讯地图的逆地址解析将经纬度信息转换为具体地址。
注:腾讯地图逆地址解析API每日免费额度10000,每秒最多请求5次
使用腾讯地图API与高德地图类似,只不过需要多进行一次md5加密操作,完整代码如下:
# 导入需要的包
import requests
import time
import hashlib
import json
import pandas as pd
# md5函数
def md5(str):
m = hashlib.md5()
m.update(str.encode("utf8"))
return m.hexdigest()
# 读取数据
data = pd.read_excel('a.xlsx')
# 使用循环批量获取逆地址解析结果
list = []
for i in range(data.shape[0]):
# 腾讯地图每秒最多请求5次
if (i%5==0):
time.sleep(1)
x = float(data['经纬度'][i].split(",")[0])
y = float(data['经纬度'][i].split(",")[1])
req_path = '/ws/geocoder/v1'
key = 'key=C53BZ-XXXXX-OJV4S-XXXXX-LLDE7-XXXXX'
param = key+'&'+ 'location='+'28.7033487'+','+'115.8660847'
SK = "XXXXXLmltcZXXXXXYWgHGgXXXXXYvqm"
str = req_path+'?'+param+SK
sig = md5(str)
Url = "https://apis.map.qq.com"+req_path+"?"+param+"&"+"sig="+sig
req = requests.get(Url)
xx = json.loads(req.content.decode('utf-8'))
list.append(xx['result']['address'])
list
解析返回结果样例