多条轨迹数据(文本格式)的可视化

2023-12-27 03:58

本文主要是介绍多条轨迹数据(文本格式)的可视化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

    轨迹数据通常是以文本格式存储的,一行表示一个点数据,一个文件中包含了多条轨迹。通常我们使用ArcGIS添加XY数据,再通过点转线工具转换获得线数据,但在这里使用的文本通常是仅包含一条线路的数据。

    本文将使用python把含多条轨迹的文本数据转换成shp数据,实现轨迹数据的可视化。

    附上一个其他博主的轨迹数据集汇总:链接

 

数据

    以一份成都市出租车GPS记录数据为例,该数据集已提前清洗完成,仅提取了原始数据集中某一天的部分数据。数据记录了成都市部分出租车在载客时的GPS位置和时间等信息,数据记录的格式为 CSV 格式。

    对各个字段逐个解释如下:

  • ID:出租车的ID。每辆出租车的TID都是唯一的。数据里共有384辆出租车
  • Lat:出租车状态为载客时的纬度。
  • Lon:出租车状态为载客时的经度。
  • Time:该条记录的时间戳。如 211846 代表 21 点 18 分 46 秒。

 

实验

    本文所用的 shapefile 库是一个Python库,用于在Python脚本中对ArcGIS中的Shapefile文件 (shp,shx,dbf等格式)进行读写操作。

 

    安装命令:

pip install pyshp

    使用导入: 

import shapefile

    代码:( import osr 需要安装 gdal 包

import pandas as pd
import osr
import shapefiledata = pd.read_csv("D:\Data\TAXI.csv", encoding='utf-8')ID = data['ID'].unique()outPath = "./line.shp"
file = shapefile.Writer(outPath)
file.field('TAXI_ID')for taxi_id in ID:taxi = data[data['ID'] == taxi_id] # 该出租车的数据line = []for index, row in taxi.iterrows():point = []point.append(row['LNG'])point.append(row['LAT'])line.append(point)polyline = [] # 存储该辆出租车的轨迹数据 polyline.append(line) # [[[lng,lat], [lng,lat], ```, [lng,lat]]]file.line(polyline)file.record(taxi_id)file.close()# 定义投影
proj = osr.SpatialReference() 
proj.ImportFromEPSG(4326) # 4326-GCS_WGS_1984; 
wkt = proj.ExportToWkt()# 写入投影
f = open(outPath.replace(".shp", ".prj"), 'w') 
f.write(wkt) # 写入投影信息
f.close() # 关闭操作流

    结果:

    导入成都市区划和路网数据:

     可以看出,这384辆出租车覆盖了成都市的中心城区范围。这种转换有个缺点,因为直接生成线数据,丢失了轨迹数据的时间属性,无法动态展示数据,如果需要的话,也可以再根据文本数据创建一个点数据,附上时间属性, 使用Tracking Analyst 工具条上的追踪管理器来动态展示。当然,更好的、不用写代码的方式就是用 Kepler.gl [链接]

 

其他

    麻辣GIS:Python读取、创建shapefile文件

这篇关于多条轨迹数据(文本格式)的可视化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/541828

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元