# 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 空间索引。