这是一个基于Django的轨迹数据分析项目,提供轨迹数据查询和热点分析功能,并在数据导入时自动将WGS84坐标转换为百度坐标。
- 轨迹数据查询和分析
- 热点上客点聚类分析
- 数据导入时自动进行WGS84到百度坐标(BD09)的转换
- 支持14位精度的坐标输出
- RESTful API接口
pip install -r requirements.txt编辑 config.py 文件,将 YOUR_BAIDU_MAP_AK 替换为您的百度地图API密钥:
BAIDU_MAP_AK = 'your_actual_baidu_map_api_key'确保MySQL数据库已启动,并根据需要修改 config.py 中的数据库配置。
python manage.py makemigrations
python manage.py migratepython manage.py runserver服务器将在 http://127.0.0.1:8000/ 启动
- URL:
/api/heatmap/ - 方法: GET
- 功能: 分析所有上客点,使用DBSCAN聚类算法找出热点区域
- 返回: 包含百度坐标的热点区域列表
- URL:
/api/points/ - 方法: GET
- 参数:
start_time: 开始时间end_time: 结束时间
- 功能: 获取指定时间段内的所有轨迹点
- 返回: 包含百度坐标的轨迹点列表
- URL:
/api/car_points/ - 方法: GET
- 参数:
start_time: 开始时间end_time: 结束时间commaddr: 车辆ID
- 功能: 获取指定车辆在指定时间段内的轨迹点
- 返回: 包含百度坐标的车辆轨迹点列表
- URL:
/api/pickup_points/ - 方法: GET
- 参数:
time: 基准时间
- 功能: 获取指定时间前后15分钟内的上客点
- 返回: 包含百度坐标的上客点列表
项目在数据导入时自动进行坐标转换:
- 使用百度地图API进行高精度坐标转换
- 在
import_to_db.py中自动处理所有坐标转换 - 转换后的坐标直接存储到数据库中
- 精度为14位小数
在 config.py 中可以配置坐标精度:
COORDINATE_PRECISION = 14 # 坐标精度(小数位数)运行数据导入脚本,自动进行坐标转换:
python import_to_db.py// 获取热点上客点
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}`);
});
});- 确保百度地图API密钥有效且有足够的配额
- 数据导入时会进行坐标转换,处理时间较长
- 转换后的坐标直接存储到数据库,API响应速度不受影响
- 建议在数据导入时使用进度监控
- Django 5.2.4
- Django REST Framework
- MySQL数据库
- scikit-learn (DBSCAN聚类)
- pandas (数据处理)
- 百度地图API