3.9 KiB
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 必须保持不变。