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` 生成的地图预览: ![覆盖地图预览](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/51f36428ac214907.png) ## 解决的问题 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, 安全规则引擎, 射频优化, 无后门, 覆盖分析, 路测分析, 逆向工具, 通信工程