ctc_poc2026/target_table_skills/tm_cluster_area_m.md

44 lines
2.3 KiB
Markdown
Raw Permalink Normal View History

# Skill: tm_cluster_area_m 聚类区域月表计算指导 (融合聚类版)
## 1. 实现目标
基于栅格级指标,通过空间聚类识别弱覆盖连片区域,并融合 OTT 规模指标与 MR 质量指标。
## 2. 计算拓扑 (Topology)
- **计算执行环境****PostGIS (PG)**。
- **基本架构**:采用“锚点聚类 + 空间回填”的两步走策略。
- **详细流程**
1. **Step A (锚点聚类)**:筛选 `tm_grid_coverage_m``indoor_flag = -1` (OTT) 的弱覆盖栅格,执行 `ST_ClusterWithinWin`
2. **Step B (几何生成)**:计算每个 Cluster 的外接矩形 (Envelope) 或凸包 (ConvexHull) 作为区域边界。
3. **Step C (空间回填)**:将生成的区域边界与 MR 侧栅格 (`indoor_flag ∈ {0, 1}`) 进行空间交集关联 (`ST_Intersects`)。
4. **Step D (指标聚合)**:在区域范围内聚合 OTT 用户数与 MR 质差采样点指标。
## 3. 字段映射矩阵 (The Matrix)
| 目标字段 | 类型 | 取值逻辑 | 备注 |
| :--- | :--- | :--- | :--- |
| **`year_month`** | VARCHAR | 原始字段 | - |
| **`cluster_id`** | BIGINT | `ST_ClusterWithinWin(geom_3857, 30)` | 基于 OTT 栅格生成 |
| **`data_type`** | INTEGER | 对应 OTT 数据源标识 | 不产出 MR 独立聚类行 |
| **`grid_count`** | INTEGER | `COUNT(*)` | 仅统计锚点栅格数 |
| **`total_user_count`** | BIGINT | 基于锚点栅格 `approx_count_distinct` 聚合 | 规模指标来自 OTT |
| **`overlap_mrcount`** | BIGINT | **空间关联聚合**`SUM(mr.overlap_mrcount)` | 质量指标来自 MR 回填 |
| **`avg_rsrp`** | DECIMAL | `SUM(totalrsrp) / SUM(rsrpcount)` | 融合全源采样点计算 |
| **`area_wkt`** | TEXT | `ST_AsText(区域几何)` | EPSG:4326 |
## 4. 关键计算原语 (Primitives)
- **空间回填关联**
```sql
SELECT cluster.*, SUM(mr.overlap_mrcount)
FROM tmp_clusters cluster
LEFT JOIN dmk.tm_grid_coverage_m mr
ON ST_Intersects(cluster.geom, mr.grid_geom)
AND mr.indoor_flag IN (0, 1)
GROUP BY ...
```
- **规模过滤**`HAVING COUNT(锚点栅格) > 3`
## 5. 存储与优化规范
- 最终结果存入 PG `tm_cluster_area_m`
- **注意**:目标表结构中不包含 `indoor_flag`,该维度仅在中间聚类过程中作为隔离手段(若需要)。
- 必须对生成的 `area_geom` 建立 GIST 空间索引。