动手构建地铁关系网,实现最短路径查询 |
您所在的位置:网站首页 › 地铁的构建 › 动手构建地铁关系网,实现最短路径查询 |
一、前言 打开手机‘北京地铁’APP,输入起始点:霍营,终点:北京南站,发现系统给我们推荐了两条路线。 最短时间路线与最少换乘路线,并且分别给出了耗时与乘坐里程费。看到这里,不禁开启了靓仔疑问,假如给你地铁站相关数据,如何构建这样的关系网络呢?(尽量少写代码,毕竟我这个人懒的不行,花最少的功夫,整最炫的效果,咦) 1.整理地铁站点数据,处理成echarts图表所需要的结构 2.整理地铁站点数据,自己写代码实现,能实现(好累啊...) 3.整理地铁站点数据,导入 Neo4j 中,点击查看 分析:方案一,不仅要处理数据还要搞echarts样式,算了吧。方案二,直接PASS,还是方案三省力,正好我的电脑上之前安装过 Neo4j 图数据库,哈哈哈,开搞开搞! 软件下载地址:http://doc.we-yun.com:1008/neo4j-chs 软件安装教程:https://cloud.tencent.com/developer/article/1492832 二、数据准备既然需要展示地铁关系,那么首先需要的就是北京所有地铁站的信息,以及站点之间的关系,距离,耗时。搜索了一圈,最后在北京地铁官方网站,发现了全部地铁线路,站点名称,站点与站点之间距离等信息。但是缺少了具体站点与站点之间的乘车耗时,行吧,先将就着用吧!具体数据样例如下: ![]() 数据来源地址:https://www.bjsubway.com/station/zjgls/# 站点关系一共18条线路,一顿复制粘贴和 Notepad++ 文本替换之后,我们得到了一个 Excel文件,包含了所有站点之间的关系数据,如下: ![]() 复制所有站点进入Excel文件的某一个sheet,选择数据去重,得到所有站点名称。 ![]() 将站点关系与站点数据处理成CSV文件格式,方便导入 Neo4j 数据库中,建立图节点与关系。操作也就是 notepad++ 替换‘ ’为‘,’,另存为 .CSV 文件,具体得到下列文件。(因为方便 Neo4j 数据库不同的路线显示不同的颜色,我特地将站点关系数据拆解成了多个地铁线的CSV文件,如果不考虑显示,可以一个CSV文件,导入站点关系即可) ![]() 备注:将所有CSV文件,放入 Neo4j 安装目录下的 import 文件夹中(没有就新建),如下: ![]() 文件下载地址:https://files-cdn.cnblogs.com/files/jstarseven/subway.zip 三、建立地铁关系网Neo4j 支持导入本地以及网络资源中的 CSV 文件数据,并且可以从CSV文件数据中,直接建立图形节点以及节点关系。具体 cypher 语句,如下: 建立地铁站点建立站点连接执行效果备注:Neo4j浏览器需要开启多语句执行配置,否则会报语句执行错误,配置界面如下: 1.Neo4j浏览器配置 ![]() 2.cypher语句执行过程 ![]() 3.地铁关系网效果 ![]() 四、路径检索以‘霍营’与‘北京南站’地铁站为例,检索具体一下路径: 最少站点路径最短路程路径最少耗时路径很遗憾,因为没有找到北京地铁每站之间具体的耗时数据,所以此处检索不出来,行吧,我太难了。 五、总结1)数据整理涉及节点数据,节点关系数据,可在导入CSV时一并创建; 2)Cypher 是 借鉴了sql语句的 Neo4j 数据库操作语句; 3)(a)-*..20->(b):表示路径长度的最大值是20,起始节点是a,终止节点是b; 4)一次执行多条语句,Neo4j浏览器需要开启多语句执行配置; over |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |