查看原文
其他

Python爬取兴趣点POI攻略

*
POI简历

中文名:兴趣点。


英文名:POINT OF INTEREST。


含义:代表真实地理实体空间的点状数据,一般包含名称、类别、地理坐标等信息,是一种新的空间数据源,能够直观的反应出各类设施和人类社会经济活动的分布情况。


特点:数据类型覆盖面广,分类明确,位置准确度高,数据实时性强,数据处理难度较低等。


作用:在空间规划应用中,可用于公共服务设施布局优化,空间功能区识别,商业活动空间集聚、居民时空行为、城市结构分析,建成环境评价,区域边界划分研究等。

利用百度地图爬取POI

  • 申请百度地图AK
  • 利用Python爬取POI
  • 将坐标信息转化为shp文件

申请百度地图AK

  • 登录的百度地图开放平台 lbsyun.baidu.com

点击控制台

点击控制台右侧应用管理中的‘我的应用’

点击‘创建应用’

应用名称可以随便填写一个

IP白名单填写 0.0.0.0/0 即可,然后点击提交。

这样AK就有了,接下来爬取的时候,就会用到。

爬取POI(以北京地区的公园为例)

本次就爬取北京地区公园的位置信息。需要注意是,要把get_json函数中的ak的值替换为你刚申请的AK。
# -*- coding: utf-8 -*- import requestsimport jsonimport osrimport shapefile

class point: def __init__(self, name, lat,lon): self.name = name self.lat = lat self.lon=lon
def get_json(loc,page_num=0): header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0'} pa={ 'q':'公园', 'region':loc, 'scope':'2', 'page_size':20, 'page_num':page_num, 'output':'json', 'ak':'替换为你的AK' } r=requests.get("http://api.map.baidu.com/place/v2/search",params=pa,headers=header) my_json=json.loads(r.text) return my_json
page=0last_page=False
info_list=[]while not last_page: park_info=get_json(loc='北京',page_num=page) if park_info['results']: for each_park in park_info['results']: try: park_name=each_park['name'] except: park_name=None try: park_lat=each_park['location']['lat'] except: park_lat=None try: park_lon=each_park['location']['lng'] except: park_lon=None info_list.append(point(park_name,park_lat,park_lon)) print('正在爬取第{}页'.format(page+1)) page=page+1 else: last_page=True

位置信息储存为shp文件

把爬取下来的信息存储为shp文件,这里使用的是shapefile库(pip install pyshp安装)。
save_path=r'E:\park.shp'file = shapefile.Writer(save_path,encoding='gbk')file.field('name', 'C', '40') for j in info_list: if j.lat==None or j.lon==None: continue else: file.point(j.lon,j.lat) file.record(j.name)
file.close()
proj = osr.SpatialReference() proj.ImportFromEPSG(4326) wkt = proj.ExportToWkt()f = open(save_path.replace(".shp", ".prj"), 'w') f.write(wkt)#写入投影信息f.close()
现在就把北京所有的公园信息爬取下来了。在ArcGIS中看一看我们存储的数据。

更多精彩内容推荐

初识Python


加群提示


有很多人咨询是基于地理信息的在线社交网络模型矩阵内容新媒体,定位是“有技术、有经验、有项目、有学术、有人才、有资金、有交流、有合作”的服务型平台。


目前建有12个社群交流平台:GIS技术交流、地质工作交流、遥感技术交流、空间规划编制、智慧城市、无人机航测建模、地理信息大数据、测绘软硬件产品、高精度地图自动驾驶、人才培养推荐、投资理财咨询、线上知识管理。入群请加多向选择崔老师(微信:handsystem),同时备注您想进的交流群。


商务合作或投稿请发送邮件
qingtianbaiye@163.com


更多精彩资讯关注“youhenduoren”



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存