Skip to content

Repository files navigation

traffic(交通数据中台)

前端:Vue 3 + Vite + 高德地图 JS API
后端:FastAPI + PostgreSQL(本地 docker 容器暴露 5432

1) 启动数据库

下载镜像

docker pull theadoratang722/trajdb-image
docker run -d -p 5433:5432 theadoratang722/trajdb-image

mission1v1 下载镜像

docker pull handingna/trajdb-image:m1v1
docker run -d -p 5433:5432 handingna/trajdb-image:m1v1

密码:password

mission1v2 下载镜像

docker pull handingna/trajdb-image:m1v2
docker run -d -p 5433:5432 handingna/trajdb-image:m1v2

密码:password

2) 配置后端数据库连接

docker链接 密码后续可能修改 现在先不用动,这步忽略

backend/ 下新建 backend/.env

DATABASE_URL=postgresql+asyncpg://postgres:tangxiaohui0722@localhost:5432/trajdb
APP_CORS_ORIGINS=http://localhost:8081

3) 安装依赖

前端:

npm install

后端(建议创建虚拟环境):

python -m venv .venv   #遇到有不存在的库可以使用py -3.10 -m venv .venv
.\.venv\Scripts\activate
pip install -r backend/requirements.txt

4) 一条命令启动(前后端一起)

npm run dev
  • 前端:http://localhost:8081
  • 后端:http://localhost:8000(健康检查:/api/health

5) 功能入口

  • 轨迹分析:/trip(输入 trip_id,地图还原轨迹;按速度阈值将路段标红/标绿)
  • 车辆画像:/car(输入 device_id,展示 2 小时分布与轨迹列表;点击 trip_id 可跳转轨迹页)

tips:requirements.txt可能不全,如果运行碰壁先自行解决一下,基本都是module问题,我使用的是python3.10

6) 预测功能的离线训练

python backend/scripts/forecast_xgb_train.py --trip-limit 2000 --congestion-speed-kph 20

7) 连接新表后修改后的代码

修改了以下三个文件:修改的部分都有注释: 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 新建 我自定义生成的,不是原有值
行程总距离
行程时间
开始时间
结束时间
每两个时间戳之间的平均速度计算

如果上面这块数据有问题跟唐小卉反馈一下

待实现的功能

  1. 数据库方面 虽然 jld2文件 match了一部分数据,但并不是全部的,需要按照胡老师GitHub发的连接,pull一下harbin-map的数据 github 连接到DBEaver中可以看到这样的可视化结果 data 在此仅以relations举例,这里面就标注了一些道路信息,这些信息我们也要显示分析。这里的数据还是很多的,需要仔细check且与trajdb中的数据结合 nodes 在提取出这些信息之后,要把这些内容与我打包的docker镜像中的内容进行整合,建立一个我们自己中台的完整数据库(最终完整的数据库不要将很多数据放在一张表里,可以有主表以及对应的子表,不要看起来逻辑太混乱),打包最终的镜像
  2. 功能方面
  • (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人 张京斌

Timeline

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 可能涉及到部分算法方面的内容,实在觉得有困难时间紧也不要紧,尽可能做就好了
  • 如果在自己的工作上遇到任何问题及时在群里提出,大家帮忙一起解决一下

以下是原来的说明

Data-Platform

交通数据中台 第①小组

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 服务层 交通大屏 可视化展示交通状态 拥堵数据 + 轨迹 实时交通监控
路况服务 计算最优路径 路段速度 + 路网 导航推荐
交通预警 检测异常(速度骤降等) 实时轨迹 拥堵/事故预警
智能分析 用模型预测未来交通 历史数据 拥堵预测、信号优化

我们要做的功能(check的是需做,没check的是选做)

  • 根据出租车id和行程id在地图上显示,即轨迹可视化(大致如下) img
  • 按照时间顺序还原车辆路径(按照时间顺序动态显示车辆前进/后退的状态)
  • 出行统计:看到每个行程的起点、终点、时长、距离、速度
  • 拥堵分析
  • 路径分析
  • 统计热力图,判断高需求用车区域(可以结合时间进行进一步分析)
  • 交通情况预测:根据历史数据(速度,轨迹热力集中程度)判断特定时间某一路段/地点是否会拥挤
    • 我倾向这个最好做出来
  • 已有数据的大盘,具体内容待定
  • 留出至少一个端口,可以导出一部分数据用于未来该数据中台的潜在用户使用

展示形式

搭一个网站

层级 技术组件 工具 作用
数据层 原始数据 jld2 存储出租车轨迹数据
数据处理层 数据分析 适合Julia处理的工具,待check 轨迹解析、速度计算、统计分析
空间处理 GIS分析 GeoPandas 空间计算、路径处理
存储层 数据库 PostgreSQL + PostGIS(当然也可以比较丑陋的直接读本地文件,看到时候的进度) 存储轨迹、空间数据
后端服务 API服务 FastAPI(我个人倾向python语言的后端,比较简单,别的也行) 提供数据接口
前端展示 Web框架 React/Vue 构建交互界面
地图可视化 地图引擎 高德地图开放平台API 轨迹显示
部署 容器化 Docker 一键部署系统

About

交通数据中台 第①小组

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages