论文笔记:PyTrack: A Map-Matching-Based Python Toolbox for Vehicle Trajectory Reconstruction

PyTrack是一个开源Python工具箱,专注于地图匹配,将GPS数据与OpenStreetMap集成,处理基于位置的误差,用于轨迹重建和智能交通系统的应用。它包含了构建和分析图、轨迹匹配算法以及数据分析的功能,支持隐马尔科夫模型进行路径识别。
摘要由CSDN通过智能技术生成

0 abstract

物联网设备、智能手机、智能手表和配备全球定位系统(GPS)模块等定位技术的车辆数量呈指数级增长,促进了智能交通系统中多种应用的基于位置的服务的发展。然而,基于位置的技术的固有误差使得必须将定位轨迹与实际的道路网络进行对齐,这个过程被称为地图匹配。据我们所知,目前没有全面的工具可以对街道网络进行建模、对基础街道图进行拓扑和空间分析、对GPS点轨迹进行地图匹配过程并深入分析和详细说明这些重建的轨迹。为解决这个问题,我们提出了PyTrack,这是一个基于地图匹配的Python开源工具箱,旨在为学术界、研究人员和从业人员提供帮助,将记录的GPS坐标与开源地理信息系统OpenStreetMap提供的数据进行整合。本文概述了该库的体系结构,详细描述了其功能和模块。此外,我们提供了一个入门指南,介绍了PyTrack框架的最基本步骤。欲了解更多关于PyTrack的信息,用户可以访问官方存储库https://github.com/cosbidev/PyTrack 或官方文档 https://pytrack-lib.readthedocs.io。

1 Intro

  • 基于位置的系统存在各种误差
    • 固有误差(如卫星定位误差、传输误差等)
    • 环境相关误差(如信号中断、多路径问题、天空能见度差等)
    • ——>获取的轨迹与实际轨迹存在差异。
  • 因此,为了保证智能交通应用程序获得高质量的轨迹数据,首先需要将GPS采样数据与实际的驾驶路线网络层进行对齐,这个过程被称为地图匹配。
    • 地图匹配算法的主要目标是通过将定位数据与空间道路网络数据进行整合,重构车辆行驶的正确路段序列。
  • 尽管许多路由引擎集成了基本的地图匹配功能,但目前没有全面的工具可以对街道网络进行建模,进行拓扑和空间分析,通过对GPS坐标执行地图匹配过程来重建轨迹,并对这些重建的轨迹进行深入分析和详细说明。
    • 此外,这些路由引擎是为工业设计的,提供在应用服务器上运行的即用系统,都不基于Python。
    • ——>论文提出了PyTrack。PyTrack是一个开源的Python工具箱,它将记录的GPS坐标与开源的OpenStreetMap(OSM)提供的数据进行整合。

2 地图匹配

2.1 地图匹配算法介绍

  •  地图匹配算法涉及将记录的地理坐标(例如GPS数据)与底层的空间道路网络进行对齐,以确定车辆所在的正确道路路径。
    • 如图1所示,地图匹配算法试图找到车辆形式的路径序列{e1,e2,......,en}。
  • 地图匹配过程并不是完全没有误差的。
    • 复杂的道路拓扑结构,地图和数据的误差以及数据稀疏性可能会产生不同级别的歧义。 

 2.2 地图匹配算法的分类

2.2.1 根据采样频率

高频采样GPS 数据点的采样时间在 1-0.1 Hz 的范围内采样
低频采样GPS 数据点的采样时间在 11-120 秒的范围内采样
超低频采样GPS 数据点的采样时间超过 2 分钟

2.2.2  根据地图匹配时使用的信息

几何

仅考虑空间道路网络的几何信息,而不考虑路径之间的连接方式

这些方法使用距离、相似度和其他因素分析几何实体之间的关系来找到最佳路径

拓扑考虑道路网络图实体之间的拓扑关系(即相邻性、连接性、包容性),并结合局部搜索算法来找到最佳路径
概率使用记录的地理坐标周围的置信区间来找到最大概率的匹配路径
其他使用新颖和更精细的概念,如卡尔曼滤波器、Dempster-Shafer数学证据理论、模糊逻辑方法、神经网络、强化学习、遗传算法等,以找到最佳匹配路径

2.2.3 匹配过程中的采样点数量

增量方法逐个处理点
全局方法考虑整个采样数据点的轨迹以确定匹配的点

3 和之前方法的对比

4 PyTrack结构

 

 模组、类、方法都被封装在三个包中:graph、matching、analytics

4.1 Graph

  • 提供一系列模组和方法来构建和分析graph
  • 基于networkx

4.2 matching

  • 提供一组算法和数据结构,以用于轨迹重建
  • 将一系列带噪声的GPS点与道路网络进行匹配
  • 使用隐马尔科夫模型HMM的方式进行匹配
    • 给定一系列带噪GPS测量(HMM中的观测值)和一组潜在的候选路点(HMM中的隐藏状态),问题是找到最可能的候选序列,从而重建道路路径。

4.3 Analytics

  • 对重构的轨迹数据进行分析、可视化和处理

5 使用

5.1 获得路网graph

from pytrack.graph import graph
from pytrack.graph import distance
bbox = distance.enlarge_bbox(north,south,west, east, dist)
G = graph.graph_from_bbox(*bbox,simplify=True,network_type=’drive’)
  • enlarge_bbox 方法返回感兴趣区域的边界框
    • north和south分别表示边界框的北部和南部纬度
    • west和east分别表示边界框的西部和东部经度
    • dist以米为单位,表示要扩展边界框的大小。
  • graph_from_bbox 方法通过查询 OpenStreetMap 服务创建一个多向图。

 5.2 路径匹配

5.2.1 提取候选点

候选点是那些最有可能是最佳匹配实际GPS点的点

from pytrack.matching import candidate
G_interp, results = candidate.get_candidates(G,points, interp_dist=5,radius=30)
  • get_candidates方法的输入:
    • 原始图G
    • 实际GPS点的坐标列表(经纬度)
    • 插值距离
    • 以米为单位的半径,表示搜索候选点周围置信区域的圆的半径
  • get_candidates方法返回两个输出
    • graph的插值版本G_interp
    • 候选点的字典results

 5.2.2 构建Trellis图

  • 一旦我们确定了候选点,我们就能构建Trellis图。
    • 它是一个有向无环图,是用于建模隐马尔可夫模型以执行Viterbi算法的中心数据类型。
    • 这个图的每个节点代表一个候选点,即一个用于表示候选元素的Candidate类对象,每个边是两个候选点之间的转移概率
    • 目标是从起始节点到目标节点找到最有可能的候选序列,这个候选序列最能与实际的GPS点匹配。
  • 在PyTrack中,我们可以用一行代码计算出Trellis图:
    from pytrack.matching import mpmatching_utils
    
    trellis = mpmatching_utils.create_trellis(candidates)
    #candidates是get_candidates的输出

     

 5.2.3 进行匹配操作

from pytrack.matching import mpmatching
path_prob, pred = mpmatching.viterbi_search(G_interp, trellis)
  • path_prob:trellis图中每个节点的联合概率
  • pred: trellis图中每个节点的匹配前驱节点

 5.3 结果可视化

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值