Files
pbf/PBF_ANALYSIS_DATABASE_TABLES.md
2026-03-17 19:48:15 +08:00

635 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# pbf_analysis 数据库表功能说明
## 1. 目的
这份文档说明当前 `pbf_analysis` 数据库中各张 NavSea 相关表的用途、所处阶段、与当前工程的关系。
目标是让后续接手的人能快速回答这些问题:
- 哪些表是原始解析结果
- 哪些表是语义分类与归层结果
- 哪些表是规则注册表
- 哪些表是检测/碰撞/航行分析专题视图
- 哪些表是样式分析与渲染审计结果
- 哪些表是历史分析或中间产物
## 2. 总体分层
当前 `pbf_analysis` 里的表可以按用途分成 6 类:
1. 原始与基础解析层
2. 语义分类与归层层
3. 几何与空间支撑层
4. 规则注册与映射层
5. 样式分析与渲染审计层
6. 业务专题与异常分析层
说明:
- `BASE TABLE` 表示实体表
- `VIEW` 表示视图
- `table_rows` 为 MySQL 估计值,仅用于了解量级
## 3. 关键原则
当前数据库不是只存“最终结果”,而是同时承担四类职责:
- 保存原始解析和展平结果
- 保存分类和标准化结果
- 保存可追溯规则注册表
- 保存审计与专题查询结果
后续开发应优先遵循:
- 映射规则尽量收口到规则表
- 审计结果进专门审计表
- 原始值与标准值并存,避免不可逆覆盖
## 4. 表分组说明
### 4.1 原始与基础解析层
这些表主要用于把原始 `pbf` 解码成可查询的结构化数据。
#### `features`
- 类型:`BASE TABLE`
- 估计行数:`6653014`
- 关键字段:
- `id, z, x, y, vt_layer, geom_type`
- 用途:
- 保存原始瓦片的基础 feature 索引
- 作为很多后续表的原始主干
#### `properties`
- 类型:`BASE TABLE`
- 估计行数:`22213975`
- 关键字段:
- `feature_id, k, v`
- 用途:
- 存原始属性键值对
- 便于后续抽取 `fid``分類番号``名称` 等字段
#### `at_attributes`
- 类型:`BASE TABLE`
- 估计行数:`6674189`
- 关键字段:
- `feature_id, k, v`
- 用途:
- 拆分原始 `at` 属性集合
- 为分类、渲染兼容、规则归纳提供细粒度字段来源
#### `feature_flat`
- 类型:`VIEW`
- 关键字段:
- `feature_id, vt_layer, class_id, fid, at`
- 用途:
- 对原始 feature 做便于分析的展平视图
- 常用于快速查看对象分类号和 `fid`
#### `feature_semantic`
- 类型:`BASE TABLE`
- 估计行数:`6367524`
- 关键字段:
- `feature_id, z, x, y, vt_layer, geom_type, class_name, shape_name, layer_name`
- 用途:
- 原始对象语义的早期抽取层
- 为后续 taxonomy 和 render 分析提供基础口径
#### `feature_geojson_lookup`
- 类型:`BASE TABLE`
- 估计行数:`6636967`
- 关键字段:
- `z, x, y, feature_id, fid, vt_layer, geom_type`
- 用途:
- 做 feature 与瓦片实例的查询映射
- 便于回查到具体 tile
### 4.2 几何与空间支撑层
这些表负责把原始 feature 补成可空间分析的对象。
#### `feature_geometry_stage`
- 类型:`BASE TABLE`
- 估计行数:`13597637`
- 关键字段:
- `feature_id, geometry_wkt`
- 用途:
- 几何导入与中间转换阶段表
- 为后续空间启用、几何核查服务
#### `navsea_feature_geometry`
- 类型:`BASE TABLE`
- 估计行数:`6685117`
- 关键字段:
- `feature_id, geometry, geometry_source`
- 用途:
- NavSea 当前正式使用的 feature 几何表
- 支撑碰撞、空间专题和检测视图
#### `geometry_consistency`
- 类型:`BASE TABLE`
- 估计行数:`327`
- 关键字段:
- `canonical_object_type, geometry_type, feature_count, geometry_consistency_status`
- 用途:
- 统计某类对象的几何类型是否符合预期
#### `geometry_consistency_audit`
- 类型:`BASE TABLE`
- 估计行数:`331`
- 关键字段:
- `canonical_object_type, geometry_type, feature_count, geometry_consistency_status`
- 用途:
-`geometry_consistency` 类似,用于审计记录与复核
#### `object_geometry_allowlist`
- 类型:`BASE TABLE`
- 估计行数:`310`
- 关键字段:
- `canonical_object_type, geometry_type, rule_source, is_allowed, notes`
- 用途:
- 定义哪些对象类型允许哪些几何类型
- 是 geometry 审计的规则依据之一
### 4.3 语义分类与归层层
这些表描述“对象是什么”和“应该归到哪一层”。
#### `object_catalog`
- 类型:`BASE TABLE`
- 估计行数:`319`
- 关键字段:
- `layer_name, class_name, shape_name, vt_layer, geom_type, feature_count`
- 用途:
- 原始对象目录
- 手工 taxonomy 审查和统计的基础表
#### `object_type_candidates`
- 类型:`BASE TABLE`
- 估计行数:`6473314`
- 关键字段:
- `feature_id, object_type_source, object_type, vt_layer, geom_type`
- 用途:
- 某个 feature 可能属于哪些对象类型的候选集合
- 是 taxonomy 判定前的候选层
#### `object_type_stats`
- 类型:`BASE TABLE`
- 估计行数:`255`
- 关键字段:
- `object_type, geom_type, feature_count`
- 用途:
- 对候选对象类型做统计
#### `canonical_object_rules`
- 类型:`BASE TABLE`
- 估计行数:`221`
- 关键字段:
- `canonical_object_type, canonical_family, classification_basis, source_layer_scope, ...`
- 用途:
- 旧版人工整理的对象级归类规则汇总表
- 偏分析结果,不是最新规则注册表
#### `canonical_layer_rules`
- 类型:`BASE TABLE`
- 估计行数:`49`
- 关键字段:
- `source_layer, semantic_granularity, canonical_family, render_strategy, ...`
- 用途:
- 旧版人工整理的层级归并规则表
- 用于理解老系统如何按层做语义合并
#### `feature_semantic`
- 已在基础层列出
- 同时也是对象语义候选的重要来源
#### `pbf_relayer_candidates`
- 类型:`BASE TABLE`
- 估计行数:`6547009`
- 关键字段:
- `feature_id, z, x, y, source_layer, geom_type, ... canonical_object_type, canonical_family, semantic_key, detection_key, render_layer`
- 用途:
- 当前构建 `pbf` 时最重要的结果表之一
- 保存 feature 经过分类和归层后的候选结果
- `navsea_tile_builder.py` 会结合该表与原始 `pbf` 一起输出新瓦片
#### `pbf_source_object_stats`
- 类型:`BASE TABLE`
- 估计行数:`215`
- 关键字段:
- `source_layer, render_layer, canonical_family, canonical_object_type, geom_type, detection_key, semantic_key, feature_count`
- 用途:
- 统计不同源层在重构后如何分布
#### `pbf_render_compatibility`
- 类型:`BASE TABLE`
- 估计行数:`58`
- 关键字段:
- `source_layer, render_layer, canonical_family, semantic_granularity, style_bound, feature_count, canonical_object_types`
- 用途:
- 评估重构后数据与旧样式兼容性的分析表
#### `pbf_detection_catalog`
- 类型:`BASE TABLE`
- 估计行数:`359`
- 关键字段:
- `detection_key, canonical_family, canonical_object_type, geom_type, feature_count, source_layers`
- 用途:
- 检测视角的对象目录
- 支撑 detection_key 设计与校验
### 4.4 规则注册与映射层
这组表是现在最重要的“规则中心”,用于收口旧版到新版的映射逻辑。
#### `navsea_rule_bundle`
- 类型:`BASE TABLE`
- 估计行数:`1`
- 关键字段:
- `bundle_id, bundle_version, status, effective_date, ...`
- 用途:
- 规则包总表
- 记录当前使用的是哪一套 taxonomy/render/source-layer/field-value 规则
#### `navsea_source_layer_rules`
- 类型:`BASE TABLE`
- 估计行数:`49`
- 关键字段:
- `source_layer_jp, source_layer_std, semantic_granularity, canonical_family, render_strategy, ...`
- 用途:
- 日文 `source-layer` 到标准层名的映射规则
- 是 source-layer 可逆标准化的正式注册表
#### `navsea_field_name_rules`
- 类型:`BASE TABLE`
- 估计行数:`17`
- 关键字段:
- `field_name_jp, field_name_std, field_group_name, keep_in_delivery, keep_in_engineering, ...`
- 用途:
- 旧字段名到标准字段名的映射
- 同时定义字段在哪种输出中保留
#### `navsea_field_value_rules`
- 类型:`BASE TABLE`
- 估计行数:`20`
- 关键字段:
- `rule_id, field_name_jp, legacy_value, standardized_field, standardized_value, ...`
- 用途:
- 旧字段值到新标准字段值的映射
- 例如灯色、表示位置等值映射
#### `navsea_taxonomy_rules`
- 类型:`BASE TABLE`
- 估计行数:`8`
- 关键字段:
- `rule_id, priority, enabled, match_scope, match_expr_json, output_json, canonical_family, canonical_object_type, detection_key_template`
- 用途:
- 正式 taxonomy 规则表
- 定义 feature 在什么条件下被归成哪个 `canonical_object_type`
#### `navsea_render_rules`
- 类型:`BASE TABLE`
- 估计行数:`9`
- 关键字段:
- `rule_id, priority, match_expr_json, output_json, chart_render_type, chart_symbol_code, chart_fill_style, ...`
- 用途:
- 正式渲染语义规则表
- 定义 feature 应输出哪些 `chart_* / hazard_* / area_*` 字段
#### `navsea_mapping_registry_vw`
- 类型:`VIEW`
- 用途:
- 统一查看当前各类映射规则
- 适合人工巡检和管理
#### `navsea_legacy_to_new_mapping_vw`
- 类型:`VIEW`
- 用途:
- 从旧值查新值
- 适合排查“旧字段为什么被映射成这个新字段”
#### `navsea_new_to_legacy_mapping_vw`
- 类型:`VIEW`
- 用途:
- 从新值反查旧值
- 适合可逆追述和规则审计
### 4.5 NavSea 对象字典与能力表
#### `navsea_object_taxonomy`
- 类型:`BASE TABLE`
- 估计行数:`127`
- 关键字段:
- `canonical_object_type, object_family, detection_class, description`
- 用途:
- NavSea 对象字典
- 定义各 canonical object 的基础说明
#### `navsea_object_capabilities`
- 类型:`BASE TABLE`
- 估计行数:`259`
- 关键字段:
- `canonical_object_type, capability`
- 用途:
- 定义对象能力,例如是否用于碰撞、导航参考、缠绕风险等
- 给下游专题视图提供能力标签
### 4.6 样式分析与渲染审计层
#### `style_layers`
- 类型:`BASE TABLE`
- 估计行数:`113`
- 关键字段:
- `layer_id, source_layer, icon, line_color, fill_color, layer_type`
- 用途:
- 解析旧样式后的 layer 清单
#### `style_mapping`
- 类型:`BASE TABLE`
- 估计行数:`42`
- 关键字段:
- `layer_id, source_layer, layer_type, icon, line_color, fill_color, object_type, geom_type, feature_count`
- 用途:
- 分析旧样式的 source-layer 消费关系
#### `style_render_equivalence`
- 类型:`BASE TABLE`
- 估计行数:`53`
- 关键字段:
- `style_layer, feature_count_before, feature_count_after, difference, render_status`
- 用途:
- 用于分析重构前后样式层渲染覆盖是否等价
#### `navsea_render_audit_run`
- 类型:`BASE TABLE`
- 估计行数:`1`
- 关键字段:
- `audit_name, original_style_path, engineering_style_path, original_tile_root, engineering_tile_root, result_count, status_counts_json, ...`
- 用途:
- 存放“最新一次”渲染审计的摘要
- 当前约定只保留最新一轮结果
#### `navsea_render_audit_result`
- 类型:`BASE TABLE`
- 估计行数:`2357346`
- 关键字段:
- `audit_name, object_instance_key, object_instance_id, object_id, fid_legacy, tile_z, tile_x, tile_y, source_layer, status, original_components_json, engineering_components_json`
- 用途:
- 渲染审计结果明细表
- 可按 `fid_legacy` 追查某个对象在原始样式和工程样式下的渲染差异
### 4.7 业务专题与异常分析层
这组表/视图偏业务消费和专题分析。
#### `navsea_detection_objects`
- 类型:`VIEW`
- 用途:
- 检测对象总视图
- 面向 detection 任务使用
#### `navsea_detection_objects_spatial`
- 类型:`VIEW`
- 用途:
- 检测对象的空间分析视图
#### `navsea_collision_objects`
- 类型:`VIEW`
- 用途:
- 碰撞相关对象视图
#### `navsea_grounding_objects`
- 类型:`VIEW`
- 用途:
- 搁浅风险相关对象视图
#### `navsea_entangle_objects`
- 类型:`VIEW`
- 用途:
- 缠绕风险相关对象视图
#### `navsea_boundary_reference_objects`
- 类型:`VIEW`
- 用途:
- 边界参考对象视图
#### `navsea_route_reference_objects`
- 类型:`VIEW`
- 用途:
- 航路参考对象视图
#### `navsea_navigation_mark_objects`
- 类型:`VIEW`
- 用途:
- 航标专题对象视图
#### `anomaly_navigation_geom`
- 类型:`BASE TABLE`
- 估计行数:`0`
- 用途:
- 导航相关几何异常对象表
#### `anomaly_reef_geom`
- 类型:`BASE TABLE`
- 估计行数:`13`
- 用途:
- 鱼礁/礁石类几何异常对象表
#### `spatial_anomalies`
- 类型:`BASE TABLE`
- 估计行数:`693`
- 关键字段:
- `anomaly_type, affected_feature_count, region_hint, severity`
- 用途:
- 空间异常摘要
#### `classification_validation`
- 类型:`BASE TABLE`
- 估计行数:`177`
- 用途:
- 分类结果验证摘要
#### `detection_catalog_integrity`
- 类型:`BASE TABLE`
- 估计行数:`343`
- 用途:
- 检测目录完整性校验
#### `semantic_validation_summary`
- 类型:`BASE TABLE`
- 估计行数:`1`
- 用途:
- 语义验证总摘要
### 4.8 密度与覆盖统计层
#### `tile_density`
- 类型:`BASE TABLE`
- 估计行数:`65467`
- 关键字段:
- `z, x, y, feature_count`
- 用途:
- 每个 tile 的 feature 密度统计
#### `tile_density_top100`
- 类型:`BASE TABLE`
- 估计行数:`100`
- 用途:
- feature 最密的 top100 tile
#### `tile_layer_density`
- 类型:`BASE TABLE`
- 估计行数:`207315`
- 关键字段:
- `z, x, y, vt_layer, feature_count`
- 用途:
- 按 tile 和 layer 分解的密度统计
## 5. 当前工程最重要的表
如果只看当前构建与审计链路,最重要的是这些:
### 构建时必看
- `pbf_relayer_candidates`
- `navsea_rule_bundle`
- `navsea_source_layer_rules`
- `navsea_field_name_rules`
- `navsea_field_value_rules`
- `navsea_taxonomy_rules`
- `navsea_render_rules`
- `navsea_feature_geometry`
### 审计时必看
- `navsea_render_audit_run`
- `navsea_render_audit_result`
- `style_layers`
- `style_mapping`
- `style_render_equivalence`
### 数据理解时必看
- `object_catalog`
- `pbf_source_object_stats`
- `pbf_detection_catalog`
- `navsea_object_taxonomy`
- `navsea_object_capabilities`
## 6. 当前推荐使用方式
### 想查某个对象为什么被分类成某个新对象
优先查:
- `pbf_relayer_candidates`
- `navsea_taxonomy_rules`
- `navsea_legacy_to_new_mapping_vw`
### 想查某个对象为什么被渲染成某种 `chart_*`
优先查:
- `navsea_render_rules`
- `navsea_mapping_registry_vw`
- 工程版 `pbf` 中对应 feature 的输出字段
### 想查某个对象原始版和工程版渲染是否一致
优先查:
- `navsea_render_audit_result`
- `navsea_render_audit_run`
### 想做碰撞、搁浅、航路专题分析
优先查:
- `navsea_collision_objects`
- `navsea_grounding_objects`
- `navsea_route_reference_objects`
- `navsea_navigation_mark_objects`
## 7. 维护建议
当前数据库里同时有“旧分析表”和“新规则注册表”,后续维护建议如下:
- 正式规则源以 `tasks/pbf/mappings/*.yaml` 为主
- 数据库规则表作为运行时注册中心
- 不要再把同一套逻辑分散写进多个临时分析表
- 新增规则时优先更新:
- `navsea_rule_bundle`
- `navsea_source_layer_rules`
- `navsea_field_name_rules`
- `navsea_field_value_rules`
- `navsea_taxonomy_rules`
- `navsea_render_rules`
## 8. 与 Git 管理的关系
建议把下面这些内容一起纳入项目 Git
- 本文档
- `tasks/pbf/` 下的规范文档
- `tasks/pbf/mappings/` 下的规则源文件
- `navsea_mapping_registry_sync.py`
- `navsea_tile_builder.py`
- `navsea_render_audit.py`
这样数据库中的规则、代码中的构建逻辑、审计流程就能形成完整闭环。