博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
上海行政区划经纬度地图_爬取高德地图POI数据,GIS空间分析及可视化
阅读量:5322 次
发布时间:2019-06-14

本文共 2519 字,大约阅读时间需要 8 分钟。

       之前和大家介绍了一些爬虫的基础知识,现在,让我们继续这一话题,今天如预期的一样,给大家介绍介绍如何爬取高德地图的POI,做一个简单的GIS空间分析,并进行可视化。关于gis制图之前很少实践过,如有不规范的地方,欢迎大家批评指正,谢谢!

一、前言

        随着互联网技术的发展,我们可以从网络中获取的数据愈加庞大,然而此类数据如果不加处理,想要拿来用的话会存在许多的问题,如数据的冗余,海量数据不知道该如何选取,以及非结构化等,也就是大数据所具有的海量、异构、多源的特点,以至于我们无法从数据中获取非常直观的信息,那么对数据进行筛选,结构化存储,分析以及可视化就非常有意义了,这里以高德地图爬取的地理空间POI点数据为例,通过网络爬虫的手段获取有效信息,存储到文件或者数据库中,爬取的多条记录数据包含了地址点的名称,经纬度等信息,通过数据分析软件或者编程处理数据,借助一些可视化工具,可以达到良好的效果,本文此处采用arcgis软件对获取的数据进行核密度分析并完成制图,从而实现信息的处理分析,并调整配色,添加图例、指北针等完成制图,达到可视化的目的。

二、环境准备

  1. windows/linux/mac电脑一台

  2. python3.x运行环境

  3. 编辑器:pycharm/conda/sublime/vs code/juputer notebook等

  4. pip安装相应的包

  5. arcgis软件

三、数据获取与预处理

        这里我们预期是要获取到南京市所有医院的名称以及经纬度等信息,并且保存为csv文件,并将csv文件转为shape文件(ArcGIS的矢量图层文件)以方便后面进行处理。下图是通过python脚本文件爬取的南京市八百多家医院的信息(此种爬取的数据可能存在缺漏,因为高德地图对于爬取有限制,最多可以爬取九百条记录,有其他方法可以解决,这里不表),我仔细查看了一下数据,南京市的大中小医院基本都涵盖了,应该是基本齐全。

2b2cc66f69516257bf850a4eb22bffe9.png

下面介绍爬取的步骤以及代码

  1. 申请高德地图开发者账号以及密钥

  2. 编写爬虫脚本发送request请求

  3. 解析返回的数据,并保存为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不同,可以通过使

147eec65d15614e462cb022f7e68b625.png         472cfbc79d77a5bbd09f1f7cc4f5df5f.png

用ArcToolbox工具的project投影将矢量数据坐标系进行转换,如下图所示:

811fefa68f7782e88219f373b1d83b26.png      38b91a3e2a980deb25132cf23d093c35.png

加载后的数据如下图所示:

fc05b3f885bd1494377208fe410fec8a.png

      核密度分析工具用于计算要素在其周围邻域中的密度。此工具既可计算点要素的密度,也可计算线要素的密度。核密度分析可用于测量建筑密度、获取犯罪情况报告,以及发现对城镇或野生动物栖息地造成影响的道路或公共设施管线。可使用 population 字段根据要素的重要程度赋予某些要素比其他要素更大的权重。在arcmap中打开arctoolbox,选择核密度分析,填写参数,可以使用默认参数,环境中选择范围,用行政区划矢量图作为掩膜,点击OK,右键选择新生成的图层属性,符号系统中选择分类的色带和分类的方法,设置等级别名,在布局视图下添加指北针,图例,比例尺,标题,这样一副简单的专题地图就完成了,如下图所示。

37232a54da1a598f09775edc683d8817.png

转载地址:http://bihhv.baihongyu.com/

你可能感兴趣的文章
JavaScript的extend函数
查看>>
用easy_install時出現unknown url type: https问题
查看>>
无重复字符的最长子串
查看>>
A Famous Music Composer
查看>>
Jquery实现图片瀑布流思路-简单版
查看>>
【病因】 深入剖析强迫症的病因
查看>>
sysfs 文件系统的建立
查看>>
Arria10中的IOPLL与fPLL
查看>>
Delphi 停靠技术的应用
查看>>
C++中的异常处理(二)
查看>>
【转】MySql数据库--mysql_real_escape_string()函数
查看>>
关于Android线程的几点说明
查看>>
TIA WinCC Professional入门经典
查看>>
HDU 5652 India and China Origins(二分 + DFS)
查看>>
百度之星资格赛 2016 Problem 1002
查看>>
Codeforces 722C(并查集 + 思维)
查看>>
利用EF和C#泛型实现通用分页查询
查看>>
基于supervisor秒级Laravel定时任务
查看>>
python操作mysql数据库练习
查看>>
【luogu2678】【niop2015】跳石头 [二分]
查看>>