物理格式:ISO/IEC 8211 交换格式
生产方:中国海事局(MSA)
规模:约350余个独立图幅(cell),每个图幅由1个基础文件+若干更新文件组成
一、文件命名规则
每个文件名形如CNNNNNNN.NNN
1. 扩展名
| 扩展名 | 含义 |
|---|---|
| .000 | 基础文件,该图幅的原始完整数据 |
| .001~.NNN | 更新文件(航海通告补丁),按时间顺序逐期累积 |
- 举例
C1210012 有.000 一直到.068 -> 基础版+67次更新
C1315020只有.000 -> 发布后从未更新过 - 注意!!
无人艇加载时,必须先读.000,再按编号把所有.00N更新逐个叠加,才是当前最新的海图。直接用.000等于是过期数据
2. 主文件名——编码[产生国+比例尺等级+图号]
对照本数据集,第3位(导航用途1~6)和图幅数量分布完全吻合:
| 第3位 | 导航用途 | 大致比例尺 | 本数据集图幅数 |
|---|---|---|---|
| 1 | Overview 概览/远海总图 | <1:300万 | 4幅 |
| 2 | General 总图 | ~1:100万 | 11幅 |
| 3 | Coastal 沿海 | ~1:35万 | ~40幅 |
| 4 | Approach 近岸/进港 | ~1:9万 | ~40幅 |
| 5 | Hatbour 港区 | ~1:2万 | ~150幅 |
| 6 | Berthing泊位 | >1:4000 | ~110幅 |
规律:比例尺越小(总图)一张图覆盖越大、图幅数量少;比例尺越大(港区/泊位)一张图覆盖越小、图幅数量多。
二、 单个.000文件的内部数据结构
S-57文件是ISO/IEC 8211[自描述]格式:文件自己带一份“字段说明书”,再跟实际数据。所以每个文件分两大块:
S-57把数据组织成三大类记录:
###1. 数据集级记录(整张图只有一组,描述[这张图本身])
| 字段 | 全名 | 作用 |
|---|---|---|
| DSID | Data Set Identification | 图名、生产机构(AGEN)、更新号(UPDN)、发布日期等 |
| DSSI | Data Set Structure Information | 本图的统计:物标总数(NOFR)、空间记录等 |
| DSPM | Data Set Parameter Measurement | 编译比例尺(CSCL)、坐标系/投影、图幅地理边界范围等核心参数 |
2. 空间记录(VRID开头)——几何骨架
只存纯粹的几何(点、线、多边形坐标),不带任何[这是什么]的语义:
| 字段 | 含义 |
|---|---|
| VRID | 空间记录的ID+类型(孤立节点/连接节点/边) |
| SG2D/SG3D | 二维/三维坐标(存的是相对坐标,要乘DSPM里的CSCL才还原成WGS84经纬度) |
| VRPT | 矢量指针(把节点串成边、把边串成拓扑) |
3. 物标记录(FRID开头)——语义内容(航海最关心的)
把现实地物(灯塔、沉船、水深区…)描述出来,并通过指针挂到几何上:
| 字段 | 含义 |
|---|---|
| FRID | 物标记录ID+物标类别 |
| FOID | 物标全局标识(FIDN + FIDS,跨图幅唯一) |
| ATTF | 国标标准属性(如水深值、灯质、颜色) |
| NATF | 国家本地属性 |
| FFPT | 物标 -> 物标的关联指针 |
| FSPT | 物标 -> 空间的指针(把语义挂到VRID几何上) |
物标种类遵循S-57 Object Catalogue(约180多类),对无人艇避障/航迹规划最关键的几类:
- DEPARE 可水深区、SOUNDG 测探点
- OBSTRN 障碍物、WRECKS 沉船、UWTROC 水下礁石
- SLCONS 岸线、MARCUL 海藻/养殖区、 LIGHTS 灯标
三、更新文件(.NNN)和基础文件(.000)的区别
结构和 .000 基本一样,但多了几个带C(Control)的[控制指针]字段:
这些Control字段里的 RUIN 就是操作指令:
所以 ECDIS加载更新时,是按记录级别做增/改/删,不需要重发整张图——这就是-57海图能持续、低成本保持最新的机制。
四、USV航迹规划时的实操要点
别自己手解二进制——IS8211 + S-57解析很繁琐,直接用现成库:
GDAL/ORG(命令行 ogrinfo/ogr2ogr 直接读S-57)
或OpenCPN内核、pydro(NOAA)务必按顺序应用全部更新(.000 -> .001 -> …-> 最大号),否则用的就是过期图。
坐标是WGS84经纬度,但文件里存的是相对坐标,需用DSPM的CSCL还原。
避障核心:从物标层(FRID/FOID/ATTF)提取 OBSTRN / WRECKS / UWTROC / DEPARE-SOUNDG / MARCUL,通过 FSPT 指针拿到它们的几何,构建可航水域(栅格或矢量),再做路径搜索。