1. 研究背景
《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》提出,加强老年人、残疾人服务设施建设,完善无障碍环境建设 [1]。无障碍环境建设主要包含无障碍设施建设、无障碍信息交流和无障碍社区服务三个方面,其中无障碍设施建设侧重于物质层面,一定程度上反映了社会文明进步和城市现代化建设进程的一角,是社会发展的政治、文化和精神方面的集中体现 [2] [3]。
自20世纪30年代瑞典、丹麦等国开始在城市建设中配备专供残疾人使用的设施,到二战后美国为照拂伤残军人制定了《便于肢体残疾人进入和使用的建筑设施的美国标准》,再到1974年联合国专家会议正式提出“无障碍设计”概念,经过多年发展,无障碍逐步从专用设计走向通用设计、从特殊照顾走向合理通融。在无障碍理念的不断发展传播和新时代背景下,作为九省通衢的武汉在无障碍环境建设方面也在不断推进和完善,相关研究络绎不绝。
自1994年开展无障碍环境建设至今,武汉市在立法、工程改造、信息服务和社区服务等多方面都卓有成就。陶玲 [4] 等从地方标准制度、工程建设与改造、建设现状问题与对策方面进行了分析阐述,以工程师角度表达了对改善现状的要求;管家庆 [5] 等着眼于设施建设中细节问题,如坡道斜坡设计不足、盲道被占、无障碍标志牌偏高等给出建议;吴苗 [6] 等对地铁换乘站的景观设计有所探讨等;宋时丞 [7] 等以武汉市建有的轨道交通为基础,开发了一款主要辅助脊髓损伤患者的出行移动软件来帮助他们利用这些无障碍设施;张金星 [8] 等以地铁线路为基础,探讨了地铁无障碍出行和线路规划选择。
Neo4j是一种使用属性图模型实现的图数据库,擅长存储和管理实体关系,是当下主流且长期居于DB-ENGINES榜首的图数据库产品。常被用于帮助人们进行数据挖掘和分析,如构建知识图谱。李慧斯 [9] 等针对旅游知识图谱应用相对匮乏情况下,率先提出通过本地旅游相关评价文本进行分类挖掘、计算关键词热度、建立关联模型并量化,后计算出关联度并输入Neo4j进行可视化分析,完成了对周边游热点的分析;赵雪芹 [10] 等以研究万里茶道为契机,立足于数字人文视角将Protégé与Neo4j相结合,提出了万里茶道数字资源知识图谱的构建思路,为万里茶道资源的开发利用与本地持久化提供了思路。
武汉公交地铁无障碍出行应用(以下简称“应用”),是一款针对武汉市城区范围内轮椅出行的APP(包含4个模块:附近站点、线路、路径规划和我的),主要是解决轮椅出行时的路线指引和重要设施查询(如无障碍公交车和线路、地铁站点的垂直电梯和无障碍洗手间位置等)。该应用是武汉地铁无障碍出行移动软件 [7] 融合公交无障碍信息基础上,重写了无障碍出行线路规划后,用于辅助以轮椅出行的有需人群的出行工具。
目前,使用图数据库Neo4j进行无障碍相关设施的存储管理及应用研发相对较少,在多数情况下仍旧使用关系型数据库(如MySQL)来进行小场景需求实现。本文针对武汉公交地铁无障碍出行应用在构建和运营中出现的诸多数据更新维护难点,以及当下面临的数据采集困境情形下,进行需求分析后设计并提出使用图数据库Neo4j进行设施数据的存储与检索方案;后通过开发数据采集系统中一个模块(采集上报)来初步验证了可行性,为后续有效推动武汉无障碍建设提供了参考。本研究中,主要以地铁无障碍设施数据的存储与检索进行展开阐述。
2. 数据来源
武汉公交地铁无障碍出行应用,聚焦武汉市主城区范围内轮椅出行,需要使用到公交和地铁2块的数据。其中:1) 公交。使用到了公交站点地址与坐标、站点与道路的接驳图、站点途径车辆与站点电子屏和站点周边无障碍洗手间等;2) 地铁。需要使用到地铁站点的空间分布与站内和站外信息。站外信息主要包括出入口位置、标牌、与道路接驳图、站外垂直电梯和周边无障碍设施;站内信息主要包括垂直电梯、卫生间、布置图等各类设施,需要其分布位置、导向标识和可达性信息等。
本研究与应用开发中,所用数据大致有3种来源:线下人工采集、在线地图抓取和地铁无障碍应用 [7] 运营。公交站点的分布和公交线路信息从公交集团、在线地图上获取,其余如站点与道路接驳图、电子屏等信息均为线下人工采集;地铁站点的线路、出入口信息从地铁集团官网获取,然后通过在线地图与线下人工采集后进行整理汇总,其它为人工采集或待完善状态。
3. 数据存储
应用的建设分阶段执行落地,采取的数据存储策略也具有阶段性特点,从初期围绕地铁无障碍 [7] 到后期融入公交无障碍信息。前后所采取的技术选型也有差异,应用的构建由点及面、由小及大,初期选择MySQL快速构建地铁无障碍应用,后续为快速响应轮友的出行 [8] 需要融入公交无障碍信息,随着应用的覆盖面扩大和用户增多,也在跟随做升级迭代。
3.1. 武汉公交地铁无障碍出行应用
目前使用的是MySQL数据库,主要存储各类属性数据,设施的空间属性仅记录经纬度坐标。MySQL是一种关系型数据库,存储实施时需要做“模型设计”,数据实体转化为记录表(实体多以名词出现),数据项作为表中的一行记录。各实体都有其记录表,不同实体间的关联需要重新设计关联表,存储以实体记录见长、读友好。
考虑到应用实现中,先地铁后公交分期构建融入应用,汇总后现有数据表大致如下:
1) 地铁线路(线路ID,线路名称,线路别名,线路颜色)
2) 地铁站点(站点ID,站点名称,地铁线路ID,*)
3) 地铁站点出入口(出入口ID,地铁站点ID,出入口名称,经度,纬度,出入口描述)
4) 地铁站点设施(设施ID,设施类型,出入口ID,站点ID,设施描述,设施图,*)
5) 公交线路(线路ID,线路名称,起点站,终点站,途径站点,*)
6) 公交站点(站点ID,站点名称,站点位置,站点经度,站点纬度,站点描述,站点设施图,*)
7) 用户、权限和配置表(略)
现有表设计以“线路–站点”为主干,各类设施围绕公交站点和地铁站点建设并由此关联。公交站点关联的设施有:站点与道路左侧连接坡道、与道路右侧连接坡道、站点电子屏、站点线路牌和站点周边无障碍洗手间等;地铁站点关联的设施有:1) 站外。出入口的垂直电梯、手扶梯和出入口附近的无障碍卫生间;2) 站内:站内垂直电梯、无障碍卫生间、布置图、服务台、换乘区等。公交站点关联设施在公交站点表中直接存储,地铁站点关联设施在地铁站点设施表中,通过站点ID关联相应设施。
目前,地铁无障碍设施的存储仍旧沿用武汉地铁无障碍出行移动应用 [7] 表结构,公交无障碍信息则是单独建表维护的。在武汉地铁不断建设和实际陆续开通运营中,应用也跟随着进行地铁线路、站点、出入口和设施的增补编辑,数据更新维护过程中出现了以下问题:
1) 站点。同名站点存储不一样,如出现了武汉东站站和武汉东站两种名称;不同线路上同名站点多次存储,如2号线上街道口站和8号线上街道口站在采集和汇总时出现重复存储。
2) 出入口。出入口有阶段性记录使得检索繁琐,如地铁4号线和地铁2号线都经过中南路站,但是出入口是不同时期开放的,采集数据时出现了这种情况(中南路4号线关联出入口,有D1、D2、E、F。中南路2号线关联出入口,有A、B、C1、C2),而实际生活中人们并不关心出入口与线路的同期开放时间关系;出入口有改名使得管理数据变得困难,如武汉地铁对某站出入口进行了重新编码命名(从原来的A、B命名变为了A1、A2)。
3) 设施。设施使用,如部分地铁站最早开通的无障碍洗手间位于一个没开通的D口,采集人员采集数据时录入为了马路同侧的C口;设施更新上报,如损坏的站内设施数据上报、不断开通的地铁站站外和站内设施增补更新。
4) 重构。现有表结构存储数据过于零散,公交和地铁数据分开存储,关联起来十分繁琐且限制了后续功能扩展(如给公家站点增加搜索标签),应用的重构面临的挑战均指向数据层。
综上,如何规避重复数据存储、如何避免信息的缺失,将公交和地铁信息融于一张图中、加强数据间关系应用是必须顾及的。因此,考虑到数据来自于实际交通道路网,使用图数据库不失为一个实践方向。
3.2. 使用Neo4j存储设施数据
Neo4j是一个开源的NoSQL图形数据库,其数据存储结构和数据查询方式均以图论为基础,采用的是属性图模型,有专属的查询语言Cypher [11] [12]。数据存储时,不需要做“有模型设计”,数据实体记录以节点的方式存在,节点之间通过单向边连接,并且节点和关系都可以有多个标签和各自的属性(以键值对方式出现),存储以实体关系见长。
数据存储时,图数据库主要用来存储灵活且关键数据,尽可能的减少查询后多重处理数据后返回应用前端,也就是说图数据库中存储的是主数据,相关联的其它数据(如图片实体、结构化数据如评论留言等)可仍旧存于MySQL中。由此,本试验采取的数据存储细节如下:
1) 分别给公交站点(Station_Bus)、地铁站点(Station)和地铁出入口(Entrance)赋予不同标签,作为基础网络节点;
2) 同一公交线路往返方向,在同一道路两侧的不同名站点,通过在线路上相邻站点间新增单向关系并录入线路标签(如标签Bus,code = 903作为线路编码)来区分;
3) 同一地铁线路上临近的2个站点彼此间建立单向连接边并录入线路标签及标签属性(如标签Metro,code = 2作为线路编码)来记录往返向;
4) 地铁换乘站添加属性“途径线路”来标记连接的线路;
5) 公交站点关联的设施(如站点与道路左侧斜坡等)在节点上添加相应属性直接记录(图片仅记录相对路径);
6) 地铁站点内部设施在节点上添加属性列表来存储设施图相对路径,站外出入口关联设施则与出入口节点关联(图片仅记录相对路径)。
按上述存储设计,导入所有地铁站点信息后有如下图1所示(颜色相同的站点在同一条地铁线路上)。
查询地铁2号线沿线站点和出入口有如图2所示。
Figure 2. Subway Line 2 and the entrances and exits of each station
图2. 地铁2号线及各站点出入口
在思考重构应用之时,结合当前数据采集、存储和更新现状,试验后发现图数据库也许是一个更好的选择。交通道路信息本身庞杂且是一个由众多站点、设施联系组成的有向图,查找最短路径是图数据库的内置且特色算法,站点信息的维护更新可以将影响缩小到几个节点,关系型数据库中大量地铁换乘和枢纽节点的信息不需要重复存储和维护;此外,考虑到后续新增社区、评论反馈模块,实体间的关联不应该新增过多的中间表来消耗查询性能,底层数据支撑层需要更加高效、可维护。在此过程中,奥渊博 [13] 等提出的数据迁移模型和王力 [14] 等以工程科技词系统为例的应用实践均为本研究提供了有效参考。
3.3. 对比分析
以地铁站点为例,换乘站点及其出入口和关联设施在MySQL中出现不同程度重复存储,导致出现了2号线上中南路站和4号线上中南路站出入口有重复存储、站点命名不一致、同一出入口关联的设施信息也不完全一致情况,给数据的采集和维护增加了较大难度。此外,结合地铁和公交做有效路径搜索,算法实现上需要处处顾及重复存储的站点等数据,严重影响效率和不可持续。
相较之下,Neo4j提供的数据存储模型和实际道路情况较为贴合,均是一个有向图网络,其内置的路径搜索算法也有可借鉴性。综合考虑数据采集与维护及应用扩展性,Neo4j不失为一个较好选择。
4. 数据检索
两种类型数据库,各有其特点和适用场景。鉴于篇幅有限,此处仅选取3个常规查询作为检索示例,简要说明各自特点。此外,本数据集体量较小,查询中暂时不创建索引和对数据预热处理等,以最坏情况下进行对比。
4.1. 查询地铁2号线上所有沿途站点
1) MySQL:select * from station where line_id = 2;
2) Neo4j:Match (n:Station{code:'2'}) return n;
类似单表条件查询,两种数据库中查询均易实现且获取结果的时间基本一致,均在10 ms以下。
4.2. 查询地铁2号线上出入口最多的站点
1) MySQL:select s.id,s.name,count(s.id) as sct from station s,entrance e where s.line_id = 2 and s.id = e.station_id group by s.id,s.name order by sct desc limit 1;
2) Neo4j:Match (n:Station{code:'2'})-[r]-(m:Entrance) with n,count(r) as ct return n order by ct desc limit 1;
在保证查询结果正确前提下,两种数据库中查询所需时间Neo4j稍少,仍在1个数量级(20 ms以内)。
4.3. 查询地铁广埠屯站前往地铁市民之家的所有线路
1) MySQL:使用SQL直接查使得问题更复杂,不可取
2) Neo4j:Match p=(n:Station{code:'2',name:'广埠屯站'})-[r]-(m:Station{code:'3',name:'市民之家站'}) return p;
相较于Neo4j,MySQL中对于这种偏连接和路径的查询没有太多支持,目前大多仍采用获取数据后在数据库外进行分析得到满足需要的结果。
4.4. 小结
两种数据库需要依据使用场景选型,没有绝对优劣区分。以当前数据集(地铁线路11条、出入口984个和无障碍设施4222个)为例,在大多数情况下(如两张表连接查询) MySQL查询结果性能未必比Neo4j差很多。
5. 数据采集上报
采集上报是针对应用运营的数据来源端(众源数据采集APP)中的一个模块,主要包含可视化展示系统中已采集和未采集的站点、采集轨迹和采集关键点位信息(如地铁站出入口、站外垂直电梯位置等),采集主界面如下图3所示。
通过对用户的轨迹进行采集和关键点位信息标识来完成站点及出入口等重要设施的位置记录;采集时配以相应图文说明可完成本次点位采集;最后结束采集轨迹退出本轮采集上报。
6. 总结
本文是在构建和运营无障碍应用的过程中,结合数据采集和存储困境现状基础上做出的阶段性探索,通过试验比对(武汉地铁无障碍出行移动应用使用的MySQL库和数据采集应用构建的图数据库Neo4j)两者在数据存储上的表现,验证了采用Neo4j对应用的数据采集和维护有实质性帮助(如去除冗余站点,保持主数据唯一性;不定期新增站点及更新属性;分析站点间可行路径等)。
由于时间限制,本次研究仅仅以地铁无障碍设施作为描述对象,后续待完善至少包含3个方面:1)收集整个武汉市公交地铁明细数据,以此信息建模并将之补充到应用中;2) 考虑视障、听障等症状患者使用武汉市无障碍设施和本应用辅助出行;3) 研究和使用新技术(如Zigbee [15] 、物联网5G、数字孪生等)提升用户出行体验等。
基金项目
长江大学大学研究生院优质课程建设项目(YYZ202210)。
NOTES
*通讯作者。