Files
pbf/NavSea_全国三层数据生成与查看说明.md
2026-05-02 14:32:06 +08:00

291 lines
7.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# NavSea 全国四脚本一页面数据生成与查看说明
本文说明全国版三层数据的重算、导出、整体密度图生成和页面查看方式。
当前统一数据库:
- `navsea_japan_coast_grid`
当前全国三层:
- `coast_200m`:全国海岸 200x200
- `fish_port_20m`:全国渔港 20x20
- `hazard_50m`:全国海上障碍 50x50
当前整体密度图:
- `density_overview`:三档密度整体格子图
## 1. 生成顺序
建议按下面顺序重算:
1. 先生成 `200x200`
2. 再生成 `20x20`
3. 最后生成 `50x50`
4. 再导出全国静态 JSON 资产
5. 最后查看整体密度图
这样可以先把底盘准备好,再做上层数据。
## 2. 200x200 全国海岸重算
脚本:
- [`coastline/build_japan_coast_grid_mysql.py`](/root/sourceserver/pbf/coastline/build_japan_coast_grid_mysql.py)
默认会写入:
- 数据库:`navsea_japan_coast_grid`
- 图层:`coast_200m`
- 导出目录:`out/coastline/japan_coast_grid_mysql`
执行命令:
```bash
cd /root/sourceserver/pbf
./.venv/bin/python coastline/build_japan_coast_grid_mysql.py
```
## 3. 20x20 全国渔港重算
脚本:
- [`coastline/build_fish_port_20m_full_mysql_resume.py`](/root/sourceserver/pbf/coastline/build_fish_port_20m_full_mysql_resume.py)
默认会写入:
- 数据库:`navsea_japan_coast_grid`
- 图层:`fish_port_20m`
推荐执行命令:
```bash
cd /root/sourceserver/pbf
./.venv/bin/python coastline/build_fish_port_20m_full_mysql_resume.py \
--resume \
--max-scan-cells 200000
```
如果只想重算某个 `PRC`,可以显式指定,例如:
```bash
cd /root/sourceserver/pbf
./.venv/bin/python coastline/build_fish_port_20m_full_mysql_resume.py \
--prc 02 \
--max-scan-cells 200000
```
如果只想重算某个具体渔港,可以直接用 `FPC`,例如:
```bash
cd /root/sourceserver/pbf
./.venv/bin/python coastline/build_fish_port_20m_full_mysql_resume.py \
--fpc 1210100 \
--max-scan-cells 200000
```
说明:
- `PRC` 需要按两位字符串理解,`2``02` 等价
- `FPC` 是单个渔港的港码,脚本会先反查它所属的 `PRC`,再只重算这个港口
- 单港口模式会在日志里同时输出:
- 命中的 `200x200` 粗格数量
- 最终写入的 `20x20` 格子数量
- 默认先按渔港 bbox 找同区域 `coast_200m` 粗格,再把粗格切成 `20x20`
- 默认不会再允许无边界整片扫描
- 如果确实要回退旧行为,需要手动加脚本里提供的相应开关
## 4. 根据港名查 FPC
脚本:
- [`find_fpc_by_port_name.py`](/root/sourceserver/pbf/find_fpc_by_port_name.py)
用途:
- 已知渔港名字时,先查出可能的 `FPC`
- 这个脚本会扫描 `coastline/C09-06.zip` 里的渔港要素
- 支持模糊匹配和精确匹配
推荐用法:
```bash
cd /root/sourceserver/pbf
./.venv/bin/python find_fpc_by_port_name.py 無垢島
```
如果你想只看精确命中:
```bash
cd /root/sourceserver/pbf
./.venv/bin/python find_fpc_by_port_name.py 無垢島 --exact
```
如果你想要 JSON 结果:
```bash
cd /root/sourceserver/pbf
./.venv/bin/python find_fpc_by_port_name.py 無垢島 --json
```
如果原始包里没有港名字段,建议改用港名对照表:
```bash
cd /root/sourceserver/pbf
./.venv/bin/python find_fpc_by_port_name.py 無垢島 --catalog out/port_name_catalog.csv
```
对照表最低需要这些列里的任意几列:
- `name` / `港名` / `名称`
- `FPC`
- 可选 `PRC`
说明:
- 这份脚本主要查 `C09-06.zip` 里的渔港名称字段
- 默认会把 `NA2``NA4``FCF` 等候选字段一起拿来比对
- 输出里会给出:
- `FPC`
- `PRC`
- 主名称
- 辅助名称
- 源记录 id
- 如果原始包里没有这条名字,脚本会提示你改用 `--catalog`
## 5. 50x50 全国障碍重算
脚本:
- [`coastline/build_japan_hazard_50m_mysql.py`](/root/sourceserver/pbf/coastline/build_japan_hazard_50m_mysql.py)
默认会写入:
- 数据库:`navsea_japan_coast_grid`
- 图层:`hazard_50m`
- PBF 根目录:`/home/wwwroot/pbf-delivery-full-20260418-rebuild`
执行命令:
```bash
cd /root/sourceserver/pbf
./.venv/bin/python coastline/build_japan_hazard_50m_mysql.py
```
这个脚本当前会纳入:
- `navigation_hazard_area`
- `fixed_fishing_gear_area`
- `anchor_caution_hazard_area`
- `navigation_hazard_point`
- `anchor_caution_hazard_point`
- `navigation_marks`
- `baseline_area``canonical_object_type=breakwater`
## 6. 全国三层静态 JSON 导出
脚本:
- [`coastline/export_navgrid_mysql_assets.py`](/root/sourceserver/pbf/coastline/export_navgrid_mysql_assets.py)
默认导出到:
- `src/pbf/coastline-mysql/japan_national/`
执行命令:
```bash
cd /root/sourceserver/pbf
./.venv/bin/python coastline/export_navgrid_mysql_assets.py \
--db-name navsea_japan_coast_grid \
--out-dir src/pbf/coastline-mysql/japan_national
```
导出结果包括:
- `coast_200m_grid.geojson`
- `fish_port_20m_grid.geojson`
- `hazard_50m_grid.geojson`
- `density_overview_grid.geojson`
- `manifest.json`
说明:
- `density_overview_grid.geojson` 是按密度优先级合并后的整体格子图
- 同一区域如果存在更高密度格子,就优先保留更高密度
- 当前密度优先级:
- `20x20` = 高密度,淡绿色
- `50x50` = 中密度,黄色
- `200x200` = 低密度,淡红色
## 7. HTML 预览页面
当前全国预览页面:
- `http://192.168.200.184/newpec/navsea-coastline-fukuoka-saga-200m.html`
说明:
- 页面标题已经改成全国口径
- 页面内有四个按钮:
- `200x200`
- `20x20`
- `50x50`
- `整体密度`
页面对应的本地文件:
- [`src/pbf/navsea-coastline-fukuoka-saga-200m.html`](/root/sourceserver/pbf/src/pbf/navsea-coastline-fukuoka-saga-200m.html)
页面加载的数据源:
- `./coastline-mysql/japan_coast_200m/manifest.json`
- `./coastline-mysql/japan_coast_200m/coast_200m_grid.geojson`
- `./coastline-mysql/japan_national/manifest.json`
- `./coastline-mysql/japan_national/fish_port_20m_grid.geojson`
- `./coastline-mysql/japan_national/hazard_50m_grid.geojson`
- `./coastline-mysql/japan_national/density_overview_grid.geojson`
## 8. 页面查看方式
如果只是看全国 200x200
1. 打开页面
2. 默认就是 `200x200`
3. 页面会自动定位到全国底盘范围
如果想切换看渔港或障碍:
1. 点击 `20x20`
2. 点击 `50x50`
3. 点击 `整体密度`
如果想强制刷新:
1. 点击 `重新加载`
## 9. 线下同步到网页目录
如果你重新生成了静态资产,想让线上页面立即看到新内容,通常需要把生成结果同步到网页目录:
```bash
cp -r src/pbf/coastline-mysql/japan_national /mnt/sda1/www/newpec/
cp src/pbf/navsea-coastline-fukuoka-saga-200m.html /mnt/sda1/www/newpec/navsea-coastline-fukuoka-saga-200m.html
```
## 10. 一句话版
最常用的整套命令是:
```bash
cd /root/sourceserver/pbf
./.venv/bin/python coastline/build_japan_coast_grid_mysql.py
./.venv/bin/python coastline/build_fish_port_20m_full_mysql_resume.py --resume --max-scan-cells 200000
./.venv/bin/python coastline/build_japan_hazard_50m_mysql.py
./.venv/bin/python coastline/export_navgrid_mysql_assets.py --db-name navsea_japan_coast_grid --out-dir src/pbf/coastline-mysql/japan_national
```
然后打开:
- `http://192.168.200.184/newpec/navsea-coastline-fukuoka-saga-200m.html`