Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django轨迹分析项目

这是一个基于Django的轨迹数据分析项目,提供轨迹数据查询和热点分析功能,并在数据导入时自动将WGS84坐标转换为百度坐标。

功能特性

  • 轨迹数据查询和分析
  • 热点上客点聚类分析
  • 数据导入时自动进行WGS84到百度坐标(BD09)的转换
  • 支持14位精度的坐标输出
  • RESTful API接口

安装和配置

1. 安装依赖

pip install -r requirements.txt

2. 配置百度地图API

编辑 config.py 文件,将 YOUR_BAIDU_MAP_AK 替换为您的百度地图API密钥:

BAIDU_MAP_AK = 'your_actual_baidu_map_api_key'

3. 数据库配置

确保MySQL数据库已启动,并根据需要修改 config.py 中的数据库配置。

4. 运行数据库迁移

python manage.py makemigrations
python manage.py migrate

启动服务器

python manage.py runserver

服务器将在 http://127.0.0.1:8000/ 启动

API接口

1. 热点上客点分析

  • URL: /api/heatmap/
  • 方法: GET
  • 功能: 分析所有上客点,使用DBSCAN聚类算法找出热点区域
  • 返回: 包含百度坐标的热点区域列表

2. 时间段内所有轨迹点

  • URL: /api/points/
  • 方法: GET
  • 参数:
    • start_time: 开始时间
    • end_time: 结束时间
  • 功能: 获取指定时间段内的所有轨迹点
  • 返回: 包含百度坐标的轨迹点列表

3. 指定车辆轨迹点

  • URL: /api/car_points/
  • 方法: GET
  • 参数:
    • start_time: 开始时间
    • end_time: 结束时间
    • commaddr: 车辆ID
  • 功能: 获取指定车辆在指定时间段内的轨迹点
  • 返回: 包含百度坐标的车辆轨迹点列表

4. 15分钟内上客点

  • URL: /api/pickup_points/
  • 方法: GET
  • 参数:
    • time: 基准时间
  • 功能: 获取指定时间前后15分钟内的上客点
  • 返回: 包含百度坐标的上客点列表

坐标转换功能

项目在数据导入时自动进行坐标转换:

数据导入时转换

  • 使用百度地图API进行高精度坐标转换
  • import_to_db.py 中自动处理所有坐标转换
  • 转换后的坐标直接存储到数据库中
  • 精度为14位小数

配置精度

config.py 中可以配置坐标精度:

COORDINATE_PRECISION = 14  # 坐标精度(小数位数)

使用示例

数据导入

运行数据导入脚本,自动进行坐标转换:

python import_to_db.py

前端JavaScript调用示例

// 获取热点上客点
fetch('/api/heatmap/')
  .then(response => response.json())
  .then(data => {
    data.forEach(point => {
      // point.lng 和 point.lat 已经是百度坐标,精度为14位
      console.log(`经度: ${point.lng}, 纬度: ${point.lat}, 数量: ${point.count}`);
    });
  });

// 获取指定时间段内的轨迹点
fetch('/api/points/?start_time=2024-01-01T00:00:00&end_time=2024-01-01T23:59:59')
  .then(response => response.json())
  .then(data => {
    data.forEach(point => {
      // 坐标已转换为百度坐标系
      console.log(`经度: ${point.lng}, 纬度: ${point.lat}`);
    });
  });

注意事项

  1. 确保百度地图API密钥有效且有足够的配额
  2. 数据导入时会进行坐标转换,处理时间较长
  3. 转换后的坐标直接存储到数据库,API响应速度不受影响
  4. 建议在数据导入时使用进度监控

技术栈

  • Django 5.2.4
  • Django REST Framework
  • MySQL数据库
  • scikit-learn (DBSCAN聚类)
  • pandas (数据处理)
  • 百度地图API

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages