【Python】如何将轨迹node路径匹配到路网edge信息


外面纷纷扰扰里面乱乱糟糟
我们别再闹了
这个冬天已然很冷了
我们靠在一起好吗
我们聊些有趣的事情
别把气氛弄的如此低沉
我知道这几天你心烦
每个人的活都不简单
                     🎵 毛不易《别再闹了》


在地理信息系统(GIS)和路网分析中,经常需要将实际的轨迹数据映射到预先定义的路网模型上。这个过程允许我们分析物体在空间中的移动模式,优化路径规划,评估交通流量等。今天,我们将通过一个实用的例子,探讨如何使用Python及其相关库,如NetworkX和GeoPandas,实现轨迹节点到路网边缘信息的匹配。

使用的工具

  • NetworkX: 用于创建、操作以及分析复杂网络的结构、动态和功能的Python库。
  • GeoPandas: 用于在Python中更容易地进行地理数据的处理的开源项目。
  • 其他工具: Python标准库中的os和time模块,分别用于处理文件路径和计时。

步骤概述

  • 数据准备:示例中使用的数据包括路网数据(edges.shp)和轨迹节点数据。
  • 加载路网数据:利用GeoPandas和NetworkX,我们首先读取路网的边缘信息,构建出路网模型。
  • 轨迹到路网的映射:对于每一条轨迹,我们将轨迹的节点映射到路网的边缘上,并保存这些信息。

实现细节

  • 数据准备
    案例中使用两种主要的数据:路网数据和轨迹数据。路网数据以Shapefile格式存储。

  • 加载路网数据

    import networkx as nx
    import geopandas as gpdG = nx.read_shp("./porto_osm2rn_l2mm/edges.shp")
    edges = gpd.read_file("./porto_osm2rn_l2mm/edges.shp")
    

    这段代码首先导入所需的库,然后加载Shapefile格式的路网数据。read_shp方法用于读取路网数据并构建一个NetworkX图,而read_file方法则加载边缘信息到GeoPandas的DataFrame中。

  • 轨迹到路网的映射
    假设我们有一组轨迹节点数据,这些数据可能来源于GPS设备或其他位置传感器。我们的目标是将这些轨迹节点映射到路网上。

    import os
    import time
    from pathlib import PathOUT_PATH = Path("/data/xrx/data/porto_out_bfs")def process_edge(path):st = time.time()# 假设路径数据格式为[(x1, y1), (x2, y2), ...]with open(OUT_PATH / f"bfs_{path_id}_{len(path)-1}.txt", "a+") as f:for u, v in zip(path[:-1], path[1:]):if G.has_edge(u, v):f.write(str(G[u][v]) + "\n")print(f"Processing time: {time.time() - st}")
    

    在这个函数中,我们假设path变量包含了从某个数据源中检索到的轨迹节点坐标序列。函数迭代轨迹中的每对连续节点,检查这对节点是否在图G中形成了一条边。如果是,将该边的信息写入到一个文件中。这样,我们便将轨迹映射到了路网上。

小结

通过上述过程,我们可以将实际轨迹数据有效地匹配到预定义的路网模型上。这不仅对于交通流量分析和路径规划至关重要,也为进一步的地理空间分析和决策提供了基础。使用NetworkX和GeoPandas,结合Python强大的处理能力,我们能够高效且灵活

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

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

相关文章

Pandas追加写入文件的时候写入到了第一行

# 原代码 def find_money(file_path, account, b_account, money, type_word, time):file pd.read_excel(file_path)with open(money.csv, a, newline, encodingutf-8) as f:for i in file.index:省略中间的代码if 省略中间的代码:file.loc[[i]].to_csv(f,indexFalse)find_sam…

使用 kustomize 对 kubernetes 对象进行声明式管理

补丁实战 策略合并补丁 基准文件:/test/bases/deploy.yml apiVersion: apps/v1 kind: Deployment metadata:namespace: sharkname: my-nginx spec:selector:matchLabels:run: my-nginxreplicas: 2template:metadata:labels:run: my-nginxspec:containers:- name:…

STM32中C编程引入C++程序

C具备类的创建思想很实用于实际场景多相似性的框架搭建;同种类型或相似类型的C的优势明显因此进行相互嵌套使用 需要在C中使用C类的话,你可以通过C的“extern "C"”语法来实现。这允许你在C代码中使用C的链接方式,而在C代码中使用…

4月5日排序算法总结(1)

冒泡排序 利用每趟都确定出一个最大值或者最小值 如果需要排一个从小到大的数组,那么我们每一趟都要确定一个最大值放在最后,一共有n个数,我们最多需要排列n-1趟就可以了,我们可以改进自己的代码,利用一个flag标记&a…

【Linux】UDP编程【上】{诸多编程接口/小白入门式讲解}

文章目录 0.预备知识0.1套接字0.2TCP/UDP0.3大小端问题 1.socket 常见API1.1socket1.2各个接口1.3int bind();1.3网络头文件四件套1.4bzero1.5recvfrom1.6sendto() 2.UDP编程2.1服务器编程2.2客户端编程2.3运行测试2.3.1本机通信2.3.2popen2.3.3strcasestr2.3.4回顾C11智能指针…

微电网优化:基于肝癌算法(Liver Cancer algorithm, LCA)的微电网优化(提供MATLAB代码)

一、微电网优化模型 微电网是一个相对独立的本地化电力单元,用户现场的分布式发电可以支持用电需求。为此,您的微电网将接入、监控、预测和控制您本地的分布式能源系统,同时强化供电系统的弹性,保障您的用电更经济。您可以在连接…

Mamba解读(FlashAttention,SSM,LSSL,S4,S5,Mamba)

Sequence modelScale and EfficiencyFlashAttentionMotivationMethodFlashDecoding MambaState-Space Models(SSM)Selective State Space Models(Mamba) Sequence model seq2seq任务将 输入序列 x ( t ) x(t) x(t) 映射为 输出序…

每日两题 / 1.两数之和 49.字母异位词分组(leetcode热题100)

1. 两数之和 - 力扣(LeetCode) 暴力解法: O ( N 2 ) O(N^2) O(N2)遍历数组,找两个数相加为target O ( N ) O(N) O(N)解法:将所有数排序,并记录这些数的下标,双指针从左右向中间走。指向的两数…

吴恩达深度学习笔记:深层神经网络(Deep Neural Networks)4.1-4.4

目录 第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)第四周:深层神经网络(Deep Neural Networks)4.1 深层神经网络(Deep L-layer neural network)4.2 前向传播和反向传播(Forward and backward pro…

vscode 重命名很慢或失败 vscode renames are slow

网上问题, 插件问题(我遇见的排除,不是)被其他程序占用问题,(我这边是这个) 解决方案: 打开【资源管理器】,使用火绒 或其他软件,查看文件夹 or 文件 被哪个…

智慧公厕系统3.0有哪些新功能呢

随着科技的不断进步,智慧公厕系统也在不断升级和完善。最新推出的智慧公厕系统3.0,集成了一系列创新功能,为城市公共卫生设施管理带来了全新的体验和便利。让我们一起来看看智慧公厕系统3.0有哪些新功能吧。 1、云端管理平台:智慧…

对CryptoDriver里密钥格式定义的探索(1)

目录 1.前期准备工作 2.开始分析 2.1 公钥的PEM解析 2.2 私钥的PEM解析 3 小结 一入网络安全才发现深似海,传统汽车MCU码农转型之路

家用洗地机哪个牌子好?四大热销机型推荐,值得推荐!

随着科技的进步,洗地机在日常生活中能够帮助人们省时省力地打扫卫生,但市面上出现了各种各样的洗地机,好坏参差不齐,选择一个好品牌的洗地机非常重要,因为它们有着可靠的质量保证。那市面上如此众多的洗地机品牌&#…

8×8点阵数码管显示驱动/大电流数码管驱动IC-VK16K33C SOP20

产品品牌:永嘉微电/VINKA 产品型号:VK16K33C 封装形式:SOP20 概述 VK16K33C是一种带按键扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有数据锁 存器、键盘扫描、LED 驱动模块等电路。数据通过I2C通讯接口与MCU通信。SE…

为什么电脑越用越慢!

电脑随着时间推移逐渐变慢是一个常见的现象,其背后涉及多种原因。以下是导致电脑运行速度变慢的几个主要因素: 系统资源消耗增加 软件更新与新增应用:随着软件版本的更新和新应用程序的安装,它们往往对硬件资源的需求更高,尤其是对处理器、内存和硬盘的要求。这些新软件可…

Java毕业设计 基于SpringBoot vue流浪动物救助网站

Java毕业设计 基于SpringBoot vue流浪动物救助网站 SpringBoot 流浪动物救助网站 功能介绍 首页 图片轮播 动物领养/捐赠 留言 论坛 发布帖子 公告信息 商品信息 添加购物车 立即购买 寻宠请求 购物车 注册登录 个人中心 余额充值 收货地址 动物收藏 动物领养审核 商品订单 …

6AV6643-5CB10-0BN0触摸屏

6AV6643-5CB10-0BN0触摸屏 6AV6643-5CB10-0BN0触摸屏 6AV6643-5CB10-0BN0触摸屏 商品编号(市售编号) 6AV6643-5CB10-0BN0 产品说明 SIMATIC MP 277 8" 触摸屏 多功能面板带剩磁存储器 7.5" TFT 显示屏 6MByte 项目组态存储器 可项目组态,利用 W…

R语言绘图 | 散点小提琴图

原文链接:R语言绘图 | 散点小提琴图 本期教程 写在前面 本期的图形来自发表在Nature期刊中的文章,这样的基础图形在日常分析中使用频率较高。 获得本期教程数据及代码,后台回复关键词:20240405 绘图 设置路径 setwd("You…

如何控制台灯的亮度

控制台灯的亮度通常涉及到硬件控制和编程。在硬件方面,台灯通常会有一个可调节的电源电路,通过改变电路的电压或电流来实现亮度的调整。在编程方面,你需要编写代码来发送控制信号给这个电源电路。 以下是一个简化的流程,描述了如何…

lspci 命令不能使用,请安装 pciutils

1、使用 lspci 没有这个命令 lspci-bash: lspci: command not found2、查看下哪个软件包支持 lspci 命令 yum provides lspciLoaded plugins: fastestmirror Loading mirror speeds from cached hostfile docker-ce-stable/7/x86_64/filelists_db …