广州地铁线路规划

news2024/10/6 5:26:40

使用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启动前端。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物联网数据驾驶舱

在信息化时代,数据已经成为驱动企业发展的核心动力。特别是在物联网领域,海量数据的实时采集、分析和监控,对于企业的运营决策和业务优化具有至关重要的作用。HiWoo Cloud作为领先的物联网云平台,其数据监控功能以“物联网数据驾驶…

2024年,AI赚钱的十大版块优势解析与适合人群

随着科技的飞速发展,AI技术正逐渐渗透到我们生活的方方面面。2024年,将是AI赚钱的黄金时期。那么,如何利用AI技术实现财富增长呢?本文将为您详细解析十大赚钱版块的优势及适合从事的人群,并通过一个实际案例,带您领略AI赚钱的无限魅力。 一、运用AI写作工具提供写作服务…

每日五道java面试题之mybatis篇(四)

目录: 第一题. 映射器#{}和${}的区别第二题. 模糊查询like语句该怎么写?第三题. 在mapper中如何传递多个参数?第四题. Mybatis如何执行批量操作第五题 MyBatis框架适用场景 第一题. 映射器#{}和${}的区别 #{}是占位符,预编译处理;${}是拼接…

自动化部署fuel环境

自动化部署fuel环境流程图 自定义NAT网络 一、在物理机上面配置 &#xff08;1&#xff09;创建名为“management”的NAT网络 # vim /usr/share/libvirt/networks/management.xml <network> <name>management</name> <bridge name"virbr1"/&…

容器部署对比:通用容器部署 vs 使用腾讯云容器镜像服务(TCR)部署 Stable Diffusion

目录 引言1 通用容器部署的主要步骤1.1 准备环境1.2 构建 Docker 镜像1.3 上传镜像1.4 部署容器1.5 配置网络1.6 监控和维护 2 使用腾讯云容器镜像服务&#xff08;TCR&#xff09;部署的主要步骤2.1 下载 Stable Diffusion web UI 代码2.2 制作 Docker 镜像2.3 上传镜像到 TCR…

仰卧起坐计数,YOLOV8POSE

仰卧起坐计数&#xff0c;YOLOV8POSE 通过计算膝盖、腰部、肩部的夹角&#xff0c;计算仰卧起坐的次数

C语言自定义类型:枚举(C语言进阶)

目录 前言 1、枚举类型定义 2、枚举的优点 3、枚举的使用 结语 前言 本篇文章讲解C语言自定义类型&#xff1a;枚举类型。 枚举顾名思义就是一一列举&#xff0c;把可能的值一一列举。像一周的周一到周日可以枚举&#xff1b;每年12个月&#xff0c;可以枚举。 1、枚举类型…

163邮箱pop3设置方法?POP3服务开启步骤?

163邮箱pop3设置操作指南&#xff1f;163邮箱pop服务怎么开启&#xff1f; 要想更加便捷地管理邮件&#xff0c;开启POP3服务是一个不错的选择。当我们需要在其他邮件客户端上使用163邮箱时&#xff0c;就需要进行POP3设置。那么&#xff0c;163邮箱pop3设置方法究竟是怎样的呢…

算法第二十九天-森林中的兔子

森林中的兔子 题目要求 解题思路 重点&#xff1a;某个兔子回答x的时候&#xff0c;那么数组中最多循序x1个同花色的兔子同时回答x 我们可以通过举例子得出一下的规律&#xff1a; 我们统计数组中所有回答x的兔子的数量n&#xff1a; 若n%(x1)0&#xff0c;说明我们此时只需…

appscan打开外部浏览器报无法连接

1、问题现象&#xff1a; 2、解决方法 再这个界面需要增加appscan的证书&#xff0c;如果是下面状态证明证书已经添加了&#xff0c;如果未加证书系统会提示添加证书&#xff1a;

便携式气象站的工作原理

TH-BQX9便携式自动气象观测仪器是一种集成了多种传感器和自动化技术的气象监测设备&#xff0c;以其便携性、自动化和高精度等特点&#xff0c;广泛应用于气象、环保、农业、科研等领域。 首先&#xff0c;它的便携性是其最大的优势之一。设计紧凑、轻便易携&#xff0c;使得用…

Swagger Array 使用指南:详解与实践

Swagger 允许开发者定义 API 的路径、请求参数、响应和其他相关信息&#xff0c;以便生成可读性较高的文档和自动生成客户端代码。而 Array &#xff08;数组&#xff09;是一种常见的数据结构&#xff0c;用于存储和组织多个相同类型的数据元素。数组可以有不同的维度和大小&a…

美区PayPal绑visa卡注意事项

很多小伙伴都有绑定paypal的需求&#xff0c;但是如果你是绑定美区的paypal这里有几点建议&#xff1a; 1、建议使用US的网络环境注册 2、使用美区的账号 3、使用美区的visa卡 三者统一才可以绑定成功&#xff0c;点击获取可以绑定美区paypal的visa卡&#xff0c;办理简单

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

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

固态硬盘有坏道怎么恢复数据 固态硬盘坏道怎么修复

固态硬盘是一种高速、低噪音、低功耗的存储设备,但是它也有一个致命的问题——坏道。坏道是指存储芯片中的某些存储单元出现了故障,导致数据无法正常读取或写入。如果你的固态硬盘出现了坏道,那么你的数据就有可能会丢失,带来了很大的困扰。那么,固态硬盘有坏道怎么恢复数…

Web 开发模式演进过程

作为初学者&#xff0c;要了解 Web 开发模式的演进过程&#xff0c;并从这些演进过程中看到变化&#xff0c;这样有利于开发者的思路提升。 什么是 Web 开发 Web &#xff1a;网页&#xff0c;可以通过浏览器访问的资源 Web 开发&#xff1a;基于网页载体的软件开发&#xff…

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

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

SRC实战 | 后台登录绕过分享

一.挖掘过程简述&#xff1a; 通过收集到的账号密码进入后进行测试无果&#xff0c;查看登录返回包后修改role_id参数进入管理员后台&#xff0c;后台存在文件上传功能且对文件后缀和内容有检查&#xff0c;后缀检测时前端进行的&#xff0c;可以通过抓包进行修改&#xff0c;对…

挑战杯 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) …

部署高斯喷射项目gaussian-splatting

硬件要求 支持 CUDA 的 GPU&#xff0c;具有 7.0 的计算能力24 GB VRAM 软件要求 Conda用于 PyTorch 扩展的 C 编译器&#xff08;Visual Studio 2019&#xff09; CUDA SDK 11 for PyTorch 扩展&#xff0c;在 Visual Studio 之后安装C 编译器和 CUDA SDK 必须兼容 拉取源码 …