添加全国三层生成与港名查FPC工具
This commit is contained in:
290
NavSea_全国三层数据生成与查看说明.md
Normal file
290
NavSea_全国三层数据生成与查看说明.md
Normal file
@@ -0,0 +1,290 @@
|
||||
# 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`
|
||||
Reference in New Issue
Block a user