【Python】Python Astar算法生成最短路径GPS轨迹

简介

最短路径问题是计算机科学中一个经典问题,它涉及找到图中两点之间距离最短的路徑。在实际应用中,最短路径算法用于解决广泛的问题,例如导航、物流和网络优化。

步骤 1:加载道路网络数据

要计算最短路径,我们需要一个表示道路网络的图。我们可以使用 NetworkX 的 read_shp 函数从 Shapefile 文件加载图。

import networkx as nxg = nx.read_shp("path/to/roads.shp")

步骤 2:定义起点和终点
接下来,我们需要定义起点和终点坐标。我们可以使用 ShapelyPoint 类来表示这些坐标。

from shapely.geometry import Pointstart_point = Point(116.3000, 39.8600)
end_point = Point(116.4500, 39.9000)

步骤 3:寻找最近的节点
由于图中的路径通常链接节点,我们需要找到起点和终点最近的节点。我们可以遍历所有边,并使用 Shapely 的 interpolate project 函数计算距离。

start_nearest_node = None
start_nearest_distance = float('inf')for edge in g.edges(data=True):line = wkt_loads(edge[2]['Wkt'])nearest_point = line.interpolate(line.project(start_point))distance = nearest_point.distance(start_point)if distance < start_nearest_distance:start_nearest_distance = distancestart_nearest_node = list(line.coords)[0]
# 重复上述步骤查找最近的终点节点

步骤 4:计算最短路径
现在,我们可以使用 NetworkX 的 shortest_path 函数计算起点和终点节点之间的最短路径。

shortest_path = nx.astar_path(g, source=start_nearest_node, target=end_nearest_node, weight='length')

步骤 5:可视化路径
最后,我们可以使用 Matplotlib 绘制最短路径。

import matplotlib.pyplot as pltfig, ax = plt.subplots()# 绘制道路边
edges = gpd.read_file("path/to/roads.shp")
edges.plot(ax=ax, color='gray', linewidth=0.5)# 标记起点和终点
plt.scatter(start_point.x, start_point.y, color='green', label='Start')
plt.scatter(end_point.x, end_point.y, color='blue', label='End')# 绘制路径
path_geom = []
for u, v in zip(shortest_path[:-1], shortest_path[1:]):line = wkt_loads(g[u][v]['Wkt'])path_geom.append(line)ax.plot(*line.xy, color='red', linewidth=2)plt.legend()
plt.show()

结论
通过遵循这些步骤,你可以使用 Python 和 NetworkX 生成最短路径。这种技术在各种实际应用中都很有用,例如路线规划、物流优化和网络分析。
请添加图片描述
代码示例传送门
在哪里
在哪里见过你
你的笑容这样熟悉
我一时想不起
啊 在梦里

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

脾胃,胃肠中医笔记

目录 脾胃的功能思伤脾&#xff0c;脑力工作者过度思考会伤脾胃焦虑会导致脾胃受伤按摩肚子顺时针还是逆时针&#xff0c;顺时针促消化/逆时针促排便脾胃生病症状舌苔腹胀、滞气的原因为什么大便稀&#xff1f;湿气重的原因及解决方案自测湿气重的方法 治疗脾胃药物总结补中益气…

Windows C++ 实现远程虚拟打印机(远程共享打印机)

编译错误已经修改完后的工程修改后的下载地址 https://download.csdn.net/download/2403_83063732/88928550 1、下载clawpdf&#xff08;0.8.7版本&#xff09; https://github.com/clawsoftware/clawPDF 2、打开clawpdf工程开始编译C#工程&#xff0c;出现如下错误&#xf…

Hadoop生态选择(一)

一、项目框架 1.1技术选型 技术选型主要考虑因素:维护成本、总成本预算、数据量大小、业务需求、行业内经验、技术成熟度。 数据采集传输:Flume&#xff0c;Kafka&#xff0c;DataX&#xff0c;Maxwell&#xff0c;Sqoop&#xff0c;Logstash数据存储:MySQL&#xff0c;HDFS…

【linux】04 :linix实用操作

1.常用快捷键 ctrlc表示强制停止。linux某些程序的运行&#xff0c;如果想强制停止&#xff0c;可以使用&#xff1b;命令输入错误&#xff0c;也可以通过ctrlc,退出当前输入&#xff0c;重新输入。 ctrld表示退出登录&#xff0c;比如退出root以回到普通用户&#xff0c;或者…

Awesome-Backbones-main——alexnet模型分析

AlexNet作为骨干网络相对较老&#xff0c;可能在复杂数据集上的表现不如一些最新的深度网络结构&#xff0c;如ResNet、EfficientNet等&#xff0c;学习率调整策略中采用了阶梯式学习率更新器&#xff0c;可能并不总是适合所有数据集和模型&#xff0c;需要根据具体情况调整学习…

00在linux环境下搭建stm32开发环境

文章目录 前言一、环境搭建1.arm-none-eabi-gcc2.openocd 三、创建stm32标准库工程1.创建工程目录2.修改stm32_flash.ld文件3.写makefile文件4.修改core_cm3.c5.写main函数并下载到板子上 最后 前言 我在那天终于说服自己将系统换成了linux系统了&#xff0c;当换成了linux系统…

【Linux】cpp-httplib库

目录 升级gcc版本 下载cpp-httplib的zip安装包&#xff0c;上传到服务器 ​编辑 简单使用 首先打开gittee,搜索cpp-httplib,选择其中一个即可 也可以点下方链接 cpp-httplib库&#xff1a;cpp-httplib: cpp-httplib (gitee.com) 注意&#xff1a;cpp-httplib在使用的时候需…

思维调试:为什么FormatMessage提示找不到资源?

在不调试的情况下解决下面的问题&#xff0c;说明你的思维调试能力又进阶了。 问题 我在调用 FormatMessage 函数加载一个插入的资源字符串&#xff0c;由于某种未知的原因&#xff0c;它没能按预期那样工作。 我要加载的字符串类似于这样的 “Blah blah blah %1. Blah blah …

C语言学习--练习3(贪心)

目录 贪心算法 1. 两数对之间的最大乘积差 2.三角形的最大周长 3.数组拆分 4.救生艇 5.发送饼干 6.摆动数组 贪心算法 概念定义 所谓贪心&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上进行考虑&#xff0c;算法得到的是在某种…

Python 创建PPT

本篇为如何使用Python来创建ppt文件。 创建PPT 安装必要的库 命令如下&#xff1a; pip install python-pptx 安装过程&#xff1a; 创建ppt文件 在当前目录下创建一个test的ppt文件。其中包含两页&#xff0c;分别使用了不同的布局。 第一页设置了标题和内容。第二页只设…

利用IDEA创建Java项目使用Servlet工具

【文件】-【项目结构】 【模块】-【依赖】-【】-【JAR】 找到Tomcat的安装路径打开【lib】找到【servlet.jar】点击【确定】 勾选上jar,然后【应用】-【确定】 此时新建文件可以发现多了一个Servlet&#xff0c;我们点击会自动创建一个继承好的Servlet类

【论文阅读】(2024.03.05-2024.03.15)论文阅读简单记录和汇总

(2024.03.05-2024.03.15)论文阅读简单记录和汇总 2024/03/05&#xff1a;随便简单写写&#xff0c;以后不会把太详细的记录在CSDN&#xff0c;有道的Markdown又感觉不好用。 目录 &#xff08;ICMM 2024&#xff09;Quality Scalable Video Coding Based on Neural Represent…