GoTrackIt应用指南:共享单车时空轨迹优化

本篇文章我们来基于GoTrackIt 包来研究一下里面的轨迹数据清洗功能,该包这部分功能是一个用于处理和分析GPS轨迹数据的工具,能够帮助用户进行诸如卡尔曼滤波平滑、轨迹简化;停留点删除、增密、降频、滑动窗口平滑的链式操作,并提供多种方法来分割和分析轨迹数据,确保能够从原始数据中提取出高质量、有价值的轨迹信息,通过这些先进的算法和技术减少噪声干扰和冗余数据。

这里是该作者对包的内容介绍和用法:轨迹处理 - GoTrackIt

第一步:先把原始数据按一定处理逻辑进行清洗,我使用的逻辑可以参考我这篇:

共享单车轨迹数据分析:以厦门市共享单车数据为例(十二)-CSDN博客

处理结果如下;

第二步:我们需要把数据预处理成特定格式,'agent_id','time','lng','lat';因为这里的'agent_id'需要保证是唯一id,所以把BICYCLE_ID和ORDER_NUM做了关联,目的是为了生成唯一id;

df['agent_id'] = df['BICYCLE_ID'] + '&' + df['ORDER_NUM']

完整代码#运行环境 Python 3.11

import pandas as pd# 读取CSV文件
df = pd.read_csv(r'D:\data\gxdc.csv', encoding='gbk')  # 注意可能需要调整编码# 创建新的agent_id,格式为 BICYCLE_ID&ORDER_NUM
df['agent_id'] = df['BICYCLE_ID'] + '&' + df['ORDER_NUM'].astype(str)# 选择并重命名指定列
selected_df = df[['agent_id', 'LOCATING_TIME', 'LATITUDE', 'LONGITUDE']].copy()# 重命名列
selected_df.columns = ['agent_id', 'time', 'lat', 'lng']# 转换时间格式
selected_df['time'] = pd.to_datetime(selected_df['time']).dt.strftime('%Y-%m-%d %H:%M:%S')# 保存为新的CSV
selected_df.to_csv(r'D:\data\processed_gps_data.csv', index=False, encoding='utf-8-sig')print("处理完成,已保存到 D:\data\processed_gps_data.csv")

这里有一个小tips: 就是csv另存为时间字段精度丢失的问题,如果你现有的csv有时间标签且时间精度到秒的话,直接另存为文件会丢失精度,因为csv默认格式仅保存到分钟,所以你可以通过python脚本声明你要保存时间标签的颗粒度,再通过脚本另存为即可,如('%Y-%m-%d %H:%M:%S'),这样就可以保证csv时间字段精度不会丢失。

第三步:配置轨迹数据清洗的功能和参数,这些选用了3个功能和参数:去重停留点,增密,卡尔曼滤波,具体的参数配置和功能介绍原作者已经讲的很详细了,可以移步了解;

tp.del_dwell_points(dwell_l_length=5,dwell_n=2).dense(dense_interval=30).kf_smooth(p_deviation=0.01,o_deviation=0.1)    # 去重停留点,增密,卡尔曼滤波

完整代码#运行环境 Python 3.11

import os
import pandas as pd
from gotrackit.gps.Trajectory import TrajectoryPointsif __name__ == '__main__':# 读取处理后的CSV文件gps_df = pd.read_csv(r'D:\data\processed_gps_data.csv')# 去除同一出行中的相同定位时间点数据gps_df.drop_duplicates(subset=['agent_id', 'time'], keep='first', inplace=True)gps_df.reset_index(inplace=True, drop=True)# 构建TrajectoryPoints类, 并且指定一个plain_crstp = TrajectoryPoints(gps_points_df=gps_df, time_unit='ms', plain_crs='EPSG:32649')# 使用链式操作自定义预处理的先后顺序, 只要保证kf_smooth()操作后没有执行 - 滑动窗口平滑、增密,处理后的轨迹数据即可得到分项速度数据tp.del_dwell_points(dwell_l_length=5,dwell_n=2).dense(dense_interval=30).kf_smooth(p_deviation=0.01,o_deviation=0.1)    # 去重停留点,增密,卡尔曼滤波# 获取清洗后的结果# _type参数可以取值为 df 或者 gdfprocess_df = tp.trajectory_data(_type='df')# 输出文件夹out_fldr = r'D:\data'# 存储结果if not os.path.exists(out_fldr):os.makedirs(out_fldr)process_df.to_csv(os.path.join(out_fldr, r'after_reprocess_gps.csv'), encoding='utf_8_sig', index=False)# 输出为html进行动态可视化tp.export_html(out_fldr=out_fldr, file_name='sample', radius=9.0)print("处理完成,结果已保存到 D:\data")

脚本会输出一个after_reprocess_gps.csv,也就是坐标经过调整的轨迹坐标,和每个唯一订单id的HTML,如果订单数据量太多的话,可以注释掉HTML输出部分;

本篇文章我们将继续以厦门市的共享单车数据作为研究对象,这里我们选取部分轨迹数据来探究共享单车gps打点数据的路径优化,其中蓝点是预处理前点位,黄点预处理后点位,具体的参数部分可以参考文档,来调整优化的效果;

文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请联系作者进行删除。所信息均基于作者的个人理解和经验,不代表任何官方立场或权威解读。

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

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

相关文章

雨晨 24H2 IoT 企业版 ltsc 2024 Hotpatch 极简 26100.2605

文件: 雨晨 24H2 IoT 企业版 ltsc 2024 Hotpatch 极简 26100.2605 install.esd 大小: 1970652896 字节 修改时间: 2024年12月13日, 星期五, 18:06:39 MD5: 3DCB989B62B6656B2CB34B0D88EBEE45 SHA1: C6E890223892B7A3EDA59E4881C70214DD546DB7 CRC32: 13EDFA89 与往版&#xff…

实现 RAM 时应该考虑的性能因素

实现 RAM 时应该考虑的性能因素 要高效地推断存储元件,需要考虑下列影响性能的因素: • 使用专用块还是分布式 RAM RAM 可以在专用块 RAM 或使用分布式 RAM 的 LUT 内实现。不同的选择会影响资源选择,同时还会严重地影响性 能和功耗…

python数据分析之爬虫基础:解析

目录 1、xpath 1.1、xpath的安装以及lxml的安装 1.2、xpath的基本使用 1.3、xpath基本语法 2、JsonPath 2.1、jsonpath的安装 2.2、jsonpath的使用 2.3、jsonpath的基础语法 3、BeautifulSoup 3.1、bs4安装及创建 3.2、beautifulsoup的使用 3.3、beautifulsoup基本语…

pytest入门三:setup、teardown

https://zhuanlan.zhihu.com/p/623447031 function对应类外的函数,每个函数调用一次 import pytest def setup_module():print(开始 module)def teardown_module():print(结束 module)def setup_function():print(开始 function)def teardown_function():print(结…

Tomcat的安装即使用

Tomcat的概念 Tomcat服务器是Java语言开发的,免费的开放源代码的Web应用服务器。 Tomcat处理静态HTML的能力远不及Apache或者Nginx,通常是作为一个Servlet和JSP容器,单独运行在后端。 Tomcat是由三个功能组合而成: java servlet&…

信创改造-Spring Boot 项目部署至 TongWeb

打 war 包参考:https://blog.csdn.net/z1353095373/article/details/144330999

ubuntu20.04+ROS Noetic 安装PX4+Mavros

文章目录 系统环境安装依赖PX4 安装老版本安装测试环境变量添加版本查看 安装MAVROS(二进制安装非源码安装)测试 OGC 地面站安装测试mavros与sitl通信参考 系统环境 ubuntu 20.04 ROS Noetic 如果系统安装了Anaconda等虚拟环境管理器,要退出…

day10 电商系统后台API——接口测试(使用postman)

【没有所谓的运气🍬,只有绝对的努力✊】 目录 实战项目简介: 1、用户管理(8个) 1.1 登录 1.2 获取用户数据列表 1.3 创建用户 1.4 修改用户状态 1.5 根据id查询用户 1.6 修改用户信息 1.7 删除单个用户 1.8 …

C语言程序设计P5-5【应用函数进行程序设计 | 第五节】—知识要点:变量的作用域和生存期

知识要点:变量的作用域和生存期 视频: 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 有一个一维数组,内放 10 个学生成绩,写一个函数,求出平均分、最高分和最低分。 任务要求用一个函数来完…

CentOS安装Nginx提示没找到

说明:在CentOS操作系统里,用yum方式安装Nginx,提示下面的错误; 说没找到,敲下面的命令,看下包管理器里面有没有Nginx; yum list available nginx如下,确实没有找到; 敲下…

Edge SCDN深度解析,边缘安全加速的创新实践

边缘安全加速(Edge Secure Content Delivery Network,SCDN)是酷盾安全推出的边缘集分布式 DDoS 防护、CC 防护、WAF 防护、BOT 行为分析为一体的安全加速解决方案。通过边缘缓存技术,智能调度使用户就近获取所需内容,为…

HTML、CSS表格的斜表头样式设置title 画对角线

我里面有用到layui框架的影响&#xff0c;实际根据你自己的框架来小调下就可以 效果如下 上代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…

java 导出word锁定且部分内容解锁可编辑

使用 Apache POI 创建带编辑限制的 Word 文档 在日常工作中&#xff0c;我们可能需要生成一些带有编辑限制的 Word 文档&#xff0c;例如某些段落只能被查看&#xff0c;而其他段落可以自由编辑。本文介绍如何使用 Apache POI 创建这样的文档&#xff0c;并通过代码实现相应的…

【多模态文档智能】OCR-free感知多模态大模型技术链路及训练数据细节

目前的一些多模态大模型的工作倾向于使用MLLM进行推理任务&#xff0c;然而&#xff0c;纯OCR任务偏向于模型的感知能力&#xff0c;对于文档场景&#xff0c;由于文字密度较高&#xff0c;现有方法往往通过增加图像token的数量来提升性能。这种策略在增加新的语言时&#xff0…

docker快速实现ELK的安装和使用

目录 一、ELK功能原理 二、项目功能展示​ 三、日志查询展示​ 四、ELK安装步骤 1、创建elasticsearch、kibana、filebeat相关data、log、conf目录 2、进入/usr/local/elk目录&#xff0c;并创建一个docker网络 3、启动 elasticsearch容器 4、运行kibana容器 5、启动f…

windows下Qt5自动编译配置QtMqtt环境

原文链接&#xff1a;windows下Qt5自动编译配置QtMqtt环境&#xff08;11&#xff09;-CSDN博客 1、概述 Qt默认是不包含mqtt库的&#xff0c;如果需要使用到mqtt库就只能自己编译配置&#xff1b;网络所有的QtMqtt配置的文章都是编译完成手动复制&#xff0c;非常麻烦&#x…

动态高优先权优先进程调度

一、实验目的 目的&#xff1a;了解并掌握动态高优先权优先调度算法的理论&#xff0c;掌握动态优先权的设置方式。 任务&#xff1a;模拟实现动态高优先权优先的调度&#xff08;若数值越大优先权越高&#xff0c;每运行一个时间单位优先权-n&#xff0c;若数值越小优先权越高…

编程考古-CPU(中)

P5:The First Pentium 奔腾 奔腾&#xff08;Pentium&#xff09;处理器于1993年首次亮相&#xff0c;标志着英特尔x86处理器家族的一个新时代的开始。它打破了以往80x86数字命名的传统&#xff0c;成为英特尔首个不沿用此命名规则的x86处理器。内部架构上&#xff0c;奔腾采用…

基于米尔全志T527开发板的OpenCV进行手势识别方案

本文将介绍基于米尔电子MYD-LT527开发板&#xff08;米尔基于全志T527开发板&#xff09;的OpenCV手势识别方案测试。 摘自优秀创作者-小火苗 米尔基于全志T527开发板 一、软件环境安装 1.安装OpenCV sudo apt-get install libopencv-dev python3-opencv 2.安装pip sudo apt…

《数据结构之美-- 单链表》

引言&#xff1a; 首先由上次我们实现的顺序表聊起&#xff0c;我们在实现顺序表的时候会发现&#xff0c;在每次插入数据时当空间不够时就会涉及到扩容&#xff0c;而顺序表的扩容一般都是呈二倍的形式来进行&#xff0c;因此这就有可能造成空间的浪费&#xff0c;那该如何解…