بنقرة واحدة
transbigdata-taxi
使用 TransBigData 处理出租车 GPS 数据。适用于出租车状态清洗、OD 提取、载客/空驶轨迹分离等任务。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
使用 TransBigData 处理出租车 GPS 数据。适用于出租车状态清洗、OD 提取、载客/空驶轨迹分离等任务。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
TransBigData 交通时空大数据分析工具集。适用于轨迹数据栅格化、轨迹清洗处理、出租车OD提取、公交地铁网络分析、坐标转换、数据可视化等交通大数据分析任务。
使用 TransBigData 进行坐标系转换和距离计算。适用于 WGS84、GCJ02、BD09 坐标系互转,以及两点间距离计算。
使用 TransBigData 获取公共交通和地理数据。适用于获取公交线路站点、行政区划边界、等时圈分析等任务。
使用 TransBigData 库进行地理数据栅格化处理。适用于将GPS轨迹数据映射到栅格、生成矩形/三角形/六边形栅格、Geohash编码、栅格参数优化等空间数据分析任务。
使用 TransBigData 构建公交地铁网络拓扑和路径分析。适用于地铁网络建模、最短路径查询、换乘分析、公交 GPS 到站识别等任务。
使用 TransBigData 进行数据预处理与质量评估。适用于数据质量检查、采样间隔分析、边界过滤、ID重编号等任务。
استنادا إلى تصنيف SOC المهني
| 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