广州地铁线路规划

使用python实现后端功能,由于地铁图需要进行展示,svg图需要花费比较多的时间,这里使用了 MetroFlow 库构建的地铁地图编辑器,可以在画布上构建矢量图,
实现站点路线的创建。

用法:

打包好后完整目录:
在这里插入图片描述

window下执行:双击"一键启动.bat",启动成功后会自动打开浏览器。

文件目录:
在这里插入图片描述

结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.地铁数据的获取

对地铁线路进行建模,首先要获取地铁站点数据。
利用高德地图平台获取,打开高德地图后,选择地铁视图,页面上便会显示国内各个城市的地铁线路图。
在Chrome浏览器中用F12打开开发者视图后,再切换到广州地铁选项卡,获取http请求。
https://map.amap.com/service/subway?_1706940819067&srhdata=4401_drw_guangzhou.json
清洗数据,获取站点名称、站点路线、经纬度保存到excel里面。通过方式可以方便快捷的获取地铁的站点数据

2.构建图模型

在获取到了地铁站点图后,则可以对数据进行构建图模型。构建图模型的方式可以有邻接矩阵和邻接表。考虑到复杂的网络结构图,使用NetworkX
来进行图的构建,
由于地铁是可以无向的,所以要构建无向图。NetworkX这里是使用邻接链表的方式创建,每个节点都有一个关联的链表,链表中存储了与该节点直接相连的其他节点。
这种表示方法在实际使用中更为常见,并且适用于稀疏图,因为它可以节省大量的空间,只存储存在连接的节点,而不需要额外的空间来表示不存在的连接。
,根据经纬度,把两个站点之间的距离一并构建在图模型里面。有了图模型后,就可以利用相应的算法来规划路径了

3.最优路径算法 基于Dijkstra 算法求最优路径

用于计算图中节点之间的最短路径,从起始节点开始,逐步扩展到达其他节点的最短路径。在每一步中,选择当前距离起始节点最近的节点,
然后更新与该节点相邻的节点的距离值。通过不断重复这个过程,直到到达目标节点或者遍历完所有节点,就可以得到起始节点到所有其他节点的最短路径
某些情况下,可能存在多条路径具有相同的最短长度,所以这里的最短路径是返回一个列表。

4.所有路径 深度优先搜索(DFS)算法

获取图中两个节点之间的所有简单路径,其中简单路径是指不经过重复节点的路径。底层原理是使用深度优先搜索(DFS)算法。
深度优先搜索是一种图遍历算法,其基本思想是从起始节点开始,尽可能深地探索每个分支,直到无法再继续前进,
然后回溯到上一个节点,继续探索其他分支,直到遍历完整个图或者找到目标节点为止。
深度优先搜索被用来从起始节点开始,逐步探索图中的每条路径,直到达到目标节点或者无法再继续前进为止。这样就可以获取到两个节点之间的所有简单路径。
这里考虑到实际生活中和可行性,使用DFS算法对路径长度做了一定的限制,获取最优路径的长度,根据长度来调整设定DFS算法的深度,以便快速获取所有可行的所有路径。

5.优化查询速度

项目中用到小型数据库,用于记录查询过的路径,站点名称等等。

优化:完整线路规划

完整线路规划 ,以上算法只实现了具体的地铁站点间的规划,如果起始点是任意地点而不是地铁站,那么需要找出距离最近的地铁站。
通过高德api求出起始点的经纬度,然后遍历地铁站,找出最近的地铁站,从而使用上面的算法找最优线路规划。

带权路径规划,可以设定带权参数,可实现带权路径规划,比如:根据时间、距离、费用等参数进行路径规划。

换乘时间规划,可以设定换乘参数,实现换乘时间规划

源码部署本地运行:

后端:切换到 program.py 所在目录 执行

pip install -r requirements.txt

运行 python program.py

前端:
执行安装包命令

npm install

部署:

npm install build

执行后有dist文件,下载一个tomcat,把对应文件dist、index.html、data.json放到webapps/ROOT里面后到/bin里面点击startup.bat启动前端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/466292.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CornerStone之读取txt文件点数据

1. 页面标签 页面中目前只提供一个按钮来进行输入文件 <input click"importZeroOne" type"file" />2. 函数定义 在输入文件之后&#xff0c;执行importZeroOne函数&#xff0c;获得输入的文件&#xff0c;进行以下处理 const importZeroOne((eve…

windows 11访问Debian10上的共享目录

步骤 要在Windows 11上访问Debian 10.0.0的共享目录&#xff0c;可以通过以下步骤来实现&#xff1a; 1. 设置Samba服务&#xff1a;在Debian系统上&#xff0c;需要安装并配置Samba服务&#xff0c;以便能够实现文件夹共享。Samba是一个允许Linux/Unix服务器与Windows操作系…

【数据结构与算法】(15):归并排序的递归和非递归方式

&#x1f921;博客主页&#xff1a;Code_文晓 &#x1f970;本文专栏&#xff1a;数据结构与算法 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多数据结构与算法点击专栏链接查看&…

二、C#选择排序算法

简介 选择排序算法的基本思想是每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;然后&#xff0c;再从剩余未排序元素中继续寻找最小&#xff08;大&#xff09;元素&#xff0c;然后放到已排序序列…

【ArcGISProSDK】获取扩展模块许可到期时间

结果 以下是获取的3D分析模块的许可到期时间 代码 var licenseExpirationDate ArcGIS.Core.Licensing.LicenseInformation.GetExpirationDate(LicenseCodes.Analyst3D); 扩展模块 MemberDescriptionAnalyst3D3D AnalystAviationAirportsAviation and AirportsBusinessAnal…

绿色再生·安卓4G智能远程操作巡视机器人小车

一、前言 1.1 项目介绍 【1】项目功能介绍 随着物联网技术与移动通信技术的快速发展&#xff0c;远程遥控设备在日常生活及工业应用中的普及度日益提高。无论是家用扫地机器人实现自主导航清扫&#xff0c;还是目前抖音平台上展示的实景互动小车等创新应用&#xff0c;都体现…

ICBatlas数据库-转录组免疫检查点阻断疗法数据

ICBatlas: A Comprehensive Resource for Depicting Immune Checkpoint Blockade Therapy Characteristics from Transcriptome Profiles 介绍&#xff1a;在线ICBatlas (hust.edu.cn) 检查点阻断 &#xff08;ICB&#xff09; 疗法为多种癌症类型提供了显着的临床益处。目前…

6语言交易所/多语言交易所php源码/微盘PHP源码

6语言交易所PHP源码&#xff0c;简单测试了一下&#xff0c;功能基本都是正常的。 由于是在本地测试的运行环境的问题&#xff0c;K线接口有点问题&#xff0c;应该在正式环境下是OK的。 源码下载地址&#xff1a;6语言交易所/多语言交易所php源码/微盘PHP源码.zip 程序截图…

【安装教程】安装cudnn

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 安装cudnn 前言一、下载和自己cuda匹配的cudnn二、安装cudnn 前言 首先我是已经安装了cuda&#xff0c;但是因为没有安装cudnn在跑程序的时候出现了一些问题&#xff0c;因此…

Axure 中继器的Repeater属性的使用

dataCount 中继器当中存在多少条数据&#xff0c;总数。 visibleltemCount 中继器列表中可见项数量&#xff0c;也就是当前页面显示的数量。 pageCount 获取中继器分页的总数量&#xff0c;即能够获取分页后共有多少页。 pageIndex 获取中继器当前显示的页码

【数字孪生】Nginx发布数字孪生三维建模模型服务及调用方法

【数字孪生】Nginx发布数字孪生三维建模模型服务及调用方法 一、需求二、实施步骤2.1 准备模型文件2.1.1 3D tiles模型2.1.2 3D Tiles标准文件格式 2.2 配置nginx server块2.2.1 Nginx能干啥 2.3 访问 三、实现效果 一、需求 利用三维渲染引擎Cesium加载3D tiles模型。 二、实…

上海微电子企业ERP系统介绍及现状

在当今信息化、数字化的时代&#xff0c;企业资源规划(ERP)系统已成为企业管理的核心工具。上海微电子企业&#xff0c;作为国内微电子行业的重要力量&#xff0c;其ERP系统的应用与发展更是备受关注。 ERP系统是一种集信息技术与管理思想于一体的企业管理系统。它通过对企业内…

无人咖啡机品质之选,D 咖助力差异化竞争

在当今竞争激烈的商业环境中&#xff0c;如何脱颖而出成为众多企业关注的焦点。而无人咖啡机的出现&#xff0c;为商家提供了一个全新的思路。D 咖无人咖啡机&#xff0c;以其卓越的品质和独特的功能&#xff0c;成为了商家们实现差异化竞争的得力助手。 1. 卓越品质&#xff1…

uniapp——第4篇:分析一下全局文件、配置

前提&#xff0c;建议先学会前端几大基础&#xff1a;HTML、CSS、JS、Ajax&#xff0c;还有一定要会Vue!&#xff08;Vue2\Vue3&#xff09;都要会&#xff01;&#xff01;&#xff01;不然不好懂 一、uniapp项目创建新包放乱杂文件 我们的项目结构里有一个包叫static&#x…

Python环境下基于1D-CNN、2D-CNN和LSTM的一维信号分类

以简单的西储大学轴承数据集为例&#xff0c;随便你下载几个信号玩耍吧&#xff0c;我选了10个信号&#xff0c;分别求为正常状态&#xff0c;内圈&#xff08;轻、中和重度损伤&#xff09;&#xff0c;外圈&#xff08;轻、中和重度损伤&#xff09;&#xff0c;滚动体&#…

分类预测 | Matlab实现BiTCN双向时间卷积神经网络数据分类预测/故障识别

分类预测 | Matlab实现BiTCN双向时间卷积神经网络数据分类预测/故障识别 目录 分类预测 | Matlab实现BiTCN双向时间卷积神经网络数据分类预测/故障识别分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现BiTCN双向时间卷积神经网络数据分类预测/故障识别。 2.自…

4个环节5大方面,助您打造“标准化仓库”

仓库管理&#xff0c;在保障企业物流运作效率、降低运营成本、提高客户服务质量等方面发挥着不可替代的作用。标准化、规范化管理作为仓库管理中的重要手段&#xff0c;不仅能够提高管理效率&#xff0c;还能够有效地降低管理风险&#xff0c;使仓库运作更加安全、稳定、高效。…

弧光保护装置助力煤矿高压开关柜的可靠供电

在煤矿高压开关柜运行中&#xff0c;由于受到多种因素的干扰&#xff0c;中低压母线发生故障的概率较高&#xff0c;在中低压母线装设中又没有设置专门的保护&#xff0c;所以开关柜电弧光短路等问题时有发生&#xff0c;对变压器等设备造成一定的损害。鉴于此&#xff0c;对电…

3.16美团笔试复盘

3.16美团复盘 第一题 题目分析 这一题比较简单&#xff0c;直接模拟即可&#xff0c;sum(a)-t1-t2; import java.util.*; class Main{public static void main(String[] args){Scanner scnew Scanner(System.in);int nsc.nextInt();long sum0;while(n-->0){sumsc.nextInt()…

宜搭生产情况调试技巧

在宜搭生产环境中&#xff0c;经常会碰到一些人对于某些操作有报错&#xff0c;即便是有错误日志&#xff0c;但是错误日志没发获取详细的错误栈和错误信息,因此对于复刻某些操作是有必要的&#xff0c;这里我给出一个还蛮好用的方法。 首先找到错误操作的数据来源&#xff0c…