omidrahimirad/drive-test-rf-coverage-analyzer
GitHub: omidrahimirad/drive-test-rf-coverage-analyzer
LTE/5G 路测 RF 覆盖分析器,通过合成路测数据实现弱覆盖检测、KPI 分类和工程报告自动生成。
Stars: 0 | Forks: 0
# 路测 RF 覆盖分析器
这是一个合成的 LTE/5G 路测分析工具,其表现类似于一个小型的 RF 优化
工具:生成路线、模拟服务小区 KPI、分类覆盖情况、查找
弱覆盖集群,并生成地图和工程报告。
当前验证状态:已通过合成数据验证;真实的运营商路测
验证待定。
运行完整演示:
```
python -m pip install -e ".[dev]"
python -m drive_test_rf.cli demo --samples 1500 --seed 42
```
然后打开 `outputs/coverage_map.html` 并查看
`outputs/rf_analysis_report.md`。
从 `outputs/coverage_map.html` 生成的地图预览:

## 解决的问题
RF 工程师经常需要根据路测日志解释覆盖盲区、小区边界行为、低
SINR、吞吐量差以及会话掉线。真实日志可能
包含运营商敏感的站点、订阅者和位置数据,因此本项目
使用可重现的合成测量数据来安全地演示工作流程。
该项目专为以下人员的作品集审查而构建:RF 工程师、RAN 优化
工程师、网络性能工程师、无线系统工程师、电信
数据分析师以及现场测试 / 路测工程师。
## 工程工作流程
```
Synthetic route + cell grid
|
v
RF model: distance loss, shadowing, cell-border margin, poor zones
|
v
KPI generation: RSRP, RSRQ, SINR, throughput, latency, handovers, drops
|
v
Analysis: RF score, coverage class, weak clusters, cell/technology summaries
|
v
Outputs: CSV summaries, worst locations, interactive map, RF report
```
## 功能
- 慕尼黑周边的公共 GPS 路线以及合成的服务小区。
- LTE、5G NSA 和 5G SA 的 KPI 差异。
- 随服务站点距离和衰减区域变化的 RSRP 衰减。
- 由干扰和小区边界条件引起的 SINR 衰减。
- 与 SINR、RSRP、技术能力及负载相关的吞吐量。
- RF 条件较差时延迟增加。
- 带有服务小区余量和迟滞的切换建模。
- 仅限于较差无线电条件的掉线指标。
- 检测弱覆盖集群,而不是孤立的单样本警报。
- 带有彩色样本、站点标记、弱路段和弹窗的 Folium HTML 地图。
- 带有针对特定路段工程措施的 Markdown RF 报告。
- 用于验证合成 RF 关系的测试,而不仅仅是验证文件创建。
## 输出示例
在使用 1,500 个样本运行演示后,该项目会写入:
- `data/sample_drive_test.csv`
- `outputs/coverage_summary.json`
- `outputs/coverage_summary.csv`
- `outputs/weak_coverage_locations.csv`
- `outputs/worst_rf_locations.csv`
- `outputs/cell_kpi_summary.csv`
- `outputs/technology_summary.csv`
- `outputs/coverage_map.html`
- `outputs/rf_analysis_report.md`
打开 `outputs/coverage_map.html` 以检查路线、弱覆盖集群、服务
站点以及样本级别的 KPI 弹窗。
生成的 `outputs/` 工件是可重现的,除
`outputs/README.md` 外,均被 git 忽略。包含的 `data/sample_drive_test.csv` 是合成的,
大小适合代码库审查,可以使用
以下命令重新生成。
生成的报告中包含的工程发现示例:
- 具有主导服务小区、平均 RSRP/SINR、下行吞吐量、
延迟、切换和掉线情况的弱覆盖集群。
- 当 SINR 较差而 RSRP 仍可用时受限于干扰的备注。
- 基于切换和较低服务小区余量的小区边界观察。
- 良好/优秀与一般/较差样本之间的吞吐量衰减比较。
## KPI 阈值
| KPI | 优秀 | 良好 | 一般 | 较差 |
| --- | --- | --- | --- | --- |
| RSRP | >= -80 dBm | -90 至 -80 dBm | -100 至 -90 dBm | < -100 dBm |
| RSRQ | >= -10 dB | -12 至 -10 dB | -15 至 -12 dB | < -15 dB |
| SINR | >= 20 dB | 13 至 20 dB | 0 至 13 dB | < 0 dB |
最终的覆盖等级基于加权的 RF 得分:
- RSRP:30%
- SINR:25%
- RSRQ:15%
- 下行吞吐量:20%
- 延迟:10%
这是有意设计的,具有可解释性。它不是专有的运营商得分,并且
在进行真实的网络验收工作之前应进行调整。
## 安装说明
```
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
```
使用 `uv`:
```
uv venv
source .venv/bin/activate
uv pip install -e ".[dev]"
```
## 快速入门
生成合成路测数据:
```
python -m drive_test_rf.cli generate-data --output data/sample_drive_test.csv --samples 1500 --seed 42
```
分析输入文件:
```
python -m drive_test_rf.cli analyze --input data/sample_drive_test.csv --output-dir outputs
```
运行完整演示:
```
python -m drive_test_rf.cli demo --samples 1500 --seed 42
```
## 质量检查
```
ruff check .
mypy src
pytest
```
测试套件包括 RF 真实性检查:
- 距离服务站点距离与 RSRP 应呈负相关
- SINR 与下行吞吐量应呈正相关
- 一般/较差的覆盖应具有较低的吞吐量和较高的延迟
- 掉线会话应主要发生在一般/较差的覆盖中
- 切换率应非零,且没有过多的乒乓行为
## 代码库结构
```
src/drive_test_rf/
synthetic_data.py Synthetic route, serving-cell, and KPI generation
kpi_rules.py KPI thresholds, RF score, coverage classes
analyzer.py Route, weak-segment, cell, and technology summaries
validation.py Synthetic RF realism checks
map_visualizer.py Folium coverage map generation
reporting.py Markdown engineering report generation
cli.py Command-line workflow
docs/
methodology.md
kpi_thresholds.md
real_drive_test_ingestion.md
portfolio_notes.md
tests/
test_synthetic_realism.py
...
```
## 真实路测扩展路径
当前的解析器期望由 `synthetic_data.py` 生成的项目 schema。
真实的 TEMS、Nemo、QualiPoc 或扫描仪导出数据稍后可以通过解析器
层添加,该层将供应商特定的列名映射到此内部 schema 中。
该工作必须包括对运营商标识符、站点 ID、IMSI/IMEI
或设备标识符、确切的客户路线以及任何机密网络
配置进行匿名化。请参阅 [docs/real_drive_test_ingestion.md](docs/real_drive_test_ingestion.md)。
## 限制
- 仅限合成数据;尚未进行真实的运营商路测验证。
- 站点位置和小区 ID 仅用于说明。
- 传播逻辑透明且轻量,并非经过校准的规划模型。
- 尚未包含供应商日志解析器。
- 不应根据这些生成的结果做出生产网络决策。
## 后续工作
- 带有显式列映射的 TEMS/Nemo/QualiPoc CSV 解析器适配器。
- 扇区天线模式和方位角感知的主导地位建模。
- PCI 冲突/混淆检查。
- 用于真实 UE 日志的切换失败原因解析。
- 使用负载计数器进行容量与 RF 受限吞吐量的分离。
- 绘制路线距离 KPI 轨迹和 CDF 的导出图。
## 作者
Omid Rahimi
标签:5G/LTE, Python, 安全规则引擎, 射频优化, 无后门, 覆盖分析, 路测分析, 逆向工具, 通信工程