S-101 数据模型:和 S-57 到底差在哪
上一篇把 S-100 产品族一次讲全,这篇按预告钻进 S-101 的数据模型。先把结论放在门口:S-101 不是"S-57 的 5.0 版",是一次本体论重写。名字相似的对象背后,建模哲学换了。差在哪,我们边看自己对照表的数据边说。
一、要素与信息分了家
S-57 里一切都是对象,"信息"必须寄生在有空间位置的要素上。S-101 第一次把两类东西拆开:Feature Type(有空间表示的要素)和 Information Type(纯信息,自己不带几何)。
好处立竿见影:磁差不再需要 M_MAGVAR 这个"假装是面"的对象,它成了可以绑定到任意覆盖范围的磁差信息;限制区的法规条款、灯标的通用属性,都能做成信息对象被多个要素共享。同一份事实,不再复制粘贴到十个要素里——这是数据治理思维的胜利,也意味着解析器要开始处理"要素→信息"的绑定关系,而不是把所有属性都摊平在读进来的那个对象上。
二、关联关系成了一等公民
S-57 想表达"这个灯标和那个雾号是一套设备",只能靠空间重叠去猜,或者用少量集合对象硬凑。S-101 把关联(Association)与聚合(Aggregation)写进了模型:带角色的显式关系,灯标-雾号-信号站、泊位-起重机、航道-分道,都是图里的边。
对解析端,这是从"读点线面"到"读图"的跨越;对显示端,查询一个要素能顺藤摸瓜带出整组设备——拾取交互从此有了结构化的语义,而不是包围盒重叠检测。
三、复杂属性:光态天书的终结
写过 S-57 解析的人都被 LIGHTS 折磨过:FL(2+1)WR 12s 14m 15M 这样的光态串,周期、颜色、射程全挤在一个属性里靠约定分隔,符号化前得先写个小语言解析器。
S-101 用复杂属性(Complex Attribute)了结这段历史:光态是结构化的容器——要素目录 2.0.0 里的 Light Sectored 复杂属性,一条光弧自带起止方位、颜色、可见弧度等子属性,嵌套规整、机器可直接遍历。从"约定字符串"到"结构化对象",这是整个 S-101 模型演化的缩影——把靠人脑约定的部分,全部交给模型承载。
四、封装没换,装的东西换了
一个常见误会先纠正:S-101 数据集仍然是 .000 文件、仍然是 ISO 8211 封装——按 S-100 对 8211 的 profile(S-100 Part 10a)封装,和 S-57 同一套 DNA。GML 是 S-100 生态里的另一种 XML 编码描述方式,运营 ENC 数据集不走它。
这是好消息:你写过的 DDR 读取、字段切分、DR 迭代器,骨架全部直接复用。真正变的是 8211 里装的内容——按 S-100 通用数据模型重新组织的记录体系,要素、信息、关联各有新的记录类型与字段;外层的交换目录也从 S-57 的 catalogue cross 换成了 S-100 Part 17 的交换目录(Exchange Catalogue),发现元数据、支持文件、数据保护签名都登记在这一层。网格类产品(如 S-102)则确实另走 HDF5。一句话:解析器的骨架不用重写,重写的是它读出来的语义结构。
五、160 个对象去了哪:我们自己的迁移数据
空谈模型不如看数。我们整理的 160 个 S-57 核心对象迁移去向(对照表可查,每条挂 DCEG 条款号):
- 136 个一对一:主体江山平稳过渡,DEPARE、LIGHTS、COALNE 这些高频对象名字都基本没变
- 21 个拆分:一个 S-57 对象在 S-101 里裂成多个——SOUNDG、BRIDGE、LNDMRK 都在这批,拆的是当年"一对象多义"欠下的债
- 3 个退役,个个有故事:ICNARE(焚烧区)退出 ENC——海上焚烧废弃物早已被国际公约全面禁止,现实世界里已经没有这种区域可画;M_HOPA(水平基准移位参数)被元数据体系收编——S-100 把基准与坐标系放进注册表和数据集元数据,不再作为图上要素存在;CTRPNT(控制点)在 GNSS 时代失去了图上参照的意义
那 3 个退役对象比 136 个平迁更能说明问题:S-100 是框架,装不下的内容会拆出去长成新产品,而不是继续往一个格式里塞。
落地顺序建议
- 解析层照着 S-100 Registry 的要素目录写,目录驱动,别硬编码对象名
- 显示层复用 S-52 积累:令牌、符号、Look-up 体系原样服务 S-101
- DCEG 当日常手册查——它就是 S-101 时代的 object catalogue 说明书的展开版
下一篇做一个对称的动作:S-57 时代我们拆过一个 ENC 文件,这次《把一个 S-101 数据集拆开看》——还是 .000 文件,但里面的记录结构全新,结构化光态在数据里如何呈现,到时候见。
我是夜航海图,做海图与地图渲染开发的工程师。博客「航图笔记」同步更新全部文章,欢迎 RSS 订阅;如果内容帮到了你,也欢迎在爱发电请我喝杯咖啡。你在 S-101 迁移里踩过什么坑,评论区聊聊。
♥ 这篇对你有用?在爱发电支持夜航海图——请我喝杯咖啡,工具和文章都会继续更新。
评论
评论基于 GitHub Discussions,需要 GitHub 账号;没有也欢迎通过 RSS 阅读器或各平台评论区交流。