数据下载链接:百度云下载链接
由于小论文方向为电动汽车的路径规划,所以需要用到充电站的数据,因此需要从高德地图上爬充电站数据。本文学习自这篇文章。
高德有一个开放平台,点击进入,注册(登录)(有了账号之后返回首页)-控制台-应用管理-我的应用-添加,接下来会出现如下界面:
文章图片
在服务平台的选项中,选择Web服务,这一步很重要!
选完之后可以在界面中得到你的key
接下来需要知道需要查询城市以及POI分类的代码,进入此界面下载参考文档
在之前所说的参考文章中,我找到了作者用来爬数据的代码
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')
sheet.write(0, 4, 'pcode')
sheet.write(0, 5, 'cityname')
sheet.write(0, 6, 'citycode')
sheet.write(0, 7, 'adname')
sheet.write(0, 8, 'adcode')
sheet.write(0, 9, 'address')
sheet.write(0, 10, 'type')
sheet.write(0, 11, 'typecode')
sheet.write(0, 12, 'gridcode')
sheet.write(0, 13, 'entr_location')
sheet.write(0, 14, 'timestamp')
sheet.write(0, 15, 'tel')
sheet.write(0, 16, 'postcode')
sheet.write(0, 17, 'tag')
sheet.write(1, 18, 'shopid')
sheet.write(1, 19, 'shopinfo')
for i in range(len(poilist)):
# 每一行写入
sheet.write(i + 1, 0, poilist[i]['id'])
sheet.write(i + 1, 1, poilist[i]['name'])
sheet.write(i + 1, 2, poilist[i]['location'])
sheet.write(i + 1, 3, poilist[i]['pname'])
sheet.write(i + 1, 4, poilist[i]['pcode'])
sheet.write(i + 1, 5, poilist[i]['cityname'])
sheet.write(i + 1, 6, poilist[i]['citycode'])
sheet.write(i + 1, 7, poilist[i]['adname'])
sheet.write(i + 1, 8, poilist[i]['adcode'])
sheet.write(i + 1, 9, poilist[i]['address'])
sheet.write(i + 1, 10, poilist[i]['type'])
sheet.write(i + 1, 11, poilist[i]['typecode'])
sheet.write(i + 1, 12, poilist[i]['gridcode'])
sheet.write(i + 1, 13, poilist[i]['entr_location'])
sheet.write(i + 1, 14, poilist[i]['timestamp'])
sheet.write(i + 1, 15, poilist[i]['tel'])
sheet.write(i + 1, 16, poilist[i]['postcode'])
sheet.write(i + 1, 17, poilist[i]['tag'])
sheet.write(i + 1, 18, poilist[i]['shopid'])
sheet.write(i + 1, 19, poilist[i]['shopinfo'])
# 最后,将以上操作保存到指定的Excel文件中
book.save(r'' + cityname + "_" + classfield + '.xls')
# 将返回的poi数据装入集合返回
def hand(poilist, result):
# result = json.loads(result)# 将字符串转换为json
pois = result['pois']
for i in range(len(pois)):
poilist.append(pois[i])
# 单页获取pois
def getpoi_page(cityname, keywords, page):
req_url = poi_search_url + "?key=" + amap_web_key + '&extensions=all&keywords=' + quote(
keywords) + '&city=' + quote(cityname) + '&citylimit=true' + '&offset=25' + '&page=' + str(
page) + '&output=json'
datahttps://www.it610.com/article/= ''
with request.urlopen(req_url) as f:
data = https://www.it610.com/article/f.read()
data = data.decode('utf-8')
return data
if __name__ == '__main__':
# 获取城市分类数据
amap_web_key = '你的key'# 申请的key
city_list = ["北京市"]#可以修改对应的城市名或者代码
poi_list = ['充电站']#可以修改对应的POI分类名或者代码
poi_search_url = "http://restapi.amap.com/v3/place/text"
poi_boundary_url = "https://ditu.amap.com/detail/get/detail"
# TODO 需要爬取的POI所属的城市名,以及分类名. (中文名或者代码都可以,代码详见高德地图的POI分类编码表)
# TODO POI与城市编码网址 https://lbs.amap.com/api/webservice/download
for city in city_list:
for poi in poi_list:
pois = getpois(city, poi)
# 将数据写入excel
write_to_excel(pois, city, poi)
print('写入成功')
文章图片
?
最后,为什么说之前申请的时候选择服务平台很重要呢
因为我最开始申请的时候选择的是web端,然后使用相应的key时运行代码一直出现下面的问题:
文章图片
【数据获取|poi兴趣点数据获取】 重新申请“web服务平台”类型的key就可以解决这个问题啦!
更多GIS教程学习与数据获取,可以关注?地理科学生态网
?地理科学数据网 www.csdn.store中富含各种地理科学数据,比如道路网数据、NPP净初级生产力数据、土地利用数据(二级分类)、乡镇边界、NDVI数据、地铁站点、气象数据(降雨量、气温、蒸散量、辐射、湿度、日照时数、风速)、径流量数据、30米土地利用二级分类数据、12.5米高精度DEM高程、2020年行政区划、10、30米NDVI数据、30m精度NPP净初级生产力、夜间灯光数据、统计年鉴、道路网、水系、景区医院等poi、三级流域矢量边界、地质灾害分布数据、30m土壤理化性质数据集、30mGDP柵格数据、30m人口柵格数据、30m精度植被类型数据、30m精度连续年份土地利用数据、GPP初级生产力数据、农田作物类型分布数据、自然保护区分布数据、高精度遥感影像数据、1:10万沙漠沙地分布矢量数据、蒸散发数据、降雨量气温蒸发数据、地表径流量、水汽压、土壤侵蚀数据等,有兴趣的去访问下。
推荐阅读
- 数据获取|2020年山东省土地利用数据(矢量)
- 数据获取|【数据分享】全国分省、市、县、乡镇行政区划矢量图(专业版shp、小白版ppt)免费下载
- 避免数字化转型失败的3大破局思路和4点建议 | 亿信华辰推荐
- 机器学习|bagging && boosting && stacking 集成学习
- 数据分析|数据分析学习1——数据获取,单因子探索分析与可视化
- numpy学习|numpy04——搜索相关功能的函数并获取帮助
- Phthon|Python词云
- 人工智能|Numpy+Pandas+Matplotlib(Python数据分析三剑客详细入门教程)
- 可视化|Python直方图绘图(NumPy,Matplotlib,Pandas和Seaborn)