Files
CM95/docs/CM95到NavSea映射设计报告_v1.md

8.0 KiB
Raw Blame History

CM95 → NavSea PBF 映射设计报告 v1

日期:2026-09-03
状态:PBF-02 / IMPLEMENTATION_DRAFT
测试 AOI:z10/914/385

1. 本轮输入

CM95 MySQL AOI 审计:

AOI Cells                 : 7
AOI Spatial Features      : 3605
Object class/geom groups  : 80
Attribute groups          : 177
Feature samples           : 600

现有 NavSea/NEWPEC 对照 PBF:

z10 tiles : 1
z11 tiles : 4
z12 tiles : 16
total     : 21
observed source-layers : 37

实际 extent:

z10 : 4096
z11 : 4096
z12 : 1048576

因此 CM95 generator 不应把“所有 zoom 固定 extent=4096”当成既有生产事实。首版 generator 必须把 extent 作为显式策略,并在输出审计中记录实际值。

2. CM95 AOI 主要对象

当前 AOI 具备完整的安全对象闭环:

WRECKS  POINT : 480
DEPCNT  LINE  : 451
DEPARE  AREA  : 414
SBDARE  POINT : 287
SLCONS  LINE  : 209
UWTROC  POINT : 176
COALNE  LINE  : 171
LNDARE  AREA  : 159
SLCONS  AREA  : 119
LIGHTS  POINT : 96
OBSTRN  AREA  : 70
ITDARE  AREA  : 69

同时存在 Beacon/Buoy、Bridge、overhead cable、submarine cable、pilot boarding、anchorage 等对象,可覆盖第一阶段 hard-gate。

3. 现有 NavSea PBF 实际契约

当前 21 张参考 PBF 中最主要的 source-layer:

onshore_structure_line           12940
baseline_outline                 2129
baseline_area                    1146
bathymetry_line                  1128
anchor_caution_hazard_point      897
depth_contour                    821
hole_area                        563
land_area                        321
seabed_text_point                273
baseline_line                    234
anchor_caution_hazard_area       172
anchor_caution_hazard_outline    172
onshore_structure_area           137
place_label_land                 136
onshore_structure_point          124

当前 unified style 实际消费 37 个 NavSea source-layer。

参考 PBF 与 style 之间存在少量“PBF 有但当前 style 不消费”的历史层:

depth_contour_overview
route_area
route_outline

因此 CM95 v1 不因为参考 PBF 中存在 route_area 就自动输出它。 例如 FAIRWY 首版保留在工程版,避免违反“只改 tile URL 即可使用当前 style”的目标。

4. 第一版映射覆盖

cm95_to_navsea_v1.yaml 已覆盖本 AOI 全部 80 个 object_class + geometry_type 组合。

映射状态(按组合数):

MAPPED                   33
ENGINEERING_ONLY         12
MAPPED_CONDITIONAL       11
REVIEW_STYLE_GAP         11
COMPOSITE                5
REVIEW_CONDITIONAL       4
ENGINEERING_COMPONENT    1
UNMAPPED_REVIEW          1
DERIVED_LABEL_ONLY       1
MAPPED_DERIVED_POINTS    1

可以直接进入映射/合成实现的 Feature 数:

3239 / 3605 = 89.8%

其余对象没有静默丢弃,全部明确进入:

REVIEW_CONDITIONAL
REVIEW_STYLE_GAP
ENGINEERING_ONLY
ENGINEERING_COMPONENT
UNMAPPED_REVIEW

正式 delivery 不会因为未映射而“假装成功”。

5. Hard-gate 映射

DEPARE

DEPARE AREA
→ baseline_area
→ DRVAL1 / DRVAL2
→ canonical depth range
→ chart_fill_style=depth_zone_*

原 polygon 不重建。

DEPCNT

DEPCNT LINE
→ depth_contour
VALDCO → least_depth_m
VALDCO → chart_label_text

WRECKS

WRECKS POINT
→ navigation_hazard_point
VALSOU present → wreck_surveyed
otherwise       → wreck_submerged_dangerous

Area wreck 保持 area,不降级为 point,并额外派生 boundary 到 navigation_hazard_outline。

UWTROC

UWTROC POINT
→ navigation_hazard_point

WATLEV submerged → rock_submerged
WATLEV awash/drying → rock_awash
VALSOU → least_depth_m

必须保留水上/水下语义。

OBSTRN

Point 与 Area 分开:

POINT → navigation_hazard_point
AREA  → navigation_hazard_area + derived outline

FSHHAV

FSHHAV POINT
→ anchor_caution_hazard_point
→ reef_fish

BRIDGE / CBLOHD / TELPHC / PIPOHD

净空/架空安全对象使用现有:

bridge_structure
clearance_limit_line
clearance_limit_point

存在 VERCLR 时才写净空数值;没有值时不伪造。

6. 助航对象必须合成,而不是简单逐对象输出

本轮最重要的新结论是:

CM93 中:

LIGHTS
BCNLAT
BCNSPP
BOYSPP
RTPBCN
TOWERS
_extgn

可能是同一个现实助航标的多个对象组件。

AOI 样本已经观察到共享:

cell_id + attributes._cm93_relation20_raw

并且共享 relation20 的样本坐标完全一致。

样本证据包括:

  • cell 693 relation20 2273 → BCNLAT, LIGHTS;坐标组数 1
  • cell 693 relation20 2272 → BCNLAT, LIGHTS;坐标组数 1
  • cell 693 relation20 2254 → BCNLAT, LIGHTS;坐标组数 1
  • cell 693 relation20 2266 → LIGHTS, _extgn;坐标组数 1
  • cell 693 relation20 2270 → LIGHTS, _extgn;坐标组数 1
  • cell 693 relation20 2276 → LIGHTS, _extgn;坐标组数 1
  • cell 693 relation20 2239 → LIGHTS, TOWERS;坐标组数 1
  • cell 693 relation20 2241 → LIGHTS, TOWERS;坐标组数 1

因此 CM95 PBF Adapter 第一版采用:

primary composition key =
    cell_id
  + _cm93_relation20_raw

而不是仅凭经纬度 proximity 合并。

规则:

  1. relation20 相同且坐标一致 → 合成一个 navigation_marks Feature;
  2. LIGHTS 的灯色、灯质、周期、高度、射程、扇区等属性并入基体;
  3. Beacon/Buoy/Tower 提供主体 symbol 语义;
  4. _extgn 只作为组件/trace,不单独 delivery;
  5. relation20 缺失时才允许进入 fallback;
  6. fallback 必须被审计标记,不能静默按邻近点合并。

在真正写 generator 前,需要用全 AOI 数据验证 relation20,而不是只依赖 600 条采样记录。

本包已经提供:

tools/cm95_nav_aid_relation_audit_v1.py

7. Light 字段

本 AOI 实际出现的 CM93/S-57 COLOUR 值:

1 → white
3 → red
4 → green
6 → yellow

首版只对当前实际出现值建立冻结映射;其它值先进入 mapping gap,不猜值。

LIGHTS 输出至少包括:

light_color_code
chart_label_text
chart_label_subtext
chart_text_style
chart_text_color
light_sector_mode
chart_icon_image

灯略记由:

LITCHR
SIGGRP
SIGPER
COLOUR
HEIGHT
VALNMR

组合生成。

8. Sounding

当前 AOI 有 SOUNDG Feature,并由 chart_sounding_point 保存多个真实 sounding points。

因为当前 style 没有独立 sounding_point source-layer,v1 采用:

chart_sounding_point
→ derived point label
→ seabed_text_point

这是额外 render artifact,不修改/替换数据库里的原 sounding。

9. Stable identity

禁止把:

chart_feature.id

当成长期 PBF identity。

v1 冻结 source identity:

cm95:
  dataset_id
  + source_relative_path
  + source_record_index
  + geometry_role

下一阶段 generator 会在此基础上建立稳定 FID manifest,再接现有 NavSea numeric feature-id 体系。

10. 当前尚未正式进入 delivery 的内容

主要包括:

_texto                 文本归属 land/sea/facility 尚需关联判断
BUISGL POINT           当前 style 表达不明确
行政边界类             当前 style 不需要
FAIRWY                 参考 PBF 有 route_area,但当前 unified style 不消费
若干一般陆上点对象      不属于 hard-gate,后续补 symbol 映射

这些对象全部保留在工程 trace / cm95_unmapped,没有删除。

11. 下一步门禁

先执行 relation20 全 AOI 审计。

通过条件:

LIGHTS relation20 可覆盖主要灯标
relation group 不出现明显坐标冲突
跨 Cell 不发生错误合并
无法合并的 LIGHTS 数量明确

通过后进入:

PBF-03
CM95 MySQL → z10/914/385 单 tile generator

第一版 generator 将只实现当前已经冻结的映射,并同时输出:

delivery PBF
engineering PBF / trace
cm95_unmapped report
FID audit
sprite closure audit
object preservation audit