Files
CM95/docs/报告/CM95_S52_危险物阶段报告_v1.md
2026-09-17 10:25:14 +08:00

2.1 KiB
Raw Blame History

CM95 S-52 危险物阶段报告 v1

范围

本阶段沿 OpenCPN S-52 流程实现危险物条件符号化:

  • OBSTRN04
  • UDWHAZ03
  • WRECKS02
  • Point / Line / Area 三种几何分支
  • DEPARE / DRGARE 空间关联上下文

基线仍为 Linux 项目 /root/sourceserver/cm95。 正式 production release 未修改。

实现原则

危险物不能只按对象自身属性选图标。 Builder 先收集当前 scale 的 DEPARE / DRGARE 几何与 DRVAL1/DRVAL2, 只对 OBSTRN / UWTROC / WRECKS 做空间 intersects,再把关联水深上下文交给 CSP。

UDWHAZ03 根据 safety contour、对象推导深度、EXPSOU、WATLEV 和关联水深区判断 isolated danger。

福冈湾 z12 实测

Tile:12/3531/1641

  • 危险物相关 Feature:40
  • WRECKS:21
  • UWTROC:16
  • OBSTRN:3
  • OBSTRN04 已解析:19 / 19
  • 未解析 OBSTRN04:0
  • 本 tile isolated danger:0
  • HAZARD_TILE_CONTRACT=PASS

本 tile 实际产生的主要符号包括:

  • FOULGND1
  • DANGER51
  • DANGER52
  • UWTROC03
  • UWTROC04
  • LNDARE01

危险物自带的 sounding 继续复用 SOUNDG03 / SNDFRM02 符号序列。

浏览器验收

测试页:presentation_v7.html

Linux X11 Chrome 实际 MapLibre 页面验收:

  • 页面标题进入 READY CM95 福冈湾 S52
  • HUD 查询显示危险物 S-52:44(querySourceFeatures 运行时视图计数;PBF 权威去重计数仍为 40)
  • OBSTRN04 已解析:19
  • isolated danger:0
  • LIGHTS05、SOUNDG、深度色、等深线仍保持正常

已直接截取 Chrome 窗口 fukuoka_hazard_v7_gui.png 并人工查看,危险物 S-52 symbol 已实际绘制,不是仅写入 PBF 属性。Headless Chrome 在本机当前 WebGL 环境未触发 MapLibre load 事件,因此不把 headless 空白截图作为验收依据。

已知资源闭合缺口

OpenCPN 当前 s52cnsy.cpp 的 OBSTRN04 会引用 DANGER53, 但当前 chartsymbols.xml 中没有同名 Symbol 定义。 福冈湾本 tile 未触发该分支,因此不阻塞本阶段。 CM95 对该缺口保持 fail-closed,不自行创造替代图标。