本文记录使用高德地图获得所在城市的POI数据,本文学习自blog
如果有做相关工作的同学可以与我邮件联系 zhaoliang.ml@outlook.com
在之前的百度地图获得POI及Python实现中获得POI数据的方法是根据所在地的经纬度,采用逆地理坐标方法获得当地的POI,返回值是josn数据。
在高德地图的API接口中直接对所在地城市的POI数据进行查询,具体的信息可以查看城市及POI分类代码网址,这样获得的数据会更加准确些。
高德地图获得POI的操作过程和百度地图中是一样的,首先在高德地图开放平台上申请web api,过程是:注册个人开发者》在控制台创建应用》添加可以,选择web api 》这样就得到一个在高德web服务中可以使用的ak。
AK免费申请的,每天有固定流量,如果您要用我的代码还麻烦您自主申请下AK,以免我的AK流量用完了,影响您的使用
当AK流量用完了之后就代码就无法运行了,具体如下图
找到你想要的城市的名字或代码,找到你想要的POI名字或代码,在主程序中修改AK和city_list和poi_list,最终会在程序所在文件件内根据城市-POI生成保存xls文件。
from urllib.parse import quote
from urllib import request
import json
import xlwt
# 根据城市名称和分类关键字获取poi数据
def getpois(cityname, keywords):
i = 1
poilist = []
while True: # 使用while循环不断分页获取数据
result = getpoi_page(cityname, keywords, i)
# print(result)
result = json.loads(result) # 将字符串转换为json
if result['count'] == '0':
break
hand(poilist, result)
i = i + 1
return poilist
# 数据写入excel
def write_to_excel(poilist, cityname, classfield):
# 一个Workbook对象,这就相当于创建了一个Excel文件
book = xlwt.Workbook(encoding='utf-8', style_compression=0)
sheet = book.add_sheet(classfield, cell_overwrite_ok=True)
# 第一行(列标题)
sheet.write(0, 0, 'id')
sheet.write(0, 1, 'name')
sheet.write(0, 2, 'location')
sheet.write(0, 3, 'pname')</