本文共 2519 字,大约阅读时间需要 8 分钟。
之前和大家介绍了一些爬虫的基础知识,现在,让我们继续这一话题,今天如预期的一样,给大家介绍介绍如何爬取高德地图的POI,做一个简单的GIS空间分析,并进行可视化。关于gis制图之前很少实践过,如有不规范的地方,欢迎大家批评指正,谢谢!
一、前言
随着互联网技术的发展,我们可以从网络中获取的数据愈加庞大,然而此类数据如果不加处理,想要拿来用的话会存在许多的问题,如数据的冗余,海量数据不知道该如何选取,以及非结构化等,也就是大数据所具有的海量、异构、多源的特点,以至于我们无法从数据中获取非常直观的信息,那么对数据进行筛选,结构化存储,分析以及可视化就非常有意义了,这里以高德地图爬取的地理空间POI点数据为例,通过网络爬虫的手段获取有效信息,存储到文件或者数据库中,爬取的多条记录数据包含了地址点的名称,经纬度等信息,通过数据分析软件或者编程处理数据,借助一些可视化工具,可以达到良好的效果,本文此处采用arcgis软件对获取的数据进行核密度分析并完成制图,从而实现信息的处理分析,并调整配色,添加图例、指北针等完成制图,达到可视化的目的。
二、环境准备
windows/linux/mac电脑一台
python3.x运行环境
编辑器:pycharm/conda/sublime/vs code/juputer notebook等
pip安装相应的包
arcgis软件
三、数据获取与预处理
这里我们预期是要获取到南京市所有医院的名称以及经纬度等信息,并且保存为csv文件,并将csv文件转为shape文件(ArcGIS的矢量图层文件)以方便后面进行处理。下图是通过python脚本文件爬取的南京市八百多家医院的信息(此种爬取的数据可能存在缺漏,因为高德地图对于爬取有限制,最多可以爬取九百条记录,有其他方法可以解决,这里不表),我仔细查看了一下数据,南京市的大中小医院基本都涵盖了,应该是基本齐全。
下面介绍爬取的步骤以及代码
申请高德地图开发者账号以及密钥
编写爬虫脚本发送request请求
解析返回的数据,并保存为csv文件
# TODO 1.替换为从高德开放平台上申请申请的密钥amap_web_key = 'xxxxxxxxxxxxxx'# 根据城市名称和分类关键字获取poi数据def getpois(cityname, keywords): i = 1 poilist = [] while True: # 使用while循环不断分页获取数据 result = getpoi_page(cityname, keywords, i) result = json.loads(result) # 将字符串转换为json if result['count'] == '0': print("分页结束") break hand(poilist, result) i = i + 1 return poilist # 将返回的poi数据装入集合返回def hand(poilist, result): # result = json.loads(result) # 将字符串转换为json pois = result['pois'] print("当前数据量"+str(len(pois))) for i in range(len(pois)): poilist.append(pois[i]) # 单页获取poisdef 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' data = '' # print('============请求url:' + req_url) with request.urlopen(req_url) as f: data = f.read() data = data.decode('utf-8') return data
以上是爬取POI点的主要逻辑代码,涉及带百度坐标系转WGS84,以及保存为csv或者excel文件的代码这里不表,读者有兴趣可以去网上查,网上相关的内容颇多,这里不再赘述。
四、ArcGIS核密度分析与制图
下面开始制作专题地图,首先打开ArcMap,加载南京市的行政区划文件,添加xy数据,选择csv文件,x为经度,y为纬度,点击edit,选择坐标系为WGS84坐标系,如果行政区矢量shp文件坐标系和WGS84不同,可以通过使
用ArcToolbox工具的project投影将矢量数据坐标系进行转换,如下图所示:
加载后的数据如下图所示:
核密度分析工具用于计算要素在其周围邻域中的密度。此工具既可计算点要素的密度,也可计算线要素的密度。核密度分析可用于测量建筑密度、获取犯罪情况报告,以及发现对城镇或野生动物栖息地造成影响的道路或公共设施管线。可使用 population 字段根据要素的重要程度赋予某些要素比其他要素更大的权重。在arcmap中打开arctoolbox,选择核密度分析,填写参数,可以使用默认参数,环境中选择范围,用行政区划矢量图作为掩膜,点击OK,右键选择新生成的图层属性,符号系统中选择分类的色带和分类的方法,设置等级别名,在布局视图下添加指北针,图例,比例尺,标题,这样一副简单的专题地图就完成了,如下图所示。
转载地址:http://bihhv.baihongyu.com/