逆地址解析-【高德地图】【腾讯地图】

高德地图

使用高德地图的逆地址解析将经纬度信息转换为具体地址。

注:高德地图逆地址解析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

解析返回结果样例

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值