# NavSea Taxonomy v2

版本：v2 Draft  
用途：定义 NavSea 的对象语义分类体系（Object Taxonomy），为渲染、检索、碰撞检测和统计分析提供稳定的对象身份。

taxonomy 只回答一个问题：

> 这个对象是什么

taxonomy 不直接回答怎么画，也不直接替代旧海图字段。

## 1 设计原则

### 1.1 taxonomy 与 render 分层

- `canonical_family` / `canonical_object_type` 负责语义归类
- `chart_*` 字段负责渲染表达
- 旧字段如 `分類番号`、`形状分類番号`、`表示用番号` 仍可在过渡期保留，用于兼容旧样式细节

### 1.2 family 必须互斥

`canonical_family` 必须尽量稳定、互斥、可统计。

例如：

- `buoy` 不再单独作为 family
- 灯浮标、灯柱、灯台、AIS 航标统一归到 `navigation_aid`
- `place` 只表示地名，不包含设施或标志物

### 1.3 object_type 可以细分

`canonical_object_type` 允许保留更细粒度的对象名，用于：

- 检索
- 规则判断
- 语义统计
- 到渲染语义的映射

## 2 taxonomy 层级

结构：

`canonical_family -> canonical_object_type`

## 3 canonical_family 定义

### 3.1 navigation_aid

定义：用于导航指示、警示、定位或电子助航的对象。

典型 object_type：

- 灯台
- 港湾灯台
- 灯柱
- 灯浮標
- 導灯
- 灯船
- 浮標
- 立標
- AIS航标
- 信号所

说明：

- 原 v1 中的 `buoy` 并入本 family
- “浮标是不是灯浮标”属于 object_type 层的问题，不在 family 层拆开

### 3.2 hazard

定义：对航行、锚泊或作业形成风险的对象、区域或状态。

典型 object_type：

- 暗岩
- 岩礁
- 礁盘
- 魚礁
- 沈船
- 障害物
- 危険物
- 浅滩
- 潜堤
- 洞穴/穴

说明：

- 鱼礁虽然可能带有利用属性，但从航行风险角度优先归到 `hazard`
- 若后续需要区分“危险物”和“人工利用构造”，可通过 `hazard_class` 或 `area_usage_class` 细分，而不是拆 family

### 3.3 depth

定义：描述水深、水深区、等深线和相关深度表达的对象。

典型 object_type：

- 水深点
- 水深区
- 等深线
- 概略等深线
- 干出区
- 未测深区

### 3.4 boundary

定义：描述法律、管理、航路或危险范围边界的对象。

典型 object_type：

- 基本线
- 危険界
- 航路境界
- 港則法による境界
- 制限区域境界
- 管辖边界

### 3.5 facility

定义：人工建造的固定设施、结构物和工程对象。

典型 object_type：

- 防波堤
- 岸壁
- 栈桥
- 桥梁
- 海底电缆
- 海底管线
- 陆上构造物
- 水上设施

说明：

- “设施”与“边界”分离
- “设施”与“地标”分离

### 3.6 usage_area

定义：表达水域或区域用途、限制或功能属性的对象。

典型 object_type：

- 錨地
- 錨泊地
- 漁業区
- 航路
- パイロットステーション
- 禁止区域
- 制限区域

说明：

- 如果对象主要表达“用途”而不是“实体构造”，优先归到本 family

### 3.7 landmark

定义：用于识别、定位或视觉参照的显著对象，但不属于典型助航设施。

典型 object_type：

- 山顶
- 烟囱
- 塔
- 目标物
- 显著建筑

### 3.8 place

定义：地名和位置名称。

典型 object_type：

- 海上地名
- 陆上地名
- 岬角地名
- 港名

说明：

- 只表示名称，不表示实体类别
- 与 `facility` 分离，避免“有名字的设施”误归到 place

### 3.9 seabed

定义：描述海床性质、底质和海底表面特征的对象。

典型 object_type：

- 底質
- 海底地形
- 海底线

### 3.10 hydro_feature

定义：描述流、潮、涌浪、水流方向等水文现象的对象。

典型 object_type：

- 潮流
- 流向
- 渦流
- 浪向

## 4 taxonomy 命名规则

### 4.1 family 命名

- 使用稳定英文 snake_case
- 面向系统处理
- 不与具体样式实现耦合

### 4.2 object_type 命名

- 允许使用与业务更贴近的中文或日文对象名
- 但同义词必须收敛到单一标准写法

建议：

- 输出层面统一使用当前已采用的 `canonical_object_type`
- 数据治理时维护“原始名 -> 标准对象名”的映射表

## 5 v2 首批强制覆盖对象

以下对象建议作为 v2 taxonomy 的首批强制覆盖范围，因为它们同时影响旧样式兼容和后续语义渲染：

- 港湾灯台
- 灯柱
- 灯浮標
- AIS航标
- 暗岩
- 岩礁
- 礁盘
- 魚礁
- 沈船
- 障害物
- 潜堤
- 水深点
- 水深区
- 等深线
- 概略等深线
- 危険界
- 基本线
- 航路
- 航路境界
- 錨地
- 錨泊地
- 漁業区
- 防波堤
- 橋梁
- 海底电缆
- 底質
- 海上地名
- 陆上地名
- 高さ制限

## 6 taxonomy 与旧字段的关系

taxonomy 不替代旧字段，但要尽量减少下游直接理解旧字段的负担。

建议职责划分如下：

- `canonical_family`：供统计、筛选、检索、碰撞分类使用
- `canonical_object_type`：供精细语义判断和渲染映射使用
- 旧字段：仅在兼容旧样式细节时保留

## 7 v2 边界决策

### 7.1 不再单独使用 buoy family

原因：

- 会与 `navigation_aid` 重叠
- 对检索和渲染映射帮助有限

### 7.2 鱼礁优先归到 hazard

原因：

- 当前产品目标明确包含碰撞检测
- 航行风险语义优先级高于用途语义

补充表达：

- 若需要表达作业用途，可通过渲染语义或 `area_usage_class=fishery` 补充

### 7.3 航路归到 usage_area，航路边界归到 boundary

原因：

- 区分“区域本身”和“边界线”
- 有利于样式层分别控制 fill 和 line

## 8 v2 输出要求

每个交付 feature 至少应满足：

- 有 `canonical_family`
- 有 `canonical_object_type`
- 有 `detection_key`

如果对象未完成 taxonomy 映射，不能直接输出为空，应至少回退到：

- `canonical_family = unknown`
- `canonical_object_type = 未分类对象`

并进入后续人工补录清单。
