时间:2024-07-28
何文娜
(吉林体育学院,吉林 长春 130022)
公共体育场地指由政府主导或直接提供的可供居民大众进行体育活动的场地[1]。随着人们生活水平提升,国家全民健身计划推行,体育场地供给不足与大众健身需求日益增强产生供需矛盾[2]。自2002年以来,国内外学者对公共体育资源格局研究迅速增多,并取得一定的研究成果[3-5]。通过阅读相关论文发现研究人员多采用文献法[6-7],导致定性研究结果难以精确反映真实情况。因为缺少体育空间数据而鲜用GIS分析方法研究空间格局等,对政府科学决策、科学研究、公众健身等均带来不便。为了更好地理解和分析长春市城区体育资源空间分布特征及资源配置情况,本文研究一种从百度地图中抓取体育场地分布信息以构建空间数据库的方法,将为后续体育资源分析打下数据基础。
由于当前百度已禁止行政区名称或按规则矩形区域抓取POI数据,故按照行政区名称抓取的POI数据只返回少量随机数据[8],难以保证采集数据的完整性及数据质量。但百度API 支持不规则图形的抓取,可基于云计算[9]、GIS 自研算法等完成数据采集任务,以构建长春市城区体育场空间数据。图1为构建长春市城区体育场地空间数据库总体流程。
图1 长春市城区体育场地空间数据库建设流程
(1)合并行政区:把ArcGIS 格式的2021 年长春市城区的行政区合并成一个大的不规则多边形。
(2)创建网格:以第一步合并形成的长春市城区多边形为数据源,创建规则的小正方形(如边长1公里或500米)。
(3)筛选网格:因创建网格默认采用多边形的外包络线,行政区不规则边界与外包络线之间可能存在空隙,则建网格时此空隙亦由小单元格生成。采用第一步合并结果作为空间筛选条件,只选中被其包含或与其边界相交的小方格。
(4)输出选中网格:将选中的所有小方格(包含或相交)输出到系统外,单位保存成ArcGIS Shapefile文件。
(5)生成重心:将第4步执行结果作为数据源,批量计算每一个小方格的重点,得到一个重心点图层。
(6)生成缓冲区:以第5步的重心点图层作为输入,按指定半径生成缓冲区,保证所有缓冲区的区域融合后可全覆盖整个长春市城区。
(7)按缓冲区抓取:遍历每一个缓冲区要素,用当前缓冲区、关键词(如体育场地)作为搜索参数,发给百度API 采集指令,百度云返回符合当前抓取条件的数据。
(8)解析数据:对百度返回的数据进行解析,将数据流中的数据按照名称、坐标(经度、纬度)、地址、所在区、所在市、所在省等分别解算,解析结果临时存于内存对象中。
(9)保存数据:保存前根据编号及名称判断当前要保存的数据是否已存在,若已存在则跳过,若不存在则保存到本地文件中,从而保证了抓取数据的唯一性。
(10)生成图层:使用第9步生成的体育数据文件作为数据源,采用空间数据生成工具(如ArcMap),使用经纬度空间数据生成点,同时将名称、地址等数据项同步存入属性表,最后生成ArcGIS Shapefile格式的体育场地点图层。
(11)创建空间数据库:在开源空间数据库服务器(如PostGIS)中创建专用数据库,将体育场地点图层数据用导入/导出工具等存入,形成长春市城区体育场地空间数据库。
使用ArcMap 软件打开保存长春市城区的ArcGIS 数据(如Changchun.shp),在编辑状态下选择城区所有面要素,使用合并工具将它们合成一个要素,将合并后要素存成shapefile文件输出(如Changchun_Merged.shp)。图2中(a)为长春市城区原始数据、(b)为城区合并后结果。
图2 长春市城区合并
(1)选择长春市城区合并面要素为模板边界范围,自动提取图层最小包络矩形范围。
(2)指定生成的网格要素类保存位置及名称(如Changchun_FishNet.shp)。
(3)打开鱼网工具(Fishnet)并设置创建鱼网的参数:设置行列数各100,单元的高度和宽度设为0,则会自动将其分割成100 行、100 列共10000 个单元格,自动计算单元格的高度和宽度。
(4)输出几何类型设为面(POLYGON),且取消创建标签点复选框。
(5)确认后将自动生成并输出存有10000个单元格的面图层。
图3(a)显示了创建鱼网的参数设置窗口,(b)为创建的10000个小网格覆盖长春市城区效果。
图3 创建网格
因长春市城区边界外的空余区域不在城区范围内,可将这些网格移除以提高抓取效率与精度。使用ArcMap的位置选择(Select By Location)工具,设置被选择的目标图层为生成的网格(如Changchun_FishNet.shp),位置源图层选择长春市合并城区(Changchun_Merged.shp),为目标图层要素设置的空间选择方法为“与源图层要素相交”,即可选中与长春市城区边界相交及被其包含的所有小网格(如图4(a)),图4(b)展示了选中要素导出结果。
图4 选择长春市城区网格
使用ArcMap 数据管理工具中要素转点(Feature to Point)工具,它以筛选后的长春市城区网格作为输入,批量计算每一个网格的重心到一点图层中(如Changchun_Fish-Net_Circle.shp)。图5(a)显示了长春市城区边界与所有网格重心。
重心点图层作为ArcMap 的缓冲区工具(Buffer)的输入要素,设置缓冲区半径(如500 米),指定输出路径及图层名(如Changchun_FishNet_CircleBuffer.shp),即可生成用于提取长春市城区体育场地的缓冲区(如图5(b))。
图5 长春市城区网格重心、缓冲区
采用Python 语言编写抓取代码,将搜索关键词数组、格网缓冲区等作为输入参数,调用百度云API 接口,对返回的流式数据内容进行字符转换、格式解析并保存在Excel 中。使用ArcMap将Excel中保存的体育空间数据加载到地图时,指定正确的经度、纬度及投影参数等(如WGS1984),再将显示结果保存为点图层(如图6)。最后将保存长春市城区体育场地位置数据图层导入到PostGIS 数据库中,形成长春市城区体育场地空间数据库。
图6 长春市城区体育场地空间数据结果
(1)受百度对POI 数据抓取的限制,本文提出一种采用非规则图形采集并构建长春市城区体育场地空间数据库的技术流程,主要包括合并行政区、创建网格、筛选网格、生成重心、生成缓冲区、按缓冲区抓取、保存数据、生成图层、导入空间数据库等环节;
(2)使用Python语言编程实现了具体抓取算法,通过调用百度API实现了长春市城区体育场地空间数据的采集;
(3)将采集的体育场地位置数据导入到PostGIS数据库中,初步构建了长春市城区体育场地空间数据库,为后续开展体育资源空间分析等打下数据基础。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!