保存一些文档修改

This commit is contained in:
Tian jianyong 2025-04-29 14:33:04 +08:00
parent cb526cc84b
commit 8357a38156
6 changed files with 1810 additions and 485 deletions

10
.gitignore vendored
View File

@ -31,3 +31,13 @@ build/
### VS Code ###
.vscode/
### macOS ###
.DS_Store
### Python ###
__pycache__/
*.pyc
*.pyo
*.pyd
.venv/

View File

@ -2,6 +2,11 @@
本文档记录碰撞避免系统的所有重要变更,包括新功能、改进和修复。
## [0.5.0] - 2025-04-29
### 新增
- 通过 `geojson_to_yaml.py` 脚本将GIS 系统导出的道路地理信息文件转换为 YAML 格式的配置文件`airport_roads.yaml`
## [0.4.0] - 2025-04-21
### 新增

View File

@ -1,204 +0,0 @@
# 碰撞避免系统数据结构设计文档
## 1. 数据结构概述
本文档描述碰撞避免系统中的核心数据结构设计及其关系。系统采用面向对象设计方法,通过继承和组合实现不同移动物体类型的统一管理。
## 2. 核心数据结构设计
### 2.1 类图
```mermaid
classDiagram
class MovingObject {
+GeoPosition currentPosition
+Velocity velocity
+double heading
+long timestamp
+Deque~MovementState~ stateHistory
+int MAX_HISTORY
+double maxSpeed
+MovingObjectType type
}
class Aircraft {
+String flightNo
+Long trackNumber
}
class SpecialVehicle {
+String vehicleNo
}
class UnmannedVehicle {
+String transId
+String vehicleId
}
class GeoPosition {
+double latitude
+double longitude
+double altitude
}
class Velocity {
+double x, y, z
+double vx, vy, vz
+double confidence
+double cachedAcceleration
+getSpeed()
}
class MovementState {
+GeoPosition position
+Velocity velocity
+double heading
+long timestamp
+DataQuality dataQuality
}
class MovingObjectType {
<<enumeration>>
AIRCRAFT
SPECIAL_VEHICLE
UNMANNED_VEHICLE
}
MovingObject <|-- Aircraft
MovingObject <|-- SpecialVehicle
MovingObject <|-- UnmannedVehicle
MovingObject "1" *-- "1" GeoPosition
MovingObject "1" *-- "1" Velocity
MovingObject "1" *-- "0..*" MovementState
MovingObject "1" *-- "1" MovingObjectType
MovementState "1" *-- "1" GeoPosition
MovementState "1" *-- "1" Velocity
```
## 3. 数据结构详解
### 3.1 基础抽象类 - MovingObject
`MovingObject` 是系统中所有移动物体的基类,定义了共有属性:
- **currentPosition**: 当前地理位置,使用 `GeoPosition` 类表示,包含经度、纬度和高度信息
- **velocity**: 局部坐标系位置消息xy坐标、速度等等使用 `Velocity` 类表示,包含三维速度向量
- **heading**: 航向角度,以度为单位
- **timestamp**: 时间戳,表示数据最后更新时间
- **stateHistory**: 历史状态队列,存储 `MovementState` 对象,用于轨迹分析
- **MAX_HISTORY**: 历史记录最大保存数量默认为30
- **maxSpeed**: 最大速度限制
- **type**: 移动物体类型,使用 `MovingObjectType` 枚举
### 3.2 具体移动物体类型
系统实现了三种具体的移动物体类型,它们都继承自 `MovingObject` 抽象类:
#### 3.2.1 航空器 (Aircraft)
航空器特有属性:
- **flightNo**: 航班号,字符串类型,用于唯一标识航班
- **trackNumber**: 航迹号,长整型,用于雷达跟踪标识
构造函数接收位置参数(纬度、经度、高度)和时间戳,初始化基类属性。
#### 3.2.2 特勤车辆 (SpecialVehicle)
特勤车辆特有属性:
- **vehicleNo**: 车牌号,字符串类型,用于唯一标识车辆
构造函数接收位置参数(纬度、经度)、时间戳、速度和方向,并据此计算速度向量。特勤车辆被标记为"不可控"对象,表示系统只能监控而不能控制其行为。
#### 3.2.3 无人车 (UnmannedVehicle)
无人车特有属性:
- **transId**: 消息唯一ID用于消息跟踪
- **vehicleId**: 车辆ID用于唯一标识无人车
构造函数接收位置参数(经度、纬度)、航向和速度,并据此计算速度向量。无人车被标记为"可控"对象,表示系统可以向其发送控制指令。
### 3.3 辅助数据结构
#### 3.3.1 地理位置 - GeoPosition
`GeoPosition` 表示三维空间中的位置:
- **latitude**: 纬度,单位为度
- **longitude**: 经度,单位为度
- **altitude**: 高度,单位为米
#### 3.3.2 速度 - Velocity
`Velocity` 描述局部坐标系的位置消息:
- **x, y, z**: 三维坐标系中的位置
- **vx, vy, vz**: 三个方向上的速度分量,单位为米/秒
- **confidence**: 速度计算置信度取值范围0-1
- **cachedAcceleration**: 加速度计算结果缓存
- **getSpeed()**: 计算速度标量的方法
#### 3.3.3 运动状态 - MovementState
`MovementState` 封装了移动物体在特定时刻的完整状态:
- **position**: 地理位置GeoPosition类型
- **velocity**: 局部坐标系的位置消息Velocity类型
- **heading**: 航向,度数
- **timestamp**: 时间戳
- **dataQuality**: 数据质量枚举,表示数据可靠性
#### 3.3.4 移动物体类型 - MovingObjectType
`MovingObjectType` 是一个枚举类型,定义了系统支持的移动物体类型:
- **AIRCRAFT**: 航空器(飞机)
- **SPECIAL_VEHICLE**: 特勤车辆(不可控)
- **UNMANNED_VEHICLE**: 无人车(可控)
### 3.4 静态环境数据结构 - 道路网络
除了移动物体,系统还需要处理静态环境信息,特别是机场的道路网络。相关数据结构位于 `com.dongni.collisionavoidance.roads.model` 包下。
#### 3.4.1 道路信息 - RoadInfo
`RoadInfo` 类封装了系统运行时使用的单条道路信息。它由 `RoadNetworkService` 在初始化时根据配置文件 (`airport_roads.yaml`) 创建,包含处理后的属性和用于空间计算的 JTS 几何对象。关键属性包括:
- **id**: 道路的唯一标识符 (String)。
- **name**: 道路名称 (String)。
- **speedLimitMetersPerSecond**: 该道路的限速,已统一为米/秒 (Double)。
- **directionality**: 道路方向性,使用 `RoadDirectionality` 枚举表示。
- **heightLimitMeters**, **widthLimitMeters**: 限高和限宽,已统一为米 (Double)。
- **prohibited**: 是否禁止通行 (boolean)。
- **centerline**: 道路中心线的 JTS `LineString` 对象,用于路径分析和距离计算。
- **boundary**: 道路边界范围的 JTS `Polygon` 对象,通过对中心线进行缓冲计算得到,用于判断车辆是否在道路上。
- **relatedZones**: 与该道路关联的区域 ID 列表 (List<String>)。
#### 3.4.2 道路方向性 - RoadDirectionality
`RoadDirectionality` 是一个枚举类型,定义了道路的通行方向:
- **ONE_WAY**: 单向通行。
- **TWO_WAY**: 双向通行。
- **UNKNOWN**: 未知或未指定。
## 4. 数据流转机制
### 4.1 历史状态存储机制
每个 `MovingObject` 对象维护一个 `stateHistory` 队列,用于存储历史状态:
1. 当对象位置或速度更新时,系统创建新的 `MovementState` 对象
2. 新的状态对象被添加到 `stateHistory` 队列
3. 如果队列长度超过 `MAX_HISTORY`默认30最旧的记录会被移除
4. 历史记录用于轨迹分析、异常检测和预测计算
```mermaid
sequenceDiagram
participant 系统
participant MovingObject
participant stateHistory队列
系统->>MovingObject: 更新位置和速度
MovingObject->>MovingObject: 创建MovementState对象
MovingObject->>stateHistory队列: 添加新状态记录
alt 队列长度 > MAX_HISTORY
stateHistory队列->>stateHistory队列: 移除最旧记录
end
```

View File

@ -34,7 +34,7 @@
1. 打开 QGIS。
2. 通过菜单 `图层 (Layer)` -> `添加图层 (Add Layer)` -> `添加矢量图层 (Add Vector Layer...)` 打开数据源管理器。
3. 在 `矢量 (Vector)` 选项卡中,选择 `文件 (File)` 类型。
4. 点击 `源 (Source)` 旁边的 `...` 按钮,浏览并选择你的 `.dxf` 或 `.dwg` 文件。
4. 点击 `源 (Source)` 旁边的 `...` 按钮,浏览并选择你的 `.dwg` 或 `.dxf` 文件。
5. 点击 `添加 (Add)`。QGIS 可能会询问要导入哪些图层(如果 CAD 文件包含多个图层),选择包含道路中心线和参考点的图层。
6. 关闭数据源管理器。你现在应该能在 QGIS 地图中看到 CAD 图纸的内容。此时,它的坐标系还是未知的或局部的。
@ -43,8 +43,12 @@
这是将 CAD 局部坐标转换为地理坐标的关键步骤。
1. **打开地理配准器**: 通过菜单 `图层 (Layer)` -> `地理配准器 (Georeferencer...)` 打开工具。
2. **加载 CAD 图层**: 在地理配准器窗口中,点击 `打开栅格 (Open Raster)` 按钮(虽然 CAD 是矢量,但通常在此工具中作为背景加载)。选择你刚刚导入到 QGIS 主窗口中的 CAD 图层。(如果无法直接加载矢量,可能需要先将 CAD 图层导出为图像格式如 TIFF再加载该图像进行配准但这会损失矢量特性优先尝试直接加载
* *备选方案*:如果直接加载 CAD 困难,可以在 QGIS 主窗口将 CAD 图层导出为高分辨率图像(`项目` -> `导入/导出` -> `导出地图为图像`),然后在地理配准器中加载该图像。
2. **准备并加载要配准的图像**:
* 由于地理配准器主要处理栅格图像,你需要先将导入的 CAD 图层视图导出为图像文件。
* 在 QGIS 主窗口,调整视图以清晰显示 CAD 图纸内容和参考点。
* 通过菜单 `项目 (Project)` -> `导入/导出 (Import/Export)` -> `导出地图为图像 (Export Map to Image)...`
* 设置合适的范围(例如 `地图画布范围` 或 `计算自图层` -> 选择 CAD 图层),并确保设置一个**足够高的分辨率**(例如 300 DPI 或更高)以保证后续精确选取控制点。点击 `保存 (Save)`,选择文件名(如 `cad_export.tif`)和位置。
* **加载图像到地理配准器**: 回到地理配准器窗口,点击工具栏上的 `打开栅格 (Open Raster)` 按钮。在弹出的文件选择窗口中,找到并选择你刚刚导出的图像文件 (`cad_export.tif`)。
3. **添加地面控制点 (GCPs)**:
* 在地理配准器地图窗口中,找到你的第一个已知控制点(例如,某个建筑的角点)。
* 使用工具栏上的 `添加点 (Add Point)` 工具,在图上精确点击该点。
@ -53,7 +57,7 @@
* 重复此过程,为所有已知的控制点添加映射关系(至少 3 个,推荐 4 个以上分布均匀。GCP 表中的 `dX`, `dY``残差 (Residual)` 列可以帮助判断点的精度,残差值越小越好。
4. **设置变换参数**:
* 点击工具栏上的 `变换设置 (Transformation settings)` 按钮(黄色齿轮图标)。
* **变换类型 (Transformation type)**: 根据控制点数量和分布选择。`线性 (Linear)` 适用于只有少数点或简单变换;`Helmert``多项式1/2/3 (Polynomial 1/2/3)` 更常用,能处理更复杂的形变。`薄板样条 (Thin Plate Spline)` 适用于需要局部精确变形的情况。可以先尝试 `多项式 1``2`
* **变换类型 (Transformation type)**: 根据控制点数量和分布选择。`线性 (Linear)` 适用于只有少数点或简单变换;`Helmert`能做平移、旋转等变换。 `多项式1/2/3 (Polynomial 1/2/3)` 能处理更复杂的形变,但可能会导致变形过大。`薄板样条 (Thin Plate Spline)` 适用于需要局部精确变形的情况。线性和 Helmert 都不改变地图本身形状。这里选择`Helmert`
* **重采样方法 (Resampling method)**: 如果是基于栅格配准,选 `最近邻 (Nearest neighbour)`
* **目标坐标系 (Target CRS)**: **极其重要!** 点击 `选择 CRS (Select CRS)` 按钮,搜索并选择 `WGS 84` (其 EPSG 代码通常是 **4326**)。
* **输出栅格 (Output raster)**: 指定配准后文件的保存位置和名称。建议保存为 GeoPackage (`.gpkg`) 或 GeoTIFF (`.tif`) 格式。
@ -62,46 +66,120 @@
5. **执行地理配准**: 点击工具栏上的 `开始地理配准 (Start Georeferencing)` 按钮(绿色播放图标)。
6. 配准完成后,关闭地理配准器。新的、已地理配准的图层会添加到 QGIS 主窗口。你可以通过添加一个在线地图背景(如 OpenStreetMap来验证配准效果是否准确。
## 7. 数字化道路中心线
## 6.5 矢量图层仿射初步变换(推荐)
现在,以地理配准后的图层为底图,绘制道路中心线并添加属性。
如果你的CAD道路中心线图层坐标范围与地理底图如配准后的栅格或OSM相差极大建议先用QGIS的"仿射变换"工具将其大致平移、缩放到目标区域:
1. **创建新图层**:
* 菜单 `图层 (Layer)` -> `创建图层 (Create Layer)` -> `新建 GeoPackage 图层 (New GeoPackage Layer...)` (推荐) 或 `新建 Shapefile 图层 (New Shapefile Layer...)`
* **文件名**: 指定保存位置和文件名,例如 `airport_roads.gpkg`
* **图层名称**: 例如 `roads_centerline`
* **几何图形类型**: 选择 `线串 (LineString)``多段线 (MultiLineString)`
* **坐标系**: **必须选择 WGS 84 (EPSG:4326)**
* **定义属性字段**: 在 `新建字段 (New Field)` 部分,根据 `airport_roads.yaml` 的结构添加所需的字段。例如:
* `road_id` (类型: 文本 Text/String)
* `name` (类型: 文本 Text/String)
* `width_value` (类型: 十进制数 Decimal/Real)
* `width_unit` (类型: 文本 Text/String, 默认值可设为 'm')
* `speed_limit_value` (类型: 整数 Integer 或 十进制数 Decimal)
* `speed_limit_unit` (类型: 文本 Text/String, 默认值可设为 'km/h')
* `directionality` (类型: 文本 Text/String)
* `prohibited` (类型: 布尔 Boolean 或 整数 Integer 0/1)
* `height_limit_value` (类型: 十进制数 Decimal)
* `height_limit_unit` (类型: 文本 Text/String, 默认值 'm')
* `width_limit_value` (类型: 十进制数 Decimal)
* `width_limit_unit` (类型: 文本 Text/String, 默认值 'm')
* `related_zones` (类型: 文本 Text/String, 用于存储关联区域 ID 列表,可能需要后续处理)
* 点击 `添加到字段列表 (Add to Fields List)` 添加每个字段。
* 点击 `确定 (OK)` 创建图层。
2. **开始编辑**:
* 在 `图层 (Layers)` 面板中选中新建的 `roads_centerline` 图层。
* 点击工具栏上的 `切换编辑模式 (Toggle Editing)` 按钮(铅笔图标)。
* 点击 `添加线要素 (Add Line Feature)` 按钮(带绿色加号的线图标)。
3. **绘制道路**:
* 将鼠标移动到地理配准后的底图上,沿着一条道路的中心线开始点击。
* **左键单击** 添加顶点。对于**曲线**,需要**密集地添加顶点**来近似。
* 完成一条道路的绘制后,**右键单击** 结束绘制。
4. **填充属性**:
* 右键单击结束绘制后,会弹出一个属性表单窗口。
* 为刚刚绘制的道路填入对应的属性值(`road_id`, `name`, `width_value` 等)。
* 点击 `确定 (OK)`
* 重复步骤 3 和 4绘制并录入所有需要的道路。
5. **保存编辑**: 完成绘制后,再次点击 `切换编辑模式 (Toggle Editing)` 按钮,并在提示时选择 `保存 (Save)`
1. 在图层面板中选中你的道路中心线图层(如`roads_centerline`)。
2. 菜单栏选择 `矢量``几何工具``仿射变换`Affine transform
3. 在弹出的对话框中填写参数(以青岛机场的 CAD 图纸为例):
- Translation (x-axis)`119.98`(经度方向平移,单位度)
- Translation (y-axis)`36.24`(纬度方向平移,单位度)
- Scale factor (x-axis)`0.00001`
- Scale factor (y-axis)`0.00001`
- Rotation around z-axis保持`0.0`EPSG:4326下此参数无效
- 其他参数保持默认
4. 输出选择"创建临时图层"或指定保存位置。
5. 点击"运行",生成大致对齐的新图层。
> **注意:** 仿射变换只做粗略对齐,后续还需精确配准。
## 6.6 用Vector Bender插件两对点法精确对齐
1. 安装并启用Vector Bender插件。
2. 创建一条线图层作为Pairs layer点对图层或直接使用 Vector Bender 的 Pairs layer 图层,并切换到编辑模式。
3. 在Pairs layer中用"添加线要素"工具,分别绘制两条线:
- 每条线的起点为仿射变换后道路图层上的特征点如交叉口、端点终点为底图如配准栅格或OSM上对应的真实地理位置。
- 推荐选择分布较远、方向不同的两对点。
4. 保存并退出编辑模式。
5. 打开Vector Bender插件
- Layer to bend 选择仿射变换后的道路图层
- Pairs layer 选择刚才绘制的点对图层
- 勾选"Change pairs to pins"
- 点击"Run"
6. 插件会自动完成平移、缩放、旋转,使两对点完全重合,实现道路图层与底图的精准对齐。
7. 检查结果,确认道路几何关系和位置均正确。
> **注意:** 只用两对点即可实现无畸变的仿射对齐,几何关系不会被破坏。
## 7. 数字化道路中心线(修正版)
> **重要:** 请务必先完成仿射变换和Vector Bender两对点精确对齐再进行属性补充、导出等后续操作。
1. 对齐后的道路中心线图层可直接用于属性补充。
2. 如需补充或修改道路,可在该图层上继续编辑。
3. 完成后,右键图层 → 导出 → 要素另存为...选择GeoJSON等格式确保CRS为WGS84。
## 7.1 修改字段属性
在QGIS中可以使用"重构字段"Refactor fields工具来修改字段名和数据类型。
### 7.1.1 修改字段名
1. 打开处理工具箱:
- 菜单 `处理``工具箱`
- 或使用快捷键 Ctrl+Alt+T
2. 搜索并打开"重构字段"工具:
- 在搜索框中输入"重构字段"
- 双击打开工具对话框
3. 设置参数:
- 在"输入图层"下拉列表中选择要修改的图层
- 在字段映射表中:
- 找到要修改的字段
- 双击"名称"列,输入新的字段名
- 在"输出文件"中设置保存位置
4. 点击"运行"执行修改
### 7.1.2 修改字段数据类型
1. 打开"重构字段"工具(步骤同上)
2. 设置参数:
- 在"输入图层"下拉列表中选择要修改的图层
- 在字段映射表中:
- 找到要修改的字段
- 双击"类型"列,选择新的数据类型
- 常见类型包括:
- 整数Integer
- 小数Decimal/Real
- 文本String
- 布尔值Boolean
- 在"输出文件"中设置保存位置
3. 点击"运行"执行修改
### 7.1.3 批量修改字段值
使用字段计算器可以批量修改某个字段的所有值:
1. 确保图层处于编辑模式:
- 右键点击图层
- 选择"切换编辑模式"Toggle Editing
2. 打开属性表:
- 右键点击图层
- 选择"打开属性表"Open Attribute Table
3. 使用字段计算器:
- 点击属性表工具栏上的"字段计算器"按钮(计算器图标)
- 在弹出的对话框中:
- 勾选"更新现有字段"Update existing field
- 在下拉列表中选择要修改的字段
- 在表达式框中输入新值(例如:`3.80`
- 点击"确定"
4. 保存修改:
- 检查属性表中的值是否已全部更新
- 点击工具栏上的"保存图层编辑"按钮
- 或右键图层 → "切换编辑模式" → 选择"保存"
> **注意:**
> - 如果只想修改特定记录,可以先使用选择工具选择要修改的记录
> - 修改前建议先备份数据
> - 确保新值的数据类型与字段类型兼容
## 8. 导出数字化道路为 GeoJSON

View File

@ -1,164 +0,0 @@
# 碰撞避免系统目录结构说明
本文档描述了碰撞避免系统项目的目录结构及各个目录的功能和用途。
## 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 # 道路网络配置集成设计方案
```

File diff suppressed because it is too large Load Diff