POI数据是什么?“Point of interest”的缩写,翻译为“兴趣点”。兴趣点数据可以获得研究区内的餐厅服务、风景区、交通设施等等兴趣点数据,根据这些数据可以进行城市功能区分类、快递点的时空分布特征、人口活动区等等研究,同时结合夜光数据也可进行多源数据的耦合研究。

本文为大家带来兴趣点提取的方法,其中Key需要到高德地图API账号进行申请。

申请链接:

https://console.amap.com/dev/key/app

POI分类编码下载网址:

https://lbs.amap.com/api/webservice/download

提交后即可获取第一张图所示的key

爬取代码如下:

from urllib.parse import quote
import urllib.request
import pandas as pd
import xlwt
import json
class getpoi:output_path = "D:/pycharm/POI/POI data/"#输出路径path_class = "E:/Learn/Analysis of urban ribbon/amap_poicode/amap_poicode.xlsx"#POI分类编码表位置amap_web_key = 'fd6043f1ad500d2b5dd40af6e555b840'#高德地图API_KEYpoi_search_url = https://restapi.amap.com/v3/place/text?key=%s&extensions=all&keywords=&types=%s&city=%s&citylimit=true&offset=25&page=%s&output=json #申请密钥cityname = '北京'areas = ['昌平区']#如爬取整个北京市,建议分区爬取,以免出现数据量限制的问题totalcontent = {}def __init__(self):data_class = self.getclass()for type_class in data_class:for area in self.areas:page = 1;if type_class['type_num'] / 10000 < 10:classtype = str('0') + str(type_class['type_num'])else:classtype = str(type_class['type_num'])while True:if classtype[-4:] == "0000":break;poidata = self.get_poi(classtype, area, page);poidata = json.loads(poidata)if poidata['count'] == "0":break;else:poilist = self.hand(poidata)print("area:" + area + "  type:" + classtype + "  page:第" + str(page) + "页  count:" + poidata['count'] + "poilist:")page += 1for pois in poilist:if classtype[0:2] in self.totalcontent.keys():pois['bigclass'] = type_class['bigclass']pois['midclass'] = type_class['midclass']pois['smallclass'] = type_class['smallclass']list_total = self.totalcontent[classtype[0:2]]list_total.append(pois)else:self.totalcontent[classtype[0:2]] = []pois['bigclass'] = type_class['bigclass']pois['midclass'] = type_class['midclass']pois['smallclass'] = type_class['smallclass']self.totalcontent[classtype[0:2]].append(pois)for content in self.totalcontent:self.writeexcel(self.totalcontent[content], content)#将数据写入excel
def writeexcel(self, data, classname):book = xlwt.Workbook(encoding='utf-8', style_compression=0)sheet = book.add_sheet(classname, cell_overwrite_ok=True)# 第一行(列标题)sheet.write(0, 0, 'x')sheet.write(0, 1, 'y')sheet.write(0, 2, 'count')sheet.write(0, 3, 'name')sheet.write(0, 4, 'adname')sheet.write(0, 5, 'smallclass')sheet.write(0, 6, 'typecode')sheet.write(0, 7, 'midclass')classname = data[0]['bigclass']for i in range(len(data)):sheet.write(i + 1, 0, data[i]['lng'])sheet.write(i + 1, 1, data[i]['lat'])sheet.write(i + 1, 2, 1)sheet.write(i + 1, 3, data[i]['name'])sheet.write(i + 1, 4, data[i]['adname'])sheet.write(i + 1, 5, data[i]['smallclass'])sheet.write(i + 1, 6, data[i]['classname'])sheet.write(i + 1, 7, data[i]['midclass'])book.save(self.output_path + self.cityname + '_' + classname + '.xls')def hand(self, poidate):pois = poidate['pois']poilist = []for i in range(len(pois)):content = {}content['lng'] = float(str(pois[i]['location']).split(",")[0])content['lat'] = float(str(pois[i]['location']).split(",")[1])content['name'] = pois[i]['name']content['adname'] = pois[i]['adname']content['classname'] = pois[i]['typecode']poilist.append(content)return poilistdef readfile(self, readfilename, sheetname):data = pd.read_excel(readfilename, sheet_name=sheetname)return datadef getclass(self):readcontent = self.readfile(self.path_class, "amap_poicode")data = []for num in range(readcontent.shape[0]):content = {}content['type_num'] = readcontent.iloc[num]['NEW_TYPE']content['bigclass'] = readcontent.iloc[num]['大类']content['midclass'] = readcontent.iloc[num]['中类']content['smallclass'] = readcontent.iloc[num]['小类']data.append(content)return datadef get_poi(self, keywords, city, page):poiurl = self.poi_search_url % (self.amap_web_key, keywords, quote(city), page)data = ''with urllib.request.urlopen(poiurl) as f:data = f.read().decode('utf8')return data
if __name__ == "__main__":
gp = getpoi()

注:

1.如数据量过大,建议分区下载,避免数据量限制而无法成功下载。

2.如开发环境没有安装python相应库,可以在控制台使用pip install **的命令进行安装

提取到的数据情况如上所示。

微信公众号GIS攻略同步更新中,欢迎大家关注!!!如想直接获取北京市POI数据,公众号GIS攻略后台回复北京市POI即可。

POI数据获取-Python相关推荐

  1. 百度地图POI数据获取

    转载自:https://blog.csdn.net/baidu_26646129/article/details/80464447 本文主要介绍百度地图POI数据获取:从百度地图得到POI数据,以js ...

  2. 数据导入与预处理-第4章-数据获取python读取pdf文档

    数据导入与预处理-第4章-数据获取Python读取PDF文档 1 PDF简介 1.1 pdf是什么 2 Python操作PDF 2.1 pdfplumber库 2.2 pdfplumber基本操作 2 ...

  3. 行政区划及poi数据获取(视频)

    行政区划及poi数据获取 获得标准行政区划,在获取其中的poi数据 链接地址: https://mp.weixin.qq.com/s/qn9w2Is8O3M2rTCtBveymA

  4. 高德地图api如何不显示logo_Python爬取高德地图POI数据获取「洗浴推拿指南」

    学习交流群 认识高德地图API 打开"高德开放平台",点击"开发文档",在"Web服务"下寻找并点击"搜索API". 我 ...

  5. 通达信行情数据获取--python

    通达信行情数据获取方法,其中可以通过通达信每天下载导自身文件获取(通过c或者c++写一个接口就可以了),但是每天需要手动同步数据.下面介绍一个比较好网上接口.需要到"Tushare金融大数据 ...

  6. poi数据获取、学校poi分布、医院poi分布、公园分布、地铁分布、道路网

    数据已经打包分享,这里是数据百度云下载链接: poi数据下载链接 即将踏入六月,酷暑袭来,一场没有硝烟的战场号角即将吹响---高考,高三的学子们正向心仪的大学发力. 选择一所大学很是重要,了解一所大学 ...

  7. 百度地图获得POI及python实现

    本文将记录有关利用百度地图API去搜索一个城市内的POI的相关内容 百度地图API 百度地图API服务说明见其主页: http://lbsyun.baidu.com/index.php?title=w ...

  8. matlab python 股票,股票行情数据获取-Python获取股票数据?

    Python获取股票数据? 这里推荐一个包―tushare,tushare是一个免费.开源的python财经数据接口包.主要实现了从数据采集.清洗加工到数据存储过程,能够为金融分析人员提供快速.整洁的 ...

  9. 百度高德地图poi数据获取-下载

             目前在互联网公开服务中,或者绝大多数手机APP里看到的,都是基于栅格(瓦片)模型的地图服务,比如大家看到的百度地图或者谷歌地图,其实对于某一块地方的描述,都是通过10多层乃是20多层 ...

  10. 爬虫系列:某家小区房产信息及POI数据获取

最新文章

  1. 新一轮全球“太空竞赛”正上演 争夺几万亿美元大蛋糕
  2. Docker 私有仓库最简便的搭建方法
  3. Windows Batch [精华]
  4. C#中ArrayList的简单使用
  5. containerd安装及常用命令
  6. Visual Studio “Orcas” Beta 2 开始发布多语种版本 包含简体中文
  7. 使用 OpenLDAP 集中管理用户帐号
  8. ffmpeg-从mp4、flv、ts文件中提取264视频流数据
  9. 贵州大学考博计算机学院官网,贵州大学研究生院
  10. Flex样式工作原理
  11. vue、react隐式实例化
  12. 未来五年你永远不会忘记的最佳GameCube仿真器
  13. docker学习使用文档
  14. docker容器无root 权限,如何获得docker容器里面的root权限
  15. aho-corasick php,基于 Aho-Corasick 算法实现中文全分词
  16. SpringBoot 整合 Elasticsearch 实现海量级数据搜索
  17. Winner-Take-All Autoencoders ( 赢者通吃自编码器)
  18. ios appstore 审核 Guideline 5.2.2 - Legal ios新闻资讯类APP5.2.2被拒
  19. xtrabackup 实现mysql的全量备份与增量备份
  20. DVWA-不安全的验证码

热门文章

  1. 前端代码审查利器:vscode插件GitLab Workflow
  2. wps linux 在线安装程序,WPS Office 2019 For Linux下载及安装教程
  3. Visio2013安装教程
  4. 计算机考试如何截屏,电脑怎么截图 几种方法轻松学会
  5. 俄罗斯方块c语言代码 vc 6.0,VC++6.0俄罗斯方块代码
  6. Image zImage vmlinuz
  7. VBA 如何多条件查询汇总
  8. Excel数据转换成SQL
  9. 电源大师课笔记 2.2
  10. 清华姚班毕业生开发新特效编程语言,99行代码实现《冰雪奇缘》,网友:大神厉害了!创世的快乐...