如果知道一个位置的经纬度,怎么获取这个地方的位置信息?本文根据百度地图提供的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)