Files
CM95/docs/报告/CM95_S52_MapLibre_PoC阶段报告_v2.md
2026-09-16 13:23:16 +08:00

2.7 KiB
Raw Blame History

CM95 S-52 → MapLibre PoC 阶段报告 v2

日期:2026-09-16

阶段结论

S-52 已正式接入 CM95 PBF Builder 的可选路径,并在 Linux + 真实 CM93JAPAN Dataset ID=1 上完成 PBF 对照验证。

第一阶段提交:fb228fb0ed6345a5bf87915f93bc3e321c63336e。

本阶段保持 fail-safe:未传入 --s52-lookups 时,现有 Builder 行为不变;正式 production release 尚未切换到 S-52。

接入内容

  • Cm95TileBuilder 新增可选 S-52 Lookup Registry;
  • CLI build-tile / build-sample-aoi 新增:
    • --s52-lookups;
    • --s52-point-table Simplified|Paper;
  • delivery PBF 允许保留 s52_* 属性;
  • 已有映射对象自动附加 S-52 Lookup/Symbol/CSP 元数据;
  • 当前无人工 mapping 的 BOYLAT / TOPMAR 可通过 S-52 fallback 进入 navigation_marks。

点符号模式选择

数据库对照显示 Paper 更适合当前目标:

  • LIGHTS:31978 / 31978 → LIGHTS05;
  • BCNLAT:3744 / 3744 静态 Symbol;
  • BOYLAT:5565 / 5565 静态 Symbol;
  • TOPMAR:11166 / 11166 命中,其中 5320 为静态 Symbol,5846 为 TOPMAR01;
  • Simplified 模式下 TOPMAR 大多落入空指令默认规则。

因此本阶段默认使用 Paper,同时保留 Simplified 作为可选模式。

z10 对照

Tile:10/914/385

  • control:355 Feature / 15 Layer;
  • S-52:355 Feature / 15 Layer;
  • 原有 Feature ID 无增删;
  • 已有 navigation mark 获得 S-52 元数据;
  • LIGHTS05 CSP 已进入 PBF。

z12 高密度对照

Tile:12/3537/1637

  • control:1424 Feature;
  • S-52:1489 Feature;
  • 净增:65;
  • 删除:0;
  • 新增 BOYLAT:29;
  • 新增 TOPMAR:36;
  • NO_RULE:97 → 32;
  • S52_FALLBACK:65。

新增对象全部进入 navigation_marks,保持确定性 FID。

该 tile 中 S-52 字段统计:

  • s52_lookup_rcid:97;
  • s52_symbol_code:36;
  • s52_csp:88;
  • LIGHTS05:58;
  • TOPMAR01:30。

Style / Sprite 闭合

该 z12 tile 实际引用的静态 S-52 Symbol:

  • BCNGEN61;
  • BOYCAN61;
  • BOYCON60;
  • BOYPIL60;
  • BOYPIL61;
  • TOPMAR01。

全部存在于当前 PoC sprite.json,缺失数为 0。

验证结论:s52_style_sprite_tile_contract=PASS。

当前明确未完成

  1. LIGHTS05 尚未实现为 NavSea 动态 S-52 Renderer;
  2. TOPMAR01 的平台 rigid/floating 组合逻辑尚未在 Builder/Renderer 执行;
  3. BOYSPH79 仍是上游 Symbol 定义缺口,继续 fail-closed;
  4. CM93 TOWERS/CHIMNY/MONUMT → S-57 LNDMRK 规范化尚未实施;
  5. 正式 production plan / release 尚未启用 S-52 参数。

本阶段验证了技术路线和 Builder 接口,不宣称已完成全部 S-52 CSP。