DeepTP是一个基于深度学习的飞行轨迹预测系统,使用编码器-解码器LSTM架构来预测飞行轨迹。本报告详细记录了项目的运行过程、遇到的问题及解决方案。
DeepTP-master/
├── src/ # 源代码目录
│ ├── Run_RNN_model_Lite.py # 主要运行脚本
│ ├── configs/ # 配置文件目录
│ │ └── encoder_decoder_nn_lite.ini # 模型配置文件
│ ├── nn/session/ # 训练好的模型存储
│ │ └── develop_LiteEncoder_decoder_LSTM_20250710-133856/
│ │ └── model.ckpt-2499 # 预训练模型文件
│ ├── datasets_lite.py # 数据集处理模块
│ ├── rnn_encoder_decoder_lite.py # 神经网络架构
│ └── utils_features.py # 特征处理工具
├── data_sampled/ # 数据集目录
│ ├── NCWF/ # 天气雷达数据
│ ├── features/ # 特征数据
│ ├── filtered_weather_data/ # 过滤后的天气数据
│ ├── test_flight_tracks_all.csv # 测试飞行轨迹
│ ├── test_flight_plans_all.csv # 测试飞行计划
│ └── test_flight_plans_util.CSV # 飞行计划工具数据
└── output_figs/ # 输出结果图像
位置: data_sampled/NCWF/
文件说明:
gridded_storm.npz: 主要的网格化风暴数据文件,包含所有时间点的NCWF数据ncwf_info_file.npz: NCWF信息文件,包含时间索引和元数据alt_dict.pkl: 高度字典文件2013_08_01_HHMMZ.npz: 按小时分割的NCWF数据文件(项目运行过程中生成)
数据特征:
- 时间范围: 2013年8月1日开始
- 数据格式: NumPy压缩数组
- 包含743个时间点的天气数据
- 每个时间点包含年、月、日、小时信息
轨迹数据: test_flight_tracks_all.csv
- 包含实际飞行轨迹的GPS坐标、时间戳、高度等信息
飞行计划数据: test_flight_plans_all.csv
- 包含预定的飞行路径、起降机场、计划时间等
飞行计划工具数据: test_flight_plans_util.CSV
- 包含飞行计划的辅助信息和元数据
位置: data_sampled/filtered_weather_data/
文件类型:
namanl_218_YYYYMMDD_HHMM_FFF.npz: NAM模型天气数据- YYYY: 年份
- MM: 月份
- DD: 日期
- HH: 小时
- FFF: 预报时效(000, 001, 002, 003, 006小时)
grbs_common_info.npz: GRIB文件通用信息grbs_level_common_info.pkl: GRIB层级信息grbs_smallgrid_kdtree.pkl: 网格KD树索引
位置: data_sampled/features/
文件说明:
standardize_arr_lite.npz: 标准化参数文件- 包含训练数据的均值和标准差
- 用于数据预处理和后处理
问题: 缺少NCWF小时级数据文件
- 错误信息:
FileNotFoundError: [Errno 2] No such file or directory: '../data_sampled/NCWF/2013_08_01_0100Z.npz' - 原因: 预测脚本需要按小时分割的NCWF文件,但只有聚合的
gridded_storm.npz文件
解决方案: 创建数据预处理脚本
创建文件: generate_hourly_ncwf.py
功能:
# 主要功能
1. 加载 gridded_storm.npz 和 ncwf_info_file.npz
2. 根据时间信息生成文件名格式: YYYY_MM_DD_HHMMZ.npz
3. 提取对应时间点的NCWF数据
4. 保存为独立的小时级文件生成的文件:
2013_08_01_0000Z.npz2013_08_01_0100Z.npz2013_08_01_0200Z.npz- ... (共10个测试文件)
问题: 相对路径错误
- 脚本中使用
../data_sampled/路径 - 从项目根目录运行时路径不匹配
解决方案: 修改Run_RNN_model_Lite.py
# 修改前
self.std_arr_loader = np.load('../data_sampled/features/standardize_arr_lite.npz')
# 修改后
self.std_arr_loader = np.load('data_sampled/features/standardize_arr_lite.npz')涉及的路径修正:
- 标准化数组路径
- NCWF数据根目录
- 测试轨迹文件路径
- 飞行计划文件路径
- 天气数据根目录
- 各种元数据文件路径
问题: 配置文件路径错误
- 原始路径:
configs/encoder_decoder_nn_lite.ini - 实际路径:
src/configs/encoder_decoder_nn_lite.ini
解决方案: 使用正确的配置文件路径
最终命令:
python src/Run_RNN_model_Lite.py --config src/configs/encoder_decoder_nn_lite.ini --train_or_predict predict --name src/nn/session/develop_LiteEncoder_decoder_LSTM_20250710-133856/model.ckpt-2499运行结果:
- 退出码: 0 (成功)
- TensorFlow警告: 版本兼容性提示,不影响功能
- 生成预测结果图像
功能: 主要运行脚本
- 模型加载和初始化
- 数据预处理
- 预测执行
- 结果可视化
关键类:
RNNModelLite: 主要模型类DatasetSample: 数据集处理类
功能: 数据集处理模块
- 飞行轨迹数据加载
- 天气数据集成
- 特征工程
功能: 神经网络架构定义
- LSTM编码器-解码器结构
- 注意力机制
- 损失函数定义
功能: 特征处理工具
- NCWF文件名匹配:
match_ncwf_fname() - 特征立方体生成
- 数据标准化
- 编码器: LSTM层,处理历史轨迹和天气数据
- 解码器: LSTM层,生成未来轨迹预测
- 特征融合: 集成飞行计划、天气、轨迹特征
- 历史飞行轨迹: GPS坐标、高度、速度
- 天气数据: NCWF雷达数据、NAM模型数据
- 飞行计划: 预定路径、时间信息
- 未来轨迹点预测
- 可视化图像(8个样本)
生成文件:
generated_samp1.png~generated_samp8.png: 8个预测轨迹样本original_fp_track.png: 原始飞行计划轨迹对比downsample_fp_track.png: 下采样轨迹feature_cube_path.png: 特征立方体路径可视化
- 时间序列对齐: 确保飞行数据与天气数据时间同步
- 多源数据融合: 集成GPS轨迹、天气雷达、数值天气预报
- 特征标准化: 处理不同量纲的特征数据
- 序列到序列架构: 适合轨迹预测任务
- 注意力机制: 关注重要的历史信息
- 多模态输入: 处理异构数据源
- 模块化设计: 清晰的代码结构
- 配置管理: 灵活的参数配置
- 错误处理: 完善的异常处理机制
| 问题类型 | 具体问题 | 解决方案 | 影响 |
|---|---|---|---|
| 数据缺失 | NCWF小时级文件不存在 | 创建数据预处理脚本 | 中等 |
| 路径配置 | 相对路径错误 | 修改脚本中的路径引用 | 低 |
| 配置文件 | 配置文件路径错误 | 定位正确的配置文件 | 低 |
| 版本兼容 | TensorFlow API警告 | 确认为兼容性警告,不影响功能 | 无 |
- 成功运行: DeepTP模型预测功能正常工作
- 数据完整: 所有必需的数据文件已准备就绪
- 结果输出: 生成了8个飞行轨迹预测样本
- 文档完善: 详细记录了运行过程和问题解决方案
- 性能优化: 考虑使用GPU加速训练和预测
- 数据扩展: 增加更多时间段的训练数据
- 模型改进: 尝试更先进的深度学习架构
- 实时预测: 开发实时轨迹预测系统
报告生成时间: 2025年7月10日
项目状态: 运行成功
技术栈: Python, TensorFlow, NumPy, Pandas







