Skip to content

sea1dream/TaxiFlow

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TaxiFlow - 出租车轨迹分析系统

image

image

项目简介

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索引构建
    ├── 路径预处理
    └── 频繁模式挖掘

基本功能

F1/F2: 轨迹显示功能

  • 功能描述: 根据出租车ID查询并显示单个车辆的完整轨迹
  • 输入参数: 出租车ID
  • 输出结果: 在地图上显示轨迹路径,包括起点、终点标记和轨迹信息

F3: 区域查询功能

  • 功能描述: 在指定矩形区域和时间范围内查询出租车数量
  • 输入参数: 矩形区域坐标、时间范围
  • 输出结果: 区域内独立出租车数量、总轨迹点数、查询耗时

F4: 密度分析功能

  • 功能描述: 分析指定时间段内的车流密度分布
  • 输入参数: 网格大小、时间范围
  • 输出结果: 密度热力图、统计信息(最大密度、平均密度等)

F5: 区域关联分析功能

  • 功能描述: 分析两个区域之间的车流量随时间变化
  • 输入参数: 两个矩形区域、时间范围、时间间隔
  • 输出结果: 车流量时间序列图表、区域间移动统计

F6: 区域关联分析2功能

  • 功能描述: 分析指定区域与其他所有区域之间的车流关系
  • 输入参数: 目标矩形区域、时间范围
  • 输出结果: 目标区域与其他区域的车流量分析图表

F7: 全城频繁路径分析功能

  • 功能描述: 挖掘全城范围内最频繁的出行路径
  • 输入参数: 路径数量k、最小路径长度
  • 输出结果: 前k条最频繁路径的可视化展示、路径统计信息

F8: 区域间频繁路径分析功能

  • 功能描述: 分析从区域A到区域B的最频繁通行路径
  • 输入参数: 起点区域A、终点区域B、路径数量k
  • 输出结果: A到B的前k条频繁路径、路径频次和长度统计

F9: 最短通行时间分析功能

  • 功能描述: 计算从区域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+

安装步骤

  1. 克隆项目
git clone <repository-url>
cd TaxiFlow
  1. 安装前端依赖
npm install
  1. 安装Python依赖
pip install flask flask-cors rtree numpy pandas sqlite3
  1. 准备数据
    • 确保Data/taxi_log_2008_by_id/目录包含轨迹数据文件
    • 运行数据预处理脚本构建索引:
cd DataProcess
python 3DRTree.py
python convert_all_pkl_to_sqlite.py

启动应用

# 开发模式
npm run dev

# 生产模式
npm start
  1. 访问应用
    • 应用将自动打开Electron窗口
    • 后端API服务运行在 http://localhost:5000

使用指南

  1. 轨迹查询 (F1/F2)

    • 在"出租车ID"输入框中输入车辆ID(如:1, 100, 1000)
    • 点击"显示轨迹"查看该车辆的完整轨迹
  2. 区域查询 (F3)

    • 点击"绘制矩形区域"在地图上绘制查询区域
    • 设置查询时间范围
    • 点击"执行查询"获取区域内车辆统计
  3. 密度分析 (F4)

    • 设置网格大小(建议500-2000米)
    • 选择分析时间范围
    • 点击"分析车流密度"查看热力图
  4. 区域关联分析 (F5/F6)

    • F5: 绘制两个区域,分析区域间车流
    • F6: 绘制一个目标区域,分析与其他区域的关联
  5. 频繁路径分析 (F7/F8)

    • F7: 设置参数k和最小路径长度,分析全城频繁路径
    • F8: 绘制起点和终点区域,分析区域间频繁路径
  6. 通行时间分析 (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来改进项目。

联系方式

如有问题或建议,请通过以下方式联系:

About

一款可视化出租车轨迹分析应用

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 55.4%
  • Python 37.5%
  • HTML 5.7%
  • CSS 1.4%