S-98:当多张海图挤进同一块屏幕

前面几篇我们把港口、无线电服务、内河的产品规范挨个拆过,渲染单产品这件事,路数你已经熟了:要素目录管"是什么",绘制目录管"怎么画"。但真实船舶的 ECDIS 屏幕上从来不止一种数据——S-101 底图垫底,S-102 水深和S-104 水位负责安全等深线与潮位改正,S-111 表层流画箭头,S-124 弹航行警告,再叠上雷达回波、AIS 目标,还有船长手画的避险线。十几种数据源挤一块屏幕,谁压住谁、告警谁先响、谁算"官方"数据——总得有一份交通规则。

这份规则就是 S-98,全名 S-100 ECDIS and Interoperability Specification。本文依据 S-98 Ed 2.0.0(2025 年 10 月,IHO 通报 41/2025 发布)——文档史里这版的批注是 "First operational Edition",首个可操作版。拆完你会发现一个有意思的事实:它的核心卖点"互操作目录",在这个首操版里其实还没启用。

「官方」不是声明出来的,是签名出来的

先说最容易被低估的一节:数据身份。

S-98 要求,任何进 ECDIS 的数据——不管官方非官方——都必须带数字签名。而"官方"这顶帽子,不由生产者自封,由签名证书里的一个字段决定:X.509 证书的 ST(State or Province)字段,在 IHO 数据保护方案里被征用来存角色码。DATA_PRODUCER 是按 SOLAS 公约生产 live 航行数据的官方水道测量机构;DATA_AGGREGATOR 是 RENC 这类代为分发签名的聚合方;SCHEME_ADMINISTRATOR 是 IHO 自己——只有它签发的目录证书才有资格装进 ECDIS。其余一律按非官方处理。

更有意思的是 CN(Common Name)字段:里面要填 MRN 形式的生产者编码,比如 urn:mrn:iho:aa00:01810——而且这个码必须和数据集本体、以及交换目录里 CATALOG.XML 的登记三方对得上。冒名签名在这套设计里没有生存空间。

非官方数据的边界也有专门画法:单边线型 NONHODAT,斜线纹必须朝非官方一侧——S-98 特意提醒这是"单边线",画反了方向,警告的含义就反了。这一套组合拳的本质是把"什么是官方数据"从文档声明下沉到了密码学验证,谁来做渲染器,都得先过签名这道闸。

九层优先级:屏幕上的秩序

然后是渲染器最关心的部分:优先级。IMO 性能标准把屏幕信息分成显示底图、标准显示、按需显示三档,而 S-98 把绘制顺序细化成九个优先层(第 9.2.1 节,从高到低):

  1. ECDIS 视觉告警与指示(如 caution、超比例尺提示)
  2. 官方点/线/面要素及其官方更新
  3. 改版通告、手动更新、航行警告
  4. 官方 caution(ENC 及其他警示注记)
  5. 官方填色区域
  6. 官方按需数据——水位、表层流、富余水深都在这层
  7. 雷达与 AIS
  8. 船员手画点/线/面
  9. 船员填色区域

规则一句话:第 n+1 层的任何内容,不得遮挡第 n 层及更高层的信息。注意这个顺序的几个反直觉之处:雷达居然排在官方填色区之下(不然回波会糊死水深配色);船员的手画永远垫在官方数据之上、但压不过雷达;而我们花了好几篇讲的 S-102/S-104/S-111,统统住在第 6 层"按需"——它们再重要,也是"用户打开了才显示"的增强层,底图永远是 S-101。另外 S-98 补了一句:这个列表不指定绘制顺序,只约束遮挡关系。

层内先后靠绘制目录的 display plane 与 drawing priority 决定(这套机制拆 Look-up 表那篇讲过),雷达的上下关系由显示平面的 order 属性控制:负值平面画在雷达下,正值画在雷达上——这就是 S-101 规则里 OverRADAR/UnderRADAR 分支开关的规范出处。

数据分层:谁必须装,谁只许干一件事

第 6 章列了 ECDIS 主屏的必装清单,措辞全是 must:S-101(过渡期与 S-57 并存——文档管这叫"双燃料",双标准同屏是一等公民场景);S-102 只许干两件事:增强安全等深线(ESC)和水位改正(WLA);S-104 只许干 WLA;S-111、S-124、S-129 可以开关;S-128 只用于更新状态报告和图形索引。ENC 层永久开启,没有"关掉海图"这个选项。

第 6 章还有一条容易被读漏的分工:更新状态报告分两种——ENC 报告只覆盖 ENC(S-57 与 S-101)加 S-102、S-104;ENP 报告(电子航海出版物)装下其余所有 S-100 产品,唯独 S-128 自己不在册——"目录不给自己编目"。报告还得支持按航线过滤:列出"这条计划航线沿线"的数据集状态,而不是全库流水。

双燃料怎么个"燃"法,第 18 章给了画面级的规定:同一个海图窗口,可以一半是 S-57、一半是 S-101——S-57 那半边按 S-57/S-52 的老规矩画,S-101 这半边按 S-101 和本规范来,接缝处的无缝绘制算法写在附录 E。但有条红线值得单独念一遍:ESC 和 WLA 只许叠加在 S-101 海图上——S-100 的非 ENC 产品压在 S-57 图上时,不得与底图交互或修改底图。换句话说,水深、水位这些增强层与老标准的数据不兼容,过渡期里它们是 S-101 的专属特权。

Projection 一并管了:S-102/S-104 允许用 UTM/UPS 投影坐标交付,ECDIS 必须支持反算——转换公式就写在附录 H。

这份清单还有个隐藏视角:S-122/S-123/S-125/S-127/S-131 和 WMO 的冰情、海况产品,都写在"未来版本"里。换句话说,我们前面拆的 S-131 港口、S-123 无线电,在 S-98 的现行文本里还是期货——产品规范一个个生效,互操作框架的收录名单在后面追。

附录 D:ESC 与 WLA 的完整算法

S-98 的附录 D 是全文工程密度最高的部分——S-102 的增强安全等深线和 S-104 的水位改正到底怎么算,全在这。两个细节先立个靶:

没有 ESC 的世界有多糙? 附录开场就自我批判:传统 ECDIS 里用户设了安全等深线值,如果数据里恰好没有这条值的等深线,系统默认退到"下一条更深"的——可能比用户设的值深出 10 米以上。ESC 就是为了治这个:直接从 S-102 水深格网、按用户设定的值实时构造等深线。

ESC 的算法朴素得可爱。 S-102 启用后,先"抑制"掉一批 S-101 要素的绘制——水深区、疏浚区、等深线,连带安全等深线、浅水图案、CATZOC 图案、疏浚深度文本、等深线标注,全部让位。然后对格网做判边:一条公共边,两侧格点的水深值一个在安全值这边、一个在那边,这条边就是等深线的一部分;数据集边界上的边,值小于等于安全值即入选。选出来的边连成安全等深线,其围出的安全/不安全水域用于告警判定。这和 DEPARE03 那篇讲的共边判定是同一族算法——标准里最好的部分,从来都是这种朴素几何。

WLA 那半边,散落在正文各处的界面 must 清单之外,附录 D 还有几条硬的:默认关闭,必须用户主动开;三种模式(当前或指定时刻、指定时段、按航线时刻表逐段推算);一旦开启,安全等深线、水深分色、安全水深、孤立危险物判定全部必须用调整后的水深——不许只换颜色图层不重算;拾取报告(cursor pick)必须同时给出调整前和调整后的水深;永久指示的格式也规定死了——单一时刻写 "WLA 12:34 08 Nov 2021",时间段写 "WLA from ... to ...",连日期格式都不许自由发挥。ESC 的覆盖边界必须用 DEPWL 色标围线画出——附录连这个颜色的三套色板 CIE xyL 坐标都给了。

还有一句值得玩味的自我声明,就写在附录 D 开头:"本附录内容目前尚未与 S-100 Ed 5.2.0 Part 9 的现有绘制机制集成"——在集成完成前,附录 D 就是这些特性的规范性出处,用的术语都可能和 S-100 本体不一致。旗舰规范里塞着一块自认"还没合进主干"的补丁,工程状态一望便知。

核心卖点,还是期货

说到这里必须讲清 S-98 最微妙的一章。第 8 章开头说得明白:互操作目录(Interoperability Catalogue)是 S-100 Part 16 抽象概念的实现,一个描述"多产品如何同屏使用与显示"的元产品。但同一节紧接着承认:这个目录目前 IHO 还没发布,本版 ECDIS 对它没有实现要求,互操作处理在本版不启用(not operational)——原文两处原话:"An interoperability catalogue is currently unpublished by IHO","such interoperability is not operational in this edition of S-98"。

目录的形态倒是设计好了,写在 Annex A:四层互操作(Level 1-4,对应 Part A-D),一层比一层复杂,2.0.0 版只完整定义了 1、2 两级——数据层在不同产品间交错(interleave)或替换(substitute)。覆盖产品是 S-101/102/104/111/129 五件套(S-123 们要逐案评估)。

附件里还有两处"编辑伤疤",恰好是工程状态的注脚:正文 Overview 里留着上一版的句子——"Edition 1.1.0 specifies only Levels 1 and 2 in full",2.0.0 的文档里说着 1.1.0 的事;引用表里的产品规范版本停在 2023 年(S-101 Ed 1.1.0、S-102 Ed 2.2.0),比主文档的 2025 年 10 月慢了一整代。旗舰附件带着旧版的胎记出厂,不是苛评,是实锤——互操作这套东西仍在浇筑。

那现阶段多产品同屏靠什么?靠的正是上面那些散布在正文里的硬规定:第 6 章的清单、第 9 章的优先级、第 12/13 章对每个产品的显示细则,外加附录 D 的 ESC/WLA 完整流程——水位改正那套界面 must 清单就出自那里。互操作目录发布之日,才是从"逐对握手"升级到"统一调度"之时。

几个渲染器会撞上的细节

最后收一批散装但扎手的实现细节,都出自正文:

共边虚线会变成实线。 相邻面要素共享一条边(比如两个并排的锚地),各自的绘制规则都会去描它——虚线图案双向各画一遍,叠加结果可能是一条实线。S-98 第 7.2.6 节给了错误/正确对照图。DEPARE03 那篇讲的共边判定,就是为了让共享边只画一次。

日期依赖要素。 季节性航标用 periodicDateRange、临时分道通航用 fixedDateRange 圈定生效期;船员可以自选"查看日期"做航线预演——想看下个月才生效的新分道,把日期拨过去就行。一旦显示日期不是今天,屏幕必须永久显示以 "Display Not Real Time" 开头的提示——和 S-104 水位改正的永久指示是同一套设计语言:凡是"看到的不是现在",必须明说。

超比例尺要算数。 显示比例尺超过 optimumDisplayScale 就是 overscale,超限因子要实时计算并显示成 "X1.3"、"X2" 这样的字样(1 毫米误差在放大后跟着变 1.3 毫米、2 毫米);用小比例尺数据硬填大比例尺窗口的"严重超限"区域,必须铺 OVERSC01 图案。optimumDisplayScale 跳档超过 3 级的地方要画比例尺边界线。

没有数据也要画出来。 无 ENC 覆盖的区域铺 NODATA03 底纹(NODTA 色),同时给出 "No ENC Available" 提示——"这里没数据"本身就是必须传达的信息。

安全等深线默认 30 米。 船员没设就取 30 m;所选值在数据里不存在时,自动退到更深的一条并告知——不许静默替换。

告警命中要取并集。 航线或船位同时戳中多个危险物时,第 16.1 节的规定是把所有命中的空间对象取并集一并高亮,不许只报一个;同一对象同时触发告警(alarm/alert)和指示(indication)时,先画告警高亮、再画指示高亮——渲染顺序都替你想好了。

重叠是大事,也是常态。 相邻生产国交界处,ENC 允许至多 5 米的重叠缓冲带凑合拼接;超过 5 米的重叠,ECDIS 必须只显示其中一份数据,并给出永久的 "overlap" 指示。其他产品的重叠用按需提示 "Overlap in ??? data";唯一的例外是用于 WLA 的 S-102/S-104——改水深的数据不能含糊,必须单选一份加永久指示。至于不同产品的覆盖缝隙,规范豁达地写了"可以预期出现,无需指示"。

目录要能装多版本。 ECDIS 必须支持持久安装同一产品规范的多版要素目录与绘制目录,版本清单随用户查询。版本号三段式各有语义:Edition 是大变(新构造、新数据类型),Revision 是实质语义变化,Clarification 只除歧义改错字——这套语义连 "Clarification" 这个名字都在暗示 IHO 的发布节奏。

格网符号要抽稀。 S-102/S-104/S-111 的格网点用离散符号显示时,缩小视图会让符号密度爆炸,第 13.1 节规定必须抽稀(附录 G 给了推荐算法,厂商也可自研)。编码格式也卡死:S-102/S-104 只支持 DCF2(规则格网)一种,S-111 宽松些,DCF2/DCF3 都行。

时间对不上就不显示。 第 13.2 节把"显示时刻"与数据时间戳的匹配规则写成了硬逻辑:单条时刻记录(比如实时水位),只有显示时刻晚于时间戳、且差值小于判别间隔(例如 5 分钟)才显示;多条记录取"最近且紧邻其前"的一条;显示时刻早于首条记录——不显示。凡是"看到的不是现在",必须明说。

这一批细节有个共同气质:全是 must。S-98 的正文大部分不谈架构,谈的是这些一条条可验收的小规定——型式认可审的就是它们。

小结

三句话收尾:S-98 管的是产品之间——它不定义数据、不定义绘制,定义的是十几种产品挤进同一块屏幕时的秩序;身份靠密码学——官方与否由证书字段和 MRN 三方核对决定,签名强制,无签名不进库;互操作是期货——首操版的框架立住了,但统一调度的目录还没发布,今天是逐对握手,明天才是合龙。

S-98 九层优先级:从告警到船员填色

下一篇把第 6 层"按需"的最后一件补齐——S-129 富余水深管理。它大概是这个家族里最特别的产品:别的产品描述海,它描述一个决定。

参考资料

  • IHO,《S-98 ECDIS and Interoperability Specification》,Main Document, Edition 2.0.0,2025 年 10 月(含 Appendix A–H)。
  • IHO,《S-98 Annex A: ECDIS Interoperability Specification》,Edition 2.0.0,2025 年 10 月。
  • IMO,MSC.530(106)/Rev.1(ECDIS 性能标准)、MSC.1/Circ.1609(导航设备用户界面设计准则)。
  • IHO,《S-100 Universal Hydrographic Data Model》Ed 5.2.x:Part 9/9a(绘制)、Part 16(互操作目录模型)、Part 16A(统一符号化)。

我是夜航海图,做海图与地图渲染开发的工程师。博客「航图笔记」同步更新全部文章,欢迎 RSS 订阅;如果内容帮到了你,也欢迎在爱发电请我喝杯咖啡。

♥ 这篇对你有用?在爱发电支持夜航海图——请我喝杯咖啡,工具和文章都会继续更新。

← 返回目录

评论

评论基于 GitHub Discussions,需要 GitHub 账号;没有也欢迎通过 RSS 阅读器或各平台评论区交流。