当前位置:   article > 正文

数据集:T-Drive(北京出租车轨迹数据)_beijing taxi 数据

beijing taxi 数据

1 数据来源

T-Drive trajectory data sample - Microsoft Research

2 数据介绍

  • 数据集包含了2008年2月2日至2月8日期间在北京市内的10,357辆出租车的GPS轨迹。
  • 总共包含约1500万个GPS点,轨迹总里程达到了900万公里。

  • 图1显示了两个连续点之间的时间间隔和距离间隔的分布情况。
  • 平均采样间隔约为177秒,平均距离为623米。
  •  该数据集的每个文件以出租车ID命名,每个文件包含了一辆出租车的轨迹数据。

 图2可视化了该数据集中GPS点的密度分布情况。

 3 数据格式

出租车id,时间,经度,维度

4 数据处理

4.1 读取数据

  1. import os
  2. os.chdir(数据所处的路径)
  3. files=os.listdir()
  4. import pandas as pd
  5. gps_data=pd.read_csv(files[0],names=['taxi_id','time','latitude','longitude'])
  6. for file in files[1:]:
  7. tmp=pd.read_csv(file,names=['taxi_id','time','longitude','latitude'])
  8. gps_data=pd.concat([gps_data,tmp])
  9. gps_data

 4.2 处理数据

4.2.1 按照出租车ID+时间排序

  1. gps_data1=gps_data.sort_values(by=['taxi_id','time'],ignore_index=True)
  2. gps_data1

 4.2.2 去重

  1. gps_data1.drop_duplicates(inplace=True,ignore_index=True)
  2. gps_data1

 

 4.2.3 去除范围外的数据

我们先看一下目前数据经纬度的最大最小值

  1. max(gps_data1.latitude),min(gps_data1.latitude)
  2. #(116.69568, 0.0)
  3. max(gps_data1.longitude),min(gps_data1.longitude)
  4. #(255.3, 0.0)

0这种显然不合理

——>我们只保留一定经纬度范围内的数据

  1. gps_data1=gps_data1[(gps_data1['latitude']>39.83)&
  2. (gps_data1['latitude']<40.05)&
  3. (gps_data1['longitude']>116.17)&
  4. (gps_data1['longitude']<116.62)]
  5. gps_data1

 4.3 数据映射到路网中

4.3.1 获取路网数据

  1. import osmnx as ox
  2. beijing_road=ox.graph_from_bbox(40.05,39.83,116.62,116.17,network_type='drive')

4.3.2 可视化路网

ox.plot_graph(beijing_road,figsize=(15,15),show=False,close=False,node_size=4)

 4.3.3 将一定数量的轨迹投影到地图上

  1. import matplotlib.pyplot as plt
  2. latitude = gps_data1.latitude.to_list()
  3. longitude = gps_data1.longitude.to_list()
  4. #将gps点的经纬度提取出来
  5. fig,ax = ox.plot_graph(beijing_road,figsize=(15,15),show=False,close=False,node_size=4)
  6. #可视化路网
  7. ax.scatter(longitude[:100000],latitude[:100000],s=0.5,alpha=1,c='red')
  8. #在路网中投影10万个坐标点
  9. plt.show()

 4.3.4 可视化每一条路网轨迹

  1. for i in set(gps_data1.taxi_id):
  2. latitude = gps_data1[gps_data1.taxi_id==i].latitude.to_list()
  3. longitude = gps_data1[gps_data1.taxi_id==i].longitude.to_list()
  4. #投影
  5. fig,ax = ox.plot_graph(beijing_road,figsize=(15,15),show=False,close=False,node_size=1)
  6. ax.scatter(longitude,latitude,s=5,alpha=1,c='red')#投影10万个坐标点
  7. plt.title('Trajectory for taxi '+str(i))
  8. plt.show()

 

 。。。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/741912
推荐阅读
相关标签
  

闽ICP备14008679号