291 lines
7.2 KiB
Markdown
291 lines
7.2 KiB
Markdown
# 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`
|