diff --git a/navsea_audit_kyushu_semantic_icon_test.py b/navsea_audit_kyushu_semantic_icon_test.py
new file mode 100644
index 0000000..0f826bc
--- /dev/null
+++ b/navsea_audit_kyushu_semantic_icon_test.py
@@ -0,0 +1,147 @@
+#!/usr/bin/env python3
+"""审计九州语义图标测试版是否丢失对象、几何或非图标属性。"""
+
+from __future__ import annotations
+
+import argparse
+import json
+from collections import Counter
+from concurrent.futures import ProcessPoolExecutor
+from pathlib import Path
+from typing import Any
+
+import mapbox_vector_tile
+
+
+EXPECTED_FIELDS = {"chart_icon_image", "icon_id", "arc_id"}
+
+
+def stable(value: Any) -> str:
+ return json.dumps(value, ensure_ascii=False, sort_keys=True, separators=(",", ":"))
+
+
+def feature_signature(feature: dict[str, Any]) -> str:
+ properties = dict(feature.get("properties") or {})
+ for field in EXPECTED_FIELDS:
+ properties.pop(field, None)
+ return stable({
+ "id": feature.get("id"),
+ "geometry": feature.get("geometry"),
+ "properties": properties,
+ })
+
+
+def audit_tile(args: tuple[str, str]) -> dict[str, Any]:
+ source_path, target_path = args
+ source = mapbox_vector_tile.decode(Path(source_path).read_bytes())
+ target = mapbox_vector_tile.decode(Path(target_path).read_bytes())
+ errors: list[dict[str, Any]] = []
+ source_layers = set(source)
+ target_layers = set(target)
+ if source_layers != target_layers:
+ errors.append({"kind": "layer_set", "source": sorted(source_layers), "target": sorted(target_layers)})
+
+ source_counts = Counter()
+ target_counts = Counter()
+ icon_counts = Counter()
+ old_prefix_counts = Counter()
+ for layer_name in sorted(source_layers | target_layers):
+ source_features = source.get(layer_name, {}).get("features", [])
+ target_features = target.get(layer_name, {}).get("features", [])
+ source_counts[layer_name] = len(source_features)
+ target_counts[layer_name] = len(target_features)
+ source_signatures = Counter(feature_signature(feature) for feature in source_features)
+ target_signatures = Counter(feature_signature(feature) for feature in target_features)
+ if source_signatures != target_signatures:
+ missing = source_signatures - target_signatures
+ extra = target_signatures - source_signatures
+ errors.append({
+ "kind": "feature_or_geometry_or_property",
+ "layer": layer_name,
+ "source_count": len(source_features),
+ "target_count": len(target_features),
+ "missing_count": sum(missing.values()),
+ "extra_count": sum(extra.values()),
+ })
+ for feature in target_features:
+ properties = feature.get("properties") or {}
+ for field in ("icon_id", "arc_id"):
+ value = properties.get(field)
+ if isinstance(value, str):
+ icon_counts[f"{field}:{value}"] += 1
+ for value in properties.values():
+ if isinstance(value, str) and (value.startswith("symbol-daytime-") or value.startswith("arc-daytime-")):
+ old_prefix_counts[value] += 1
+ return {
+ "tile": source_path,
+ "errors": errors,
+ "source_counts": dict(source_counts),
+ "target_counts": dict(target_counts),
+ "icon_counts": dict(icon_counts),
+ "old_prefix_counts": dict(old_prefix_counts),
+ }
+
+
+def main() -> None:
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--source-root", type=Path, required=True)
+ parser.add_argument("--target-root", type=Path, required=True)
+ parser.add_argument("--report-dir", type=Path, required=True)
+ args = parser.parse_args()
+ pairs = []
+ for target in sorted(args.target_root.glob("*/*/*.pbf")):
+ source = args.source_root / target.relative_to(args.target_root)
+ if source.exists():
+ pairs.append((str(source), str(target)))
+
+ results: list[dict[str, Any]] = []
+ with ProcessPoolExecutor() as executor:
+ for result in executor.map(audit_tile, pairs, chunksize=16):
+ results.append(result)
+
+ error_rows = [error | {"tile": result["tile"]} for result in results for error in result["errors"]]
+ icon_counts = Counter()
+ old_prefix_counts = Counter()
+ source_features = Counter()
+ target_features = Counter()
+ for result in results:
+ icon_counts.update(result["icon_counts"])
+ old_prefix_counts.update(result["old_prefix_counts"])
+ source_features.update(result["source_counts"])
+ target_features.update(result["target_counts"])
+
+ payload = {
+ "source_root": str(args.source_root),
+ "target_root": str(args.target_root),
+ "tiles_target": len(list(args.target_root.glob("*/*/*.pbf"))),
+ "tiles_compared": len(results),
+ "tiles_with_errors": len({row["tile"] for row in error_rows}),
+ "errors": error_rows[:200],
+ "source_features": dict(source_features),
+ "target_features": dict(target_features),
+ "icon_counts": dict(icon_counts),
+ "old_prefix_counts": dict(old_prefix_counts),
+ "verdict": "PASS" if not error_rows and not old_prefix_counts else "FAIL",
+ }
+ args.report_dir.mkdir(parents=True, exist_ok=True)
+ (args.report_dir / "object_geometry_icon_audit.json").write_text(
+ json.dumps(payload, ensure_ascii=False, indent=2) + "\n", encoding="utf-8"
+ )
+ lines = [
+ "# 九州语义图标测试版对象 / 几何 / 图标审计",
+ "",
+ f"- 来源:`{args.source_root}`",
+ f"- 目标:`{args.target_root}`",
+ f"- 目标瓦片:`{payload['tiles_target']}`,实际比较:`{payload['tiles_compared']}`",
+ f"- 有错误瓦片:`{payload['tiles_with_errors']}`",
+ f"- 旧图标前缀残留:`{sum(old_prefix_counts.values())}`",
+ f"- 结论:`{payload['verdict']}`",
+ "",
+ "本审计忽略预期的 `chart_icon_image`、`icon_id`、`arc_id` 字段变化,逐图层比较对象数量、ID、几何和其余属性。",
+ ]
+ (args.report_dir / "object_geometry_icon_audit.md").write_text("\n".join(lines) + "\n", encoding="utf-8")
+ print(json.dumps(payload, ensure_ascii=False, indent=2))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/navsea_build_kyushu_semantic_icon_test.py b/navsea_build_kyushu_semantic_icon_test.py
new file mode 100644
index 0000000..a87089e
--- /dev/null
+++ b/navsea_build_kyushu_semantic_icon_test.py
@@ -0,0 +1,425 @@
+#!/usr/bin/env python3
+"""从当前全国 Full 基线生成九州语义图标替换测试包。"""
+
+from __future__ import annotations
+
+import json
+import os
+import shutil
+from collections import Counter
+from concurrent.futures import ProcessPoolExecutor
+from pathlib import Path
+from typing import Any
+
+import mercantile
+
+from navsea_tile_reencode_guard import (
+ assert_reencoded_tile_safe,
+ decode_tile_with_extents,
+ encode_layers_preserving_extents,
+)
+
+
+REPO_ROOT = Path(__file__).resolve().parent
+CONFIG_PATH = REPO_ROOT / "tasks/pbf/navsea_semantic_icon_map_v1.json"
+SOURCE_ROOT = Path("/home/wwwroot/pbf-delivery-full-20260418-rebuild")
+TARGET_ROOT = Path("/home/wwwroot/pbf-delivery-kyushu-semantic-icon-v1-20260806")
+TARGET_TILE_URL = "http://192.168.200.184/pbf-delivery-kyushu-semantic-icon-v1-20260806/{z}/{x}/{y}.pbf"
+KYUSHU_BBOX = (128.0, 30.0, 132.5, 34.9)
+ZOOMS = tuple(range(5, 13))
+
+SPRITE_SOURCE = Path("/mnt/sda1/www/newpec/sprite-semantic")
+SPRITE_TARGET = Path("/mnt/sda1/www/newpec/sprite-kyushu-semantic-icon-v1-20260806")
+SPRITE_URL = "http://192.168.200.184/newpec/sprite-kyushu-semantic-icon-v1-20260806/sprite"
+
+STYLE_SOURCE = REPO_ROOT / "src/pbf/style.navsea-delivery-full-semantic-extentfix.json"
+STYLE_OUTPUT = REPO_ROOT / "src/pbf/style.navsea-delivery-kyushu-semantic-icon-v1.json"
+STYLE_DEPLOY = Path("/mnt/sda1/www/newpec/domain/style.navsea-delivery-kyushu-semantic-icon-v1.json")
+
+NEWPEC_STYLE_SOURCE = REPO_ROOT / "src/pbf/style.json"
+NEWPEC_STYLE_OUTPUT = REPO_ROOT / "src/pbf/style.navsea-newpec-kyushu-icon-test-v1.json"
+NEWPEC_STYLE_DEPLOY = Path("/mnt/sda1/www/newpec/domain/style.navsea-newpec-kyushu-icon-test-v1.json")
+
+REPORT_DIR = REPO_ROOT / "report/kyushu_semantic_icon_v1_2026-08-06"
+
+SIMPLE_ICON_LAYERS = {
+ "hazard-points",
+ "anchorage-symbols",
+ "anchor-hazard-points",
+ "anchor-hazard-points-428",
+ "facility-points",
+ "landmark-points",
+}
+
+STYLE_EXTRA_MAP = {
+ "light_flare_green": "fl_G",
+ "light_flare_red": "fl_R",
+ "light_flare_yellow_white": "fl_YW",
+}
+
+CANONICAL_ICON_MAP = {
+ "coastal_lighthouse_over_15m": "lt_cst",
+ "harbor_lighthouse": "lt_hbr",
+ "breakwater_lighthouse": "lt_bkw",
+ "minor_light": "lt_min",
+ "light_beacon": "lt_bcn",
+ "light_buoy": "bu_lit",
+ "lattice_buoy": "bu_lat",
+ "pillar_buoy": "bu_pil",
+ "can_buoy": "bu_can",
+ "buoy_generic": "bu_gen",
+ "nav_mark_vais": "mk_vais",
+}
+
+
+def load_config() -> dict[str, Any]:
+ return json.loads(CONFIG_PATH.read_text(encoding="utf-8"))
+
+
+def collect_tiles() -> list[tuple[int, int, int, Path]]:
+ tiles: list[tuple[int, int, int, Path]] = []
+ west, south, east, north = KYUSHU_BBOX
+ for z in ZOOMS:
+ for tile in mercantile.tiles(west, south, east, north, [z]):
+ rel = Path(str(tile.z)) / str(tile.x) / f"{tile.y}.pbf"
+ source = SOURCE_ROOT / rel
+ if source.exists():
+ tiles.append((tile.z, tile.x, tile.y, rel))
+ return sorted(tiles)
+
+
+def copy_link(source: Path, target: Path) -> None:
+ target.parent.mkdir(parents=True, exist_ok=True)
+ if target.exists():
+ target.unlink()
+ try:
+ target.hardlink_to(source)
+ except OSError:
+ shutil.copy2(source, target)
+
+
+def class_icon(layer_name: str, class_code: object, config: dict[str, Any]) -> str | None:
+ code = str(class_code)
+ if layer_name in {"navigation_hazard_point", "anchor_caution_hazard_point"}:
+ return config["hazard_class_map"].get(code)
+ if layer_name == "onshore_structure_point":
+ return config["landmark_class_map"].get(code)
+ if layer_name == "anchorage_point":
+ return config["anchorage_class_map"].get(code)
+ if layer_name == "facility_boundary_point":
+ return config["facility_class_map"].get(code)
+ return None
+
+
+def navigation_icon(properties: dict[str, Any], config: dict[str, Any]) -> str | None:
+ legacy = properties.get("chart_icon_image")
+ if isinstance(legacy, str):
+ mapped = config["sprite_key_map"].get(legacy)
+ if mapped:
+ return mapped
+ display_code = properties.get("display_code")
+ if display_code is not None:
+ mapped = config["display_code_map"].get(str(display_code))
+ if mapped:
+ return mapped
+ canonical = properties.get("canonical_object_type")
+ if isinstance(canonical, str):
+ return CANONICAL_ICON_MAP.get(canonical)
+ return None
+
+
+def arc_icon(properties: dict[str, Any], config: dict[str, Any]) -> str | None:
+ if properties.get("chart_symbol_code") != "lighthouse":
+ return None
+ if not properties.get("light_color_code"):
+ return None
+ if (
+ properties.get("canonical_object_type") == "coastal_lighthouse_over_15m"
+ and properties.get("light_sector_mode") == "sector"
+ ):
+ return config["arc_rules"]["sector"]
+ color = str(properties.get("light_color_code"))
+ return config["arc_rules"].get(color, config["arc_rules"]["other"])
+
+
+def rewrite_tile(
+ source: Path,
+ target: Path,
+ config: dict[str, Any],
+ *,
+ verify_geometry: bool = False,
+) -> dict[str, Any]:
+ decoded, extents = decode_tile_with_extents(source.read_bytes())
+ changed_features = 0
+ icon_counts: Counter[str] = Counter()
+ arc_counts: Counter[str] = Counter()
+ old_values: Counter[str] = Counter()
+ unknown_old_values: Counter[str] = Counter()
+ output_layers: list[dict[str, Any]] = []
+
+ for layer_name, layer in decoded.items():
+ output_features = []
+ for feature in layer["features"]:
+ properties = dict(feature.get("properties") or {})
+ before = dict(properties)
+ legacy = properties.get("chart_icon_image")
+ if isinstance(legacy, str) and (
+ legacy.startswith("symbol-daytime-") or legacy.startswith("arc-daytime-")
+ ):
+ old_values[legacy] += 1
+
+ icon_id = class_icon(layer_name, properties.get("class_code"), config)
+ if layer_name == "navigation_marks":
+ icon_id = icon_id or navigation_icon(properties, config)
+ if icon_id is None and isinstance(legacy, str):
+ icon_id = config["sprite_key_map"].get(legacy)
+
+ if icon_id:
+ properties["icon_id"] = icon_id
+ icon_counts[icon_id] += 1
+ properties.pop("chart_icon_image", None)
+
+ if layer_name == "navigation_marks":
+ arc_id = arc_icon(properties, config)
+ if arc_id:
+ properties["arc_id"] = arc_id
+ arc_counts[arc_id] += 1
+
+ for value in properties.values():
+ if isinstance(value, str) and (
+ value.startswith("symbol-daytime-") or value.startswith("arc-daytime-")
+ ):
+ unknown_old_values[value] += 1
+
+ if properties != before:
+ changed_features += 1
+ output_feature = {
+ "geometry": feature["geometry"],
+ "properties": properties,
+ }
+ if feature.get("id") is not None:
+ output_feature["id"] = feature["id"]
+ output_features.append(output_feature)
+ output_layers.append({"name": layer_name, "features": output_features})
+
+ target.parent.mkdir(parents=True, exist_ok=True)
+ target.write_bytes(encode_layers_preserving_extents(output_layers, extents))
+ if verify_geometry:
+ assert_reencoded_tile_safe(source, target)
+ return {
+ "changed_features": changed_features,
+ "icon_counts": dict(icon_counts),
+ "arc_counts": dict(arc_counts),
+ "old_values": dict(old_values),
+ "unknown_old_values": dict(unknown_old_values),
+ }
+
+
+def rewrite_tile_job(args: tuple[str, str, dict[str, Any], bool]) -> dict[str, Any]:
+ source, target, config, verify_geometry = args
+ result = rewrite_tile(
+ Path(source), Path(target), config, verify_geometry=verify_geometry
+ )
+ result["source"] = source
+ return result
+
+
+def transform_style(config: dict[str, Any]) -> dict[str, Any]:
+ style = json.loads(STYLE_SOURCE.read_text(encoding="utf-8"))
+ key_map = dict(config["sprite_key_map"])
+ key_map.update(STYLE_EXTRA_MAP)
+
+ def transform(value: Any) -> Any:
+ if isinstance(value, dict):
+ return {key: transform(item) for key, item in value.items()}
+ if isinstance(value, list):
+ return [transform(item) for item in value]
+ if isinstance(value, str):
+ if value == "chart_icon_image":
+ return "icon_id"
+ return key_map.get(value, value)
+ return value
+
+ style = transform(style)
+ style["name"] = "NavSea Kyushu Semantic Icon Test v1"
+ style["sprite"] = SPRITE_URL
+ style["metadata"] = {
+ "navsea_test_version": "kyushu-semantic-icon-v1-20260806",
+ "source_baseline": str(SOURCE_ROOT),
+ "icon_map": str(CONFIG_PATH),
+ }
+ style["sources"]["navsea_delivery"]["tiles"] = [TARGET_TILE_URL]
+
+ for layer in style["layers"]:
+ layer_id = layer.get("id")
+ layout = layer.get("layout") or {}
+ if layer_id in SIMPLE_ICON_LAYERS:
+ layout["icon-image"] = ["coalesce", ["get", "icon_id"], ""]
+ layer["layout"] = layout
+ elif layer_id == "nav-light-arc":
+ layout["icon-image"] = ["coalesce", ["get", "arc_id"], ""]
+ layer["layout"] = layout
+ return style
+
+
+def write_style(style: dict[str, Any], path: Path, deploy_path: Path) -> None:
+ payload = json.dumps(style, ensure_ascii=False, indent=2) + "\n"
+ path.write_text(payload, encoding="utf-8")
+ deploy_path.parent.mkdir(parents=True, exist_ok=True)
+ deploy_path.write_text(payload, encoding="utf-8")
+
+
+def write_newpec_style() -> None:
+ style = json.loads(NEWPEC_STYLE_SOURCE.read_text(encoding="utf-8"))
+ style["name"] = "NavSea Newpec Kyushu Icon Test v1"
+ style["metadata"] = {
+ "navsea_test_version": "kyushu-semantic-icon-v1-20260806",
+ "role": "left_original_newpec_reference",
+ }
+ write_style(style, NEWPEC_STYLE_OUTPUT, NEWPEC_STYLE_DEPLOY)
+
+
+def build_sprite(config: dict[str, Any]) -> dict[str, Any]:
+ if SPRITE_TARGET.exists():
+ raise RuntimeError(f"refusing to overwrite existing sprite target: {SPRITE_TARGET}")
+ SPRITE_TARGET.mkdir(parents=True)
+ source_meta: dict[str, dict[str, dict[str, Any]]] = {}
+ for filename in ("sprite.json", "sprite@2x.json"):
+ source_meta[filename] = json.loads((SPRITE_SOURCE / filename).read_text(encoding="utf-8"))
+
+ key_map = dict(config["sprite_key_map"])
+ key_map.update(STYLE_EXTRA_MAP)
+ fallback_sources = {"lm_cus": "symbol-daytime-660"}
+ added: dict[str, str] = {}
+ removed = set(key_map)
+ for filename, meta in source_meta.items():
+ # 测试包只保留新的短语键,避免把未使用的旧 symbol/arc 键继续带入 sprite。
+ output: dict[str, dict[str, Any]] = {}
+ for old_key, new_key in key_map.items():
+ source_key = old_key if old_key in meta else None
+ if source_key is None:
+ for candidate, candidate_new in key_map.items():
+ if candidate_new == new_key and candidate in meta:
+ source_key = candidate
+ break
+ if source_key is None:
+ source_key = fallback_sources.get(new_key)
+ if source_key and source_key in meta:
+ output[new_key] = dict(meta[source_key])
+ added[new_key] = source_key
+ (SPRITE_TARGET / filename).write_text(
+ json.dumps(output, ensure_ascii=False, indent=2) + "\n", encoding="utf-8"
+ )
+
+ for filename in ("sprite.png", "sprite@2x.png"):
+ shutil.copy2(SPRITE_SOURCE / filename, SPRITE_TARGET / filename)
+ return {"added": added, "fallbacks": {"lm_cus": fallback_sources["lm_cus"]}}
+
+
+def main() -> None:
+ config = load_config()
+ tiles = collect_tiles()
+ if TARGET_ROOT.exists():
+ raise RuntimeError(f"refusing to overwrite existing PBF target: {TARGET_ROOT}")
+ TARGET_ROOT.mkdir(parents=True)
+
+ totals: Counter[str] = Counter()
+ old_values: Counter[str] = Counter()
+ unknown_old_values: Counter[str] = Counter()
+ icon_counts: Counter[str] = Counter()
+ arc_counts: Counter[str] = Counter()
+ rewritten = 0
+ candidate_needles = [
+ key.encode("utf-8") for key in config["sprite_key_map"]
+ ] + [
+ b"navigation_marks",
+ b"navigation_hazard_point",
+ b"anchor_caution_hazard_point",
+ b"anchorage_point",
+ b"facility_boundary_point",
+ b"onshore_structure_point",
+ ]
+ rewrite_jobs: list[tuple[str, str, dict[str, Any], bool]] = []
+ candidate_count = 0
+ for z, x, y, rel in tiles:
+ source = SOURCE_ROOT / rel
+ target = TARGET_ROOT / rel
+ raw = source.read_bytes()
+ if not any(needle in raw for needle in candidate_needles):
+ copy_link(source, target)
+ continue
+ rewrite_jobs.append(
+ (str(source), str(target), config, candidate_count < 3)
+ )
+ candidate_count += 1
+
+ worker_count = min(os.cpu_count() or 4, 12)
+ with ProcessPoolExecutor(max_workers=worker_count) as executor:
+ for result in executor.map(rewrite_tile_job, rewrite_jobs, chunksize=8):
+ if result["changed_features"]:
+ rewritten += 1
+ totals["features_changed"] += result["changed_features"]
+ old_values.update(result["old_values"])
+ unknown_old_values.update(result["unknown_old_values"])
+ icon_counts.update(result["icon_counts"])
+ arc_counts.update(result["arc_counts"])
+
+ sprite = build_sprite(config)
+ style = transform_style(config)
+ write_style(style, STYLE_OUTPUT, STYLE_DEPLOY)
+ write_newpec_style()
+
+ REPORT_DIR.mkdir(parents=True, exist_ok=True)
+ summary = {
+ "version": "kyushu-semantic-icon-v1-20260806",
+ "source_root": str(SOURCE_ROOT),
+ "target_root": str(TARGET_ROOT),
+ "bbox": KYUSHU_BBOX,
+ "zooms": list(ZOOMS),
+ "tiles": len(tiles),
+ "tiles_rewritten": rewritten,
+ "candidate_tiles": candidate_count,
+ **totals,
+ "old_values": dict(old_values),
+ "unknown_old_values_after_rewrite": dict(unknown_old_values),
+ "icon_counts": dict(icon_counts),
+ "arc_counts": dict(arc_counts),
+ "sprite": sprite,
+ "style": str(STYLE_OUTPUT),
+ "newpec_style": str(NEWPEC_STYLE_OUTPUT),
+ }
+ (REPORT_DIR / "kyushu_semantic_icon_v1.json").write_text(
+ json.dumps(summary, ensure_ascii=False, indent=2) + "\n", encoding="utf-8"
+ )
+ lines = [
+ "# 九州语义图标替换测试版 v1",
+ "",
+ f"- PBF 来源:`{SOURCE_ROOT}`",
+ f"- PBF 输出:`{TARGET_ROOT}`",
+ f"- 范围:`{KYUSHU_BBOX}`",
+ f"- zoom:`{ZOOMS[0]}-{ZOOMS[-1]}`",
+ f"- 瓦片数:`{len(tiles)}`",
+ f"- 重写瓦片:`{rewritten}`",
+ f"- 改动 feature:`{totals['features_changed']}`",
+ f"- sprite:`{SPRITE_TARGET}`",
+ f"- delivery style:`{STYLE_OUTPUT}`",
+ f"- newpec style:`{NEWPEC_STYLE_OUTPUT}`",
+ "",
+ "## 旧图标值",
+ "",
+ "```json",
+ json.dumps(dict(old_values), ensure_ascii=False, indent=2),
+ "```",
+ "",
+ "## 审计关注",
+ "",
+ "- `unknown_old_values_after_rewrite` 必须为空。",
+ "- `lm_cus` 当前使用 `symbol-daytime-660` 的临时视觉回退,需人工确认。",
+ "- 几何使用原 tile extent 重编码,并执行 extent 安全检查。",
+ ]
+ (REPORT_DIR / "kyushu_semantic_icon_v1.md").write_text("\n".join(lines) + "\n", encoding="utf-8")
+ print(json.dumps(summary, ensure_ascii=False, indent=2))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/report/kyushu_semantic_icon_v1_2026-08-06/geometry/geometry_native_audit.json b/report/kyushu_semantic_icon_v1_2026-08-06/geometry/geometry_native_audit.json
new file mode 100644
index 0000000..75acfe4
--- /dev/null
+++ b/report/kyushu_semantic_icon_v1_2026-08-06/geometry/geometry_native_audit.json
@@ -0,0 +1,378 @@
+{
+ "label": "kyushu-semantic-icon-v1",
+ "target_root": "/home/wwwroot/pbf-delivery-kyushu-semantic-icon-v1-20260806",
+ "source_root": "/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles",
+ "tile_count": 4707,
+ "outside_extent_tiles": 4707,
+ "source_extent_mismatch_tiles": 0,
+ "fixable_from_source_tiles": 0,
+ "repaired_tiles": 0,
+ "zoom_summary": {
+ "5": {
+ "tile_count": 2,
+ "outside_extent_tiles": 2,
+ "source_extent_mismatch_tiles": 0,
+ "extent_counts": {
+ "4096": 2
+ }
+ },
+ "6": {
+ "tile_count": 4,
+ "outside_extent_tiles": 4,
+ "source_extent_mismatch_tiles": 0,
+ "extent_counts": {
+ "4096": 4
+ }
+ },
+ "7": {
+ "tile_count": 9,
+ "outside_extent_tiles": 9,
+ "source_extent_mismatch_tiles": 0,
+ "extent_counts": {
+ "4096": 9
+ }
+ },
+ "8": {
+ "tile_count": 20,
+ "outside_extent_tiles": 20,
+ "source_extent_mismatch_tiles": 0,
+ "extent_counts": {
+ "4096": 20
+ }
+ },
+ "9": {
+ "tile_count": 70,
+ "outside_extent_tiles": 70,
+ "source_extent_mismatch_tiles": 0,
+ "extent_counts": {
+ "4096": 70
+ }
+ },
+ "10": {
+ "tile_count": 234,
+ "outside_extent_tiles": 234,
+ "source_extent_mismatch_tiles": 0,
+ "extent_counts": {
+ "4096": 234
+ }
+ },
+ "11": {
+ "tile_count": 884,
+ "outside_extent_tiles": 884,
+ "source_extent_mismatch_tiles": 0,
+ "extent_counts": {
+ "4096": 884
+ }
+ },
+ "12": {
+ "tile_count": 3484,
+ "outside_extent_tiles": 3484,
+ "source_extent_mismatch_tiles": 0,
+ "extent_counts": {
+ "1048576": 3484
+ }
+ }
+ },
+ "sample_tiles": [
+ {
+ "tile": "10/876/405.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/406.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/407.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/408.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/409.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/410.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/411.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/412.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/413.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/414.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/415.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/416.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/417.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/418.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/419.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/420.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/421.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/876/422.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/877/405.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/877/406.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/877/407.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/877/408.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/877/409.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/877/410.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/877/411.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/877/412.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/877/413.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/877/414.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/877/415.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ },
+ {
+ "tile": "10/877/416.pbf",
+ "extent_values": [
+ 4096
+ ],
+ "source_extent": 4096,
+ "outside_extent": true,
+ "max_overflow": 80,
+ "fixable_from_source": false
+ }
+ ]
+}
diff --git a/report/kyushu_semantic_icon_v1_2026-08-06/geometry/geometry_native_audit.md b/report/kyushu_semantic_icon_v1_2026-08-06/geometry/geometry_native_audit.md
new file mode 100644
index 0000000..9f73a3e
--- /dev/null
+++ b/report/kyushu_semantic_icon_v1_2026-08-06/geometry/geometry_native_audit.md
@@ -0,0 +1,314 @@
+# kyushu-semantic-icon-v1 几何 / Extent / Native 风险审计
+
+## 范围
+
+- target root: `/home/wwwroot/pbf-delivery-kyushu-semantic-icon-v1-20260806`
+- source root: `/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles`
+- tiles: `4707`
+- repaired tiles: `0`
+
+## 总体结论
+
+- 坐标超当前 extent 的瓦片数:`4707`
+- 与源瓦片 extent 不一致的瓦片数:`0`
+- 可直接按源 extent 修复的瓦片数:`0`
+
+## Zoom 汇总
+
+### z5
+
+- tiles: `2`
+- outside extent: `2`
+- source mismatch: `0`
+- extent counts: `{4096: 2}`
+
+### z6
+
+- tiles: `4`
+- outside extent: `4`
+- source mismatch: `0`
+- extent counts: `{4096: 4}`
+
+### z7
+
+- tiles: `9`
+- outside extent: `9`
+- source mismatch: `0`
+- extent counts: `{4096: 9}`
+
+### z8
+
+- tiles: `20`
+- outside extent: `20`
+- source mismatch: `0`
+- extent counts: `{4096: 20}`
+
+### z9
+
+- tiles: `70`
+- outside extent: `70`
+- source mismatch: `0`
+- extent counts: `{4096: 70}`
+
+### z10
+
+- tiles: `234`
+- outside extent: `234`
+- source mismatch: `0`
+- extent counts: `{4096: 234}`
+
+### z11
+
+- tiles: `884`
+- outside extent: `884`
+- source mismatch: `0`
+- extent counts: `{4096: 884}`
+
+### z12
+
+- tiles: `3484`
+- outside extent: `3484`
+- source mismatch: `0`
+- extent counts: `{1048576: 3484}`
+
+## 代表问题样本
+
+### `10/876/405.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/406.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/407.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/408.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/409.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/410.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/411.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/412.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/413.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/414.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/415.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/416.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/417.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/418.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/419.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/420.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/421.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/876/422.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/877/405.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/877/406.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/877/407.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/877/408.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/877/409.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/877/410.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/877/411.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/877/412.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/877/413.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/877/414.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/877/415.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
+
+### `10/877/416.pbf`
+
+- extent values: `[4096]`
+- source extent: `4096`
+- outside extent: `True`
+- max overflow: `80`
+- fixable from source: `False`
diff --git a/report/kyushu_semantic_icon_v1_2026-08-06/kyushu_semantic_icon_v1.json b/report/kyushu_semantic_icon_v1_2026-08-06/kyushu_semantic_icon_v1.json
new file mode 100644
index 0000000..d00cb85
--- /dev/null
+++ b/report/kyushu_semantic_icon_v1_2026-08-06/kyushu_semantic_icon_v1.json
@@ -0,0 +1,177 @@
+{
+ "version": "kyushu-semantic-icon-v1-20260806",
+ "source_root": "/home/wwwroot/pbf-delivery-full-20260418-rebuild",
+ "target_root": "/home/wwwroot/pbf-delivery-kyushu-semantic-icon-v1-20260806",
+ "bbox": [
+ 128.0,
+ 30.0,
+ 132.5,
+ 34.9
+ ],
+ "zooms": [
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12
+ ],
+ "tiles": 4707,
+ "tiles_rewritten": 1340,
+ "candidate_tiles": 1343,
+ "features_changed": 40131,
+ "old_values": {
+ "symbol-daytime-301": 2536,
+ "symbol-daytime-308": 33,
+ "symbol-daytime-428": 13416,
+ "symbol-daytime-30500003": 165,
+ "symbol-daytime-303": 4993,
+ "symbol-daytime-327": 626,
+ "symbol-daytime-310": 1833,
+ "symbol-daytime-30500001": 25,
+ "symbol-daytime-320": 959,
+ "symbol-daytime-321": 290,
+ "symbol-daytime-429": 256,
+ "symbol-daytime-413": 187,
+ "symbol-daytime-325": 38,
+ "symbol-daytime-323": 77,
+ "symbol-daytime-30700003": 24,
+ "symbol-daytime-30500002": 16,
+ "symbol-daytime-335359": 12,
+ "symbol-daytime-405": 5329,
+ "symbol-daytime-412": 50,
+ "symbol-daytime-719": 54,
+ "symbol-daytime-410": 10
+ },
+ "unknown_old_values_after_rewrite": {},
+ "icon_counts": {
+ "lt_hbr": 2536,
+ "mk_lead_v": 33,
+ "hz_foul": 3598,
+ "hz_reef": 6659,
+ "lt_lead_c": 165,
+ "lm_mtn": 2059,
+ "hz_overfall": 912,
+ "lt_min": 4993,
+ "bu_lat": 626,
+ "lt_bcn": 1833,
+ "lm_chim": 1907,
+ "lm_twr": 2527,
+ "hz_seaweed": 470,
+ "lt_lead_a": 25,
+ "bu_lit": 959,
+ "lm_mar": 121,
+ "lm_fish": 846,
+ "lm_cus": 85,
+ "lm_mon": 42,
+ "bu_gen": 290,
+ "hz_wreck_survey": 432,
+ "hz_sandwave": 662,
+ "lm_ctrl": 28,
+ "bu_can": 38,
+ "hz_outfall": 174,
+ "hz_danger_clear": 26,
+ "bu_pil": 77,
+ "lm_prom": 8,
+ "hz_whirl": 27,
+ "mk_lead_c": 24,
+ "hz_reef_danger": 25,
+ "lt_lead_b": 16,
+ "mk_vais": 12,
+ "fac_fishport": 1164,
+ "hz_rock_awash": 1397,
+ "hz_rock_sub": 3932,
+ "hz_danger_iso": 212,
+ "fac_port": 261,
+ "hz_tower": 57,
+ "hz_wreck_sub": 50,
+ "fac_seastation": 48,
+ "hz_dolphin": 205,
+ "fac_fisherina": 11,
+ "fac_marina": 95,
+ "an_quar": 33,
+ "hz_wreck_hull": 10,
+ "hz_pile": 340,
+ "hz_obst": 60,
+ "an_restrict": 2,
+ "an_no_anchor": 4,
+ "an_desig": 15
+ },
+ "arc_counts": {
+ "arc_open_YW": 204,
+ "arc_YW": 977,
+ "arc_G": 610,
+ "arc_R": 769
+ },
+ "sprite": {
+ "added": {
+ "lt_cst": "coastal_lighthouse",
+ "lt_hbr": "harbor_lighthouse",
+ "lt_bkw": "breakwater_lighthouse",
+ "lt_min": "light_minor",
+ "lt_lead_a": "leading_light_variantt_30500001",
+ "lt_lead_b": "leading_light_variantt_30500002",
+ "lt_lead_c": "leading_light_variantt_30500003",
+ "lt_up_G": "symbol-daytime-30700001",
+ "lt_up_R": "symbol-daytime-30700002",
+ "mk_lead_c": "leading_mark_variantt_30700003",
+ "mk_lead_v": "leading_mark_variantt_308",
+ "lt_bcn": "light_beacon",
+ "bu_lit": "buoy_light",
+ "bu_gen": "buoy_generic",
+ "bu_pil": "buoy_pillar",
+ "bu_can": "buoy_can",
+ "bu_lat": "buoy_lattice",
+ "mk_vais": "nav_mark_vais",
+ "hz_rock_awash": "rock_exposed_drying_awash_group",
+ "hz_rock_sub": "sunken_rock",
+ "hz_danger_clear": "cleared_danger_object",
+ "hz_danger_iso": "isolated_danger",
+ "hz_wreck_hull": "wreck_hull_exposed",
+ "hz_wreck_sub": "wreck_fully_submerged_dangerous",
+ "hz_wreck_survey": "wreck_surveyed",
+ "hz_foul": "foul_ground",
+ "hz_sandwave": "sand_wave",
+ "hz_overfall": "tide_rips_overfalls",
+ "hz_whirl": "eddy_whirlpool",
+ "hz_seaweed": "seaweed",
+ "hz_obst": "obstruction",
+ "hz_reef": "fish_reef",
+ "hz_reef_danger": "fish_reef_dangerous",
+ "hz_tower": "tower_yagura_observation_platform",
+ "hz_pile": "bollard_pile_stake",
+ "hz_dolphin": "dolphin_structure",
+ "hz_outfall": "subsea_installation_outfall_intake",
+ "lm_chim": "symbol-daytime-640",
+ "lm_twr": "symbol-daytime-650",
+ "lm_mar": "symbol-daytime-660",
+ "lm_fish": "symbol-daytime-661",
+ "lm_cus": "symbol-daytime-660",
+ "lm_prom": "symbol-daytime-680",
+ "lm_mtn": "symbol-daytime-681",
+ "lm_ctrl": "symbol-daytime-682",
+ "lm_mon": "symbol-daytime-698",
+ "an_quar": "anchorage_quarantine",
+ "an_desig": "anchorage_designated",
+ "an_restrict": "restriction_area_group",
+ "an_no_anchor": "anchoring_prohibited",
+ "fac_port": "port_general_small_harbor_group",
+ "fac_fishport": "fishing_port",
+ "fac_marina": "marina",
+ "fac_fisherina": "fisherina",
+ "fac_seastation": "sea_station_umi_no_eki",
+ "fac_pilot": "pilot_station",
+ "tide_spot": "tidespot-daytime",
+ "fl_G": "light_flare_green",
+ "fl_R": "light_flare_red",
+ "fl_YW": "light_flare_yellow_white"
+ },
+ "fallbacks": {
+ "lm_cus": "symbol-daytime-660"
+ }
+ },
+ "style": "/root/sourceserver/pbf/src/pbf/style.navsea-delivery-kyushu-semantic-icon-v1.json",
+ "newpec_style": "/root/sourceserver/pbf/src/pbf/style.navsea-newpec-kyushu-icon-test-v1.json"
+}
diff --git a/report/kyushu_semantic_icon_v1_2026-08-06/kyushu_semantic_icon_v1.md b/report/kyushu_semantic_icon_v1_2026-08-06/kyushu_semantic_icon_v1.md
new file mode 100644
index 0000000..f148f71
--- /dev/null
+++ b/report/kyushu_semantic_icon_v1_2026-08-06/kyushu_semantic_icon_v1.md
@@ -0,0 +1,46 @@
+# 九州语义图标替换测试版 v1
+
+- PBF 来源:`/home/wwwroot/pbf-delivery-full-20260418-rebuild`
+- PBF 输出:`/home/wwwroot/pbf-delivery-kyushu-semantic-icon-v1-20260806`
+- 范围:`(128.0, 30.0, 132.5, 34.9)`
+- zoom:`5-12`
+- 瓦片数:`4707`
+- 重写瓦片:`1340`
+- 改动 feature:`40131`
+- sprite:`/mnt/sda1/www/newpec/sprite-kyushu-semantic-icon-v1-20260806`
+- delivery style:`/root/sourceserver/pbf/src/pbf/style.navsea-delivery-kyushu-semantic-icon-v1.json`
+- newpec style:`/root/sourceserver/pbf/src/pbf/style.navsea-newpec-kyushu-icon-test-v1.json`
+
+## 旧图标值
+
+```json
+{
+ "symbol-daytime-301": 2536,
+ "symbol-daytime-308": 33,
+ "symbol-daytime-428": 13416,
+ "symbol-daytime-30500003": 165,
+ "symbol-daytime-303": 4993,
+ "symbol-daytime-327": 626,
+ "symbol-daytime-310": 1833,
+ "symbol-daytime-30500001": 25,
+ "symbol-daytime-320": 959,
+ "symbol-daytime-321": 290,
+ "symbol-daytime-429": 256,
+ "symbol-daytime-413": 187,
+ "symbol-daytime-325": 38,
+ "symbol-daytime-323": 77,
+ "symbol-daytime-30700003": 24,
+ "symbol-daytime-30500002": 16,
+ "symbol-daytime-335359": 12,
+ "symbol-daytime-405": 5329,
+ "symbol-daytime-412": 50,
+ "symbol-daytime-719": 54,
+ "symbol-daytime-410": 10
+}
+```
+
+## 审计关注
+
+- `unknown_old_values_after_rewrite` 必须为空。
+- `lm_cus` 当前使用 `symbol-daytime-660` 的临时视觉回退,需人工确认。
+- 几何使用原 tile extent 重编码,并执行 extent 安全检查。
diff --git a/report/kyushu_semantic_icon_v1_2026-08-06/object_geometry_icon_audit.json b/report/kyushu_semantic_icon_v1_2026-08-06/object_geometry_icon_audit.json
new file mode 100644
index 0000000..6202f3c
--- /dev/null
+++ b/report/kyushu_semantic_icon_v1_2026-08-06/object_geometry_icon_audit.json
@@ -0,0 +1,173 @@
+{
+ "source_root": "/home/wwwroot/pbf-delivery-full-20260418-rebuild",
+ "target_root": "/home/wwwroot/pbf-delivery-kyushu-semantic-icon-v1-20260806",
+ "tiles_target": 4707,
+ "tiles_compared": 4707,
+ "tiles_with_errors": 0,
+ "errors": [],
+ "source_features": {
+ "baseline_area": 225324,
+ "baseline_outline": 401949,
+ "hole_area": 110994,
+ "land_area": 65455,
+ "bathymetry_line": 413730,
+ "depth_contour": 171277,
+ "navigation_marks": 11627,
+ "bridge_structure": 7224,
+ "hazard_boundary_outline": 20151,
+ "place_label_land": 10983,
+ "submerged_reef_area": 770,
+ "place_label_sea": 12092,
+ "anchor_caution_hazard_point": 12932,
+ "baseline_line": 14640,
+ "fixed_fishing_gear_area": 9044,
+ "onshore_structure_line": 114122,
+ "onshore_structure_point": 7623,
+ "anchor_caution_hazard_area": 1809,
+ "anchor_caution_hazard_outline": 1815,
+ "clearance_limit_line": 325,
+ "hazard_boundary_line": 37,
+ "onshore_structure_area": 3640,
+ "depth_contour_overview": 2154,
+ "depth_zone_739": 181,
+ "route_boundary_point": 78,
+ "route_area": 51,
+ "route_outline": 161,
+ "depth_zone_740": 9,
+ "route_axis_line": 14,
+ "depth_zone_700": 8,
+ "depth_zone_725": 4,
+ "seabed_line": 2106,
+ "seabed_text_point": 33376,
+ "facility_boundary_point": 1579,
+ "navigation_hazard_point": 6316,
+ "depth_zone_741": 497,
+ "depth_zone_748": 45,
+ "depth_zone_749": 43,
+ "clearance_limit_point": 261,
+ "clip_outline_754": 223,
+ "facility_boundary_area": 449,
+ "navigation_hazard_outline": 48,
+ "anchorage_area": 55,
+ "anchorage_outline": 55,
+ "anchorage_point": 54,
+ "facility_boundary_outline": 233,
+ "pilot_station_point": 16,
+ "navigation_hazard_area": 24,
+ "leading_line_outline": 16,
+ "clip_outline_730": 4,
+ "facility_boundary_area_transparent": 4
+ },
+ "target_features": {
+ "baseline_area": 225324,
+ "baseline_outline": 401949,
+ "hole_area": 110994,
+ "land_area": 65455,
+ "bathymetry_line": 413730,
+ "depth_contour": 171277,
+ "navigation_marks": 11627,
+ "bridge_structure": 7224,
+ "hazard_boundary_outline": 20151,
+ "place_label_land": 10983,
+ "submerged_reef_area": 770,
+ "place_label_sea": 12092,
+ "anchor_caution_hazard_point": 12932,
+ "baseline_line": 14640,
+ "fixed_fishing_gear_area": 9044,
+ "onshore_structure_line": 114122,
+ "onshore_structure_point": 7623,
+ "anchor_caution_hazard_area": 1809,
+ "anchor_caution_hazard_outline": 1815,
+ "clearance_limit_line": 325,
+ "hazard_boundary_line": 37,
+ "onshore_structure_area": 3640,
+ "depth_contour_overview": 2154,
+ "depth_zone_739": 181,
+ "route_boundary_point": 78,
+ "route_area": 51,
+ "route_outline": 161,
+ "depth_zone_740": 9,
+ "route_axis_line": 14,
+ "depth_zone_700": 8,
+ "depth_zone_725": 4,
+ "seabed_line": 2106,
+ "seabed_text_point": 33376,
+ "facility_boundary_point": 1579,
+ "navigation_hazard_point": 6316,
+ "depth_zone_741": 497,
+ "depth_zone_748": 45,
+ "depth_zone_749": 43,
+ "clearance_limit_point": 261,
+ "clip_outline_754": 223,
+ "facility_boundary_area": 449,
+ "navigation_hazard_outline": 48,
+ "anchorage_area": 55,
+ "anchorage_outline": 55,
+ "anchorage_point": 54,
+ "facility_boundary_outline": 233,
+ "pilot_station_point": 16,
+ "navigation_hazard_area": 24,
+ "leading_line_outline": 16,
+ "clip_outline_730": 4,
+ "facility_boundary_area_transparent": 4
+ },
+ "icon_counts": {
+ "icon_id:lt_hbr": 2536,
+ "arc_id:arc_open_YW": 204,
+ "arc_id:arc_YW": 977,
+ "arc_id:arc_G": 610,
+ "arc_id:arc_R": 769,
+ "icon_id:mk_lead_v": 33,
+ "icon_id:hz_foul": 3598,
+ "icon_id:hz_reef": 6659,
+ "icon_id:lt_lead_c": 165,
+ "icon_id:lm_mtn": 2059,
+ "icon_id:hz_overfall": 912,
+ "icon_id:lt_min": 4993,
+ "icon_id:bu_lat": 626,
+ "icon_id:lt_bcn": 1833,
+ "icon_id:lm_chim": 1907,
+ "icon_id:lm_twr": 2527,
+ "icon_id:hz_seaweed": 470,
+ "icon_id:lt_lead_a": 25,
+ "icon_id:bu_lit": 959,
+ "icon_id:lm_mar": 121,
+ "icon_id:lm_fish": 846,
+ "icon_id:lm_cus": 85,
+ "icon_id:lm_mon": 42,
+ "icon_id:bu_gen": 290,
+ "icon_id:hz_wreck_survey": 432,
+ "icon_id:hz_sandwave": 662,
+ "icon_id:lm_ctrl": 28,
+ "icon_id:bu_can": 38,
+ "icon_id:hz_outfall": 174,
+ "icon_id:hz_danger_clear": 26,
+ "icon_id:bu_pil": 77,
+ "icon_id:lm_prom": 8,
+ "icon_id:hz_whirl": 27,
+ "icon_id:mk_lead_c": 24,
+ "icon_id:hz_reef_danger": 25,
+ "icon_id:lt_lead_b": 16,
+ "icon_id:mk_vais": 12,
+ "icon_id:fac_fishport": 1164,
+ "icon_id:hz_rock_awash": 1397,
+ "icon_id:hz_rock_sub": 3932,
+ "icon_id:hz_danger_iso": 212,
+ "icon_id:fac_port": 261,
+ "icon_id:hz_tower": 57,
+ "icon_id:hz_wreck_sub": 50,
+ "icon_id:fac_seastation": 48,
+ "icon_id:hz_dolphin": 205,
+ "icon_id:fac_fisherina": 11,
+ "icon_id:fac_marina": 95,
+ "icon_id:an_quar": 33,
+ "icon_id:hz_wreck_hull": 10,
+ "icon_id:hz_pile": 340,
+ "icon_id:hz_obst": 60,
+ "icon_id:an_restrict": 2,
+ "icon_id:an_no_anchor": 4,
+ "icon_id:an_desig": 15
+ },
+ "old_prefix_counts": {},
+ "verdict": "PASS"
+}
diff --git a/report/kyushu_semantic_icon_v1_2026-08-06/object_geometry_icon_audit.md b/report/kyushu_semantic_icon_v1_2026-08-06/object_geometry_icon_audit.md
new file mode 100644
index 0000000..1d19698
--- /dev/null
+++ b/report/kyushu_semantic_icon_v1_2026-08-06/object_geometry_icon_audit.md
@@ -0,0 +1,10 @@
+# 九州语义图标测试版对象 / 几何 / 图标审计
+
+- 来源:`/home/wwwroot/pbf-delivery-full-20260418-rebuild`
+- 目标:`/home/wwwroot/pbf-delivery-kyushu-semantic-icon-v1-20260806`
+- 目标瓦片:`4707`,实际比较:`4707`
+- 有错误瓦片:`0`
+- 旧图标前缀残留:`0`
+- 结论:`PASS`
+
+本审计忽略预期的 `chart_icon_image`、`icon_id`、`arc_id` 字段变化,逐图层比较对象数量、ID、几何和其余属性。
diff --git a/report/kyushu_semantic_icon_v1_2026-08-06/sprite_icon_closure.json b/report/kyushu_semantic_icon_v1_2026-08-06/sprite_icon_closure.json
new file mode 100644
index 0000000..e7a7e85
--- /dev/null
+++ b/report/kyushu_semantic_icon_v1_2026-08-06/sprite_icon_closure.json
@@ -0,0 +1,64 @@
+{
+ "used_keys": [
+ "an_desig",
+ "an_no_anchor",
+ "an_quar",
+ "an_restrict",
+ "arc_G",
+ "arc_R",
+ "arc_YW",
+ "arc_open_YW",
+ "bu_can",
+ "bu_gen",
+ "bu_lat",
+ "bu_lit",
+ "bu_pil",
+ "fac_fisherina",
+ "fac_fishport",
+ "fac_marina",
+ "fac_port",
+ "fac_seastation",
+ "hz_danger_clear",
+ "hz_danger_iso",
+ "hz_dolphin",
+ "hz_foul",
+ "hz_obst",
+ "hz_outfall",
+ "hz_overfall",
+ "hz_pile",
+ "hz_reef",
+ "hz_reef_danger",
+ "hz_rock_awash",
+ "hz_rock_sub",
+ "hz_sandwave",
+ "hz_seaweed",
+ "hz_tower",
+ "hz_whirl",
+ "hz_wreck_hull",
+ "hz_wreck_sub",
+ "hz_wreck_survey",
+ "lm_chim",
+ "lm_ctrl",
+ "lm_cus",
+ "lm_fish",
+ "lm_mar",
+ "lm_mon",
+ "lm_mtn",
+ "lm_prom",
+ "lm_twr",
+ "lt_bcn",
+ "lt_hbr",
+ "lt_lead_a",
+ "lt_lead_b",
+ "lt_lead_c",
+ "lt_min",
+ "mk_lead_c",
+ "mk_lead_v",
+ "mk_vais"
+ ],
+ "used_key_count": 55,
+ "sprite_key_count": 64,
+ "missing_keys": [],
+ "legacy_sprite_keys": [],
+ "verdict": "PASS"
+}
diff --git a/report/kyushu_semantic_icon_v1_2026-08-06/sprite_icon_closure.md b/report/kyushu_semantic_icon_v1_2026-08-06/sprite_icon_closure.md
new file mode 100644
index 0000000..a9b32c5
--- /dev/null
+++ b/report/kyushu_semantic_icon_v1_2026-08-06/sprite_icon_closure.md
@@ -0,0 +1,7 @@
+# 九州测试版 Sprite 图标闭合审计
+
+- 使用中的 icon_id/arc_id:`55`
+- sprite 键数:`64`
+- 缺失键:`0`
+- 旧前缀键:`0`
+- 结论:`PASS`
diff --git a/report/kyushu_semantic_icon_v1_2026-08-06/visual/full_aoi_visual_audit.json b/report/kyushu_semantic_icon_v1_2026-08-06/visual/full_aoi_visual_audit.json
new file mode 100644
index 0000000..1c58201
--- /dev/null
+++ b/report/kyushu_semantic_icon_v1_2026-08-06/visual/full_aoi_visual_audit.json
@@ -0,0 +1,141 @@
+{
+ "compare_url": "http://192.168.200.184/newpec/navsea-compare-kyushu-semantic-icon-v1.html",
+ "cases": [
+ {
+ "id": "karatsu_kyushu_icon_v1_semantic_z12",
+ "label": "唐津九州语义图标测试",
+ "variant": "semantic",
+ "zoom": 12,
+ "center": [
+ 129.9697,
+ 33.4425
+ ],
+ "radius_nm": 5,
+ "compare_url": "http://192.168.200.184/newpec/navsea-compare-kyushu-semantic-icon-v1.html?variant=semantic&audit=1¢er=129.9697%2C33.4425&zoom=12",
+ "changed_pixels": 287577,
+ "total_pixels": 364800,
+ "changed_ratio": 0.788314,
+ "mean_abs_rgb": [
+ 39.3424,
+ 42.4767,
+ 74.167
+ ],
+ "rms_rgb": [
+ 61.2913,
+ 62.6326,
+ 97.1048
+ ],
+ "diff_bbox": [
+ 0,
+ 0,
+ 640,
+ 513
+ ],
+ "left_image": "report/kyushu_semantic_icon_v1_2026-08-06/visual/karatsu_kyushu_icon_v1_semantic_z12/compare_left.png",
+ "right_image": "report/kyushu_semantic_icon_v1_2026-08-06/visual/karatsu_kyushu_icon_v1_semantic_z12/compare_right.png",
+ "diff_image": "report/kyushu_semantic_icon_v1_2026-08-06/visual/karatsu_kyushu_icon_v1_semantic_z12/compare_diff.png"
+ },
+ {
+ "id": "karatsu_kyushu_icon_v1_semantic_z10",
+ "label": "唐津九州语义图标测试",
+ "variant": "semantic",
+ "zoom": 10,
+ "center": [
+ 129.9697,
+ 33.4425
+ ],
+ "radius_nm": 5,
+ "compare_url": "http://192.168.200.184/newpec/navsea-compare-kyushu-semantic-icon-v1.html?variant=semantic&audit=1¢er=129.9697%2C33.4425&zoom=10",
+ "changed_pixels": 274296,
+ "total_pixels": 364800,
+ "changed_ratio": 0.751908,
+ "mean_abs_rgb": [
+ 33.6012,
+ 36.7804,
+ 64.1346
+ ],
+ "rms_rgb": [
+ 56.4791,
+ 56.9124,
+ 89.4452
+ ],
+ "diff_bbox": [
+ 0,
+ 0,
+ 640,
+ 513
+ ],
+ "left_image": "report/kyushu_semantic_icon_v1_2026-08-06/visual/karatsu_kyushu_icon_v1_semantic_z10/compare_left.png",
+ "right_image": "report/kyushu_semantic_icon_v1_2026-08-06/visual/karatsu_kyushu_icon_v1_semantic_z10/compare_right.png",
+ "diff_image": "report/kyushu_semantic_icon_v1_2026-08-06/visual/karatsu_kyushu_icon_v1_semantic_z10/compare_diff.png"
+ },
+ {
+ "id": "hakata_kyushu_icon_v1_semantic_z12",
+ "label": "博多港九州语义图标测试",
+ "variant": "semantic",
+ "zoom": 12,
+ "center": [
+ 130.335,
+ 33.6385
+ ],
+ "radius_nm": 10,
+ "compare_url": "http://192.168.200.184/newpec/navsea-compare-kyushu-semantic-icon-v1.html?variant=semantic&audit=1¢er=130.335%2C33.6385&zoom=12",
+ "changed_pixels": 237978,
+ "total_pixels": 364800,
+ "changed_ratio": 0.652352,
+ "mean_abs_rgb": [
+ 30.9085,
+ 30.6867,
+ 39.4968
+ ],
+ "rms_rgb": [
+ 55.1912,
+ 58.1514,
+ 67.7886
+ ],
+ "diff_bbox": [
+ 0,
+ 0,
+ 640,
+ 513
+ ],
+ "left_image": "report/kyushu_semantic_icon_v1_2026-08-06/visual/hakata_kyushu_icon_v1_semantic_z12/compare_left.png",
+ "right_image": "report/kyushu_semantic_icon_v1_2026-08-06/visual/hakata_kyushu_icon_v1_semantic_z12/compare_right.png",
+ "diff_image": "report/kyushu_semantic_icon_v1_2026-08-06/visual/hakata_kyushu_icon_v1_semantic_z12/compare_diff.png"
+ },
+ {
+ "id": "hakata_kyushu_icon_v1_semantic_z10",
+ "label": "博多港九州语义图标测试",
+ "variant": "semantic",
+ "zoom": 10,
+ "center": [
+ 130.335,
+ 33.6385
+ ],
+ "radius_nm": 10,
+ "compare_url": "http://192.168.200.184/newpec/navsea-compare-kyushu-semantic-icon-v1.html?variant=semantic&audit=1¢er=130.335%2C33.6385&zoom=10",
+ "changed_pixels": 236727,
+ "total_pixels": 364800,
+ "changed_ratio": 0.648923,
+ "mean_abs_rgb": [
+ 31.9821,
+ 32.9781,
+ 55.3087
+ ],
+ "rms_rgb": [
+ 57.9478,
+ 56.188,
+ 83.9112
+ ],
+ "diff_bbox": [
+ 0,
+ 0,
+ 640,
+ 513
+ ],
+ "left_image": "report/kyushu_semantic_icon_v1_2026-08-06/visual/hakata_kyushu_icon_v1_semantic_z10/compare_left.png",
+ "right_image": "report/kyushu_semantic_icon_v1_2026-08-06/visual/hakata_kyushu_icon_v1_semantic_z10/compare_right.png",
+ "diff_image": "report/kyushu_semantic_icon_v1_2026-08-06/visual/hakata_kyushu_icon_v1_semantic_z10/compare_diff.png"
+ }
+ ]
+}
diff --git a/report/kyushu_semantic_icon_v1_2026-08-06/visual/full_aoi_visual_audit.md b/report/kyushu_semantic_icon_v1_2026-08-06/visual/full_aoi_visual_audit.md
new file mode 100644
index 0000000..a94a453
--- /dev/null
+++ b/report/kyushu_semantic_icon_v1_2026-08-06/visual/full_aoi_visual_audit.md
@@ -0,0 +1,48 @@
+# 全国 AOI 截图对比审计
+
+## 总览
+
+- compare page: `http://192.168.200.184/newpec/navsea-compare-kyushu-semantic-icon-v1.html`
+- cases: `4`
+
+## 差异排序
+
+### 唐津九州语义图标测试 · semantic · z12
+
+- changed ratio: `0.788314`
+- changed pixels: `287577` / `364800`
+- mean abs rgb: `[39.3424, 42.4767, 74.167]`
+- compare url: `http://192.168.200.184/newpec/navsea-compare-kyushu-semantic-icon-v1.html?variant=semantic&audit=1¢er=129.9697%2C33.4425&zoom=12`
+- left image: `report/kyushu_semantic_icon_v1_2026-08-06/visual/karatsu_kyushu_icon_v1_semantic_z12/compare_left.png`
+- right image: `report/kyushu_semantic_icon_v1_2026-08-06/visual/karatsu_kyushu_icon_v1_semantic_z12/compare_right.png`
+- diff image: `report/kyushu_semantic_icon_v1_2026-08-06/visual/karatsu_kyushu_icon_v1_semantic_z12/compare_diff.png`
+
+### 唐津九州语义图标测试 · semantic · z10
+
+- changed ratio: `0.751908`
+- changed pixels: `274296` / `364800`
+- mean abs rgb: `[33.6012, 36.7804, 64.1346]`
+- compare url: `http://192.168.200.184/newpec/navsea-compare-kyushu-semantic-icon-v1.html?variant=semantic&audit=1¢er=129.9697%2C33.4425&zoom=10`
+- left image: `report/kyushu_semantic_icon_v1_2026-08-06/visual/karatsu_kyushu_icon_v1_semantic_z10/compare_left.png`
+- right image: `report/kyushu_semantic_icon_v1_2026-08-06/visual/karatsu_kyushu_icon_v1_semantic_z10/compare_right.png`
+- diff image: `report/kyushu_semantic_icon_v1_2026-08-06/visual/karatsu_kyushu_icon_v1_semantic_z10/compare_diff.png`
+
+### 博多港九州语义图标测试 · semantic · z12
+
+- changed ratio: `0.652352`
+- changed pixels: `237978` / `364800`
+- mean abs rgb: `[30.9085, 30.6867, 39.4968]`
+- compare url: `http://192.168.200.184/newpec/navsea-compare-kyushu-semantic-icon-v1.html?variant=semantic&audit=1¢er=130.335%2C33.6385&zoom=12`
+- left image: `report/kyushu_semantic_icon_v1_2026-08-06/visual/hakata_kyushu_icon_v1_semantic_z12/compare_left.png`
+- right image: `report/kyushu_semantic_icon_v1_2026-08-06/visual/hakata_kyushu_icon_v1_semantic_z12/compare_right.png`
+- diff image: `report/kyushu_semantic_icon_v1_2026-08-06/visual/hakata_kyushu_icon_v1_semantic_z12/compare_diff.png`
+
+### 博多港九州语义图标测试 · semantic · z10
+
+- changed ratio: `0.648923`
+- changed pixels: `236727` / `364800`
+- mean abs rgb: `[31.9821, 32.9781, 55.3087]`
+- compare url: `http://192.168.200.184/newpec/navsea-compare-kyushu-semantic-icon-v1.html?variant=semantic&audit=1¢er=130.335%2C33.6385&zoom=10`
+- left image: `report/kyushu_semantic_icon_v1_2026-08-06/visual/hakata_kyushu_icon_v1_semantic_z10/compare_left.png`
+- right image: `report/kyushu_semantic_icon_v1_2026-08-06/visual/hakata_kyushu_icon_v1_semantic_z10/compare_right.png`
+- diff image: `report/kyushu_semantic_icon_v1_2026-08-06/visual/hakata_kyushu_icon_v1_semantic_z10/compare_diff.png`
diff --git a/src/pbf/navsea-compare-kyushu-semantic-icon-v1.html b/src/pbf/navsea-compare-kyushu-semantic-icon-v1.html
new file mode 100644
index 0000000..b4ba823
--- /dev/null
+++ b/src/pbf/navsea-compare-kyushu-semantic-icon-v1.html
@@ -0,0 +1,101 @@
+
+
+
+
+
+ NavSea 九州语义图标替换测试 v1
+
+
+
+
+
+
+ 左侧 · 原始 newpec原始瓦片 + 原始 sprite
+ 右侧 · 语义图标测试版Kyushu semantic icon v1
+
+
+ 等待加载样式…
+
+
+
+
diff --git a/src/pbf/style.navsea-delivery-kyushu-semantic-icon-v1.json b/src/pbf/style.navsea-delivery-kyushu-semantic-icon-v1.json
new file mode 100644
index 0000000..cd3487c
--- /dev/null
+++ b/src/pbf/style.navsea-delivery-kyushu-semantic-icon-v1.json
@@ -0,0 +1,2680 @@
+{
+ "version": 8,
+ "name": "NavSea Kyushu Semantic Icon Test v1",
+ "sprite": "http://192.168.200.184/newpec/sprite-kyushu-semantic-icon-v1-20260806/sprite",
+ "glyphs": "http://192.168.200.184/newpec/fonts/{fontstack}/{range}.pbf",
+ "sources": {
+ "mapple": {
+ "type": "raster",
+ "minzoom": 0,
+ "maxzoom": 19,
+ "tileSize": 256,
+ "tiles": [
+ "https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png"
+ ],
+ "attribution": "© 昭文社"
+ },
+ "tide": {
+ "type": "vector",
+ "minzoom": 8,
+ "maxzoom": 8,
+ "tiles": [
+ "https://tile.mapple-on.jp/tide-mvt/{z}/{x}/{y}.pbf?ver=20251001"
+ ],
+ "attribution": "© 日本水路協会"
+ },
+ "navsea_delivery": {
+ "type": "vector",
+ "minzoom": 0,
+ "maxzoom": 12,
+ "tiles": [
+ "http://192.168.200.184/pbf-delivery-kyushu-semantic-icon-v1-20260806/{z}/{x}/{y}.pbf"
+ ],
+ "attribution": "NavSea semantic vector tiles"
+ }
+ },
+ "layers": [
+ {
+ "id": "background",
+ "type": "background",
+ "paint": {
+ "background-color": "rgba(255,255,255,1)"
+ }
+ },
+ {
+ "id": "base-raster",
+ "type": "raster",
+ "source": "mapple",
+ "paint": {
+ "raster-opacity": 1,
+ "raster-saturation": 0,
+ "raster-contrast": 0.05
+ }
+ },
+ {
+ "id": "tide-spots",
+ "type": "symbol",
+ "source": "tide",
+ "source-layer": "tide",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-image": "tide_spot"
+ }
+ },
+ {
+ "id": "sea-area-fill",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "baseline_area",
+ "filter": [
+ "any",
+ [
+ "match",
+ [
+ "get",
+ "chart_fill_style"
+ ],
+ [
+ "depth_zone_0-2m",
+ "depth_zone_0-5m",
+ "depth_zone_0-10m",
+ "depth_zone_0-20m",
+ "depth_zone_2-5m",
+ "depth_zone_2-10m",
+ "depth_zone_2-20m",
+ "depth_zone_5-10m",
+ "depth_zone_5-20m",
+ "depth_zone_10-20m",
+ "depth_zone_20-100m",
+ "depth_zone_20-200m",
+ "depth_zone_100-200m",
+ "depth_zone_200-500m",
+ "depth_zone_500-1000m",
+ "depth_zone_1000-2000m",
+ "depth_zone_2000-3000m",
+ "depth_zone_3000-4000m",
+ "depth_zone_4000-5000m",
+ "depth_zone_5000-6000m",
+ "depth_zone_6000-7000m",
+ "depth_zone_7000-8000m",
+ "depth_zone_8000-9000m",
+ "depth_zone_over_9000m",
+ "water_area"
+ ],
+ true,
+ false
+ ],
+ [
+ "match",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ [
+ "0-2m",
+ "0-5m",
+ "0-10m",
+ "0-20m",
+ "2-5m",
+ "2-10m",
+ "2-20m",
+ "5-10m",
+ "5-20m",
+ "10-20m",
+ "20-100m",
+ "20-200m",
+ "100-200m",
+ "200-500m",
+ "500-1000m",
+ "1000-2000m",
+ "2000-3000m",
+ "3000-4000m",
+ "4000-5000m",
+ "5000-6000m",
+ "6000-7000m",
+ "7000-8000m",
+ "8000-9000m",
+ "over_9000m"
+ ],
+ true,
+ false
+ ]
+ ],
+ "paint": {
+ "fill-color": [
+ "match",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "0-2m",
+ "rgba(240,250,255,1)",
+ "0-5m",
+ "rgba(240,250,255,1)",
+ "0-10m",
+ "rgba(230,250,255,1)",
+ "0-20m",
+ "rgba(220,250,251,1)",
+ "2-5m",
+ "rgba(240,250,255,1)",
+ "2-10m",
+ "rgba(230,250,255,1)",
+ "2-20m",
+ "rgba(220,250,255,1)",
+ "5-10m",
+ "rgba(230,250,255,1)",
+ "5-20m",
+ "rgba(220,250,255,1)",
+ "10-20m",
+ "rgba(220,250,255,1)",
+ "20-100m",
+ "rgba(200,240,255,1)",
+ "20-200m",
+ "rgba(200,230,255,1)",
+ "100-200m",
+ "rgba(200,230,255,1)",
+ "200-500m",
+ "rgba(180,220,255,1)",
+ "500-1000m",
+ "rgba(171,192,255,1)",
+ "1000-2000m",
+ "rgba(163,181,255,1)",
+ "2000-3000m",
+ "rgba(132,169,255,1)",
+ "3000-4000m",
+ "rgba(89,155,255,1)",
+ "4000-5000m",
+ "rgba(90,140,255,1)",
+ "5000-6000m",
+ "rgba(100,132,255,1)",
+ "6000-7000m",
+ "rgba(128,128,255,1)",
+ "7000-8000m",
+ "rgba(139,118,255,1)",
+ "8000-9000m",
+ "rgba(150,100,255,1)",
+ "over_9000m",
+ "rgba(160,100,255,1)",
+ "river_area",
+ "rgba(129,195,226,1)",
+ "lake_area",
+ "rgba(129,195,226,1)",
+ "inland_water_area",
+ "rgba(129,195,226,1)",
+ "tidal_flat",
+ "rgba(143,191,147,1)",
+ [
+ "match",
+ [
+ "get",
+ "chart_fill_style"
+ ],
+ "depth_zone_0-2m",
+ "rgba(240,250,255,1)",
+ "depth_zone_0-5m",
+ "rgba(240,250,255,1)",
+ "depth_zone_0-10m",
+ "rgba(230,250,255,1)",
+ "depth_zone_0-20m",
+ "rgba(220,250,251,1)",
+ "depth_zone_2-5m",
+ "rgba(240,250,255,1)",
+ "depth_zone_2-10m",
+ "rgba(230,250,255,1)",
+ "depth_zone_2-20m",
+ "rgba(220,250,255,1)",
+ "depth_zone_5-10m",
+ "rgba(230,250,255,1)",
+ "depth_zone_5-20m",
+ "rgba(220,250,255,1)",
+ "depth_zone_10-20m",
+ "rgba(220,250,255,1)",
+ "depth_zone_20-100m",
+ "rgba(200,240,255,1)",
+ "depth_zone_20-200m",
+ "rgba(200,230,255,1)",
+ "depth_zone_100-200m",
+ "rgba(200,230,255,1)",
+ "depth_zone_200-500m",
+ "rgba(180,220,255,1)",
+ "depth_zone_500-1000m",
+ "rgba(171,192,255,1)",
+ "depth_zone_1000-2000m",
+ "rgba(163,181,255,1)",
+ "depth_zone_2000-3000m",
+ "rgba(132,169,255,1)",
+ "depth_zone_3000-4000m",
+ "rgba(89,155,255,1)",
+ "depth_zone_4000-5000m",
+ "rgba(90,140,255,1)",
+ "depth_zone_5000-6000m",
+ "rgba(100,132,255,1)",
+ "depth_zone_6000-7000m",
+ "rgba(128,128,255,1)",
+ "depth_zone_7000-8000m",
+ "rgba(139,118,255,1)",
+ "depth_zone_8000-9000m",
+ "rgba(150,100,255,1)",
+ "depth_zone_over_9000m",
+ "rgba(160,100,255,1)",
+ "water_area",
+ "rgba(129,195,226,1)",
+ "rgba(160,100,255,1)"
+ ]
+ ]
+ }
+ },
+ {
+ "id": "tidal-flat",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "baseline_area",
+ "filter": [
+ "any",
+ [
+ "==",
+ [
+ "get",
+ "chart_fill_style"
+ ],
+ "tidal_flat"
+ ],
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "tidal_flat"
+ ]
+ ],
+ "paint": {
+ "fill-color": "rgba(143,191,147,1)"
+ }
+ },
+ {
+ "id": "river-water",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "baseline_area",
+ "filter": [
+ "any",
+ [
+ "==",
+ [
+ "get",
+ "chart_fill_style"
+ ],
+ "river_water"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ [
+ "river_area",
+ "lake_area",
+ "inland_water_area"
+ ],
+ true,
+ false
+ ]
+ ],
+ "paint": {
+ "fill-color": "rgba(129,195,226,1)"
+ }
+ },
+ {
+ "id": "unsurveyed-area",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "baseline_area",
+ "filter": [
+ "any",
+ [
+ "==",
+ [
+ "get",
+ "chart_fill_style"
+ ],
+ "unsurveyed_area"
+ ],
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "unsurveyed_area"
+ ]
+ ],
+ "paint": {
+ "fill-color": "#efe3a8",
+ "fill-opacity": 0.55
+ }
+ },
+ {
+ "id": "shoal-danger-area",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "baseline_area",
+ "filter": [
+ "any",
+ [
+ "==",
+ [
+ "get",
+ "chart_fill_style"
+ ],
+ "shoal_danger_area"
+ ],
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "shoal_danger_area"
+ ]
+ ],
+ "paint": {
+ "fill-color": "#f0a85d",
+ "fill-opacity": 0.45
+ }
+ },
+ {
+ "id": "coast-structures-area",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "baseline_area",
+ "filter": [
+ "any",
+ [
+ "==",
+ [
+ "get",
+ "chart_fill_style"
+ ],
+ "coast_structure_area"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ [
+ "breakwater",
+ "floating_facility_pier",
+ "removed_structure_remains"
+ ],
+ true,
+ false
+ ]
+ ],
+ "paint": {
+ "fill-color": "#8e887d",
+ "fill-opacity": 0.85
+ }
+ },
+ {
+ "id": "hazard-polygons",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "anchor_caution_hazard_area",
+ "paint": {
+ "fill-pattern": [
+ "coalesce",
+ [
+ "get",
+ "chart_fill_pattern"
+ ],
+ ""
+ ]
+ }
+ },
+ {
+ "id": "navigation-hazard-polygons",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "navigation_hazard_area",
+ "paint": {
+ "fill-pattern": [
+ "coalesce",
+ [
+ "get",
+ "chart_fill_pattern"
+ ],
+ ""
+ ]
+ }
+ },
+ {
+ "id": "fishery-areas",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "fixed_fishing_gear_area",
+ "paint": {
+ "fill-pattern": [
+ "match",
+ [
+ "get",
+ "chart_fill_style"
+ ],
+ "fishery_area",
+ "pattern_fill_fishery_or_fish_reef_area",
+ "fish_reef_area",
+ "pattern_fill_fishery_or_fish_reef_area",
+ "pattern_fill_fishery_or_fish_reef_area"
+ ]
+ }
+ },
+ {
+ "id": "fishery-areas-outline",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "fixed_fishing_gear_area",
+ "paint": {
+ "line-color": "rgba(198,77,187,1)",
+ "line-width": 1
+ }
+ },
+ {
+ "id": "anchorage-areas",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "anchorage_area",
+ "paint": {
+ "fill-color": "rgba(0,0,0,0)"
+ }
+ },
+ {
+ "id": "facility-zones",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "facility_boundary_area",
+ "paint": {
+ "fill-pattern": [
+ "coalesce",
+ [
+ "get",
+ "chart_fill_pattern"
+ ],
+ ""
+ ]
+ }
+ },
+ {
+ "id": "submerged-structures",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "submerged_reef_area",
+ "paint": {
+ "fill-color": "#7d7f95",
+ "fill-opacity": 0.45,
+ "fill-outline-color": "#55586f"
+ }
+ },
+ {
+ "id": "bridge-area",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "bridge_structure",
+ "paint": {
+ "fill-color": "rgba(0,0,0,0)"
+ }
+ },
+ {
+ "id": "bridge-outline",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "bridge_structure",
+ "paint": {
+ "line-color": "rgba(95,106,95,1)",
+ "line-width": 2
+ }
+ },
+ {
+ "id": "land-structures-area",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "onshore_structure_area",
+ "paint": {
+ "fill-color": "#8a6d3b",
+ "fill-opacity": 0.8
+ }
+ },
+ {
+ "id": "land-area",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "land_area",
+ "paint": {
+ "fill-color": "rgba(210,200,128,1)"
+ }
+ },
+ {
+ "id": "land-hole",
+ "type": "fill",
+ "source": "navsea_delivery",
+ "source-layer": "hole_area",
+ "paint": {
+ "fill-color": "rgba(0,0,0,0)"
+ }
+ },
+ {
+ "id": "bathymetry-support",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "bathymetry_line",
+ "paint": {
+ "line-width": [
+ "match",
+ [
+ "get",
+ "depth_value_m"
+ ],
+ 10,
+ 1,
+ 20,
+ 1,
+ 40,
+ 1,
+ 60,
+ 1,
+ 80,
+ 1,
+ 100,
+ 1,
+ 150,
+ 1,
+ 200,
+ 1,
+ 300,
+ 1,
+ 400,
+ 1,
+ 500,
+ 1,
+ 600,
+ 1,
+ 700,
+ 1,
+ 800,
+ 1,
+ 900,
+ 1,
+ 1000,
+ 1,
+ 1500,
+ 1,
+ 2000,
+ 1,
+ 2500,
+ 1,
+ 3000,
+ 1,
+ 3500,
+ 1,
+ 4000,
+ 1,
+ 4500,
+ 1,
+ 5000,
+ 1,
+ 5500,
+ 1,
+ 6000,
+ 1,
+ 8000,
+ 1,
+ 10000,
+ 1,
+ 0.5
+ ],
+ "line-color": [
+ "step",
+ [
+ "get",
+ "depth_value_m"
+ ],
+ "rgba(126,230,146,1)",
+ 10,
+ "rgba(106,210,126,1)",
+ 11,
+ "rgba(126,230,146,1)",
+ 20,
+ "rgba(106,210,126,1)",
+ 21,
+ "rgba(126,230,146,1)",
+ 30,
+ "rgba(144,220,255,1)",
+ 40,
+ "rgba(113,193,235,1)",
+ 41,
+ "rgba(133,213,255,1)",
+ 45,
+ "rgba(122,206,255,1)",
+ 50,
+ "rgba(111,199,255,1)",
+ 55,
+ "rgba(100,192,255,1)",
+ 60,
+ "rgba(69,164,235,1)",
+ 61,
+ "rgba(89,184,255,1)",
+ 65,
+ "rgba(78,177,255,1)",
+ 70,
+ "rgba(67,170,255,1)",
+ 75,
+ "rgba(56,163,255,1)",
+ 80,
+ "rgba(24,136,235,1)",
+ 81,
+ "rgba(44,156,255,1)",
+ 85,
+ "rgba(22,142,255,1)",
+ 90,
+ "rgba(33,149,255,1)",
+ 95,
+ "rgba(11,135,255,1)",
+ 100,
+ "rgba(0,108,235,1)",
+ 101,
+ "rgba(0,128,255,1)",
+ 110,
+ "rgba(0,115,255,1)",
+ 120,
+ "rgba(0,102,255,1)",
+ 130,
+ "rgba(0,90,255,1)",
+ 140,
+ "rgba(0,77,255,1)",
+ 150,
+ "rgba(0,44,235,1)",
+ 151,
+ "rgba(0,64,255,1)",
+ 160,
+ "rgba(0,51,255,1)",
+ 170,
+ "rgba(0,38,255,1)",
+ 180,
+ "rgba(0,26,255,1)",
+ 190,
+ "rgba(0,13,255,1)",
+ 200,
+ "rgba(0,0,235,1)",
+ 201,
+ "rgba(0,0,255,1)",
+ 300,
+ "rgba(0,0,219,1)",
+ 301,
+ "rgba(0,0,239,1)",
+ 400,
+ "rgba(0,0,203,1)",
+ 401,
+ "rgba(0,0,223,1)",
+ 500,
+ "rgba(0,0,187,1)",
+ 501,
+ "rgba(0,0,207,1)",
+ 600,
+ "rgba(0,0,172,1)",
+ 601,
+ "rgba(0,0,192,1)",
+ 700,
+ "rgba(0,0,156,1)",
+ 701,
+ "rgba(0,0,176,1)",
+ 800,
+ "rgba(0,0,140,1)",
+ 801,
+ "rgba(0,0,160,1)",
+ 900,
+ "rgba(0,0,124,1)",
+ 901,
+ "rgba(0,0,144,1)",
+ 1000,
+ "rgba(0,0,108,1)",
+ 1001,
+ "rgba(0,0,128,1)",
+ 1100,
+ "rgba(0,6,122,1)",
+ 1200,
+ "rgba(0,13,115,1)",
+ 1300,
+ "rgba(0,19,109,1)",
+ 1400,
+ "rgba(0,26,102,1)",
+ 1500,
+ "rgba(20,50,116,1)",
+ 1501,
+ "rgba(0,32,96,1)",
+ 1600,
+ "rgba(0,39,90,1)",
+ 1700,
+ "rgba(0,45,83,1)",
+ 1800,
+ "rgba(0,51,77,1)",
+ 1900,
+ "rgba(0,58,70,1)",
+ 2000,
+ "rgba(0,51,77,1)",
+ 2001,
+ "rgba(0,51,77,1)",
+ 2100,
+ "rgba(0,56,72,1)",
+ 2200,
+ "rgba(0,61,67,1)",
+ 2300,
+ "rgba(0,67,61,1)",
+ 2400,
+ "rgba(0,72,56,1)",
+ 2500,
+ "rgba(10,87,61,1)",
+ 2501,
+ "rgba(0,77,51,1)",
+ 2600,
+ "rgba(0,82,46,1)",
+ 2700,
+ "rgba(0,87,41,1)",
+ 2800,
+ "rgba(0,92,36,1)",
+ 2900,
+ "rgba(0,97,31,1)",
+ 3000,
+ "rgba(10,112,36,1)",
+ 3001,
+ "rgba(0,102,26,1)",
+ 3100,
+ "rgba(0,108,20,1)",
+ 3200,
+ "rgba(0,113,15,1)",
+ 3300,
+ "rgba(0,112,10,1)",
+ 3400,
+ "rgba(0,123,5,1)",
+ 3500,
+ "rgba(10,138,10,1)",
+ 3501,
+ "rgba(0,128,0,1)",
+ 3600,
+ "rgba(2,124,2,1)",
+ 3700,
+ "rgba(3,121,3,1)",
+ 3800,
+ "rgba(5,117,5,1)",
+ 3900,
+ "rgba(6,114,6,1)",
+ 4000,
+ "rgba(18,120,18,1)",
+ 4001,
+ "rgba(18,110,18,1)",
+ 4100,
+ "rgba(10,107,10,1)",
+ 4200,
+ "rgba(11,103,11,1)",
+ 4300,
+ "rgba(13,100,13,1)",
+ 4400,
+ "rgba(14,96,14,1)",
+ 4500,
+ "rgba(26,103,26,1)",
+ 4501,
+ "rgba(16,93,16,1)",
+ 4600,
+ "rgba(18,89,18,1)",
+ 4700,
+ "rgba(19,26,19,1)",
+ 4800,
+ "rgba(21,82,21,1)",
+ 4900,
+ "rgba(22,79,22,1)",
+ 5000,
+ "rgba(34,85,34,1)",
+ 5001,
+ "rgba(24,75,24,1)",
+ 5100,
+ "rgba(26,72,26,1)",
+ 5200,
+ "rgba(27,68,27,1)",
+ 5300,
+ "rgba(29,65,29,1)",
+ 5400,
+ "rgba(30,61,30,1)",
+ 5500,
+ "rgba(42,68,42,1)",
+ 5501,
+ "rgba(32,58,32,1)",
+ 5600,
+ "rgba(34,54,34,1)",
+ 5700,
+ "rgba(35,51,35,1)",
+ 5800,
+ "rgba(37,47,37,1)",
+ 5900,
+ "rgba(38,44,38,1)",
+ 6000,
+ "rgba(50,50,50,1)",
+ 6001,
+ "rgba(40,40,40,1)",
+ 6500,
+ "rgba(58,30,58,1)",
+ 7000,
+ "rgba(75,20,75,1)",
+ 7500,
+ "rgba(93,10,93,1)",
+ 8000,
+ "rgba(120,10,120,1)",
+ 8001,
+ "rgba(110,0,110,1)",
+ 8500,
+ "rgba(117,0,117,1)",
+ 9000,
+ "rgba(123,0,123,1)",
+ 9500,
+ "rgba(130,0,130,1)",
+ 10000,
+ "rgba(147,0,147,1)",
+ 10001,
+ "rgba(137,0,137,1)",
+ 10500,
+ "rgba(143,0,143,1)"
+ ]
+ }
+ },
+ {
+ "id": "depth-contours",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "depth_contour",
+ "paint": {
+ "line-color": "rgba(136,152,139,1)",
+ "line-width": 1
+ }
+ },
+ {
+ "id": "depth-contour-labels",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "depth_contour",
+ "minzoom": 11,
+ "layout": {
+ "symbol-placement": "line",
+ "symbol-spacing": 200,
+ "text-allow-overlap": true,
+ "text-field": [
+ "get",
+ "chart_label_text"
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-rotation-alignment": "viewport"
+ },
+ "filter": [
+ "all",
+ [
+ "==",
+ [
+ "get",
+ "chart_text_style"
+ ],
+ "depth_text"
+ ],
+ [
+ "has",
+ "chart_label_text"
+ ]
+ ],
+ "paint": {
+ "text-color": "rgba(7,7,7,1)"
+ }
+ },
+ {
+ "id": "bathymetry-depth-labels",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "bathymetry_line",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ [
+ "get",
+ "chart_text_style"
+ ],
+ "depth_text"
+ ],
+ [
+ "has",
+ "chart_label_text"
+ ]
+ ],
+ "layout": {
+ "text-allow-overlap": true,
+ "symbol-placement": "line",
+ "symbol-spacing": 200,
+ "text-field": [
+ "get",
+ "chart_label_text"
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-rotation-alignment": "viewport"
+ },
+ "paint": {
+ "text-color": "rgba(7,7,7,1)"
+ }
+ },
+ {
+ "id": "subsea-cables",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "seabed_line",
+ "paint": {
+ "line-color": "#814d99",
+ "line-width": 1.3,
+ "line-dasharray": [
+ 3,
+ 1.2
+ ]
+ }
+ },
+ {
+ "id": "coast-structures-line",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "baseline_line",
+ "paint": {
+ "line-color": "#5f5a50",
+ "line-width": 1.4
+ }
+ },
+ {
+ "id": "land-structures-line",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "onshore_structure_line",
+ "paint": {
+ "line-color": "rgba(147,116,39,1)",
+ "line-width": 2
+ }
+ },
+ {
+ "id": "water-boundary",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "depth_zone_739",
+ "paint": {
+ "line-color": "#4f8ca7",
+ "line-width": 1.1
+ }
+ },
+ {
+ "id": "regulatory-boundary",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "depth_zone_741",
+ "paint": {
+ "line-color": "#cb5c46",
+ "line-width": 1.2,
+ "line-dasharray": [
+ 2,
+ 2
+ ]
+ }
+ },
+ {
+ "id": "height-limit-line",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "clearance_limit_line",
+ "paint": {
+ "line-color": "#ad3b6a",
+ "line-width": 1.1
+ }
+ },
+ {
+ "id": "clip-outline",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "baseline_outline",
+ "paint": {
+ "line-color": "rgba(95,106,95,1)",
+ "line-width": 2
+ }
+ },
+ {
+ "id": "danger-outline",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "hazard_boundary_outline",
+ "paint": {
+ "line-color": "rgba(95,106,95,1)",
+ "line-width": 3,
+ "line-dasharray": [
+ 3,
+ 2
+ ]
+ }
+ },
+ {
+ "id": "navigation-hazard-outline",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "navigation_hazard_outline",
+ "paint": {
+ "line-width": [
+ "coalesce",
+ [
+ "get",
+ "chart_line_width"
+ ],
+ 1
+ ],
+ "line-color": [
+ "coalesce",
+ [
+ "get",
+ "chart_line_color"
+ ],
+ "rgba(136,152,139,1)"
+ ]
+ }
+ },
+ {
+ "id": "anchor-danger-outline",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "anchor_caution_hazard_outline",
+ "paint": {
+ "line-width": [
+ "coalesce",
+ [
+ "get",
+ "chart_line_width"
+ ],
+ 1
+ ],
+ "line-color": [
+ "coalesce",
+ [
+ "get",
+ "chart_line_color"
+ ],
+ "rgba(136,152,139,1)"
+ ]
+ }
+ },
+ {
+ "id": "anchorage-outline",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "anchorage_outline",
+ "paint": {
+ "line-color": [
+ "coalesce",
+ [
+ "get",
+ "chart_line_color"
+ ],
+ "rgba(136,152,139,1)"
+ ],
+ "line-width": [
+ "coalesce",
+ [
+ "get",
+ "chart_line_width"
+ ],
+ 2
+ ],
+ "line-dasharray": [
+ 2,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "facility-zone-outline",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "facility_boundary_outline",
+ "paint": {
+ "line-color": [
+ "coalesce",
+ [
+ "get",
+ "chart_line_color"
+ ],
+ "rgba(136,152,139,1)"
+ ],
+ "line-width": [
+ "coalesce",
+ [
+ "get",
+ "chart_line_width"
+ ],
+ 1
+ ]
+ }
+ },
+ {
+ "id": "special-pattern-line-754",
+ "type": "line",
+ "source": "navsea_delivery",
+ "source-layer": "clip_outline_754",
+ "paint": {
+ "line-pattern": "special_pattern_line_754",
+ "line-width": 8
+ }
+ },
+ {
+ "id": "hazard-points",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "navigation_hazard_point",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-image": [
+ "coalesce",
+ [
+ "get",
+ "icon_id"
+ ],
+ ""
+ ]
+ }
+ },
+ {
+ "id": "anchorage-symbols",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "anchorage_point",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-image": [
+ "coalesce",
+ [
+ "get",
+ "icon_id"
+ ],
+ ""
+ ]
+ }
+ },
+ {
+ "id": "anchor-hazard-points",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "anchor_caution_hazard_point",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-image": [
+ "coalesce",
+ [
+ "get",
+ "icon_id"
+ ],
+ ""
+ ]
+ },
+ "filter": [
+ "all",
+ [
+ "!",
+ [
+ "has",
+ "class_code"
+ ]
+ ],
+ [
+ "!=",
+ [
+ "get",
+ "chart_symbol_code"
+ ],
+ "hz_obst"
+ ],
+ [
+ "!=",
+ [
+ "get",
+ "chart_symbol_code"
+ ],
+ "hazard_mark"
+ ],
+ [
+ "!=",
+ [
+ "get",
+ "chart_symbol_code"
+ ],
+ "hz_reef"
+ ]
+ ]
+ },
+ {
+ "id": "anchor-hazard-points-428",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "anchor_caution_hazard_point",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-image": [
+ "coalesce",
+ [
+ "get",
+ "icon_id"
+ ],
+ ""
+ ]
+ }
+ },
+ {
+ "id": "nav-light-flare",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "navigation_marks",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-size": 1.0,
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "light_color_code"
+ ],
+ "green",
+ "fl_G",
+ "red",
+ "fl_R",
+ "yellow",
+ "fl_YW",
+ "white",
+ "fl_YW",
+ "amber",
+ "fl_YW",
+ "orange",
+ "fl_YW",
+ "fl_YW"
+ ]
+ },
+ "filter": [
+ "all",
+ [
+ "has",
+ "light_color_code"
+ ],
+ [
+ "any",
+ [
+ "all",
+ [
+ "has",
+ "shape_class_code"
+ ],
+ [
+ "match",
+ [
+ "to-number",
+ [
+ "get",
+ "shape_class_code"
+ ]
+ ],
+ 301,
+ true,
+ 302,
+ true,
+ 303,
+ true,
+ 306,
+ true,
+ 311,
+ true,
+ 312,
+ true,
+ 315,
+ true,
+ 316,
+ true,
+ 318,
+ true,
+ 320,
+ true,
+ 322,
+ true,
+ 324,
+ true,
+ 326,
+ true,
+ 328,
+ true,
+ 332,
+ true,
+ 334,
+ true,
+ false
+ ]
+ ],
+ [
+ "all",
+ [
+ "has",
+ "display_code"
+ ],
+ [
+ "match",
+ [
+ "slice",
+ [
+ "get",
+ "display_code"
+ ],
+ 0,
+ 3
+ ],
+ "301",
+ true,
+ "302",
+ true,
+ "303",
+ true,
+ "306",
+ true,
+ "311",
+ true,
+ "312",
+ true,
+ "315",
+ true,
+ "316",
+ true,
+ "318",
+ true,
+ "320",
+ true,
+ "322",
+ true,
+ "324",
+ true,
+ "326",
+ true,
+ "328",
+ true,
+ "332",
+ true,
+ "334",
+ true,
+ false
+ ]
+ ],
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "minor_light"
+ ]
+ ]
+ ]
+ },
+ {
+ "id": "nav-light-arc",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "navigation_marks",
+ "layout": {
+ "visibility": "visible",
+ "icon-allow-overlap": true,
+ "icon-rotation-alignment": "map",
+ "icon-image": [
+ "coalesce",
+ [
+ "get",
+ "arc_id"
+ ],
+ ""
+ ]
+ },
+ "filter": [
+ "all",
+ [
+ "==",
+ [
+ "get",
+ "chart_symbol_code"
+ ],
+ "lighthouse"
+ ],
+ [
+ "has",
+ "light_color_code"
+ ]
+ ]
+ },
+ {
+ "id": "nav-marks-harbor-lighthouses",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "navigation_marks",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-size": 1.08,
+ "icon-image": "lt_hbr"
+ },
+ "filter": [
+ "any",
+ [
+ "all",
+ [
+ "has",
+ "display_code"
+ ],
+ [
+ "==",
+ [
+ "slice",
+ [
+ "get",
+ "display_code"
+ ],
+ 0,
+ 3
+ ],
+ "301"
+ ]
+ ],
+ [
+ "all",
+ [
+ "!",
+ [
+ "has",
+ "display_code"
+ ]
+ ],
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "lt_hbr"
+ ]
+ ]
+ ]
+ },
+ {
+ "id": "nav-marks-breakwater-lighthouses",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "navigation_marks",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-size": 1.08,
+ "icon-image": "lt_bkw"
+ },
+ "filter": [
+ "any",
+ [
+ "all",
+ [
+ "has",
+ "display_code"
+ ],
+ [
+ "==",
+ [
+ "slice",
+ [
+ "get",
+ "display_code"
+ ],
+ 0,
+ 3
+ ],
+ "302"
+ ]
+ ],
+ [
+ "all",
+ [
+ "!",
+ [
+ "has",
+ "display_code"
+ ]
+ ],
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "lt_bkw"
+ ]
+ ]
+ ]
+ },
+ {
+ "id": "nav-marks-small-lights",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "navigation_marks",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-image": [
+ "case",
+ [
+ "has",
+ "display_code"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "display_code"
+ ],
+ "30300000",
+ "lt_min",
+ "30300002",
+ "lt_min",
+ "30300004",
+ "lt_min",
+ "30500001",
+ "lt_lead_a",
+ "30500002",
+ "lt_lead_b",
+ "30500003",
+ "lt_lead_c",
+ "30500004",
+ "lt_lead_c",
+ "30500010",
+ "lt_lead_c",
+ "30600000",
+ "lt_min",
+ "30600001",
+ "lt_min",
+ "30600002",
+ "lt_min",
+ "30600003",
+ "lt_min",
+ "30600004",
+ "lt_min",
+ "30600006",
+ "lt_min",
+ "30700000",
+ "mk_lead_c",
+ "30700001",
+ "light_up_green",
+ "30700002",
+ "light_up_red",
+ "30700003",
+ "mk_lead_c",
+ "30700004",
+ "mk_lead_c",
+ "30700007",
+ "mk_lead_c",
+ "30800000",
+ "mk_lead_v",
+ "30900000",
+ "lt_lead_c",
+ "30900002",
+ "lt_lead_b",
+ "30900004",
+ "lt_lead_c",
+ "30900009",
+ "lt_lead_c",
+ "30900011",
+ "lt_lead_c",
+ "lt_min"
+ ],
+ "lt_min"
+ ]
+ },
+ "filter": [
+ "any",
+ [
+ "all",
+ [
+ "has",
+ "display_code"
+ ],
+ [
+ "match",
+ [
+ "slice",
+ [
+ "get",
+ "display_code"
+ ],
+ 0,
+ 3
+ ],
+ "303",
+ true,
+ "305",
+ true,
+ "306",
+ true,
+ "307",
+ true,
+ "308",
+ true,
+ "309",
+ true,
+ false
+ ]
+ ],
+ [
+ "all",
+ [
+ "!",
+ [
+ "has",
+ "display_code"
+ ]
+ ],
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "minor_light"
+ ]
+ ]
+ ]
+ },
+ {
+ "id": "nav-marks-light-beacons",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "navigation_marks",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-image": [
+ "case",
+ [
+ "has",
+ "display_code"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "display_code"
+ ],
+ "31100002",
+ "lt_bcn",
+ "31100004",
+ "lt_bcn",
+ "31135001",
+ "lt_bcn",
+ "31135102",
+ "lt_bcn",
+ "31135400",
+ "light_beacon_north_cardinal_variantt",
+ "31135404",
+ "light_beacon_north_cardinal_variantt",
+ "31135504",
+ "light_beacon_east_cardinal_variantt",
+ "31135604",
+ "light_beacon_north_cardinal_variantt_311356",
+ "31135701",
+ "light_beacon_south_cardinal_variantt",
+ "31135704",
+ "light_beacon_south_cardinal_variantt",
+ "31135800",
+ "light_beacon_west_cardinal_variantt_311358",
+ "31135804",
+ "light_beacon_west_cardinal_variantt_311358",
+ "31135900",
+ "light_beacon_isolated_danger_variantt_311359",
+ "31135904",
+ "light_beacon_isolated_danger_variantt_311359",
+ "31136003",
+ "light_beacon_safe_water_variantt_311360",
+ "31136004",
+ "light_beacon_safe_water_variantt_311360",
+ "lt_bcn"
+ ],
+ "lt_bcn"
+ ]
+ },
+ "filter": [
+ "any",
+ [
+ "all",
+ [
+ "has",
+ "display_code"
+ ],
+ [
+ "==",
+ [
+ "slice",
+ [
+ "get",
+ "display_code"
+ ],
+ 0,
+ 3
+ ],
+ "311"
+ ]
+ ],
+ [
+ "all",
+ [
+ "!",
+ [
+ "has",
+ "display_code"
+ ]
+ ],
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "lt_bcn"
+ ]
+ ]
+ ]
+ },
+ {
+ "id": "nav-marks",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "navigation_marks",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-image": [
+ "case",
+ [
+ "has",
+ "display_code"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "display_code"
+ ],
+ "31200001",
+ "bu_lat",
+ "31200003",
+ "bu_lat",
+ "31235001",
+ "buoy_port_lateral_variantt_312350",
+ "31235004",
+ "buoy_port_lateral_variantt_312350",
+ "31235102",
+ "buoy_starboard_lateral_variantt_312351",
+ "31235404",
+ "buoy_north_cardinal",
+ "31235504",
+ "buoy_east_cardinal",
+ "31235604",
+ "buoy_west_cardinal",
+ "31235704",
+ "buoy_south_cardinal",
+ "31235804",
+ "buoy_isolated_danger",
+ "31235904",
+ "buoy_safe_water",
+ "31236003",
+ "buoy_special_mark",
+ "31236004",
+ "buoy_special_mark",
+ "31236302",
+ "mooring_buoy",
+ "31236303",
+ "mooring_buoy",
+ "31300000",
+ "bu_lat",
+ "31300001",
+ "bu_lat",
+ "31300002",
+ "bu_lat",
+ "31300003",
+ "bu_lat",
+ "31300004",
+ "bu_lat",
+ "31300010",
+ "bu_lat",
+ "31336300",
+ "mooring_buoy",
+ "32300000",
+ "bu_pil",
+ "32300001",
+ "bu_pil",
+ "32300002",
+ "bu_pil",
+ "32300003",
+ "bu_pil",
+ "32300004",
+ "bu_pil",
+ "32500000",
+ "bu_can",
+ "32500001",
+ "bu_can",
+ "32500002",
+ "bu_can",
+ "32500003",
+ "bu_can",
+ "32500004",
+ "bu_can",
+ "32700000",
+ "bu_lat",
+ "32700001",
+ "bu_lat",
+ "32700002",
+ "bu_lat",
+ "32700003",
+ "bu_lat",
+ "32700004",
+ "bu_lat",
+ "32800001",
+ "bu_lat",
+ "32800002",
+ "bu_lat",
+ "32800003",
+ "bu_lat",
+ [
+ "coalesce",
+ [
+ "get",
+ "icon_id"
+ ],
+ ""
+ ]
+ ],
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "coastal_lighthouse_over_15m"
+ ],
+ "lt_cst",
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "lt_hbr"
+ ],
+ "lt_hbr",
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "lt_bkw"
+ ],
+ "lt_bkw",
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "minor_light"
+ ],
+ "lt_min",
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "lattice_buoy"
+ ],
+ "bu_lat",
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "pillar_buoy"
+ ],
+ "bu_pil",
+ [
+ "==",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "can_buoy"
+ ],
+ "bu_can",
+ [
+ "coalesce",
+ [
+ "get",
+ "icon_id"
+ ],
+ ""
+ ]
+ ]
+ },
+ "filter": [
+ "all",
+ [
+ "!",
+ [
+ "all",
+ [
+ "has",
+ "display_code"
+ ],
+ [
+ "match",
+ [
+ "slice",
+ [
+ "get",
+ "display_code"
+ ],
+ 0,
+ 3
+ ],
+ "301",
+ true,
+ "302",
+ true,
+ "303",
+ true,
+ "305",
+ true,
+ "306",
+ true,
+ "307",
+ true,
+ "308",
+ true,
+ "309",
+ true,
+ "311",
+ true,
+ false
+ ]
+ ]
+ ],
+ [
+ "!=",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "lt_hbr"
+ ],
+ [
+ "!=",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "lt_bkw"
+ ],
+ [
+ "!=",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "minor_light"
+ ],
+ [
+ "!=",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "lt_bcn"
+ ]
+ ]
+ },
+ {
+ "id": "facility-points",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "facility_boundary_point",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-image": [
+ "coalesce",
+ [
+ "get",
+ "icon_id"
+ ],
+ ""
+ ]
+ }
+ },
+ {
+ "id": "pilot-station-points",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "pilot_station_point",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-image": "fac_pilot"
+ }
+ },
+ {
+ "id": "landmark-points",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "onshore_structure_point",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-image": [
+ "coalesce",
+ [
+ "get",
+ "icon_id"
+ ],
+ ""
+ ]
+ },
+ "filter": [
+ "any",
+ [
+ "has",
+ "class_code"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "chimney",
+ true,
+ "tower_yagura_windmill",
+ true,
+ "maritime_office",
+ true,
+ "fishing_cooperative",
+ true,
+ "mountain_top",
+ true,
+ "other_landmark_monument",
+ true,
+ false
+ ]
+ ]
+ },
+ {
+ "id": "landmark-point-fallback",
+ "type": "circle",
+ "source": "navsea_delivery",
+ "source-layer": "onshore_structure_point",
+ "filter": [
+ "all",
+ [
+ "!",
+ [
+ "has",
+ "class_code"
+ ]
+ ],
+ [
+ "match",
+ [
+ "get",
+ "canonical_object_type"
+ ],
+ "chimney",
+ false,
+ "tower_yagura_windmill",
+ false,
+ "maritime_office",
+ false,
+ "fishing_cooperative",
+ false,
+ "mountain_top",
+ false,
+ "other_landmark_monument",
+ false,
+ true
+ ]
+ ],
+ "paint": {
+ "circle-radius": 3,
+ "circle-color": "#695641",
+ "circle-stroke-color": "#fff9ee",
+ "circle-stroke-width": 0.8
+ }
+ },
+ {
+ "id": "bottom-material-labels",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "seabed_text_point",
+ "minzoom": 11,
+ "filter": [
+ "has",
+ "chart_label_text"
+ ],
+ "layout": {
+ "text-allow-overlap": true,
+ "text-field": [
+ "get",
+ "chart_label_text"
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 10
+ },
+ "paint": {
+ "text-color": "rgba(0,0,0,1)"
+ }
+ },
+ {
+ "id": "height-limit-points",
+ "type": "circle",
+ "source": "navsea_delivery",
+ "source-layer": "clearance_limit_point",
+ "paint": {
+ "circle-radius": 3.5,
+ "circle-color": "#ab355f",
+ "circle-stroke-color": "#ffffff",
+ "circle-stroke-width": 0.8
+ }
+ },
+ {
+ "id": "height-limit-name-labels",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "clearance_limit_point",
+ "minzoom": 11,
+ "filter": [
+ "has",
+ "name_ja"
+ ],
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "get",
+ "name_ja"
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 12,
+ "text-anchor": "bottom"
+ },
+ "paint": {
+ "text-color": "rgba(255,0,0,1)"
+ }
+ },
+ {
+ "id": "height-limit-value-labels",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "clearance_limit_point",
+ "minzoom": 11,
+ "filter": [
+ "has",
+ "chart_label_text"
+ ],
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "concat",
+ "高さ",
+ [
+ "get",
+ "chart_label_text"
+ ],
+ "m"
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 12,
+ "text-anchor": "top"
+ },
+ "paint": {
+ "text-color": "rgba(255,0,0,1)"
+ }
+ },
+ {
+ "id": "nav-mark-labels",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "navigation_marks",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "get",
+ "chart_label_text"
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-offset": [
+ "match",
+ [
+ "get",
+ "chart_label_position_code"
+ ],
+ "tl",
+ [
+ "literal",
+ [
+ 2,
+ 2.5
+ ]
+ ],
+ "t",
+ [
+ "literal",
+ [
+ 0,
+ 2.5
+ ]
+ ],
+ "tr",
+ [
+ "literal",
+ [
+ -2,
+ 2.5
+ ]
+ ],
+ "l",
+ [
+ "literal",
+ [
+ 2,
+ 0.5
+ ]
+ ],
+ "c",
+ [
+ "literal",
+ [
+ 0,
+ 0.5
+ ]
+ ],
+ "r",
+ [
+ "literal",
+ [
+ -2,
+ 0.5
+ ]
+ ],
+ "bl",
+ [
+ "literal",
+ [
+ 2,
+ -1.5
+ ]
+ ],
+ "b",
+ [
+ "literal",
+ [
+ 0,
+ -1.5
+ ]
+ ],
+ "br",
+ [
+ "literal",
+ [
+ -2,
+ -1.5
+ ]
+ ],
+ [
+ "literal",
+ [
+ 0,
+ 0.5
+ ]
+ ]
+ ],
+ "text-anchor": [
+ "match",
+ [
+ "get",
+ "chart_label_position_code"
+ ],
+ "tl",
+ "top-left",
+ "t",
+ "top",
+ "tr",
+ "top-right",
+ "l",
+ "left",
+ "c",
+ "center",
+ "r",
+ "right",
+ "bl",
+ "bottom-left",
+ "b",
+ "bottom",
+ "br",
+ "bottom-right",
+ "center"
+ ]
+ },
+ "paint": {
+ "text-color": "rgba(0,0,0,1)"
+ },
+ "filter": [
+ "has",
+ "chart_label_text"
+ ]
+ },
+ {
+ "id": "nav-light-abbr-labels",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "navigation_marks",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "get",
+ "chart_label_subtext"
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-offset": [
+ "match",
+ [
+ "get",
+ "chart_label_position_code"
+ ],
+ "tl",
+ [
+ "literal",
+ [
+ 2,
+ 1.5
+ ]
+ ],
+ "t",
+ [
+ "literal",
+ [
+ 0,
+ 1.5
+ ]
+ ],
+ "tr",
+ [
+ "literal",
+ [
+ -2,
+ 1.5
+ ]
+ ],
+ "l",
+ [
+ "literal",
+ [
+ 2,
+ -0.5
+ ]
+ ],
+ "c",
+ [
+ "literal",
+ [
+ 0,
+ -0.5
+ ]
+ ],
+ "r",
+ [
+ "literal",
+ [
+ -2,
+ -0.5
+ ]
+ ],
+ "bl",
+ [
+ "literal",
+ [
+ 2,
+ -2.5
+ ]
+ ],
+ "b",
+ [
+ "literal",
+ [
+ 0,
+ -2.5
+ ]
+ ],
+ "br",
+ [
+ "literal",
+ [
+ -2,
+ -2.5
+ ]
+ ],
+ [
+ "literal",
+ [
+ 0,
+ -0.5
+ ]
+ ]
+ ],
+ "text-anchor": [
+ "match",
+ [
+ "get",
+ "chart_label_position_code"
+ ],
+ "tl",
+ "top-left",
+ "t",
+ "top",
+ "tr",
+ "top-right",
+ "l",
+ "left",
+ "c",
+ "center",
+ "r",
+ "right",
+ "bl",
+ "bottom-left",
+ "b",
+ "bottom",
+ "br",
+ "bottom-right",
+ "center"
+ ]
+ },
+ "paint": {
+ "text-color": [
+ "case",
+ [
+ "==",
+ [
+ "get",
+ "chart_text_color"
+ ],
+ "#000000"
+ ],
+ "rgba(0,0,0,1)",
+ [
+ "coalesce",
+ [
+ "get",
+ "chart_text_color"
+ ],
+ "rgba(0,0,0,1)"
+ ]
+ ]
+ },
+ "filter": [
+ "has",
+ "chart_label_subtext"
+ ]
+ },
+ {
+ "id": "place-labels-sea-en",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "place_label_sea",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "get",
+ "place_name_en"
+ ],
+ "text-font": [
+ "NotoSerifCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-anchor": "top"
+ },
+ "paint": {
+ "text-color": "rgba(0,0,0,1)"
+ },
+ "filter": [
+ "has",
+ "place_name_en"
+ ]
+ },
+ {
+ "id": "place-labels-sea-ja",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "place_label_sea",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "get",
+ "chart_label_text"
+ ],
+ "text-font": [
+ "NotoSerifCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-anchor": "bottom"
+ },
+ "paint": {
+ "text-color": "rgba(0,0,0,1)"
+ },
+ "filter": [
+ "has",
+ "chart_label_text"
+ ]
+ },
+ {
+ "id": "place-labels-land-en",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "place_label_land",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "get",
+ "place_name_en"
+ ],
+ "text-font": [
+ "NotoSerifCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-anchor": "top"
+ },
+ "paint": {
+ "text-color": "rgba(0,0,0,1)"
+ },
+ "filter": [
+ "has",
+ "place_name_en"
+ ]
+ },
+ {
+ "id": "place-labels-land-ja",
+ "type": "symbol",
+ "source": "navsea_delivery",
+ "source-layer": "place_label_land",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "get",
+ "chart_label_text"
+ ],
+ "text-font": [
+ "NotoSerifCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-anchor": "bottom"
+ },
+ "paint": {
+ "text-color": "rgba(0,0,0,1)"
+ },
+ "filter": [
+ "has",
+ "chart_label_text"
+ ]
+ }
+ ],
+ "metadata": {
+ "navsea_test_version": "kyushu-semantic-icon-v1-20260806",
+ "source_baseline": "/home/wwwroot/pbf-delivery-full-20260418-rebuild",
+ "icon_map": "/root/sourceserver/pbf/tasks/pbf/navsea_semantic_icon_map_v1.json"
+ }
+}
diff --git a/src/pbf/style.navsea-newpec-kyushu-icon-test-v1.json b/src/pbf/style.navsea-newpec-kyushu-icon-test-v1.json
new file mode 100644
index 0000000..a0ac5db
--- /dev/null
+++ b/src/pbf/style.navsea-newpec-kyushu-icon-test-v1.json
@@ -0,0 +1,5656 @@
+{
+ "version": 8,
+ "name": "NavSea Newpec Kyushu Icon Test v1",
+ "sprite": "http://192.168.200.184/newpec/sprite/sprite?v=111",
+ "glyphs": "http://192.168.200.184/newpec/fonts/{fontstack}/{range}.pbf",
+ "sources": {
+ "newpec": {
+ "type": "vector",
+ "minzoom": 0,
+ "maxzoom": 12,
+ "tiles": [
+ "http://192.168.200.184/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles/{z}/{x}/{y}.pbf"
+ ],
+ "attribution": ""
+ },
+ "mapple": {
+ "type": "raster",
+ "minzoom": 0,
+ "maxzoom": 19,
+ "tileSize": 256,
+ "tiles": [
+ "https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png"
+ ],
+ "attribution": "© 昭文社"
+ },
+ "shipfinder": {
+ "type": "geojson",
+ "data": {
+ "type": "FeatureCollection",
+ "features": []
+ }
+ }
+ },
+ "layers": [
+ {
+ "id": "#b#d2#d5#d10#land#P100",
+ "source": "newpec",
+ "source-layer": "P陸域",
+ "type": "fill",
+ "paint": {
+ "fill-color": [
+ "rgba",
+ 210,
+ 200,
+ 128,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#land#P陸上構造物陸",
+ "source": "newpec",
+ "source-layer": "P陸上構造物陸",
+ "type": "fill",
+ "paint": {
+ "fill-color": [
+ "rgba",
+ 147,
+ 116,
+ 39,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#land#L陸上構造物陸",
+ "source": "newpec",
+ "source-layer": "L陸上構造物陸",
+ "type": "line",
+ "paint": {
+ "line-width": 2,
+ "line-color": [
+ "rgba",
+ 147,
+ 116,
+ 39,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#land#C800#EN",
+ "source": "newpec",
+ "source-layer": "p地名陸",
+ "type": "symbol",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "get",
+ "英文字地名"
+ ],
+ "text-font": [
+ "NotoSerifCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-anchor": "top"
+ },
+ "paint": {
+ "text-color": [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#land#C800#JA",
+ "source": "newpec",
+ "source-layer": "p地名陸",
+ "type": "symbol",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "get",
+ "日本語地名"
+ ],
+ "text-font": [
+ "NotoSerifCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-anchor": "bottom"
+ },
+ "paint": {
+ "text-color": [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#mapple#background",
+ "type": "background",
+ "paint": {
+ "background-color": [
+ "rgba",
+ 255,
+ 255,
+ 255,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#mapple",
+ "type": "raster",
+ "source": "mapple"
+ },
+ {
+ "id": "#b#at#P基本線",
+ "source": "newpec",
+ "source-layer": "P基本線",
+ "type": "fill",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 120,
+ [
+ "rgba",
+ 210,
+ 200,
+ 128,
+ 1
+ ],
+ 121,
+ [
+ "rgba",
+ 210,
+ 200,
+ 128,
+ 1
+ ],
+ 130,
+ [
+ "rgba",
+ 143,
+ 191,
+ 147,
+ 1
+ ],
+ 141,
+ [
+ "rgba",
+ 240,
+ 250,
+ 255,
+ 1
+ ],
+ 142,
+ [
+ "rgba",
+ 240,
+ 250,
+ 255,
+ 1
+ ],
+ 143,
+ [
+ "rgba",
+ 230,
+ 250,
+ 251,
+ 1
+ ],
+ 144,
+ [
+ "rgba",
+ 220,
+ 250,
+ 251,
+ 1
+ ],
+ 145,
+ [
+ "rgba",
+ 240,
+ 250,
+ 255,
+ 1
+ ],
+ 146,
+ [
+ "rgba",
+ 230,
+ 250,
+ 255,
+ 1
+ ],
+ 147,
+ [
+ "rgba",
+ 220,
+ 250,
+ 255,
+ 1
+ ],
+ 148,
+ [
+ "rgba",
+ 230,
+ 250,
+ 255,
+ 1
+ ],
+ 149,
+ [
+ "rgba",
+ 220,
+ 250,
+ 255,
+ 1
+ ],
+ 150,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 151,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 152,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 153,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 160,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 161,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 162,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 200,
+ [
+ "rgba",
+ 220,
+ 250,
+ 255,
+ 1
+ ],
+ 210,
+ [
+ "rgba",
+ 200,
+ 240,
+ 255,
+ 1
+ ],
+ 220,
+ [
+ "rgba",
+ 200,
+ 240,
+ 255,
+ 1
+ ],
+ 221,
+ [
+ "rgba",
+ 200,
+ 230,
+ 255,
+ 1
+ ],
+ 230,
+ [
+ "rgba",
+ 200,
+ 230,
+ 255,
+ 1
+ ],
+ 240,
+ [
+ "rgba",
+ 180,
+ 220,
+ 255,
+ 1
+ ],
+ 250,
+ [
+ "rgba",
+ 171,
+ 192,
+ 255,
+ 1
+ ],
+ 260,
+ [
+ "rgba",
+ 163,
+ 181,
+ 255,
+ 1
+ ],
+ 270,
+ [
+ "rgba",
+ 132,
+ 169,
+ 255,
+ 1
+ ],
+ 280,
+ [
+ "rgba",
+ 89,
+ 155,
+ 255,
+ 1
+ ],
+ 290,
+ [
+ "rgba",
+ 90,
+ 140,
+ 255,
+ 1
+ ],
+ 291,
+ [
+ "rgba",
+ 100,
+ 132,
+ 255,
+ 1
+ ],
+ 292,
+ [
+ "rgba",
+ 128,
+ 128,
+ 255,
+ 1
+ ],
+ 293,
+ [
+ "rgba",
+ 139,
+ 118,
+ 255,
+ 1
+ ],
+ 294,
+ [
+ "rgba",
+ 150,
+ 100,
+ 255,
+ 1
+ ],
+ 295,
+ [
+ "rgba",
+ 160,
+ 100,
+ 255,
+ 1
+ ],
+ [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#d2#at#P基本線",
+ "source": "newpec",
+ "source-layer": "P基本線",
+ "type": "fill",
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "fill-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 120,
+ [
+ "rgba",
+ 210,
+ 200,
+ 128,
+ 1
+ ],
+ 121,
+ [
+ "rgba",
+ 210,
+ 200,
+ 128,
+ 1
+ ],
+ 130,
+ [
+ "rgba",
+ 143,
+ 191,
+ 147,
+ 1
+ ],
+ 141,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 142,
+ [
+ "rgba",
+ 182,
+ 235,
+ 219,
+ 1
+ ],
+ 143,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 144,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 145,
+ [
+ "rgba",
+ 182,
+ 235,
+ 219,
+ 1
+ ],
+ 146,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 147,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 148,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 149,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 150,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 151,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 152,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 153,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 160,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 161,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 162,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 200,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 210,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 220,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 221,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 230,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 240,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 250,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 260,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 270,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 280,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 290,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 291,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 292,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 293,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 294,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 295,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#d5#at#P基本線",
+ "source": "newpec",
+ "source-layer": "P基本線",
+ "type": "fill",
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "fill-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 120,
+ [
+ "rgba",
+ 210,
+ 200,
+ 128,
+ 1
+ ],
+ 121,
+ [
+ "rgba",
+ 210,
+ 200,
+ 128,
+ 1
+ ],
+ 130,
+ [
+ "rgba",
+ 143,
+ 191,
+ 147,
+ 1
+ ],
+ 141,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 142,
+ [
+ "rgba",
+ 167,
+ 224,
+ 233,
+ 1
+ ],
+ 143,
+ [
+ "rgba",
+ 182,
+ 235,
+ 219,
+ 1
+ ],
+ 144,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 145,
+ [
+ "rgba",
+ 167,
+ 224,
+ 233,
+ 1
+ ],
+ 146,
+ [
+ "rgba",
+ 182,
+ 235,
+ 219,
+ 1
+ ],
+ 147,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 148,
+ [
+ "rgba",
+ 182,
+ 235,
+ 219,
+ 1
+ ],
+ 149,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 150,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 151,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 152,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 153,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 160,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 161,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 162,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 200,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 210,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 220,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 221,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 230,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 240,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 250,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 260,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 270,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 280,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 290,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 291,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 292,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 293,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 294,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 295,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#d10#at#P基本線",
+ "source": "newpec",
+ "source-layer": "P基本線",
+ "type": "fill",
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "fill-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 120,
+ [
+ "rgba",
+ 210,
+ 200,
+ 128,
+ 1
+ ],
+ 121,
+ [
+ "rgba",
+ 210,
+ 200,
+ 128,
+ 1
+ ],
+ 130,
+ [
+ "rgba",
+ 143,
+ 191,
+ 147,
+ 1
+ ],
+ 141,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 142,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 143,
+ [
+ "rgba",
+ 167,
+ 224,
+ 233,
+ 1
+ ],
+ 144,
+ [
+ "rgba",
+ 182,
+ 235,
+ 219,
+ 1
+ ],
+ 145,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 146,
+ [
+ "rgba",
+ 167,
+ 224,
+ 233,
+ 1
+ ],
+ 147,
+ [
+ "rgba",
+ 182,
+ 235,
+ 219,
+ 1
+ ],
+ 148,
+ [
+ "rgba",
+ 167,
+ 224,
+ 233,
+ 1
+ ],
+ 149,
+ [
+ "rgba",
+ 182,
+ 235,
+ 219,
+ 1
+ ],
+ 150,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 151,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 152,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 153,
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ],
+ 160,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 161,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 162,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 200,
+ [
+ "rgba",
+ 182,
+ 235,
+ 219,
+ 1
+ ],
+ 210,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 220,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 221,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 230,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 240,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 250,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 260,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 270,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 280,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 290,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 291,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 292,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 293,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 294,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ 295,
+ [
+ "rgba",
+ 216,
+ 244,
+ 225,
+ 1
+ ],
+ [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#P潜堤塗",
+ "source": "newpec",
+ "source-layer": "P潜堤",
+ "type": "fill",
+ "paint": {
+ "fill-color": [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#P潜堤網",
+ "source": "newpec",
+ "source-layer": "P潜堤",
+ "type": "fill",
+ "paint": {
+ "fill-pattern": "fill-daytime-175"
+ }
+ },
+ {
+ "id": "#b#海底地形",
+ "source": "newpec",
+ "source-layer": "L海底地形",
+ "type": "line",
+ "paint": {
+ "line-width": [
+ "match",
+ [
+ "get",
+ "水深値(m)"
+ ],
+ 10,
+ 1,
+ 20,
+ 1,
+ 40,
+ 1,
+ 60,
+ 1,
+ 80,
+ 1,
+ 100,
+ 1,
+ 150,
+ 1,
+ 200,
+ 1,
+ 300,
+ 1,
+ 400,
+ 1,
+ 500,
+ 1,
+ 600,
+ 1,
+ 700,
+ 1,
+ 800,
+ 1,
+ 900,
+ 1,
+ 1000,
+ 1,
+ 1500,
+ 1,
+ 2000,
+ 1,
+ 2500,
+ 1,
+ 3000,
+ 1,
+ 3500,
+ 1,
+ 4000,
+ 1,
+ 4500,
+ 1,
+ 5000,
+ 1,
+ 5500,
+ 1,
+ 6000,
+ 1,
+ 8000,
+ 1,
+ 10000,
+ 1,
+ 0.5
+ ],
+ "line-color": [
+ "step",
+ [
+ "get",
+ "水深値(m)"
+ ],
+ [
+ "rgba",
+ 126,
+ 230,
+ 146,
+ 1
+ ],
+ 10,
+ [
+ "rgba",
+ 106,
+ 210,
+ 126,
+ 1
+ ],
+ 11,
+ [
+ "rgba",
+ 126,
+ 230,
+ 146,
+ 1
+ ],
+ 20,
+ [
+ "rgba",
+ 106,
+ 210,
+ 126,
+ 1
+ ],
+ 21,
+ [
+ "rgba",
+ 126,
+ 230,
+ 146,
+ 1
+ ],
+ 30,
+ [
+ "rgba",
+ 144,
+ 220,
+ 255,
+ 1
+ ],
+ 40,
+ [
+ "rgba",
+ 113,
+ 193,
+ 235,
+ 1
+ ],
+ 41,
+ [
+ "rgba",
+ 133,
+ 213,
+ 255,
+ 1
+ ],
+ 45,
+ [
+ "rgba",
+ 122,
+ 206,
+ 255,
+ 1
+ ],
+ 50,
+ [
+ "rgba",
+ 111,
+ 199,
+ 255,
+ 1
+ ],
+ 55,
+ [
+ "rgba",
+ 100,
+ 192,
+ 255,
+ 1
+ ],
+ 60,
+ [
+ "rgba",
+ 69,
+ 164,
+ 235,
+ 1
+ ],
+ 61,
+ [
+ "rgba",
+ 89,
+ 184,
+ 255,
+ 1
+ ],
+ 65,
+ [
+ "rgba",
+ 78,
+ 177,
+ 255,
+ 1
+ ],
+ 70,
+ [
+ "rgba",
+ 67,
+ 170,
+ 255,
+ 1
+ ],
+ 75,
+ [
+ "rgba",
+ 56,
+ 163,
+ 255,
+ 1
+ ],
+ 80,
+ [
+ "rgba",
+ 24,
+ 136,
+ 235,
+ 1
+ ],
+ 81,
+ [
+ "rgba",
+ 44,
+ 156,
+ 255,
+ 1
+ ],
+ 85,
+ [
+ "rgba",
+ 22,
+ 142,
+ 255,
+ 1
+ ],
+ 90,
+ [
+ "rgba",
+ 33,
+ 149,
+ 255,
+ 1
+ ],
+ 95,
+ [
+ "rgba",
+ 11,
+ 135,
+ 255,
+ 1
+ ],
+ 100,
+ [
+ "rgba",
+ 0,
+ 108,
+ 235,
+ 1
+ ],
+ 101,
+ [
+ "rgba",
+ 0,
+ 128,
+ 255,
+ 1
+ ],
+ 110,
+ [
+ "rgba",
+ 0,
+ 115,
+ 255,
+ 1
+ ],
+ 120,
+ [
+ "rgba",
+ 0,
+ 102,
+ 255,
+ 1
+ ],
+ 130,
+ [
+ "rgba",
+ 0,
+ 90,
+ 255,
+ 1
+ ],
+ 140,
+ [
+ "rgba",
+ 0,
+ 77,
+ 255,
+ 1
+ ],
+ 150,
+ [
+ "rgba",
+ 0,
+ 44,
+ 235,
+ 1
+ ],
+ 151,
+ [
+ "rgba",
+ 0,
+ 64,
+ 255,
+ 1
+ ],
+ 160,
+ [
+ "rgba",
+ 0,
+ 51,
+ 255,
+ 1
+ ],
+ 170,
+ [
+ "rgba",
+ 0,
+ 38,
+ 255,
+ 1
+ ],
+ 180,
+ [
+ "rgba",
+ 0,
+ 26,
+ 255,
+ 1
+ ],
+ 190,
+ [
+ "rgba",
+ 0,
+ 13,
+ 255,
+ 1
+ ],
+ 200,
+ [
+ "rgba",
+ 0,
+ 0,
+ 235,
+ 1
+ ],
+ 201,
+ [
+ "rgba",
+ 0,
+ 0,
+ 255,
+ 1
+ ],
+ 300,
+ [
+ "rgba",
+ 0,
+ 0,
+ 219,
+ 1
+ ],
+ 301,
+ [
+ "rgba",
+ 0,
+ 0,
+ 239,
+ 1
+ ],
+ 400,
+ [
+ "rgba",
+ 0,
+ 0,
+ 203,
+ 1
+ ],
+ 401,
+ [
+ "rgba",
+ 0,
+ 0,
+ 223,
+ 1
+ ],
+ 500,
+ [
+ "rgba",
+ 0,
+ 0,
+ 187,
+ 1
+ ],
+ 501,
+ [
+ "rgba",
+ 0,
+ 0,
+ 207,
+ 1
+ ],
+ 600,
+ [
+ "rgba",
+ 0,
+ 0,
+ 172,
+ 1
+ ],
+ 601,
+ [
+ "rgba",
+ 0,
+ 0,
+ 192,
+ 1
+ ],
+ 700,
+ [
+ "rgba",
+ 0,
+ 0,
+ 156,
+ 1
+ ],
+ 701,
+ [
+ "rgba",
+ 0,
+ 0,
+ 176,
+ 1
+ ],
+ 800,
+ [
+ "rgba",
+ 0,
+ 0,
+ 140,
+ 1
+ ],
+ 801,
+ [
+ "rgba",
+ 0,
+ 0,
+ 160,
+ 1
+ ],
+ 900,
+ [
+ "rgba",
+ 0,
+ 0,
+ 124,
+ 1
+ ],
+ 901,
+ [
+ "rgba",
+ 0,
+ 0,
+ 144,
+ 1
+ ],
+ 1000,
+ [
+ "rgba",
+ 0,
+ 0,
+ 108,
+ 1
+ ],
+ 1001,
+ [
+ "rgba",
+ 0,
+ 0,
+ 128,
+ 1
+ ],
+ 1100,
+ [
+ "rgba",
+ 0,
+ 6,
+ 122,
+ 1
+ ],
+ 1200,
+ [
+ "rgba",
+ 0,
+ 13,
+ 115,
+ 1
+ ],
+ 1300,
+ [
+ "rgba",
+ 0,
+ 19,
+ 109,
+ 1
+ ],
+ 1400,
+ [
+ "rgba",
+ 0,
+ 26,
+ 102,
+ 1
+ ],
+ 1500,
+ [
+ "rgba",
+ 20,
+ 50,
+ 116,
+ 1
+ ],
+ 1501,
+ [
+ "rgba",
+ 0,
+ 32,
+ 96,
+ 1
+ ],
+ 1600,
+ [
+ "rgba",
+ 0,
+ 39,
+ 90,
+ 1
+ ],
+ 1700,
+ [
+ "rgba",
+ 0,
+ 45,
+ 83,
+ 1
+ ],
+ 1800,
+ [
+ "rgba",
+ 0,
+ 51,
+ 77,
+ 1
+ ],
+ 1900,
+ [
+ "rgba",
+ 0,
+ 58,
+ 70,
+ 1
+ ],
+ 2000,
+ [
+ "rgba",
+ 0,
+ 51,
+ 77,
+ 1
+ ],
+ 2001,
+ [
+ "rgba",
+ 0,
+ 51,
+ 77,
+ 1
+ ],
+ 2100,
+ [
+ "rgba",
+ 0,
+ 56,
+ 72,
+ 1
+ ],
+ 2200,
+ [
+ "rgba",
+ 0,
+ 61,
+ 67,
+ 1
+ ],
+ 2300,
+ [
+ "rgba",
+ 0,
+ 67,
+ 61,
+ 1
+ ],
+ 2400,
+ [
+ "rgba",
+ 0,
+ 72,
+ 56,
+ 1
+ ],
+ 2500,
+ [
+ "rgba",
+ 10,
+ 87,
+ 61,
+ 1
+ ],
+ 2501,
+ [
+ "rgba",
+ 0,
+ 77,
+ 51,
+ 1
+ ],
+ 2600,
+ [
+ "rgba",
+ 0,
+ 82,
+ 46,
+ 1
+ ],
+ 2700,
+ [
+ "rgba",
+ 0,
+ 87,
+ 41,
+ 1
+ ],
+ 2800,
+ [
+ "rgba",
+ 0,
+ 92,
+ 36,
+ 1
+ ],
+ 2900,
+ [
+ "rgba",
+ 0,
+ 97,
+ 31,
+ 1
+ ],
+ 3000,
+ [
+ "rgba",
+ 10,
+ 112,
+ 36,
+ 1
+ ],
+ 3001,
+ [
+ "rgba",
+ 0,
+ 102,
+ 26,
+ 1
+ ],
+ 3100,
+ [
+ "rgba",
+ 0,
+ 108,
+ 20,
+ 1
+ ],
+ 3200,
+ [
+ "rgba",
+ 0,
+ 113,
+ 15,
+ 1
+ ],
+ 3300,
+ [
+ "rgba",
+ 0,
+ 112,
+ 10,
+ 1
+ ],
+ 3400,
+ [
+ "rgba",
+ 0,
+ 123,
+ 5,
+ 1
+ ],
+ 3500,
+ [
+ "rgba",
+ 10,
+ 138,
+ 10,
+ 1
+ ],
+ 3501,
+ [
+ "rgba",
+ 0,
+ 128,
+ 0,
+ 1
+ ],
+ 3600,
+ [
+ "rgba",
+ 2,
+ 124,
+ 2,
+ 1
+ ],
+ 3700,
+ [
+ "rgba",
+ 3,
+ 121,
+ 3,
+ 1
+ ],
+ 3800,
+ [
+ "rgba",
+ 5,
+ 117,
+ 5,
+ 1
+ ],
+ 3900,
+ [
+ "rgba",
+ 6,
+ 114,
+ 6,
+ 1
+ ],
+ 4000,
+ [
+ "rgba",
+ 18,
+ 120,
+ 18,
+ 1
+ ],
+ 4001,
+ [
+ "rgba",
+ 18,
+ 110,
+ 18,
+ 1
+ ],
+ 4100,
+ [
+ "rgba",
+ 10,
+ 107,
+ 10,
+ 1
+ ],
+ 4200,
+ [
+ "rgba",
+ 11,
+ 103,
+ 11,
+ 1
+ ],
+ 4300,
+ [
+ "rgba",
+ 13,
+ 100,
+ 13,
+ 1
+ ],
+ 4400,
+ [
+ "rgba",
+ 14,
+ 96,
+ 14,
+ 1
+ ],
+ 4500,
+ [
+ "rgba",
+ 26,
+ 103,
+ 26,
+ 1
+ ],
+ 4501,
+ [
+ "rgba",
+ 16,
+ 93,
+ 16,
+ 1
+ ],
+ 4600,
+ [
+ "rgba",
+ 18,
+ 89,
+ 18,
+ 1
+ ],
+ 4700,
+ [
+ "rgba",
+ 19,
+ 26,
+ 19,
+ 1
+ ],
+ 4800,
+ [
+ "rgba",
+ 21,
+ 82,
+ 21,
+ 1
+ ],
+ 4900,
+ [
+ "rgba",
+ 22,
+ 79,
+ 22,
+ 1
+ ],
+ 5000,
+ [
+ "rgba",
+ 34,
+ 85,
+ 34,
+ 1
+ ],
+ 5001,
+ [
+ "rgba",
+ 24,
+ 75,
+ 24,
+ 1
+ ],
+ 5100,
+ [
+ "rgba",
+ 26,
+ 72,
+ 26,
+ 1
+ ],
+ 5200,
+ [
+ "rgba",
+ 27,
+ 68,
+ 27,
+ 1
+ ],
+ 5300,
+ [
+ "rgba",
+ 29,
+ 65,
+ 29,
+ 1
+ ],
+ 5400,
+ [
+ "rgba",
+ 30,
+ 61,
+ 30,
+ 1
+ ],
+ 5500,
+ [
+ "rgba",
+ 42,
+ 68,
+ 42,
+ 1
+ ],
+ 5501,
+ [
+ "rgba",
+ 32,
+ 58,
+ 32,
+ 1
+ ],
+ 5600,
+ [
+ "rgba",
+ 34,
+ 54,
+ 34,
+ 1
+ ],
+ 5700,
+ [
+ "rgba",
+ 35,
+ 51,
+ 35,
+ 1
+ ],
+ 5800,
+ [
+ "rgba",
+ 37,
+ 47,
+ 37,
+ 1
+ ],
+ 5900,
+ [
+ "rgba",
+ 38,
+ 44,
+ 38,
+ 1
+ ],
+ 6000,
+ [
+ "rgba",
+ 50,
+ 50,
+ 50,
+ 1
+ ],
+ 6001,
+ [
+ "rgba",
+ 40,
+ 40,
+ 40,
+ 1
+ ],
+ 6500,
+ [
+ "rgba",
+ 58,
+ 30,
+ 58,
+ 1
+ ],
+ 7000,
+ [
+ "rgba",
+ 75,
+ 20,
+ 75,
+ 1
+ ],
+ 7500,
+ [
+ "rgba",
+ 93,
+ 10,
+ 93,
+ 1
+ ],
+ 8000,
+ [
+ "rgba",
+ 120,
+ 10,
+ 120,
+ 1
+ ],
+ 8001,
+ [
+ "rgba",
+ 110,
+ 0,
+ 110,
+ 1
+ ],
+ 8500,
+ [
+ "rgba",
+ 117,
+ 0,
+ 117,
+ 1
+ ],
+ 9000,
+ [
+ "rgba",
+ 123,
+ 0,
+ 123,
+ 1
+ ],
+ 9500,
+ [
+ "rgba",
+ 130,
+ 0,
+ 130,
+ 1
+ ],
+ 10000,
+ [
+ "rgba",
+ 147,
+ 0,
+ 147,
+ 1
+ ],
+ 10001,
+ [
+ "rgba",
+ 137,
+ 0,
+ 137,
+ 1
+ ],
+ 10500,
+ [
+ "rgba",
+ 143,
+ 0,
+ 143,
+ 1
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#L等深線",
+ "source": "newpec",
+ "source-layer": "L等深線",
+ "type": "line",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 800,
+ [
+ "rgba",
+ 31,
+ 102,
+ 135,
+ 1
+ ],
+ [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ]
+ ],
+ "line-width": 1
+ }
+ },
+ {
+ "id": "#b#L概略等深線",
+ "source": "newpec",
+ "source-layer": "L概略等深線",
+ "type": "line",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ "line-width": 1,
+ "line-dasharray": [
+ "literal",
+ [
+ 12,
+ 4
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#d2#L等深線",
+ "source": "newpec",
+ "source-layer": "L等深線",
+ "type": "line",
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 800,
+ [
+ "rgba",
+ 31,
+ 102,
+ 135,
+ 1
+ ],
+ [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ]
+ ],
+ "line-width": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 140,
+ 3,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#d2#L概略等深線",
+ "source": "newpec",
+ "source-layer": "L概略等深線",
+ "type": "line",
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "line-color": [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ "line-width": 1,
+ "line-dasharray": [
+ "literal",
+ [
+ 12,
+ 3
+ ]
+ ]
+ },
+ "filter": [
+ "!=",
+ [
+ "get",
+ "高さ/深度(m)"
+ ],
+ 2
+ ]
+ },
+ {
+ "id": "#d2#L概略等深線強調",
+ "source": "newpec",
+ "source-layer": "L概略等深線",
+ "type": "line",
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "line-color": [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ "line-width": 3,
+ "line-dasharray": [
+ "literal",
+ [
+ 4,
+ 1
+ ]
+ ]
+ },
+ "filter": [
+ "==",
+ [
+ "get",
+ "高さ/深度(m)"
+ ],
+ 2
+ ]
+ },
+ {
+ "id": "#d5#L等深線",
+ "source": "newpec",
+ "source-layer": "L等深線",
+ "type": "line",
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 800,
+ [
+ "rgba",
+ 31,
+ 102,
+ 135,
+ 1
+ ],
+ [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ]
+ ],
+ "line-width": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 141,
+ 3,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#d5#L概略等深線",
+ "source": "newpec",
+ "source-layer": "L概略等深線",
+ "type": "line",
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "line-color": [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ "line-width": 1,
+ "line-dasharray": [
+ "literal",
+ [
+ 12,
+ 3
+ ]
+ ]
+ },
+ "filter": [
+ "!=",
+ [
+ "get",
+ "高さ/深度(m)"
+ ],
+ 5
+ ]
+ },
+ {
+ "id": "#d5#L概略等深線強調",
+ "source": "newpec",
+ "source-layer": "L概略等深線",
+ "type": "line",
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "line-color": [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ "line-width": 3,
+ "line-dasharray": [
+ "literal",
+ [
+ 4,
+ 1
+ ]
+ ]
+ },
+ "filter": [
+ "==",
+ [
+ "get",
+ "高さ/深度(m)"
+ ],
+ 5
+ ]
+ },
+ {
+ "id": "#d10#L等深線",
+ "source": "newpec",
+ "source-layer": "L等深線",
+ "type": "line",
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 800,
+ [
+ "rgba",
+ 31,
+ 102,
+ 135,
+ 1
+ ],
+ [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ]
+ ],
+ "line-width": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 142,
+ 3,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#d10#L概略等深線",
+ "source": "newpec",
+ "source-layer": "L概略等深線",
+ "type": "line",
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "line-color": [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ "line-width": 1,
+ "line-dasharray": [
+ "literal",
+ [
+ 12,
+ 3
+ ]
+ ]
+ },
+ "filter": [
+ "!=",
+ [
+ "get",
+ "高さ/深度(m)"
+ ],
+ 10
+ ]
+ },
+ {
+ "id": "#d10#L概略等深線強調",
+ "source": "newpec",
+ "source-layer": "L概略等深線",
+ "type": "line",
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "line-color": [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ "line-width": 3,
+ "line-dasharray": [
+ "literal",
+ [
+ 4,
+ 1
+ ]
+ ]
+ },
+ "filter": [
+ "==",
+ [
+ "get",
+ "高さ/深度(m)"
+ ],
+ 10
+ ]
+ },
+ {
+ "id": "#b#d2#d5#d10#at#P9",
+ "source": "newpec",
+ "source-layer": "P漁具定置箇所",
+ "type": "fill",
+ "paint": {
+ "fill-pattern": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 900,
+ "fill-daytime-900",
+ 910,
+ "fill-daytime-910",
+ 920,
+ "fill-daytime-401",
+ ""
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#P9#ククリ",
+ "source": "newpec",
+ "source-layer": "P漁具定置箇所",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ "line-width": 1
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#P4#at#P投錨注意障害物透明",
+ "source": "newpec",
+ "source-layer": "P投錨注意障害物透明",
+ "type": "fill",
+ "paint": {
+ "fill-color": [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#P4#P投錨注意障害物",
+ "source": "newpec",
+ "source-layer": "P投錨注意障害物",
+ "type": "fill",
+ "paint": {
+ "fill-pattern": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 405,
+ "fill-daytime-401",
+ 407,
+ "fill-daytime-407",
+ 408,
+ "fill-daytime-407",
+ 420,
+ "fill-daytime-420",
+ 421,
+ "fill-daytime-421",
+ 422,
+ "fill-daytime-421",
+ 423,
+ "fill-daytime-421",
+ 424,
+ "fill-daytime-421",
+ 425,
+ "fill-daytime-421",
+ 426,
+ "fill-daytime-421",
+ 427,
+ "fill-daytime-427",
+ 428,
+ "fill-daytime-428",
+ 429,
+ "fill-daytime-429",
+ ""
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#P4#P航行危険障害物",
+ "source": "newpec",
+ "source-layer": "P航行危険障害物",
+ "type": "fill",
+ "paint": {
+ "fill-pattern": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 405,
+ "fill-daytime-401",
+ 407,
+ "fill-daytime-407",
+ 408,
+ "fill-daytime-407",
+ 420,
+ "fill-daytime-420",
+ 421,
+ "fill-daytime-421",
+ 422,
+ "fill-daytime-421",
+ 423,
+ "fill-daytime-421",
+ 424,
+ "fill-daytime-421",
+ 425,
+ "fill-daytime-421",
+ 426,
+ "fill-daytime-421",
+ 427,
+ "fill-daytime-427",
+ 428,
+ "fill-daytime-428",
+ 429,
+ "fill-daytime-429",
+ ""
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#BB#P錨泊地等",
+ "source": "newpec",
+ "source-layer": "P錨泊地等",
+ "type": "fill",
+ "paint": {
+ "fill-color": [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#BK#P航路",
+ "source": "newpec",
+ "source-layer": "P航路",
+ "type": "fill",
+ "paint": {
+ "fill-color": [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#BS#P施設・境界線等透明",
+ "source": "newpec",
+ "source-layer": "P施設・境界線等透明",
+ "type": "fill",
+ "paint": {
+ "fill-color": [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#BS#P施設・境界線等",
+ "source": "newpec",
+ "source-layer": "P施設・境界線等",
+ "type": "fill",
+ "paint": {
+ "fill-pattern": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 745,
+ "fill-daytime-745",
+ 746,
+ "fill-daytime-746",
+ 747,
+ "fill-daytime-747",
+ 750,
+ "fill-daytime-750",
+ 753,
+ "fill-daytime-753",
+ 754,
+ "fill-daytime-754",
+ 755,
+ "fill-daytime-755",
+ 756,
+ "fill-daytime-756",
+ 757,
+ "fill-daytime-756",
+ 758,
+ "fill-daytime-756",
+ ""
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#L4#P投錨注意障害物ククリ",
+ "source": "newpec",
+ "source-layer": "P投錨注意障害物ククリ",
+ "type": "line",
+ "paint": {
+ "line-width": 1,
+ "line-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 405,
+ [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ 407,
+ [
+ "rgba",
+ 212,
+ 177,
+ 221,
+ 1
+ ],
+ 408,
+ [
+ "rgba",
+ 212,
+ 177,
+ 221,
+ 1
+ ],
+ 413,
+ [
+ "rgba",
+ 158,
+ 175,
+ 206,
+ 1
+ ],
+ 427,
+ [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ 429,
+ [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ 434,
+ [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#L4#P航行危険障害物ククリ",
+ "source": "newpec",
+ "source-layer": "P航行危険障害物ククリ",
+ "type": "line",
+ "paint": {
+ "line-width": 1,
+ "line-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 405,
+ [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ 407,
+ [
+ "rgba",
+ 212,
+ 177,
+ 221,
+ 1
+ ],
+ 408,
+ [
+ "rgba",
+ 212,
+ 177,
+ 221,
+ 1
+ ],
+ 413,
+ [
+ "rgba",
+ 158,
+ 175,
+ 206,
+ 1
+ ],
+ 427,
+ [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ 429,
+ [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ 434,
+ [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BK#at#L700",
+ "source": "newpec",
+ "source-layer": "L700",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ "line-width": 2,
+ "line-dasharray": [
+ "literal",
+ [
+ 3,
+ 2
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BK#at#L701",
+ "source": "newpec",
+ "source-layer": "L701",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ "line-width": 1,
+ "line-dasharray": [
+ "literal",
+ [
+ 10,
+ 2
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BK#at#L702",
+ "source": "newpec",
+ "source-layer": "L702",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ "line-width": 1
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BK#at#L725",
+ "source": "newpec",
+ "source-layer": "L725",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ "line-width": 2,
+ "line-dasharray": [
+ "literal",
+ [
+ 2,
+ 1
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BK#at#L739",
+ "source": "newpec",
+ "source-layer": "L739",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 7,
+ 7,
+ 7,
+ 1
+ ],
+ "line-width": 1,
+ "line-dasharray": [
+ "literal",
+ [
+ 4,
+ 1
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BK#at#L740",
+ "source": "newpec",
+ "source-layer": "L740",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ "line-width": 1,
+ "line-dasharray": [
+ "literal",
+ [
+ 3,
+ 2
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BK#P航路ククリ",
+ "source": "newpec",
+ "source-layer": "P航路ククリ",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 742,
+ [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ]
+ ],
+ "line-width": 2,
+ "line-dasharray": [
+ "literal",
+ [
+ 3,
+ 1
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BK#at#L航路",
+ "source": "newpec",
+ "source-layer": "L航路",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 742,
+ [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ [
+ "rgba",
+ 171,
+ 192,
+ 177,
+ 1
+ ]
+ ],
+ "line-width": 2,
+ "line-dasharray": [
+ "literal",
+ [
+ 3,
+ 1
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BB#P錨泊地等ククリ",
+ "source": "newpec",
+ "source-layer": "P錨泊地等ククリ",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 720,
+ [
+ "rgba",
+ 212,
+ 177,
+ 221,
+ 1
+ ],
+ [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ]
+ ],
+ "line-width": 2,
+ "line-dasharray": [
+ "literal",
+ [
+ 2,
+ 1
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BB#P721ククリ",
+ "source": "newpec",
+ "source-layer": "P721ククリ",
+ "type": "line",
+ "paint": {
+ "line-pattern": "line-daytime-721",
+ "line-width": 8
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BS#P施設・境界線等ククリ",
+ "source": "newpec",
+ "source-layer": "P施設・境界線等ククリ",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ "line-width": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 798,
+ 3,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BS#P誘導線ククリ",
+ "source": "newpec",
+ "source-layer": "P誘導線ククリ",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 745,
+ [
+ "rgba",
+ 238,
+ 90,
+ 108,
+ 1
+ ],
+ 746,
+ [
+ "rgba",
+ 243,
+ 229,
+ 77,
+ 1
+ ],
+ 747,
+ [
+ "rgba",
+ 124,
+ 240,
+ 91,
+ 1
+ ],
+ [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ ],
+ "line-width": 1,
+ "line-dasharray": [
+ "literal",
+ [
+ 5,
+ 2,
+ 3,
+ 2
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BS#P754ククリ",
+ "source": "newpec",
+ "source-layer": "P754ククリ",
+ "type": "line",
+ "paint": {
+ "line-pattern": "line-daytime-754",
+ "line-width": 8
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BS#at#L741",
+ "source": "newpec",
+ "source-layer": "L741",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ "line-width": 2,
+ "line-dasharray": [
+ "literal",
+ [
+ 3,
+ 1
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BS#P730ククリ",
+ "source": "newpec",
+ "source-layer": "P730ククリ",
+ "type": "line",
+ "paint": {
+ "line-pattern": "line-daytime-730",
+ "line-width": 64
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BS#at#L749",
+ "source": "newpec",
+ "source-layer": "L749",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ "line-width": 1,
+ "line-dasharray": [
+ "literal",
+ [
+ 2,
+ 1
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BS#at#L748",
+ "source": "newpec",
+ "source-layer": "L748",
+ "type": "line",
+ "paint": {
+ "line-pattern": "line-daytime-748",
+ "line-width": 64
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BS#at#L738",
+ "source": "newpec",
+ "source-layer": "L738",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 7,
+ 7,
+ 7,
+ 1
+ ],
+ "line-width": 1,
+ "line-dasharray": [
+ "literal",
+ [
+ 3,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#BS#at#L海底線",
+ "source": "newpec",
+ "source-layer": "L海底線",
+ "type": "line",
+ "paint": {
+ "line-width": 16,
+ "line-pattern": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 710,
+ "line-daytime-710",
+ 711,
+ "line-daytime-710",
+ 712,
+ "line-daytime-712",
+ 713,
+ "line-daytime-713",
+ 714,
+ "line-daytime-713",
+ ""
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#L高さ制限",
+ "source": "newpec",
+ "source-layer": "L高さ制限",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 731,
+ [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ 732,
+ [
+ "rgba",
+ 7,
+ 7,
+ 7,
+ 1
+ ],
+ [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ "line-width": 1
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#P橋りょう等構造物",
+ "source": "newpec",
+ "source-layer": "P橋りょう等構造物",
+ "type": "fill",
+ "paint": {
+ "fill-color": [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#P橋りょう等構造物ククリ",
+ "source": "newpec",
+ "source-layer": "P橋りょう等構造物",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 95,
+ 106,
+ 95,
+ 1
+ ],
+ "line-width": 2
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#P基本線ククリ",
+ "source": "newpec",
+ "source-layer": "P基本線ククリ",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 130,
+ [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ 160,
+ [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ 175,
+ [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ 180,
+ [
+ "rgba",
+ 212,
+ 177,
+ 221,
+ 1
+ ],
+ [
+ "rgba",
+ 95,
+ 106,
+ 95,
+ 1
+ ]
+ ],
+ "line-width": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 130,
+ 1,
+ 160,
+ 1,
+ 170,
+ 1,
+ 175,
+ 1,
+ 180,
+ 1,
+ 2
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#P危険界ククリ",
+ "source": "newpec",
+ "source-layer": "P危険界ククリ",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 95,
+ 106,
+ 95,
+ 1
+ ],
+ "line-width": 3,
+ "line-dasharray": [
+ "literal",
+ [
+ 3,
+ 2
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#L基本線",
+ "source": "newpec",
+ "source-layer": "L基本線",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 129,
+ [
+ "rgba",
+ 129,
+ 195,
+ 226,
+ 1
+ ],
+ 161,
+ [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ 176,
+ [
+ "rgba",
+ 136,
+ 152,
+ 139,
+ 1
+ ],
+ [
+ "rgba",
+ 95,
+ 106,
+ 95,
+ 1
+ ]
+ ],
+ "line-width": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 129,
+ 1,
+ 161,
+ 1,
+ 171,
+ 1,
+ 176,
+ 1,
+ 2
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#L危険界",
+ "source": "newpec",
+ "source-layer": "L危険界",
+ "type": "line",
+ "paint": {
+ "line-color": [
+ "rgba",
+ 95,
+ 106,
+ 95,
+ 1
+ ],
+ "line-width": 3,
+ "line-dasharray": [
+ "literal",
+ [
+ 3,
+ 2
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#S4#S航行危険障害物",
+ "source": "newpec",
+ "source-layer": "p航行危険障害物",
+ "type": "symbol",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 401,
+ "symbol-daytime-401",
+ 402,
+ "symbol-daytime-401",
+ 403,
+ "symbol-daytime-401",
+ 404,
+ "symbol-daytime-404",
+ 405,
+ "symbol-daytime-405",
+ 406,
+ "symbol-daytime-406",
+ 407,
+ "symbol-daytime-407",
+ 408,
+ "symbol-daytime-408",
+ 409,
+ "symbol-daytime-409",
+ 410,
+ "symbol-daytime-410",
+ 411,
+ "symbol-daytime-410",
+ 412,
+ "symbol-daytime-412",
+ 413,
+ "symbol-daytime-413",
+ 414,
+ "symbol-daytime-414",
+ 415,
+ "symbol-daytime-413",
+ 420,
+ "symbol-daytime-420",
+ 421,
+ "symbol-daytime-421",
+ 422,
+ "symbol-daytime-422",
+ 424,
+ "symbol-daytime-424",
+ 425,
+ "symbol-daytime-425",
+ 426,
+ "symbol-daytime-426",
+ 427,
+ "symbol-daytime-427",
+ 428,
+ "symbol-daytime-428",
+ 429,
+ "symbol-daytime-429",
+ 430,
+ "symbol-daytime-430",
+ 431,
+ "symbol-daytime-431",
+ 432,
+ "symbol-daytime-432",
+ 433,
+ "symbol-daytime-433",
+ 434,
+ "symbol-daytime-434",
+ 498,
+ "symbol-daytime-498",
+ ""
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#S4#S投錨注意障害物",
+ "source": "newpec",
+ "source-layer": "p投錨注意障害物",
+ "type": "symbol",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 401,
+ "symbol-daytime-401",
+ 402,
+ "symbol-daytime-401",
+ 403,
+ "symbol-daytime-401",
+ 404,
+ "symbol-daytime-404",
+ 405,
+ "symbol-daytime-405",
+ 406,
+ "symbol-daytime-406",
+ 407,
+ "symbol-daytime-407",
+ 408,
+ "symbol-daytime-408",
+ 409,
+ "symbol-daytime-409",
+ 410,
+ "symbol-daytime-410",
+ 411,
+ "symbol-daytime-410",
+ 412,
+ "symbol-daytime-412",
+ 413,
+ "symbol-daytime-413",
+ 414,
+ "symbol-daytime-414",
+ 415,
+ "symbol-daytime-413",
+ 420,
+ "symbol-daytime-420",
+ 421,
+ "symbol-daytime-421",
+ 422,
+ "symbol-daytime-422",
+ 424,
+ "symbol-daytime-424",
+ 425,
+ "symbol-daytime-425",
+ 426,
+ "symbol-daytime-426",
+ 427,
+ "symbol-daytime-427",
+ 428,
+ "symbol-daytime-428",
+ 429,
+ "symbol-daytime-429",
+ 430,
+ "symbol-daytime-430",
+ 431,
+ "symbol-daytime-431",
+ 432,
+ "symbol-daytime-432",
+ 433,
+ "symbol-daytime-433",
+ 434,
+ "symbol-daytime-434",
+ 498,
+ "symbol-daytime-498",
+ ""
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#BK#S760",
+ "source": "newpec",
+ "source-layer": "p航路境界等",
+ "type": "symbol",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-rotation-alignment": "map",
+ "icon-rotate": [
+ "get",
+ "角度"
+ ],
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 759,
+ "symbol-daytime-759",
+ 760,
+ "symbol-daytime-760",
+ 761,
+ "symbol-daytime-761",
+ ""
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#BB#S720",
+ "source": "newpec",
+ "source-layer": "p錨泊地等",
+ "type": "symbol",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 719,
+ "symbol-daytime-719",
+ 720,
+ "symbol-daytime-720",
+ 721,
+ "symbol-daytime-721",
+ 722,
+ "symbol-daytime-721",
+ 723,
+ "symbol-daytime-721",
+ 724,
+ "symbol-daytime-724",
+ ""
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#BS#S底質",
+ "source": "newpec",
+ "source-layer": "p底質",
+ "type": "symbol",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-field": [
+ "get",
+ "名称"
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 10
+ },
+ "paint": {
+ "text-color": [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#BS#S500",
+ "source": "newpec",
+ "source-layer": "p施設・境界線等",
+ "type": "symbol",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "分類番号"
+ ],
+ 505,
+ "symbol-daytime-505",
+ 510,
+ "symbol-daytime-505",
+ 520,
+ "symbol-daytime-520",
+ 530,
+ "symbol-daytime-530",
+ 540,
+ "symbol-daytime-540",
+ 550,
+ "symbol-daytime-550",
+ ""
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#BS#Sパイロットステーション",
+ "source": "newpec",
+ "source-layer": "pパイロットステーション",
+ "type": "symbol",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-image": "symbol-daytime-500"
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#at#S陸上構造物",
+ "source": "newpec",
+ "source-layer": "p陸上構造物",
+ "type": "symbol",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-image": [
+ "concat",
+ "symbol-daytime-",
+ [
+ "get",
+ "分類番号"
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#S航路標識群#arc",
+ "source": "newpec",
+ "source-layer": "p航路標識群",
+ "type": "symbol",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-rotation-alignment": "map",
+ "icon-image": [
+ "case",
+ [
+ "has",
+ "明弧/分孤"
+ ],
+ [
+ "concat",
+ "arc-daytime-",
+ [
+ "get",
+ "明弧/分孤"
+ ]
+ ],
+ [
+ "concat",
+ "arc-daytime-",
+ [
+ "match",
+ [
+ "get",
+ "形状分類番号"
+ ],
+ 300,
+ "l",
+ 301,
+ "m",
+ "s"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "灯色"
+ ],
+ 1,
+ "1",
+ 2,
+ "2",
+ "3"
+ ]
+ ]
+ ]
+ },
+ "filter": [
+ "any",
+ [
+ "match",
+ [
+ "get",
+ "形状分類番号"
+ ],
+ 300,
+ true,
+ 301,
+ true,
+ 302,
+ true,
+ false
+ ],
+ [
+ "has",
+ "明弧/分孤"
+ ]
+ ]
+ },
+ {
+ "id": "#b#d2#d5#d10#S3#S航路標識群フレア",
+ "source": "newpec",
+ "source-layer": "p航路標識群",
+ "type": "symbol",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "灯色"
+ ],
+ 1,
+ "light-daytime-1",
+ 2,
+ "light-daytime-2",
+ "light-daytime-3"
+ ]
+ },
+ "filter": [
+ "match",
+ [
+ "get",
+ "形状分類番号"
+ ],
+ 301,
+ true,
+ 302,
+ true,
+ 303,
+ true,
+ 306,
+ true,
+ 311,
+ true,
+ 312,
+ true,
+ 315,
+ true,
+ 316,
+ true,
+ 318,
+ true,
+ 320,
+ true,
+ 322,
+ true,
+ 324,
+ true,
+ 326,
+ true,
+ 328,
+ true,
+ 332,
+ true,
+ 334,
+ true,
+ false
+ ]
+ },
+ {
+ "id": "#b#d2#d5#d10#at#S3#S航路標識群",
+ "source": "newpec",
+ "source-layer": "p航路標識群",
+ "type": "symbol",
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "表示用番号"
+ ],
+ "30000000",
+ "symbol-daytime-300",
+ "30000001",
+ "symbol-daytime-300",
+ "30000002",
+ "symbol-daytime-300",
+ "30000003",
+ "symbol-daytime-300",
+ "30000004",
+ "symbol-daytime-300",
+ "30000005",
+ "symbol-daytime-300",
+ "30000006",
+ "symbol-daytime-300",
+ "30000007",
+ "symbol-daytime-300",
+ "30000008",
+ "symbol-daytime-300",
+ "30000009",
+ "symbol-daytime-300",
+ "30000010",
+ "symbol-daytime-300",
+ "30000011",
+ "symbol-daytime-300",
+ "30100000",
+ "symbol-daytime-300",
+ "30100001",
+ "symbol-daytime-301",
+ "30100002",
+ "symbol-daytime-301",
+ "30100003",
+ "symbol-daytime-301",
+ "30100004",
+ "symbol-daytime-301",
+ "30100005",
+ "symbol-daytime-301",
+ "30100006",
+ "symbol-daytime-301",
+ "30100007",
+ "symbol-daytime-301",
+ "30100008",
+ "symbol-daytime-301",
+ "30100009",
+ "symbol-daytime-301",
+ "30100010",
+ "symbol-daytime-301",
+ "30100011",
+ "symbol-daytime-301",
+ "30200001",
+ "symbol-daytime-302",
+ "30200002",
+ "symbol-daytime-302",
+ "30200003",
+ "symbol-daytime-302",
+ "30200004",
+ "symbol-daytime-302",
+ "30200005",
+ "symbol-daytime-302",
+ "30200006",
+ "symbol-daytime-302",
+ "30200007",
+ "symbol-daytime-302",
+ "30200008",
+ "symbol-daytime-302",
+ "30200009",
+ "symbol-daytime-302",
+ "30200010",
+ "symbol-daytime-302",
+ "30200011",
+ "symbol-daytime-302",
+ "30300000",
+ "symbol-daytime-303",
+ "30300002",
+ "symbol-daytime-303",
+ "30300004",
+ "symbol-daytime-303",
+ "30500001",
+ "symbol-daytime-30500001",
+ "30500002",
+ "symbol-daytime-30500002",
+ "30500003",
+ "symbol-daytime-30500003",
+ "30500004",
+ "symbol-daytime-30500003",
+ "30500010",
+ "symbol-daytime-30500003",
+ "30600000",
+ "symbol-daytime-303",
+ "30600001",
+ "symbol-daytime-303",
+ "30600002",
+ "symbol-daytime-303",
+ "30600003",
+ "symbol-daytime-303",
+ "30600004",
+ "symbol-daytime-303",
+ "30600006",
+ "symbol-daytime-303",
+ "30700000",
+ "symbol-daytime-30700003",
+ "30700001",
+ "symbol-daytime-30700001",
+ "30700002",
+ "symbol-daytime-30700002",
+ "30700003",
+ "symbol-daytime-30700003",
+ "30700004",
+ "symbol-daytime-30700003",
+ "30700007",
+ "symbol-daytime-30700003",
+ "30800000",
+ "symbol-daytime-308",
+ "30900000",
+ "symbol-daytime-30500003",
+ "30900002",
+ "symbol-daytime-30500002",
+ "30900004",
+ "symbol-daytime-30500003",
+ "30900009",
+ "symbol-daytime-30500003",
+ "30900011",
+ "symbol-daytime-30500003",
+ "31000000",
+ "symbol-daytime-310",
+ "31000001",
+ "symbol-daytime-310",
+ "31000002",
+ "symbol-daytime-310",
+ "31000003",
+ "symbol-daytime-310",
+ "31000004",
+ "symbol-daytime-310",
+ "31035000",
+ "symbol-daytime-310",
+ "31035001",
+ "symbol-daytime-310",
+ "31035100",
+ "symbol-daytime-310",
+ "31035102",
+ "symbol-daytime-310",
+ "31035400",
+ "symbol-daytime-310",
+ "31035404",
+ "symbol-daytime-310",
+ "31035504",
+ "symbol-daytime-311355",
+ "31035600",
+ "symbol-daytime-310",
+ "31035700",
+ "symbol-daytime-310",
+ "31035704",
+ "symbol-daytime-310",
+ "31035800",
+ "symbol-daytime-310",
+ "31035804",
+ "symbol-daytime-310",
+ "31100002",
+ "symbol-daytime-310",
+ "31100004",
+ "symbol-daytime-310",
+ "31135001",
+ "symbol-daytime-311350",
+ "31135102",
+ "symbol-daytime-311351",
+ "31135400",
+ "symbol-daytime-311354",
+ "31135404",
+ "symbol-daytime-311354",
+ "31135504",
+ "symbol-daytime-311355",
+ "31135604",
+ "symbol-daytime-311356",
+ "31135701",
+ "symbol-daytime-311357",
+ "31135704",
+ "symbol-daytime-311357",
+ "31135800",
+ "symbol-daytime-311358",
+ "31135804",
+ "symbol-daytime-311358",
+ "31135900",
+ "symbol-daytime-311359",
+ "31135904",
+ "symbol-daytime-311359",
+ "31136003",
+ "symbol-daytime-311360",
+ "31136004",
+ "symbol-daytime-311360",
+ "31200001",
+ "symbol-daytime-327",
+ "31200003",
+ "symbol-daytime-327",
+ "31235001",
+ "symbol-daytime-312350",
+ "31235004",
+ "symbol-daytime-312350",
+ "31235102",
+ "symbol-daytime-312351",
+ "31235404",
+ "symbol-daytime-312354",
+ "31235504",
+ "symbol-daytime-312355",
+ "31235604",
+ "symbol-daytime-312356",
+ "31235704",
+ "symbol-daytime-312357",
+ "31235804",
+ "symbol-daytime-312358",
+ "31235904",
+ "symbol-daytime-312359",
+ "31236003",
+ "symbol-daytime-312360",
+ "31236004",
+ "symbol-daytime-312360",
+ "31236302",
+ "symbol-daytime-313362",
+ "31236303",
+ "symbol-daytime-313362",
+ "31300000",
+ "symbol-daytime-327",
+ "31300001",
+ "symbol-daytime-327",
+ "31300002",
+ "symbol-daytime-327",
+ "31300003",
+ "symbol-daytime-327",
+ "31300004",
+ "symbol-daytime-327",
+ "31300010",
+ "symbol-daytime-327",
+ "31335000",
+ "symbol-daytime-325",
+ "31335001",
+ "symbol-daytime-325",
+ "31335100",
+ "symbol-daytime-327",
+ "31335102",
+ "symbol-daytime-327",
+ "31335400",
+ "symbol-daytime-312354",
+ "31335600",
+ "symbol-daytime-312356",
+ "31335604",
+ "symbol-daytime-312356",
+ "31335700",
+ "symbol-daytime-312357",
+ "31335704",
+ "symbol-daytime-312357",
+ "31335800",
+ "symbol-daytime-312358",
+ "31336003",
+ "symbol-daytime-312360",
+ "31336300",
+ "symbol-daytime-313362",
+ "31400004",
+ "symbol-daytime-314",
+ "31436204",
+ "symbol-daytime-314362",
+ "31500003",
+ "symbol-daytime-314",
+ "31500004",
+ "symbol-daytime-314",
+ "31536203",
+ "symbol-daytime-314362",
+ "31536204",
+ "symbol-daytime-314362",
+ "31536403",
+ "symbol-daytime-314",
+ "31536404",
+ "symbol-daytime-314",
+ "31600004",
+ "symbol-daytime-316",
+ "31639904",
+ "symbol-daytime-316",
+ "31700004",
+ "symbol-daytime-317",
+ "31800003",
+ "symbol-daytime-317",
+ "31800004",
+ "symbol-daytime-317",
+ "32037000",
+ "symbol-daytime-320",
+ "32037002",
+ "symbol-daytime-320",
+ "32037003",
+ "symbol-daytime-320",
+ "32037004",
+ "symbol-daytime-320",
+ "32037100",
+ "symbol-daytime-320",
+ "32037101",
+ "symbol-daytime-320",
+ "32037103",
+ "symbol-daytime-320",
+ "32037200",
+ "symbol-daytime-320",
+ "32037203",
+ "symbol-daytime-320",
+ "32037204",
+ "symbol-daytime-320",
+ "32037303",
+ "symbol-daytime-320",
+ "32037304",
+ "symbol-daytime-320",
+ "32136000",
+ "symbol-daytime-321",
+ "32136003",
+ "symbol-daytime-321",
+ "32136004",
+ "symbol-daytime-321",
+ "32136010",
+ "symbol-daytime-321",
+ "32236003",
+ "symbol-daytime-321",
+ "32300000",
+ "symbol-daytime-323",
+ "32300001",
+ "symbol-daytime-323",
+ "32300002",
+ "symbol-daytime-323",
+ "32300003",
+ "symbol-daytime-323",
+ "32300004",
+ "symbol-daytime-323",
+ "32400001",
+ "symbol-daytime-323",
+ "32400002",
+ "symbol-daytime-323",
+ "32400004",
+ "symbol-daytime-323",
+ "32435001",
+ "symbol-daytime-324350",
+ "32435102",
+ "symbol-daytime-324351",
+ "32436003",
+ "symbol-daytime-324360",
+ "32436004",
+ "symbol-daytime-324360",
+ "32500000",
+ "symbol-daytime-325",
+ "32500001",
+ "symbol-daytime-325",
+ "32500002",
+ "symbol-daytime-325",
+ "32500003",
+ "symbol-daytime-325",
+ "32500004",
+ "symbol-daytime-325",
+ "32700000",
+ "symbol-daytime-327",
+ "32700001",
+ "symbol-daytime-327",
+ "32700002",
+ "symbol-daytime-327",
+ "32700003",
+ "symbol-daytime-327",
+ "32700004",
+ "symbol-daytime-327",
+ "32800001",
+ "symbol-daytime-327",
+ "32800002",
+ "symbol-daytime-327",
+ "32800003",
+ "symbol-daytime-327",
+ "33300000",
+ "symbol-daytime-333",
+ "33400001",
+ "symbol-daytime-333",
+ "33400002",
+ "symbol-daytime-333",
+ "33400003",
+ "symbol-daytime-333",
+ "33535000",
+ "symbol-daytime-335350",
+ "33535100",
+ "symbol-daytime-335351",
+ "33535900",
+ "symbol-daytime-335359",
+ "33535904",
+ "symbol-daytime-335359",
+ ""
+ ]
+ }
+ },
+ {
+ "id": "#b#C000",
+ "minzoom": 11,
+ "source": "newpec",
+ "source-layer": "L海底地形",
+ "type": "symbol",
+ "layout": {
+ "text-allow-overlap": true,
+ "symbol-placement": "line",
+ "symbol-spacing": 200,
+ "text-field": [
+ "get",
+ "水深値(m)"
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-rotation-alignment": "viewport"
+ },
+ "paint": {
+ "text-color": [
+ "rgba",
+ 7,
+ 7,
+ 7,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#C140#概略等深線",
+ "minzoom": 11,
+ "source": "newpec",
+ "source-layer": "L概略等深線",
+ "type": "symbol",
+ "layout": {
+ "text-allow-overlap": true,
+ "symbol-placement": "line",
+ "symbol-spacing": 200,
+ "text-field": [
+ "get",
+ "高さ/深度(m)"
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-rotation-alignment": "viewport"
+ },
+ "paint": {
+ "text-color": [
+ "rgba",
+ 7,
+ 7,
+ 7,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#C140",
+ "minzoom": 11,
+ "source": "newpec",
+ "source-layer": "L等深線",
+ "type": "symbol",
+ "layout": {
+ "text-allow-overlap": true,
+ "symbol-placement": "line",
+ "symbol-spacing": 200,
+ "text-field": [
+ "get",
+ "高さ/深度(m)"
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-rotation-alignment": "viewport"
+ },
+ "paint": {
+ "text-color": [
+ "rgba",
+ 7,
+ 7,
+ 7,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#LN#C航路標識点名称",
+ "source": "newpec",
+ "source-layer": "p航路標識群",
+ "type": "symbol",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "match",
+ [
+ "get",
+ "形状分類番号"
+ ],
+ 308,
+ "",
+ 335,
+ "",
+ [
+ "concat",
+ [
+ "get",
+ "名称"
+ ],
+ [
+ "case",
+ [
+ "has",
+ "名称補助"
+ ],
+ [
+ "concat",
+ "(",
+ [
+ "get",
+ "名称補助"
+ ],
+ ")"
+ ],
+ ""
+ ]
+ ]
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-offset": [
+ "match",
+ [
+ "get",
+ "表示位置"
+ ],
+ 0,
+ [
+ "literal",
+ [
+ 2,
+ 2.5
+ ]
+ ],
+ 1,
+ [
+ "literal",
+ [
+ 0,
+ 2.5
+ ]
+ ],
+ 2,
+ [
+ "literal",
+ [
+ -2,
+ 2.5
+ ]
+ ],
+ 4,
+ [
+ "literal",
+ [
+ 2,
+ 0.5
+ ]
+ ],
+ 5,
+ [
+ "literal",
+ [
+ 0,
+ 0.5
+ ]
+ ],
+ 6,
+ [
+ "literal",
+ [
+ -2,
+ 0.5
+ ]
+ ],
+ 8,
+ [
+ "literal",
+ [
+ 2,
+ -1.5
+ ]
+ ],
+ 9,
+ [
+ "literal",
+ [
+ 0,
+ -1.5
+ ]
+ ],
+ 10,
+ [
+ "literal",
+ [
+ -2,
+ -1.5
+ ]
+ ],
+ [
+ "literal",
+ [
+ 0,
+ 0.5
+ ]
+ ]
+ ],
+ "text-anchor": [
+ "match",
+ [
+ "get",
+ "表示位置"
+ ],
+ 0,
+ "top-left",
+ 1,
+ "top",
+ 2,
+ "top-right",
+ 4,
+ "left",
+ 5,
+ "center",
+ 6,
+ "right",
+ 8,
+ "bottom-left",
+ 9,
+ "bottom",
+ 10,
+ "bottom-right",
+ "center"
+ ]
+ },
+ "paint": {
+ "text-color": [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#LA#C航路標識点灯略記",
+ "source": "newpec",
+ "source-layer": "p航路標識群",
+ "type": "symbol",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "match",
+ [
+ "get",
+ "形状分類番号"
+ ],
+ 335,
+ "V-AIS",
+ [
+ "get",
+ "灯略記"
+ ]
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-offset": [
+ "match",
+ [
+ "get",
+ "表示位置"
+ ],
+ 0,
+ [
+ "literal",
+ [
+ 2,
+ 1.5
+ ]
+ ],
+ 1,
+ [
+ "literal",
+ [
+ 0,
+ 1.5
+ ]
+ ],
+ 2,
+ [
+ "literal",
+ [
+ -2,
+ 1.5
+ ]
+ ],
+ 4,
+ [
+ "literal",
+ [
+ 2,
+ -0.5
+ ]
+ ],
+ 5,
+ [
+ "literal",
+ [
+ 0,
+ -0.5
+ ]
+ ],
+ 6,
+ [
+ "literal",
+ [
+ -2,
+ -0.5
+ ]
+ ],
+ 8,
+ [
+ "literal",
+ [
+ 2,
+ -2.5
+ ]
+ ],
+ 9,
+ [
+ "literal",
+ [
+ 0,
+ -2.5
+ ]
+ ],
+ 10,
+ [
+ "literal",
+ [
+ -2,
+ -2.5
+ ]
+ ],
+ [
+ "literal",
+ [
+ 0,
+ -0.5
+ ]
+ ]
+ ],
+ "text-anchor": [
+ "match",
+ [
+ "get",
+ "表示位置"
+ ],
+ 0,
+ "top-left",
+ 1,
+ "top",
+ 2,
+ "top-right",
+ 4,
+ "left",
+ 5,
+ "center",
+ 6,
+ "right",
+ 8,
+ "bottom-left",
+ 9,
+ "bottom",
+ 10,
+ "bottom-right",
+ "center"
+ ]
+ },
+ "paint": {
+ "text-color": [
+ "match",
+ [
+ "get",
+ "形状分類番号"
+ ],
+ 335,
+ [
+ "rgba",
+ 198,
+ 77,
+ 187,
+ 1
+ ],
+ [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ }
+ },
+ {
+ "id": "#weather",
+ "source": "newpec",
+ "source-layer": "dummy",
+ "type": "symbol",
+ "layout": {
+ "visibility": "none"
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#C800#EN",
+ "source": "newpec",
+ "source-layer": "p地名",
+ "type": "symbol",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "get",
+ "英文字地名"
+ ],
+ "text-font": [
+ "NotoSerifCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-anchor": "top"
+ },
+ "paint": {
+ "text-color": [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#C800#JA",
+ "source": "newpec",
+ "source-layer": "p地名",
+ "type": "symbol",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "get",
+ "日本語地名"
+ ],
+ "text-font": [
+ "NotoSerifCJK-Regular"
+ ],
+ "text-size": 10,
+ "text-anchor": "bottom"
+ },
+ "paint": {
+ "text-color": [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#C600#名称",
+ "source": "newpec",
+ "source-layer": "p高さ制限",
+ "type": "symbol",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "get",
+ "名称"
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 12,
+ "text-anchor": "bottom"
+ },
+ "paint": {
+ "text-color": [
+ "rgba",
+ 255,
+ 0,
+ 0,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#C600#高さ",
+ "source": "newpec",
+ "source-layer": "p高さ制限",
+ "type": "symbol",
+ "layout": {
+ "text-allow-overlap": true,
+ "text-max-width": 100,
+ "text-field": [
+ "concat",
+ "高さ",
+ [
+ "get",
+ "高さ(m)"
+ ],
+ "m"
+ ],
+ "text-font": [
+ "NotoSansCJK-Regular"
+ ],
+ "text-size": 12,
+ "text-anchor": "top"
+ },
+ "paint": {
+ "text-color": [
+ "rgba",
+ 255,
+ 0,
+ 0,
+ 1
+ ]
+ }
+ },
+ {
+ "id": "#b#d2#d5#d10#P穴",
+ "source": "newpec",
+ "source-layer": "P穴",
+ "type": "fill",
+ "paint": {
+ "fill-color": [
+ "rgba",
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "#d#shipfinder#bread",
+ "type": "symbol",
+ "source": "shipfinder",
+ "filter": [
+ "all",
+ [
+ ">=",
+ [
+ "/",
+ [
+ "*",
+ [
+ "get",
+ "sog"
+ ],
+ 3600
+ ],
+ 1852000
+ ],
+ 1
+ ],
+ [
+ "<=",
+ [
+ "number",
+ [
+ "get",
+ "sog"
+ ]
+ ],
+ 52576
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "icon-image": [
+ "concat",
+ "shipfinder-",
+ [
+ "case",
+ [
+ "all",
+ [
+ ">=",
+ [
+ "number",
+ [
+ "get",
+ "rot"
+ ]
+ ],
+ -1200
+ ],
+ [
+ "<",
+ [
+ "number",
+ [
+ "get",
+ "rot"
+ ]
+ ],
+ 0
+ ],
+ [
+ "!=",
+ [
+ "number",
+ [
+ "get",
+ "rot"
+ ]
+ ],
+ -128
+ ]
+ ],
+ "left",
+ [
+ "all",
+ [
+ "<=",
+ [
+ "number",
+ [
+ "get",
+ "rot"
+ ]
+ ],
+ 1200
+ ],
+ [
+ ">",
+ [
+ "number",
+ [
+ "get",
+ "rot"
+ ]
+ ],
+ 0
+ ]
+ ],
+ "right",
+ "straight"
+ ]
+ ],
+ "icon-size": [
+ "step",
+ [
+ "get",
+ "length"
+ ],
+ 0.5,
+ 250,
+ 0.6,
+ 500,
+ 0.7,
+ 1000,
+ 0.8,
+ 2000,
+ 0.9,
+ 3000,
+ 1.0
+ ],
+ "icon-rotate": [
+ "/",
+ [
+ "case",
+ [
+ "<",
+ [
+ "number",
+ [
+ "get",
+ "hdg"
+ ]
+ ],
+ 36000
+ ],
+ [
+ "get",
+ "hdg"
+ ],
+ [
+ "get",
+ "cog"
+ ]
+ ],
+ 100
+ ],
+ "icon-rotation-alignment": "map",
+ "icon-allow-overlap": true
+ }
+ },
+ {
+ "id": "#d#shipfinder#hull",
+ "type": "symbol",
+ "source": "shipfinder",
+ "layout": {
+ "visibility": "visible",
+ "icon-image": [
+ "concat",
+ "shipfinder-hull-",
+ [
+ "case",
+ [
+ "all",
+ [
+ "has",
+ "delay"
+ ],
+ [
+ ">",
+ [
+ "get",
+ "delay"
+ ],
+ 120
+ ]
+ ],
+ "gray",
+ [
+ "step",
+ [
+ "get",
+ "length"
+ ],
+ "blue",
+ 250,
+ "green",
+ 500,
+ "yellow",
+ 1000,
+ "orange",
+ 2000,
+ "red"
+ ]
+ ]
+ ],
+ "icon-size": [
+ "step",
+ [
+ "get",
+ "length"
+ ],
+ 0.6,
+ 250,
+ 0.7,
+ 500,
+ 0.8,
+ 1000,
+ 0.9,
+ 2000,
+ 1.0
+ ],
+ "icon-rotate": [
+ "/",
+ [
+ "case",
+ [
+ "<",
+ [
+ "number",
+ [
+ "get",
+ "hdg"
+ ]
+ ],
+ 36000
+ ],
+ [
+ "get",
+ "hdg"
+ ],
+ [
+ "get",
+ "cog"
+ ]
+ ],
+ 100
+ ],
+ "icon-rotation-alignment": "map",
+ "icon-allow-overlap": true
+ }
+ },
+ {
+ "id": "#d#shipfinder#sog",
+ "type": "symbol",
+ "source": "shipfinder",
+ "filter": [
+ "all",
+ [
+ ">=",
+ [
+ "/",
+ [
+ "*",
+ [
+ "get",
+ "sog"
+ ],
+ 3600
+ ],
+ 1852000
+ ],
+ 1
+ ],
+ [
+ "<=",
+ [
+ "number",
+ [
+ "get",
+ "sog"
+ ]
+ ],
+ 52576
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "icon-image": [
+ "concat",
+ "shipfinder-sog",
+ [
+ "step",
+ [
+ "/",
+ [
+ "*",
+ [
+ "get",
+ "sog"
+ ],
+ 3600
+ ],
+ 1852000
+ ],
+ "1",
+ 5,
+ "2",
+ 10,
+ "3",
+ 20,
+ "4",
+ 30,
+ "5",
+ 40,
+ "6"
+ ]
+ ],
+ "icon-rotate": [
+ "/",
+ [
+ "get",
+ "cog"
+ ],
+ 100
+ ],
+ "icon-rotation-alignment": "map",
+ "icon-allow-overlap": true
+ }
+ }
+ ],
+ "metadata": {
+ "navsea_test_version": "kyushu-semantic-icon-v1-20260806",
+ "role": "left_original_newpec_reference"
+ }
+}
diff --git a/tasks/pbf/NavSea_Kyushu_语义图标视觉审计范围-v1.json b/tasks/pbf/NavSea_Kyushu_语义图标视觉审计范围-v1.json
new file mode 100644
index 0000000..3520327
--- /dev/null
+++ b/tasks/pbf/NavSea_Kyushu_语义图标视觉审计范围-v1.json
@@ -0,0 +1,16 @@
+[
+ {
+ "id": "hakata_kyushu_icon_v1",
+ "label": "博多港九州语义图标测试",
+ "center": [130.335, 33.6385],
+ "radius_nm": 10,
+ "zoom_levels": [10, 12]
+ },
+ {
+ "id": "karatsu_kyushu_icon_v1",
+ "label": "唐津九州语义图标测试",
+ "center": [129.9697, 33.4425],
+ "radius_nm": 5,
+ "zoom_levels": [10, 12]
+ }
+]
diff --git a/tasks/pbf/NavSea_语义图标替换表-v1.md b/tasks/pbf/NavSea_语义图标替换表-v1.md
new file mode 100644
index 0000000..4bd169d
--- /dev/null
+++ b/tasks/pbf/NavSea_语义图标替换表-v1.md
@@ -0,0 +1,156 @@
+# NavSea 语义图标替换表-v1
+
+状态:设计稿,尚未写入 PBF、style 或 sprite。
+
+基线:
+
+- PBF:`/home/wwwroot/pbf-delivery-full-20260418-rebuild`
+- style:`src/pbf/style.navsea-delivery-full-semantic-extentfix.json`
+- sprite:`/mnt/sda1/www/newpec/sprite-semantic/sprite`
+
+## 1. 统一规则
+
+PBF、style 和 `sprite.json` 使用同一个短语 ID。PBF 中建议使用:
+
+```text
+icon_id:普通点状图标
+arc_id:灯弧图标
+```
+
+`class_code` 继续保留用于对象追溯,但不再被 style 用来拼接图标名称。
+
+颜色缩写:
+
+| 缩写 | 含义 |
+|---|---|
+| `G` | 绿色 |
+| `R` | 红色 |
+| `Y` | 黄色 |
+| `W` | 白色 |
+| `B` | 蓝色 |
+| `YW` | 黄/白组合 |
+
+## 2. 灯弧
+
+| 当前 key | 新 ID | 条件/含义 |
+|---|---|---|
+| `arc-daytime-m1` | `arc_G` | 绿色闭合灯弧 |
+| `arc-daytime-m2` | `arc_R` | 红色闭合灯弧 |
+| `arc-daytime-m3` | `arc_YW` | 黄/白闭合灯弧 |
+| `arc-daytime-04027289` | `arc_open_YW` | `coastal_lighthouse_over_15m` 且 `light_sector_mode=sector` |
+
+普通灯弧按 `light_color_code` 选择 `arc_G`、`arc_R` 或 `arc_YW`;扇弧条件优先级最高。
+
+## 3. 航标、灯塔、浮标
+
+| 当前 key | 新 ID | 含义 |
+|---|---|---|
+| `symbol-daytime-300` | `lt_cst` | 沿岸灯台 |
+| `symbol-daytime-301` | `lt_hbr` | 港湾灯台 |
+| `symbol-daytime-302` | `lt_bkw` | 防波堤灯台 |
+| `symbol-daytime-303` | `lt_min` | 小型灯 |
+| `symbol-daytime-30500001` | `lt_lead_a` | 导标变体 A |
+| `symbol-daytime-30500002` | `lt_lead_b` | 导标变体 B |
+| `symbol-daytime-30500003` | `lt_lead_c` | 导标变体 C |
+| `symbol-daytime-30700001` | `lt_up_G` | 绿色上向灯 |
+| `symbol-daytime-30700002` | `lt_up_R` | 红色上向灯 |
+| `symbol-daytime-30700003` | `mk_lead_c` | 导标变体 |
+| `symbol-daytime-308` | `mk_lead_v` | 导标变体 |
+| `symbol-daytime-310` | `lt_bcn` | 灯标 |
+| `symbol-daytime-320` | `bu_lit` | 灯浮标 |
+| `symbol-daytime-321` | `bu_gen` | 普通浮标 |
+| `symbol-daytime-323` | `bu_pil` | 圆柱/柱型浮标 |
+| `symbol-daytime-325` | `bu_can` | 圆筒型浮标 |
+| `symbol-daytime-327` | `bu_lat` | 桁架型浮标 |
+| `symbol-daytime-335359` | `mk_vais` | V-AIS 航标 |
+| `symbol-daytime-719` | `an_quar` | 检疫锚地 |
+
+现有 style 中的别名也统一归并:
+
+| 当前 key | 新 ID |
+|---|---|
+| `harbor_lighthouse` | `lt_hbr` |
+| `breakwater_lighthouse` | `lt_bkw` |
+
+## 4. 危险物与鱼礁
+
+| 当前 class_code / key | 新 ID | 含义 |
+|---|---|---|
+| `401`、`402`、`403` / `symbol-daytime-401` | `hz_rock_awash` | 水上岩、干出岩、洗岩组 |
+| `404` / `symbol-daytime-404` | `hz_rock_sub` | 暗岩 |
+| `405` / `symbol-daytime-405` | `hz_danger_clear` | 扫海后的危险物 |
+| `409` / `symbol-daytime-409` | `hz_danger_iso` | 孤立危险物 |
+| `410` / `symbol-daytime-410` | `hz_wreck_hull` | 船体露出沉船 |
+| `412` / `symbol-daytime-412` | `hz_wreck_sub` | 危险全沉没船 |
+| `413`、`415` / `symbol-daytime-413` | `hz_wreck_survey` | 测量/调查后的沉船 |
+| `420` / `symbol-daytime-420` | `hz_foul` | 险恶物 |
+| `421` / `symbol-daytime-421` | `hz_sandwave` | 沙波 |
+| `422` / `symbol-daytime-422` | `hz_overfall` | 急潮、波纹、激潮 |
+| `424` / `symbol-daytime-424` | `hz_whirl` | 渦流 |
+| `425` / `symbol-daytime-425` | `hz_seaweed` | 海草 |
+| `427` / `symbol-daytime-427` | `hz_obst` | 障碍物 |
+| `428` / `symbol-daytime-428` | `hz_reef` | 鱼礁 |
+| `429` / `symbol-daytime-429` | `hz_reef_danger` | 危险鱼礁 |
+| `431` / `symbol-daytime-431` | `hz_tower` | 塔、橹、测台 |
+| `432` / `symbol-daytime-432` | `hz_pile` | 墩柱、桩、杭 |
+| `433` / `symbol-daytime-433` | `hz_dolphin` | 系缆墩 |
+| `434` / `symbol-daytime-434` | `hz_outfall` | 海底设施、排水口、取水口 |
+
+## 5. 陆上地标
+
+这些图标由 `onshore_structure_point` 的 `class_code` 生成,必须在重建 PBF 时直接写入 `icon_id`,不能继续由 style 动态拼接编号。
+
+| class_code | canonical_object_type | 新 ID |
+|---:|---|---|
+| 640 | `chimney` | `lm_chim` |
+| 650 | `tower_yagura_windmill` | `lm_twr` |
+| 660 | `maritime_office` | `lm_mar` |
+| 661 | `fishing_cooperative` | `lm_fish` |
+| 662 | `customs_office` | `lm_cus` |
+| 680 | 陆上显著物(观览车等) | `lm_prom` |
+| 681 | `mountain_top` | `lm_mtn` |
+| 682 | 管制信号所 | `lm_ctrl` |
+| 698 | `other_landmark_monument` | `lm_mon` |
+
+## 6. 当前 PBF 中的直接图标值
+
+当前全国 Full PBF 实际出现的 `chart_icon_image` 值,均应落入本表:
+
+```text
+symbol-daytime-301
+symbol-daytime-303
+symbol-daytime-30500001
+symbol-daytime-30500002
+symbol-daytime-30500003
+symbol-daytime-30700003
+symbol-daytime-308
+symbol-daytime-310
+symbol-daytime-320
+symbol-daytime-321
+symbol-daytime-323
+symbol-daytime-325
+symbol-daytime-327
+symbol-daytime-335359
+symbol-daytime-405
+symbol-daytime-410
+symbol-daytime-412
+symbol-daytime-413
+symbol-daytime-428
+symbol-daytime-429
+symbol-daytime-719
+```
+
+其中 `symbol-daytime-719` 当前语义建议为:
+
+```text
+an_quar = quarantine anchorage
+```
+
+## 7. 实施约束
+
+- 本表确认后,统一重建全部 Full PBF,不在现有 PBF 上做局部替换。
+- style 的 `icon-image` 统一读取 `icon_id` 或 `arc_id`,删除 `class_code` 拼接逻辑。
+- sprite JSON key 与新 ID 完全一致。
+- `class_code`、FID 和 source-layer 继续保留,用于反向追溯和对象审计。
+- `symbol-daytime-*`、`arc-daytime-*` 只允许出现在转换审计日志或历史映射表中,不能出现在正式 PBF、正式 style 和正式 sprite JSON 中。
+- `symbol-daytime-662` 对应 `lm_cus`,需要补上海关图标素材。
diff --git a/tasks/pbf/navsea_semantic_icon_map_v1.json b/tasks/pbf/navsea_semantic_icon_map_v1.json
new file mode 100644
index 0000000..2b4978e
--- /dev/null
+++ b/tasks/pbf/navsea_semantic_icon_map_v1.json
@@ -0,0 +1,224 @@
+{
+ "version": "semantic-icon-v1",
+ "baseline": "full-semantic-extentfix",
+ "fields": {
+ "point_icon": "icon_id",
+ "light_arc": "arc_id",
+ "legacy_point_icon": "chart_icon_image"
+ },
+ "color_codes": {
+ "green": "G",
+ "red": "R",
+ "yellow": "Y",
+ "white": "W",
+ "blue": "B",
+ "yellow_white": "YW"
+ },
+ "sprite_key_map": {
+ "symbol-daytime-300": "lt_cst",
+ "symbol-daytime-301": "lt_hbr",
+ "symbol-daytime-302": "lt_bkw",
+ "symbol-daytime-303": "lt_min",
+ "symbol-daytime-30500001": "lt_lead_a",
+ "symbol-daytime-30500002": "lt_lead_b",
+ "symbol-daytime-30500003": "lt_lead_c",
+ "symbol-daytime-30700001": "lt_up_G",
+ "symbol-daytime-30700002": "lt_up_R",
+ "symbol-daytime-30700003": "mk_lead_c",
+ "symbol-daytime-308": "mk_lead_v",
+ "symbol-daytime-310": "lt_bcn",
+ "symbol-daytime-320": "bu_lit",
+ "symbol-daytime-321": "bu_gen",
+ "symbol-daytime-323": "bu_pil",
+ "symbol-daytime-325": "bu_can",
+ "symbol-daytime-327": "bu_lat",
+ "symbol-daytime-335359": "mk_vais",
+ "symbol-daytime-401": "hz_rock_awash",
+ "symbol-daytime-404": "hz_rock_sub",
+ "symbol-daytime-405": "hz_danger_clear",
+ "symbol-daytime-409": "hz_danger_iso",
+ "symbol-daytime-410": "hz_wreck_hull",
+ "symbol-daytime-412": "hz_wreck_sub",
+ "symbol-daytime-413": "hz_wreck_survey",
+ "symbol-daytime-420": "hz_foul",
+ "symbol-daytime-421": "hz_sandwave",
+ "symbol-daytime-422": "hz_overfall",
+ "symbol-daytime-424": "hz_whirl",
+ "symbol-daytime-425": "hz_seaweed",
+ "symbol-daytime-427": "hz_obst",
+ "symbol-daytime-428": "hz_reef",
+ "symbol-daytime-429": "hz_reef_danger",
+ "symbol-daytime-431": "hz_tower",
+ "symbol-daytime-432": "hz_pile",
+ "symbol-daytime-433": "hz_dolphin",
+ "symbol-daytime-434": "hz_outfall",
+ "symbol-daytime-640": "lm_chim",
+ "symbol-daytime-650": "lm_twr",
+ "symbol-daytime-660": "lm_mar",
+ "symbol-daytime-661": "lm_fish",
+ "symbol-daytime-662": "lm_cus",
+ "symbol-daytime-680": "lm_prom",
+ "symbol-daytime-681": "lm_mtn",
+ "symbol-daytime-682": "lm_ctrl",
+ "symbol-daytime-698": "lm_mon",
+ "symbol-daytime-719": "an_quar",
+ "symbol-daytime-720": "an_desig",
+ "symbol-daytime-721": "an_restrict",
+ "symbol-daytime-724": "an_no_anchor",
+ "symbol-daytime-505": "fac_port",
+ "symbol-daytime-520": "fac_fishport",
+ "symbol-daytime-530": "fac_marina",
+ "symbol-daytime-540": "fac_fisherina",
+ "symbol-daytime-550": "fac_seastation",
+ "harbor_lighthouse": "lt_hbr",
+ "breakwater_lighthouse": "lt_bkw",
+ "coastal_lighthouse": "lt_cst",
+ "light_minor": "lt_min",
+ "leading_light_variant_30500001": "lt_lead_a",
+ "leading_light_variantt_30500001": "lt_lead_a",
+ "leading_light_variant_30500002": "lt_lead_b",
+ "leading_light_variantt_30500002": "lt_lead_b",
+ "leading_light_variant_30500003": "lt_lead_c",
+ "leading_light_variantt_30500003": "lt_lead_c",
+ "leading_mark_variant_30700003": "mk_lead_c",
+ "leading_mark_variantt_30700003": "mk_lead_c",
+ "leading_mark_variant_308": "mk_lead_v",
+ "leading_mark_variantt_308": "mk_lead_v",
+ "light_beacon": "lt_bcn",
+ "buoy_light": "bu_lit",
+ "buoy_generic": "bu_gen",
+ "buoy_pillar": "bu_pil",
+ "buoy_can": "bu_can",
+ "buoy_lattice": "bu_lat",
+ "nav_mark_vais": "mk_vais",
+ "pilot_station": "fac_pilot",
+ "tidespot-daytime": "tide_spot",
+ "light-daytime-1": "fl_G",
+ "light-daytime-2": "fl_R",
+ "light-daytime-3": "fl_YW",
+ "arc-daytime-04027289": "arc_open_YW",
+ "arc-daytime-m1": "arc_G",
+ "arc-daytime-m2": "arc_R",
+ "arc-daytime-m3": "arc_YW",
+ "rock_exposed_drying_awash_group": "hz_rock_awash",
+ "sunken_rock": "hz_rock_sub",
+ "cleared_danger_object": "hz_danger_clear",
+ "isolated_danger": "hz_danger_iso",
+ "wreck_hull_exposed": "hz_wreck_hull",
+ "wreck_fully_submerged_dangerous": "hz_wreck_sub",
+ "wreck_surveyed": "hz_wreck_survey",
+ "foul_ground": "hz_foul",
+ "sand_wave": "hz_sandwave",
+ "tide_rips_overfalls": "hz_overfall",
+ "eddy_whirlpool": "hz_whirl",
+ "seaweed": "hz_seaweed",
+ "obstruction": "hz_obst",
+ "fish_reef": "hz_reef",
+ "fish_reef_dangerous": "hz_reef_danger",
+ "tower_yagura_observation_platform": "hz_tower",
+ "bollard_pile_stake": "hz_pile",
+ "dolphin_structure": "hz_dolphin",
+ "subsea_installation_outfall_intake": "hz_outfall",
+ "anchorage_quarantine": "an_quar",
+ "anchorage_designated": "an_desig",
+ "restriction_area_group": "an_restrict",
+ "anchoring_prohibited": "an_no_anchor",
+ "port_general_small_harbor_group": "fac_port",
+ "fishing_port": "fac_fishport",
+ "marina": "fac_marina",
+ "fisherina": "fac_fisherina",
+ "sea_station_umi_no_eki": "fac_seastation"
+ },
+ "hazard_class_map": {
+ "401": "hz_rock_awash",
+ "402": "hz_rock_awash",
+ "403": "hz_rock_awash",
+ "404": "hz_rock_sub",
+ "405": "hz_danger_clear",
+ "409": "hz_danger_iso",
+ "410": "hz_wreck_hull",
+ "412": "hz_wreck_sub",
+ "413": "hz_wreck_survey",
+ "415": "hz_wreck_survey",
+ "420": "hz_foul",
+ "421": "hz_sandwave",
+ "422": "hz_overfall",
+ "424": "hz_whirl",
+ "425": "hz_seaweed",
+ "427": "hz_obst",
+ "428": "hz_reef",
+ "429": "hz_reef_danger",
+ "431": "hz_tower",
+ "432": "hz_pile",
+ "433": "hz_dolphin",
+ "434": "hz_outfall"
+ },
+ "landmark_class_map": {
+ "640": "lm_chim",
+ "650": "lm_twr",
+ "660": "lm_mar",
+ "661": "lm_fish",
+ "662": "lm_cus",
+ "680": "lm_prom",
+ "681": "lm_mtn",
+ "682": "lm_ctrl",
+ "698": "lm_mon"
+ },
+ "anchorage_class_map": {
+ "719": "an_quar",
+ "720": "an_desig",
+ "721": "an_restrict",
+ "722": "an_restrict",
+ "723": "an_restrict",
+ "724": "an_no_anchor"
+ },
+ "facility_class_map": {
+ "505": "fac_port",
+ "510": "fac_port",
+ "520": "fac_fishport",
+ "530": "fac_marina",
+ "540": "fac_fisherina",
+ "550": "fac_seastation"
+ },
+ "display_code_map": {
+ "30300000": "lt_min",
+ "30300002": "lt_min",
+ "30300004": "lt_min",
+ "30500001": "lt_lead_a",
+ "30500002": "lt_lead_b",
+ "30500003": "lt_lead_c",
+ "30500004": "lt_lead_c",
+ "30500010": "lt_lead_c",
+ "30600000": "lt_min",
+ "30600001": "lt_min",
+ "30600002": "lt_min",
+ "30600003": "lt_min",
+ "30600004": "lt_min",
+ "30600006": "lt_min",
+ "30700000": "mk_lead_c",
+ "30700001": "lt_up_G",
+ "30700002": "lt_up_R",
+ "30700003": "mk_lead_c",
+ "30700004": "mk_lead_c",
+ "30700007": "mk_lead_c",
+ "30800000": "mk_lead_v",
+ "30900000": "lt_lead_c",
+ "30900002": "lt_lead_b",
+ "30900004": "lt_lead_c",
+ "30900009": "lt_lead_c",
+ "30900011": "lt_lead_c"
+ },
+ "arc_rules": {
+ "sector": "arc_open_YW",
+ "green": "arc_G",
+ "red": "arc_R",
+ "other": "arc_YW"
+ },
+ "fallbacks": {
+ "lm_cus": {
+ "source_sprite_key": "symbol-daytime-660",
+ "status": "temporary_visual_fallback",
+ "reason": "当前 sprite 没有 symbol-daytime-662 原图"
+ }
+ }
+}