TaxiFlow是一个基于北京市2008年出租车GPS轨迹数据的综合分析系统,旨在通过可视化和数据挖掘技术揭示城市交通模式。该系统提供了多种轨迹分析功能,包括轨迹查询、密度分析、区域关联分析、频繁路径挖掘和通行时间分析等。
- 前端: HTML5 + CSS3 + JavaScript (ES6+)
- 地图引擎: 高德地图 API 2.0
- 图表库: ECharts 5.4.3
- 桌面应用: Electron 35.2.0
- 后端: Python Flask + Flask-CORS
- 数据存储: SQLite + R-tree空间索引
- 数据处理: NumPy + Pandas + Rtree
TaxiFlow/
├── 前端界面 (Electron + Web)
│ ├── 地图可视化 (高德地图)
│ ├── 交互控制面板
│ └── 图表展示 (ECharts)
├── 后端API服务 (Flask)
│ ├── 轨迹查询API
│ ├── 空间分析API
│ └── 数据挖掘API
├── 数据层
│ ├── 原始轨迹数据 (按车辆ID分组)
│ ├── R-tree空间索引
│ └── 预处理路径数据库
└── 数据处理模块
├── 3D R-tree索引构建
├── 路径预处理
└── 频繁模式挖掘
- 功能描述: 根据出租车ID查询并显示单个车辆的完整轨迹
- 输入参数: 出租车ID
- 输出结果: 在地图上显示轨迹路径,包括起点、终点标记和轨迹信息
- 功能描述: 在指定矩形区域和时间范围内查询出租车数量
- 输入参数: 矩形区域坐标、时间范围
- 输出结果: 区域内独立出租车数量、总轨迹点数、查询耗时
- 功能描述: 分析指定时间段内的车流密度分布
- 输入参数: 网格大小、时间范围
- 输出结果: 密度热力图、统计信息(最大密度、平均密度等)
- 功能描述: 分析两个区域之间的车流量随时间变化
- 输入参数: 两个矩形区域、时间范围、时间间隔
- 输出结果: 车流量时间序列图表、区域间移动统计
- 功能描述: 分析指定区域与其他所有区域之间的车流关系
- 输入参数: 目标矩形区域、时间范围
- 输出结果: 目标区域与其他区域的车流量分析图表
- 功能描述: 挖掘全城范围内最频繁的出行路径
- 输入参数: 路径数量k、最小路径长度
- 输出结果: 前k条最频繁路径的可视化展示、路径统计信息
- 功能描述: 分析从区域A到区域B的最频繁通行路径
- 输入参数: 起点区域A、终点区域B、路径数量k
- 输出结果: A到B的前k条频繁路径、路径频次和长度统计
- 功能描述: 计算从区域A到区域B的最短通行时间及路径
- 输入参数: 起点区域A、终点区域B、时间范围
- 输出结果: 最短通行时间、最优路径轨迹、相关出租车信息
- 数据集: 北京市2008年出租车GPS轨迹数据
- 时间范围: 2008年2月2日-2008年2月8日
- 数据规模: 约10,000辆出租车,数百万轨迹点
- 数据格式: 车辆ID, 时间戳, 经度, 纬度
Data/
├── taxi_log_2008_by_id/ # 按车辆ID分组的原始轨迹数据
│ ├── 1.txt # 车辆1的轨迹数据
│ ├── 2.txt # 车辆2的轨迹数据
│ └── ...
├── taxi_rtree.idx # R-tree空间索引文件
├── taxi_rtree.dat # R-tree数据文件
└── all_paths_from_pkl.sqlite # 预处理的路径数据库
- Node.js: 16.0+ (用于Electron)
- Python: 3.8+
- 操作系统: Windows 10+, macOS 10.14+, Ubuntu 18.04+
- 克隆项目
git clone <repository-url>
cd TaxiFlow- 安装前端依赖
npm install- 安装Python依赖
pip install flask flask-cors rtree numpy pandas sqlite3- 准备数据
- 确保
Data/taxi_log_2008_by_id/目录包含轨迹数据文件 - 运行数据预处理脚本构建索引:
- 确保
cd DataProcess
python 3DRTree.py
python convert_all_pkl_to_sqlite.py# 开发模式
npm run dev
# 生产模式
npm start- 访问应用
- 应用将自动打开Electron窗口
- 后端API服务运行在
http://localhost:5000
-
轨迹查询 (F1/F2)
- 在"出租车ID"输入框中输入车辆ID(如:1, 100, 1000)
- 点击"显示轨迹"查看该车辆的完整轨迹
-
区域查询 (F3)
- 点击"绘制矩形区域"在地图上绘制查询区域
- 设置查询时间范围
- 点击"执行查询"获取区域内车辆统计
-
密度分析 (F4)
- 设置网格大小(建议500-2000米)
- 选择分析时间范围
- 点击"分析车流密度"查看热力图
-
区域关联分析 (F5/F6)
- F5: 绘制两个区域,分析区域间车流
- F6: 绘制一个目标区域,分析与其他区域的关联
-
频繁路径分析 (F7/F8)
- F7: 设置参数k和最小路径长度,分析全城频繁路径
- F8: 绘制起点和终点区域,分析区域间频繁路径
-
通行时间分析 (F9)
- 绘制起点区域A和终点区域B
- 设置分析时间范围
- 点击"分析最短通行时间"获取最优路径
TaxiFlow/
├── api/ # 后端API模块
│ ├── F1_taxi_routes.py # 轨迹查询API
│ ├── F3_area_query.py # 区域查询API
│ ├── F4_density_analysis.py # 密度分析API
│ ├── F5_area_relation.py # 区域关联分析API
│ ├── F6_area_relation2.py # 区域关联分析2 API
│ ├── F7_frequent_paths.py # 频繁路径分析API
│ ├── F8_frequent_paths_ab.py # 区域间频繁路径API
│ └── F9_travel_time.py # 通行时间分析API
├── assets/ # 前端资源
│ ├── css/ # 样式文件
│ ├── js/ # JavaScript模块
│ │ ├── modules/ # 功能模块
│ │ └── main.js # 主入口文件
│ └── icons/ # 图标资源
├── Data/ # 数据文件
├── DataProcess/ # 数据处理脚本
├── app.py # Flask后端入口
├── main.js # Electron主进程
├── index.html # 前端页面
└── package.json # 项目配置
- 高性能空间查询: 基于3D R-tree索引的毫秒级空间-时间查询
- 实时可视化: 高德地图API提供流畅的地图交互体验
- 模块化架构: 前后端分离,功能模块独立,易于扩展
- 跨平台支持: Electron框架支持Windows、macOS、Linux
- 数据挖掘算法: 集成频繁模式挖掘和最短路径算法
- 响应式设计: 适配不同屏幕尺寸的用户界面
ISC License
欢迎提交Issue和Pull Request来改进项目。
如有问题或建议,请通过以下方式联系:
- 提交GitHub Issue
- 发送邮件至项目维护者 guoh35275@gmail.com

