Files
CM95/docs/CM95_Bathymetry独立PBF_v1.md

3.9 KiB
Raw Blame History

CM95 Bathymetry 独立 PBF v1

日期:2026-10-01

1. 目的

本阶段新增一套与现有 CM95 基础 PBF 完全独立的 bathymetry PBF。

客户端需要显示等深线时增加第二个 vector source;关闭等深线时可以不加载该 source。 现有基础 PBF 的 schema、tile 和发布生命周期不因本 build 改变。

本 PBF 中的等深线属于 NavSea/本项目自行生产的派生参考数据,不视为 CM95 原始等深线、官方水路资料或安全航行依据。

2. 首批 build

Build ID:

cm95-bathymetry-north-kyushu-v1

范围:

W 129.7
S 33.1
E 130.6
N 33.8

对应北九州、唐津—福冈附近的首批验证区域。 生成配置:

config/bathymetry/cm95_bathymetry_north_kyushu_v1.yaml

生成器:

tools/cm95_bathymetry_build_v1.py

本地生成目录(build/ 被 Git 忽略):

build/bathymetry/cm95-bathymetry-north-kyushu-v1/

目录内包含:

build_manifest.json
tilejson.json
contours.geojson
pbf/{z}/{x}/{y}.pbf

3. 输入与生成规则

首批 build 只使用 Dataset ID=1 的 SOUNDG sounding points 作为连续水深面的数值输入。

为避免低分辨率点拉坏近岸插值,当前只使用:

native_scale <= 100000

同坐标存在重复 sounding 时取较浅值。

生成流程:

SOUNDG sounding points
  -> Web Mercator
  -> Delaunay / TIN
  -> 丢弃最大边 > 4000m 的三角形
  -> 三角形内线性等值线
  -> DEPARE + DRGARE 水域 union 裁剪
  -> 区域级合并/简化
  -> 按 XYZ tile 切片
  -> MVT/PBF

首批 contour levels:

2m / 5m / 10m / 20m / 30m / 50m

先生成区域连续线,再切 tile;不得每个 tile 独立插值,以避免 tile seam。

4. PBF contract

独立 source-layer:

bathymetry_contour

每个 LineString feature 至少包含:

depth_m
source_kind = derived_sounding_tin
reliability = reference_low
build_id = cm95-bathymetry-north-kyushu-v1

首批 zoom:

z8-z12
extent = 4096

粗 zoom 中亚像素短线可能被 MVT encoder 丢弃。生成器不把这种情况静默处理: 实际 drop 数写入 build_manifest.json,并以 decode 后实际 feature 数作为 build 真值。

5. 首批结果

输入:

raw sounding rows       10035
unique sounding points  10028
duplicate rows              7
water area rows          1884

TIN:

triangles total          20028
accepted                 19773
rejected long edge         255

PBF:

tiles                       93
actual feature instances 15529
encoder dropped              76
total bytes              612694

其中 encoder drop 主要集中在 z8 的亚像素短线。 全量解码审计结果:

tiles 93 / manifest 93
features 15529 / manifest 15529
geometry types: LineString 15529
bad layers: 0
bad depth values: 0
bad properties: 0
AUDIT PASS

6. 本地测试

测试页:

web/bathymetry_test.html

测试 server:

web/bathymetry_test_server.py

启动:

python web\bathymetry_test_server.py --host 192.168.200.184 --port 18890

浏览:

http://192.168.200.184:18890/

测试页使用在线 GSI raster 作为普通背景,只加载这一套新的 bathymetry vector source,因此不依赖现有 CM95 大 build。

7. 当前边界

本 v1 只验证“独立 bathymetry PBF”生产链可行,不代表全国参数已经冻结。

当前参数仍需通过实际海图目视检查决定是否调整,重点包括:

  • 4000m 最大 TIN 边长是否过大或过小;
  • 2/5/10/20/30/50m 层级是否合适;
  • 岛屿、港池和狭窄水道附近是否存在不合理跨越;
  • DEPARE/DRGARE 水域 mask 是否存在局部缺口;
  • z8-z12 的简化强度是否合适;
  • 是否需要在后续 build 引入额外约束数据。

在这些项目通过人工检查前,reliability=reference_low 必须保持不变。