feat: implement S-52 LIGHTS05 presentation

This commit is contained in:
OpenAI Codex
2026-09-17 07:54:13 +08:00
parent bbe006b3d6
commit b8b6851412
5 changed files with 256 additions and 1 deletions

View File

@@ -0,0 +1,40 @@
# CM95 S-52 LIGHTS05 阶段报告 v1
日期:2026-09-17
## 结论
LIGHTS05 已从“诊断字段”升级为统一 Presentation Rule IR 的正式 CSP 实现。
实现链路:
`CS(LIGHTS05) → LIGHTS06 等价规则 → SY/CA/TX → Presentation Rule IR → PBF 标量属性 → MapLibre runtime renderer`
OpenCPN 当前实现被作为行为参考;未直接复制其渲染器代码。
## 实现内容
- 支持短程 flare:`LIGHTS11 / LIGHTS12 / LIGHTS13 / LITDEF11`。
- 支持全周灯 `CA(...)` 圆环。
- 支持 sector `CA(...)` 参数、遮蔽 sector 和径向边界参数。
- 支持灯质文字组合:LITCHR、SIGGRP、COLOUR、SIGPER、HEIGHT、VALNMR。
## 福冈湾 z12 实测
Tile:`12/3531/1641`
- LIGHTS:62
- `s52_csp_resolved=LIGHTS05`:62
- flare:60
- all-round CA:2
- 未解析 LIGHTS05:0
- flare symbol:`LIGHTS11=24 / LIGHTS12=24 / LIGHTS13=9 / LITDEF11=3`
- 灯质文字:59
浏览器使用 Chromium/Puppeteer 实际渲染通过;基础海图、深度色、等深线、底质、主体航标、灯光 flare 和 CA 圆环同时可见。
## 运行时边界
`CA` 半径继续按屏幕毫米解释,Web 测试 renderer 通过 `project/unproject` 在移动、缩放后重建几何;不得固化为地理米数。
本 tile 没有 `SECTR1/SECTR2` sector light,因此 sector leg/sector arc 的真实数据视觉验收仍需使用包含 sector light 的相邻 tile。