Files
UAV-CO2/3DVIEW_README.md

6.0 KiB
Raw Blame History

3D轨迹可视化工具

一个用于将GPS轨迹数据转换为可交互3D可视化的Python工具。

功能特性

  • 🎯 多格式支持: 支持CSV和Excel文件 (.csv, .xlsx, .xls)
  • 📊 3D交互式图表: 基于Plotly的完全可交互3D可视化
  • 🎨 智能着色: 按高程自动着色,颜色映射到海拔高度
  • 🔧 灵活配置: 可自定义列索引、工作表等参数
  • 📱 响应式设计: 生成的HTML可在任何现代浏览器中查看

数据格式要求

文件格式

  • CSV文件: 逗号分隔值文件
  • Excel文件: .xlsx 或 .xls 格式

数据列要求

文件至少需要包含4列数据按以下顺序排列

列索引 列名 数据类型 说明
0 经度 数值 GPS经度坐标原始格式
1 纬度 数值 GPS纬度坐标原始格式
2 高程 数值 飞行器高程(可选)
3 融合高程 数值 融合后的高程数据

数据示例

CSV格式:

1157855289,403491370,500110,435.789
1157855290,403491371,500111,436.123
1157855291,403491372,500112,437.456

Excel格式:

  • 第一行(如果有标题)将被忽略
  • 数据从第二行开始读取

坐标转换

  • 经纬度数据会自动除以 10^7 进行单位转换
  • 这是因为原始GPS数据通常以放大整数形式存储

安装依赖

pip install pandas plotly openpyxl

使用方法

1. 命令行使用

基本用法

# 处理CSV文件
python 3Dview.py data.csv

# 处理Excel文件
python 3Dview.py trajectory.xlsx

# 指定输出文件
python 3Dview.py data.csv -o my_visualization.html

高级参数

# 自定义列索引
python 3Dview.py data.xlsx --lon-col 1 --lat-col 2 --alt-col 4

# 指定Excel工作表
python 3Dview.py data.xlsx --sheet-name "Flight_Data"

# 自定义标题
python 3Dview.py data.csv --title "无人机飞行轨迹"

# 组合使用
python 3Dview.py trajectory.xlsx \
    --lon-col 0 \
    --lat-col 1 \
    --alt-col 3 \
    --sheet-name 0 \
    --output flight_path.html \
    --title "2024年飞行数据"

2. Python代码调用

基本调用

from 3Dview import main

# 处理CSV文件
success = main('trajectory.csv')

# 处理Excel文件
success = main('flight_data.xlsx', sheet_name='Sheet1')

完整参数调用

from 3Dview import main

success = main(
    input_file='drone_trajectory.xlsx',
    output_file='visualization.html',
    lon_col=0,          # 经度列索引
    lat_col=1,          # 纬度列索引
    alt_col=3,          # 融合高程列索引
    sheet_name=0,       # Excel工作表索引
    title='无人机轨迹3D可视化'
)

if success:
    print("可视化生成成功!")

输出结果

HTML文件内容

  • 3D散点图: 每个数据点在三维空间中的位置
  • 颜色编码: 点的颜色根据高程自动映射
  • 交互功能: 支持旋转、缩放、平移等操作

控制说明

  • 鼠标左键拖拽: 旋转视角
  • 鼠标滚轮: 缩放视图
  • 鼠标右键拖拽: 平移视图
  • 双击: 重置到初始视角
  • 悬停: 显示数据点的详细信息

参数说明

命令行参数

参数 简称 默认值 说明
input_file - 必需 输入文件路径
--output -o 3d_view.html 输出HTML文件路径
--lon-col - 0 经度列索引
--lat-col - 1 纬度列索引
--alt-col - 3 融合高程列索引
--sheet-name - 0 Excel工作表名称或索引
--delimiter - None CSV分隔符自动检测
--title - 3D轨迹可视化 图表标题

函数参数

def main(
    input_file,           # 输入文件路径
    output_file='3d_view.html',     # 输出文件路径
    lon_col=0,            # 经度列索引
    lat_col=1,            # 纬度列索引
    alt_col=3,            # 高程列索引
    delimiter=None,       # CSV分隔符
    title='3D轨迹可视化', # 图表标题
    sheet_name=0          # Excel工作表
):

故障排除

常见问题

1. 文件读取错误

错误:输入文件不存在: xxx

解决: 检查文件路径是否正确,文件是否存在

2. 列数不足

数据文件至少需要4列经度、纬度、高程、融合高程。当前只有X列。

解决: 检查数据文件格式,确保包含所需列

3. Excel工作表不存在

Worksheet 'Sheet1' not found

解决: 检查Excel文件中的工作表名称或使用索引如0

4. 坐标转换问题

如果坐标显示不正确,检查:

  • 经纬度数据格式是否正确
  • 单位转换是否合适除以10^7

数据验证

运行脚本时会显示以下统计信息:

成功加载数据XXX 个数据点
经度范围: XXX.XXXXXX - XXX.XXXXXX
纬度范围: XXX.XXXXXX - XXX.XXXXXX
高程范围: XXX.XX - XXX.XX 米

示例应用

无人机飞行轨迹

from 3Dview import main

# 可视化无人机飞行路径
main(
    input_file='drone_flight.xlsx',
    output_file='drone_path_3d.html',
    title='无人机飞行轨迹3D可视化',
    sheet_name='GPS_Data'
)

地面车辆轨迹

from 3Dview import main

# 可视化车辆行驶轨迹
main(
    input_file='vehicle_gps.csv',
    output_file='vehicle_path.html',
    title='车辆轨迹可视化',
    alt_col=2  # 如果没有高程数据,使用其他列
)

技术细节

依赖库

  • pandas: 数据处理
  • plotly: 3D可视化
  • openpyxl: Excel文件读取

坐标系统

  • 输入: 原始GPS坐标通常为度×10^-7
  • 处理: 转换为标准经纬度坐标
  • 显示: WGS84地理坐标系

性能考虑

  • 大文件处理: 建议分批处理超大数据集
  • 内存使用: 每个数据点占用约50-100字节内存
  • 渲染性能: 浏览器对大量数据点的渲染有限制

许可证

本工具遵循与主项目相同的许可证。


版本: 1.0.0 最后更新: 2024年12月