with one click
transbigdata-taxi
使用 TransBigData 处理出租车 GPS 数据。适用于出租车状态清洗、OD 提取、载客/空驶轨迹分离等任务。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
使用 TransBigData 处理出租车 GPS 数据。适用于出租车状态清洗、OD 提取、载客/空驶轨迹分离等任务。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
TransBigData 交通时空大数据分析工具集。适用于轨迹数据栅格化、轨迹清洗处理、出租车OD提取、公交地铁网络分析、坐标转换、数据可视化等交通大数据分析任务。
使用 TransBigData 进行坐标系转换和距离计算。适用于 WGS84、GCJ02、BD09 坐标系互转,以及两点间距离计算。
使用 TransBigData 获取公共交通和地理数据。适用于获取公交线路站点、行政区划边界、等时圈分析等任务。
使用 TransBigData 库进行地理数据栅格化处理。适用于将GPS轨迹数据映射到栅格、生成矩形/三角形/六边形栅格、Geohash编码、栅格参数优化等空间数据分析任务。
使用 TransBigData 构建公交地铁网络拓扑和路径分析。适用于地铁网络建模、最短路径查询、换乘分析、公交 GPS 到站识别等任务。
使用 TransBigData 进行数据预处理与质量评估。适用于数据质量检查、采样间隔分析、边界过滤、ID重编号等任务。
| name | transbigdata-taxi |
| description | 使用 TransBigData 处理出租车 GPS 数据。适用于出租车状态清洗、OD 提取、载客/空驶轨迹分离等任务。 |
pip install transbigdata
典型的出租车 GPS 数据包含以下字段:
| 字段 | 说明 |
|---|---|
| VehicleNum | 车辆编号 |
| Time | GPS 时间 |
| Lng | 经度 |
| Lat | 纬度 |
| OpenStatus | 载客状态(1=载客,0=空车) |
clean_taxi_status()删除载客状态瞬间变化的异常记录(如上下客过快)。
import transbigdata as tbd
data_clean = tbd.clean_taxi_status(
data,
col=['VehicleNum', 'Time', 'OpenStatus'],
timelimit=60 # 时间阈值(秒),前后记录间隔小于此值则删除
)
taxigps_to_od()从 GPS 轨迹中提取载客行程的起终点(OD)。
od_data = tbd.taxigps_to_od(
data,
col=['VehicleNum', 'Time', 'Lng', 'Lat', 'OpenStatus']
)
返回字段:
VehicleNum: 车辆编号stime, etime: 上客/下客时间slon, slat: 上客位置elon, elat: 下客位置taxigps_traj_point()分离载客轨迹和空驶轨迹。
# 先提取 OD
od_data = tbd.taxigps_to_od(data, col=['VehicleNum', 'Time', 'Lng', 'Lat', 'OpenStatus'])
# 提取轨迹点
data_deliver, data_idle = tbd.taxigps_traj_point(
data,
od_data,
col=['VehicleNum', 'Time', 'Lng', 'Lat', 'OpenStatus']
)
# data_deliver: 载客轨迹
# data_idle: 空驶轨迹
import pandas as pd
import geopandas as gpd
import transbigdata as tbd
import matplotlib.pyplot as plt
# 1. 加载数据
data = pd.read_csv('taxi_gps.csv')
data['Time'] = pd.to_datetime(data['Time'])
# 2. 数据质量检查
print(f"原始数据: {len(data)} 条")
tbd.data_summary(data, col=['VehicleNum', 'Time'])
# 3. 边界过滤(深圳范围)
bounds = [113.75, 22.4, 114.62, 22.86]
data = tbd.clean_outofbounds(data, bounds=bounds, col=['Lng', 'Lat'])
print(f"边界过滤后: {len(data)} 条")
# 4. 状态清洗
data = tbd.clean_taxi_status(
data,
col=['VehicleNum', 'Time', 'OpenStatus'],
timelimit=60
)
print(f"状态清洗后: {len(data)} 条")
# 5. 提取 OD
od_data = tbd.taxigps_to_od(
data,
col=['VehicleNum', 'Time', 'Lng', 'Lat', 'OpenStatus']
)
print(f"提取 OD: {len(od_data)} 条")
# 6. 分离载客/空驶轨迹
data_deliver, data_idle = tbd.taxigps_traj_point(
data, od_data,
col=['VehicleNum', 'Time', 'Lng', 'Lat', 'OpenStatus']
)
print(f"载客轨迹: {len(data_deliver)} 点, 空驶轨迹: {len(data_idle)} 点")
# 7. OD 栅格化(500米)
params = tbd.area_to_params(bounds, accuracy=500)
# 上客点聚合
od_data['LONCOL_s'], od_data['LATCOL_s'] = tbd.GPS_to_grid(
od_data['slon'], od_data['slat'], params
)
pickup = od_data.groupby(['LONCOL_s', 'LATCOL_s']).size().reset_index(name='count')
pickup['geometry'] = tbd.grid_to_polygon(
[pickup['LONCOL_s'], pickup['LATCOL_s']], params
)
pickup_gdf = gpd.GeoDataFrame(pickup, geometry='geometry', crs='EPSG:4326')
# 8. 可视化上客热力图
fig, ax = plt.subplots(figsize=(12, 10))
tbd.plot_map(plt, bounds, zoom=12, style=4)
pickup_gdf.plot(ax=ax, column='count', cmap='YlOrRd', alpha=0.7, legend=True)
tbd.plotscale(ax, bounds=bounds)
plt.title('出租车上客点热力图 (500m栅格)')
plt.show()
# 9. 保存结果
od_data.to_csv('taxi_od.csv', index=False)
odagg_grid()# 聚合 OD 并生成几何
od_agg = tbd.odagg_grid(
od_data,
params,
col=['slon', 'slat', 'elon', 'elat'],
arrow=True # 生成箭头几何
)
odagg_shape()# 按行政区聚合
districts = gpd.read_file('districts.shp')
od_district = tbd.odagg_shape(
od_data,
districts,
col=['slon', 'slat', 'elon', 'elat']
)
数据清洗顺序:
状态清洗参数:
timelimit=60 适合大多数情况OD 分析:
轨迹分离:
完整文档: https://transbigdata.readthedocs.io/en/latest/taxigps.html