CollisionAvoidanceSystem/doc/design/directory_structure.md
2025-04-29 14:30:24 +08:00

5.9 KiB
Raw Blame History

碰撞避免系统目录结构说明

本文档描述了碰撞避免系统项目的目录结构及各个目录的功能和用途。

1. 根目录结构

CollisionAvoidanceSystem/
├── doc/                    # 文档目录
├── src/                    # 源代码目录
├── target/                 # 编译输出目录
├── .idea/                  # IDE配置
├── .mvn/                   # Maven包装器配置
├── .git/                   # Git版本控制
├── pom.xml                 # Maven项目配置
├── mvnw / mvnw.cmd         # Maven包装器脚本
├── README.md               # 项目说明
├── VERSION.txt             # 版本信息
├── change_log.md           # 变更日志
├── development_log.md      # 开发日志
├── .gitignore              # Git忽略配置
└── .gitattributes          # Git属性配置

2. 源代码目录结构 (src)

src/
├── main/                   # 主要源代码
│   ├── java/               # Java源代码
│   │   └── com/
│   │       └── dongni/
│   │           └── collisionavoidance/    # 应用程序主包
│   └── resources/          # 配置文件和静态资源
│       ├── config/           # 特定配置文件 (如 airport_roads.yaml)
│       └── static/           # 静态Web资源
└── test/                   # 测试源代码

3. 应用程序主包结构 (com.dongni.collisionavoidance)

com.dongni.collisionavoidance/
├── CollisionAvoidanceApplication.java    # 应用程序入口类
├── common/                               # 通用组件目录
│   ├── model/                            # 核心移动对象等数据模型
│   └── config/                           # 通用配置 (较少使用,优先模块内配置)
├── config/                               # 应用程序配置
│   ├── properties/                       # 配置属性映射类 (POJOs)
│   ├── RoadNetworkConfig.java            # 道路网络配置加载类
│   └── YamlPropertySourceFactory.java    # YAML加载工厂类
│   └── ... (其他配置类如 RedisConfig)
├── controller/                           # 控制器层 (REST API)
├── dataCollector/                        # 数据采集模块
├── dataProcessing/                       # 数据处理模块
├── roads/                                # 新增:道路网络模块
│   ├── model/                            # 道路网络运行时模型
│   └── service/                          # 道路网络服务
└── webSocket/                            # WebSocket通信模块

4. 数据模型目录

4.1 通用数据模型 (common/model)

包含系统核心的、跨模块共享的数据结构:

common/model/
├── Aircraft.java
├── GeoPosition.java
├── MovementState.java
├── MovingObject.java
├── MovingObjectType.java
├── SpecialVehicle.java
├── UnmannedVehicle.java
└── Velocity.java

4.2 道路网络数据模型 (roads/model)

包含道路网络模块内部使用的运行时数据结构:

roads/model/
├── RoadInfo.java                    # 运行时道路信息 (含JTS对象)
└── RoadDirectionality.java            # 道路方向枚举

5. 各模块功能说明

5.1 通用数据模型 (common/model)

数据模型模块定义了系统中使用的所有数据结构:

  • MovingObject: 所有移动物体的抽象基类,定义共有属性和行为
  • Aircraft: 代表航空器的具体实现类
  • SpecialVehicle: 代表特勤车辆的具体实现类
  • UnmannedVehicle: 代表无人车的具体实现类
  • GeoPosition: 表示地理位置的数据结构
  • Velocity: 表示速度和局部坐标系位置信息的数据结构
  • MovementState: 封装移动物体在特定时刻的完整状态
  • MovingObjectType: 定义了系统支持的移动物体类型的枚举

5.2 数据采集模块 (dataCollector)

负责从各种数据源获取移动物体的实时位置和状态信息:

  • 航空器数据采集ADS-B、雷达等
  • 特勤车辆数据采集GPS、地面雷达等
  • 无人车数据采集(车载传感器等)

5.3 数据处理模块 (dataProcessing)

处理和分析采集到的数据:

  • 轨迹计算和预测
  • 碰撞风险评估
  • 数据质量检查和过滤
  • 历史数据管理和分析

5.4 控制器层 (controller)

提供RESTful API接口用于

  • 数据查询和检索
  • 系统配置和管理
  • 状态报告和监控

5.5 WebSocket模块 (webSocket)

提供实时通信功能:

  • 推送实时位置更新
  • 发送碰撞警告
  • 支持客户端实时监控

5.6 配置模块 (config)

包含应用程序的配置类和配置加载机制:

  • config/properties: 存放用于绑定配置文件的 POJO 类 (例如 AirportRoadsProperties)。
  • 系统参数配置、Bean 配置 (如 RedisConfig, ThreadPoolConfig)。
  • 特定配置加载器 (如 RoadNetworkConfig, YamlPropertySourceFactory)。
  • 服务注册、安全、数据库连接等配置。

5.7 道路网络模块 (roads)

新增模块,负责管理和查询机场静态道路网络信息:

  • roads/model: 定义运行时的道路数据结构 (RoadInfo),包含 JTS 几何对象和处理过的属性。
  • roads/service: 提供 RoadNetworkService,负责加载 airport_roads.yaml 配置,初始化道路数据和空间索引,并提供查询接口(如根据位置查找道路、获取限速等)。

6. 文档目录 (doc)

包含系统相关的设计文档和说明文档:

doc/
├── design_document.md          # 系统数据结构设计文档
├── directory_structure.md      # 目录结构说明文档(本文档)
├── cad_to_yaml_guide.md        # CAD转YAML操作指南
└── road_network_design.md      # 道路网络配置集成设计方案