# 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`