一、
是一个基于、和的库,用于处理运动数据 。为运动数据探索和分析提供了轨迹数据结构和功能 。
是为处理运动数据而开发的,更具体地说是处理轨迹,该库基于一个轨迹类及相关方法 。
可以用于:
本文首先对原始数据进行简单处理并入库,然后举一些处理轨迹数据的基本功能的例子 。
二、数据预处理
【MovingPandas时空轨迹数据探索和分析——上海市出租车数据集】import osimport pandas as pdimport timefrom sqlalchemy import create_enginepath = 'E:\AppDownload\BaiduCloud\上海市出租车数据\Taxi_070220'# 获取path目录下所有文件名,添加后缀.txtfile_list = os.listdir(path)for name in file_list:oldname = path + '\\' + namenewname = path + '\\' + name + '.txt'os.rename(oldname, newname)# 重命名# print(oldname, '======>', newname)# 读取每个txt文件并写入数据库db_name = 'trajectory'# 数据库名file_list1 = os.listdir(path)# 获取path目录下所有文件名for name in file_list1:# 循环读取每个文件名file_path = path + '\\' + namedf = pd.read_csv(file_path, header=None)# 读取txt文件df.rename(columns={0:'id',1:'date',2:'lon',3:'lat',4:'speed(km/h)',5:'direction',6:'passenger'},inplace=True)# 重命名列名# 判断lon和lat是否全部一样if(df['lon'].nunique() == 1 and df['lat'].nunique() == 1):# 将同位置数据写入数据库try:engine = create_engine("postgresql://postgres:123@localhost:5432/" + db_name)# 连接数据库df.to_sql('shanghai20070220_sameloc', con=engine, index=False, if_exists='append')# 第一个参数为写入数据库时的表名,没有就自动创建,有的话就自动添加数据except Exception as e:print(e)finally:engine.dispose()# 关闭数据库连接else:# 将不同位置数据写入数据库try:engine = create_engine("postgresql://postgres:123@localhost:5432/" + db_name)# 连接数据库df.to_sql('shanghai20070220', con=engine, index=False, if_exists='append')# 第一个参数为写入数据库时的表名,没有就自动创建,有的话就自动添加数据print(f'{name}写入数据库成功!')except Exception as e:print(e)finally:engine.dispose()# 关闭数据库连接
三、轨迹分析 用到的库
import pandas as pdimport geopandas as gpdimport movingpandas as mpdimport matplotlib.pyplot as pltfrom datetime import datetime, timedeltafrom mpl_toolkits.axes_grid1 import make_axes_locatablefrom sqlalchemy import create_engine, text
随机提取十条轨迹数据
# 从数据库中读取数据db_name = 'trajectory'engine = create_engine(f'postgresql://postgres:123@localhost:5432/' + db_name) # 连接数据库# sql = 'select * from shanghai20070220'# 查询所有数据sql = 'select * from shanghai20070220 where id ' \'in (select id from shanghai20070220 group by id order by random() limit 10)'# 随机查询10条数据try:# df = pd.read_sql_query(text(sql), engine.connect())df = pd.read_sql(text(sql), engine.connect())except Exception as e:print(e)finally:engine.dispose()# 关闭数据库连接
数据格式转换
df['trajectory_id'] = df['id']df['id'] = df.indexdf['date'] = pd.to_datetime(df['date'])# 将时间转换为时间格式gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df['lon'], df['lat']), crs=4326)# 将经纬度转换为几何数据gdf.to_crs('32651', inplace=True)# 设置投影坐标系(数据来源上海市,对数据使用UTM区)mdf = mpd.TrajectoryCollection(gdf, 'trajectory_id', t='date')# 创建轨迹集合# 使用to_traj_gdf()方法查看轨迹数据mdf.to_traj_gdf()
- 迭代学习控制算法在自动驾驶车辆轨迹跟踪中的应用
- cesium 路径漫游
- 最简单的 UE 4 C++ 教程 —— Actor 线轨迹(line trace
- 支付宝记录的近几年城市轨迹
- UWB智慧工厂人员定位系统源码,人员在岗监控、车辆实时轨迹监控源码
- Carla中实现车辆轨迹获得
- 关于ilegenes黑耀的轨迹的介绍 ilegenes黑耀的轨迹
- 玉溪函授
- 10本好看的科幻小说,时空穿梭,进化变异,星际文明,书荒不用愁 世界十大变异动物
- 天文台时间