前端:Vue 3 + Vite + 高德地图 JS API
后端:FastAPI + PostgreSQL(本地 docker 容器暴露 5432)
下载镜像
docker pull theadoratang722/trajdb-imagedocker run -d -p 5433:5432 theadoratang722/trajdb-imagemission1v1 下载镜像
docker pull handingna/trajdb-image:m1v1docker run -d -p 5433:5432 handingna/trajdb-image:m1v1密码:password
mission1v2 下载镜像
docker pull handingna/trajdb-image:m1v2docker run -d -p 5433:5432 handingna/trajdb-image:m1v2密码:password
docker链接 密码后续可能修改 现在先不用动,这步忽略
在 backend/ 下新建 backend/.env
DATABASE_URL=postgresql+asyncpg://postgres:tangxiaohui0722@localhost:5432/trajdb
APP_CORS_ORIGINS=http://localhost:8081前端:
npm install后端(建议创建虚拟环境):
python -m venv .venv #遇到有不存在的库可以使用py -3.10 -m venv .venv
.\.venv\Scripts\activate
pip install -r backend/requirements.txtnpm run dev- 前端:
http://localhost:8081 - 后端:
http://localhost:8000(健康检查:/api/health)
- 轨迹分析:
/trip(输入trip_id,地图还原轨迹;按速度阈值将路段标红/标绿) - 车辆画像:
/car(输入device_id,展示 2 小时分布与轨迹列表;点击trip_id可跳转轨迹页)
tips:requirements.txt可能不全,如果运行碰壁先自行解决一下,基本都是module问题,我使用的是python3.10
python backend/scripts/forecast_xgb_train.py --trip-limit 2000 --congestion-speed-kph 20
修改了以下三个文件:修改的部分都有注释: backend/app/car_portrait.py、 backend/app/forecast_xgboost.py、 backend/app/services.py
功能都还可以正常使用,新表的四层结构的描述以及生成的sql语句放在了mission1_v2.md中.
目前(2026.4.3)数据库我现在只传了一个数据集(jld2)进去(主要用于测试,后期再补),现在只有两张表
车表(car),里面包含的字段是:
车辆id:device_id
这辆车的所有行程id:trip_id(数组,包含所有的id)
这辆车的所有行程数:trips_total
这辆车的每天0-2点的行程数:trips_total0-2
这辆车的每天2-4点的行程数:trips_total2-4
。。。。。。以此类推
这辆车的每天22-24点的行程数:trips_total22-24
每一个id对应的里程数数组(trips_distance)
以及总里程数(total_distance)
还有每个时间段的里程数total_distance0-2以此类推
轨迹表trip_data
原数据都有(除了geo),在此基础上额外有
日期(用于分区)
trip_id 新建 我自定义生成的,不是原有值
行程总距离
行程时间
开始时间
结束时间
每两个时间戳之间的平均速度计算
- 数据库方面
虽然
jld2文件 match了一部分数据,但并不是全部的,需要按照胡老师GitHub发的连接,pull一下harbin-map的数据
连接到DBEaver中可以看到这样的可视化结果
在此仅以relations举例,这里面就标注了一些道路信息,这些信息我们也要显示分析。这里的数据还是很多的,需要仔细check且与trajdb中的数据结合
在提取出这些信息之后,要把这些内容与我打包的docker镜像中的内容进行整合,建立一个我们自己中台的完整数据库(最终完整的数据库不要将很多数据放在一张表里,可以有主表以及对应的子表,不要看起来逻辑太混乱),打包最终的镜像 - 功能方面
- (1)一些基本信息的补充,在前端中每一段轨迹要相应补充上上述所述的data
- (2)出租车异常行程诊断平台
- 核心目标:识别绕路、异常停留、速度突变、定位漂移、异常跳点等问题行程。
- 主要功能:异常行程检测、异常点标注、异常回放、异常车辆排行、异常路段分布。
- 关键分析:速度阈值检测、停留时长检测、轨迹连续性检测、绕行系数计算。
- 展示方式:地图回放 + 异常标签 + 排行榜 + 统计图。
- 项目亮点:比普通轨迹展示更像“智能分析平台”。
- 实现难度:中等。
- (3)城市出租车需求洞察平台:不是研究车怎么走,而是研究“人在哪些地方更需要车”。
- 核心目标:挖掘高需求打车区域、时间段和区域间需求流动规律。
- 主要功能:上车热区、下车热区、分时段热力图、区域需求排行、热点迁移分析。 可以结合road_id来看
- 关键分析:起终点聚合、时间分桶、区域栅格统计、OD 热点分析。
- 展示方式:热力图、时间滑块、区域排行、OD 连线图。
- 项目亮点:业务价值明确,容易讲“服务城市出行”。
- 实现难度:中等偏低。
- (4) 出租车运营画像平台:从车辆或司机视角分析运营模式。
- 核心目标:刻画不同出租车的运行特征和运营习惯。
- 主要功能:活跃时间分析、常驻区域分析、平均行程长度、日运行节奏、运营模式分类。
- 关键分析:按
taxi_id聚合、轨迹聚类、工作时长估计、常跑区域统计。 - 展示方式:画像卡片、区域雷达图、时段分布图、聚类分组图。
- 项目亮点:更偏“行业分析”,与普通交通项目差异大。
- 实现难度:中等偏高。
- (5) 时空交通预测与预警平台:从静态分析升级为“未来预测”。
- 核心目标:预测未来一段时间内某路段或某区域的拥挤程度。
- 主要功能:短时速度预测、区域热度预测、拥堵预警、未来风险地图。
- 关键分析:历史均值、时间滞后特征、移动平均、XGBoost/LightGBM 或 LSTM。
- 展示方式:未来热力图、风险等级图、预测曲线。
- 项目亮点:最有“智能化”感觉。
- 实现难度:较高。
| 任务编号 | 任务内容 | 人数 | 负责人 |
|---|---|---|---|
| Mission 0 | 平台初始化搭建(行程轨迹展示还原+车辆统计信息)+数据初处理Docker镜像打包 | 1人 | 唐小卉 |
| Mission 1 | (1)+数据库补全 | 1人(跟唐小卉一起配合将完整数据库镜像打包) | 洪贝贝 |
| Mission 2 | (2)&(4) | 1人 (觉得有困难及时提) | 李浚宏 |
| Mission 3 | (3)+ 将我们的功能与数据中台的各个层进行对应,形成简单的文字说明方便后期报告 | 1人 | 钱伟鹏 |
| Mission 4 | (5) | 1人 | 张京斌 |
4.7-4.12 Mission1 done
4.13-4.19 Mission 2 done & Mission4 同步开发,可以先做模型,之后直接把模型套用到平台中
4.19-4.26 Mission 3 done
4.27-4.30 书面报告+PPT制作,具体分工再议
- Mission 1 和 Mission 2是我们必须实现的,这是比较基础的功能
- Misson 3和 Misson 4 可能涉及到部分算法方面的内容,实在觉得有困难时间紧也不要紧,尽可能做就好了
- 如果在自己的工作上遇到任何问题及时在群里提出,大家帮忙一起解决一下
以下是原来的说明
交通数据中台 第①小组
jld2的单条数据其实就是 一辆出租车从地点A到地点B的行程 所对应的相关数据
| 序号 | 数据字段 | 示例 | 含义说明 | 功能预设 |
|---|---|---|---|---|
| 1 | 经纬度轨迹 | 经度 [126.65893,...]纬度 [45.752956,...] |
每个时间点车辆的位置(GPS点) | 轨迹还原、地图可视化、路径分析 |
| 2 | 时间戳 | [1.4205024e9,...][1420473600,...] |
记录每个点的时间(Unix时间) | 速度计算、停留时间、出行时长 |
| 3 | 轨迹ID | 100324162 |
一次完整行程的唯一标识 | 区分不同车辆/行程(貌似是可以看到车辆id和行程id的,到时候结合数据再看) |
| 4 | 路网匹配结果 | [4118, 4118, 4128,...] |
每个GPS点匹配到的道路ID | 路段分析、交通统计 |
| 5 | 路段时间 | [1420473600,...] |
每个点对应的精确时间 | 更精细的速度/时间分析 |
| 6 | 匹配置信度 | [1, 0.83, 0.07,...] |
地图匹配结果的可信度(0~1) | 数据清洗、过滤错误匹配 |
| 7 | 候选路段集合 | [4118, 4129, 4128,...] |
每个点可能匹配的多个道路 | 地图匹配算法优化 |
| 8 | 行驶方向 | ["forward","backward",...] |
车辆在道路上的行驶方向 | 将标量行驶路线向量化 |
| 9 | 几何信息 | "LINESTRING(...)" |
路段的空间形状(GIS格式) | 地图绘制、路径重建、空间分析 |
| 层级 | 子功能/模块 | 需要做什么(功能实现) | 用到的数据 | 产出结果/应用 |
|---|---|---|---|---|
| ODS 原始层 | 轨迹可视化 | 把经纬度画成地图轨迹 | 经纬度、时间 | 地图轨迹图 |
| 行程还原 | 按时间顺序还原车辆路径 | 经纬度 + 时间 + 行驶方向 | 一次完整行程 | |
| 出行统计 | 统计起终点、时长、距离 | 时间 + 坐标 | 行程分析(从哪到哪) | |
| DW/TDM 加工层 | 速度计算 | 用“距离 ÷ 时间”算每段速度 | 经纬度 + 时间 | 路段速度、平均速度 |
| 拥堵分析 | 多车在同一 road_id 上低速 → 判定拥堵 | 路段ID + 速度 | 拥堵指数、拥堵路段 | |
| 路径分析 | 统计常见起终点路径 | 轨迹 + 路网 | 热门路线 | |
| ADS 服务层 | 交通大屏 | 可视化展示交通状态 | 拥堵数据 + 轨迹 | 实时交通监控 |
| 路况服务 | 计算最优路径 | 路段速度 + 路网 | 导航推荐 | |
| 交通预警 | 检测异常(速度骤降等) | 实时轨迹 | 拥堵/事故预警 | |
| 智能分析 | 用模型预测未来交通 | 历史数据 | 拥堵预测、信号优化 |
- 根据出租车id和行程id在地图上显示,即轨迹可视化(大致如下)

- 按照时间顺序还原车辆路径(按照时间顺序动态显示车辆前进/后退的状态)
- 出行统计:看到每个行程的起点、终点、时长、距离、速度
- 拥堵分析
- 路径分析
- 统计热力图,判断高需求用车区域(可以结合时间进行进一步分析)
- 交通情况预测:根据历史数据(速度,轨迹热力集中程度)判断特定时间某一路段/地点是否会拥挤
- 我倾向这个最好做出来
- 已有数据的大盘,具体内容待定
- 留出至少一个端口,可以导出一部分数据用于未来该数据中台的潜在用户使用
搭一个网站
| 层级 | 技术组件 | 工具 | 作用 |
|---|---|---|---|
| 数据层 | 原始数据 | jld2 | 存储出租车轨迹数据 |
| 数据处理层 | 数据分析 | 适合Julia处理的工具,待check | 轨迹解析、速度计算、统计分析 |
| 空间处理 | GIS分析 | GeoPandas | 空间计算、路径处理 |
| 存储层 | 数据库 | PostgreSQL + PostGIS(当然也可以比较丑陋的直接读本地文件,看到时候的进度) | 存储轨迹、空间数据 |
| 后端服务 | API服务 | FastAPI(我个人倾向python语言的后端,比较简单,别的也行) | 提供数据接口 |
| 前端展示 | Web框架 | React/Vue | 构建交互界面 |
| 地图可视化 | 地图引擎 | 高德地图开放平台API | 轨迹显示 |
| 部署 | 容器化 | Docker | 一键部署系统 |