基于百度地图API的逆地理编码信息

如果知道一个位置的经纬度,怎么获取这个地方的位置信息?本文根据百度地图提供的API接口可以直接查询返回地理位置信息。
python代码如下:

# encoding:utf-8
import requests
import time
import pandas as pd
from tqdm import tqdm

# 此处需要自己申请的百度地图ak
ak = "xxxxxxxxxx"
# 替换为自己的浏览器的headers
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0 '}

# 百度地图提供的逆地理信息编码api接口
# http://api.map.baidu.com/reverse_geocoding/v3/?ak=您的ak&output=json&coordtype=wgs84ll&location=31.225696563611,121.49884033194

# 逆地理信息编码
def get_address_info(ak=None,lat=None,lon=None):
    url = "http://api.map.baidu.com/reverse_geocoding/v3/?ak={}&&output=json&coordtype=wgs84ll&location={},{}".format(ak,lat,lon)
    try:
        time.sleep(0.1)
        data = requests.get(url,headers=headers).json()
        if data["status"] == 0:
            if data['result']:  
                lat = data['result']['location'].get('lat', '-')          # .get('business', 'default')
                lon = data['result']['location'].get('lng', '-')
                business = data['result'].get('business', '-')      # 所在商圈
                cityCode = data['result'].get('cityCode', '-')      # 城市代码
                city = data['result']["addressComponent"].get('city', '-')          # 城市
                district = data['result']["addressComponent"].get('district', '-')  # 区
                street = data['result']["addressComponent"].get('street', '-')      # 街道
            else:
                print("no result back!")       
        
        else:
            print("=======错误状态码:{}========".format(response["status"]))
            time.sleep(0.1)        
    except:
        time.sleep(0.1)
        print("请求失败!")
        business = "-"
        cityCode = "-"
        city = "-"
        district = "-"
        street = "-"
        pass      
    return business,cityCode,city,district,street

business = []
cityCode = []
city = []
district = []
street = []
# addlist = df["address"]
data = pd.read_excel(r"E:\dosn2\qiyexinxi\info.xlsx",encoding="gbk")
# data.head(11)
lats = list(data["纬度"])
lons = list(data["经度"])

for i,j in tqdm(zip(lats,lons)):
    business1,cityCode1,city1,district1,street1 = get_address_info(ak,str(i),str(j))                                                          
    business.append(business1)
    cityCode.append(cityCode1)
    city.append(city1)
    district.append(district1)
    street.append(street1)
    
    
data.insert(19,"附近商圈",business)
data.insert(18,"城市代码",cityCode)
data.insert(15,"城市",city)
data.insert(16,"地区",district)
data.insert(17,"街道",street)
data.to_excel(r"E:\dosn2\qiyexinxi\resultcj.xls",sheet_name='Sheet1',encoding="gbk",index=False)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值