diff --git a/STEP_RECORD.md b/STEP_RECORD.md
index bc1c760..6fadaba 100644
--- a/STEP_RECORD.md
+++ b/STEP_RECORD.md
@@ -12,12 +12,12 @@ Remote: `ssh://git@nas:2222/tei/pbf.git`
当前页面版本体系:
-- `HTML: compare-r14-20260401-1523`
+- `HTML: compare-r15-20260401-1705`
当前页面支持 2 个 profile,但仍是同一张 HTML:
1. 唐津 20 海里
- - `Style: karatsu-final-style-r5-20260401-1540 (style.navsea-delivery-karatsu-20nm-final.json)`
+ - `Style: karatsu-final-style-r11-20260401-1719 (style.navsea-delivery-karatsu-20nm-final.json)`
- `PBF: karatsu-final-pbf-20nm-20260401-0248 (pbf-delivery-karatsu-20nm-final)`
2. 九州
@@ -39,6 +39,8 @@ Remote: `ssh://git@nas:2222/tei/pbf.git`
- 左右联动
- 点击拾取
- HTML / Style / PBF 三层版本可见
+- 页面现在还支持 URL 相机参数,便于同一张页面切到热点区做自动截图:
+ - `?profile=karatsu20¢er=130.335,33.6385&zoom=12.2`
## Current Truth
@@ -64,24 +66,28 @@ Remote: `ssh://git@nas:2222/tei/pbf.git`
当前新增结论:
-- 紫色大 `X` 对应的不是 `428`
-- 在当前 sprite 体系里:
- - `409 -> symbol-daytime-409`
- - `429 -> symbol-daytime-429`
-- `428` 更像鱼礁/椭圆眼形符号
-- 第二类“X 丢了”的问题,已经确认有一部分是危险物点与红绿小灯在近坐标重叠:
- - 例如同一热点存在:
- - `険悪物(class_code=420)` at `[3023,524]`
- - red light `30600002` at `[3013,524]`
- - green light `30600001` at `[3029,505]`
-- 这类问题更像图层叠放和当前 icon-size 过大,不是 PBF 缺对象
-- `fid=13025299` 这类对象的最新结论已经纠正:
- - 左侧原始版是 `p航行危険障害物 / 分類番号 409 / 孤立危険物`
- - 当前 `20nm final` 后台对象保真审计显示这类 `409` 在 final 里是完整保留下来的
- - 当前问题已经收敛成:
- - 旧 `20nm delivery` 没保留 `class_code`
- - `20nm final style` 之前没有对 `navigation_hazard_point` 按 `class_code` 选 icon
- - 也就是说,这批点现在的主问题是 `final style`,不是 `final PBF` 丢对象
+- compare 页已经支持热点定位参数,strict audit 现在可以在同一张页里切到博多港自动截图
+- `20nm final` 的对象保真审计已扩到 5 组:
+ - `p航行危険障害物 -> navigation_hazard_point`
+ - `p投錨注意障害物 -> anchor_caution_hazard_point`
+ - `p航路標識群 -> navigation_marks`
+ - `p施設・境界線等 -> facility_boundary_point`
+ - `P航路ククリ -> route_outline`
+- 扩层后的结论:
+ - 旧 `delivery_20nm`:`4165/4165` identifier lost
+ - 当前 `final_20nm`:`4165/4165` preserved
+- 也就是说:
+ - 现在危险物、航标、设施点、航路线这 5 组在 final PBF 里都没有丢对象
+ - 后续主问题继续收敛在 `style`
+- 博多港这轮已补回:
+ - `route_outline` 紫色虚线
+ - `facility_boundary_point` 的 class-based 图标
+ - `505 -> symbol-daytime-505`
+ - `510 -> symbol-daytime-505`
+ - `520 -> symbol-daytime-520`
+ - `530 -> symbol-daytime-530`
+ - `550 -> symbol-daytime-550`
+- 设施点文字层做过一次试验版 `r10`,但博多港 AOI 截图差异变大,已回退;当前保留的有效版本是 `style-r11`
一句话判断:
@@ -95,7 +101,7 @@ Remote: `ssh://git@nas:2222/tei/pbf.git`
## Object Preservation Audit
-当前已经新增一条专门的对象保真审计:
+当前已经新增并扩展了一条专门的对象保真审计:
- 脚本:
- [`navsea_object_preservation_audit.py`](/root/sourceserver/pbf/navsea_object_preservation_audit.py)
@@ -106,22 +112,20 @@ Remote: `ssh://git@nas:2222/tei/pbf.git`
当前结论非常明确:
- `delivery_20nm`
- - raw objects: `2090`
+ - raw objects: `4165`
- preserved: `0`
- - raw class lost: `2090`
+ - identifier lost: `4165`
- `final_20nm`
- - raw objects: `2090`
- - preserved: `2090`
+ - raw objects: `4165`
+ - preserved: `4165`
- missing object: `0`
- - raw class lost: `0`
+ - identifier lost: `0`
重点含义:
-- 旧 `20nm delivery` 的危险物细分类全部丢失
-- 当前 `20nm final` 的危险物细分类已经完整保留下来
-- `p航行危険障害物:409` 在 final 中是:
- - raw=`25`
- - preserved=`25`
+- 旧 `20nm delivery` 不只是危险物,连航标、设施点、航路线的识别字段也都没保住
+- 当前 `20nm final` 里,这 5 组对象的细分类 / 显示码已经完整保留下来
+- 当前对象保真审计已经能先把“东西丢了”这类严重问题挡在最前面
## Final Release Candidate
@@ -195,9 +199,10 @@ Remote: `ssh://git@nas:2222/tei/pbf.git`
当前认可的可信审计方法:
1. `20nm compare` 肉眼审图
-2. 小范围 AOI 图像对比
-3. compare 页点击拾取
-4. `10nm rerun` 对象级 backend audit
+2. `object preservation audit`
+3. 小范围 AOI 图像对比
+4. compare 页点击拾取
+5. `10nm rerun` 对象级 backend audit
当前小范围试验方法文档:
@@ -207,17 +212,22 @@ Remote: `ssh://git@nas:2222/tei/pbf.git`
当前 pilot 热点配置:
- [`strict_audit_hotspots_20nm_pilot.json`](/root/sourceserver/pbf/strict_audit_hotspots_20nm_pilot.json)
+- [`strict_audit_hotspots_20nm_hakata.json`](/root/sourceserver/pbf/strict_audit_hotspots_20nm_hakata.json)
当前 pilot 报告:
- [`report/strict_audit_pilot/strict_audit_summary.md`](/root/sourceserver/pbf/report/strict_audit_pilot/strict_audit_summary.md)
- [`report/strict_audit_pilot/strict_audit_summary.json`](/root/sourceserver/pbf/report/strict_audit_pilot/strict_audit_summary.json)
+- [`report/strict_audit_20nm_hakata_r9/strict_audit_summary.md`](/root/sourceserver/pbf/report/strict_audit_20nm_hakata_r9/strict_audit_summary.md)
+- [`report/strict_audit_20nm_hakata_r11/strict_audit_summary.md`](/root/sourceserver/pbf/report/strict_audit_20nm_hakata_r11/strict_audit_summary.md)
当前结论:
- 不再只看整屏 diff
- 不再只看 `20nm` backend 总量数字
- `20nm` backend 仍不适合当严格对象级审计
+- 博多港 AOI 现在也已经纳入固定截图审计
+- `r10` 的设施文字层试验让热点差异变大,已回退;当前线上保留 `r11`
- 当前正式审计顺序已经明确为:
- 先 `object preservation audit`
- 再 `render audit`
diff --git a/navsea_object_preservation_audit.py b/navsea_object_preservation_audit.py
index 65f12da..43e0237 100644
--- a/navsea_object_preservation_audit.py
+++ b/navsea_object_preservation_audit.py
@@ -19,21 +19,42 @@ DEFAULT_DELIVERY_ROOT = Path("/home/wwwroot/pbf-delivery-karatsu-20nm")
DEFAULT_FINAL_ROOT = Path("/home/wwwroot/pbf-delivery-karatsu-20nm-final")
DEFAULT_REPORT_ROOT = Path("/root/sourceserver/pbf/report/object_preservation_20nm")
-HAZARD_LAYER_RULES = (
+AUDIT_RULES = (
{
"raw_layer": "p航行危険障害物",
"delivery_layer": "navigation_hazard_point",
- "raw_class_field": "分類番号",
- "delivery_class_field": "class_code",
+ "raw_match_field": "分類番号",
+ "delivery_match_field": "class_code",
"label": "navigation hazards",
},
{
"raw_layer": "p投錨注意障害物",
"delivery_layer": "anchor_caution_hazard_point",
- "raw_class_field": "分類番号",
- "delivery_class_field": "class_code",
+ "raw_match_field": "分類番号",
+ "delivery_match_field": "class_code",
"label": "anchor hazards",
},
+ {
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "delivery_match_field": "display_code",
+ "label": "navigation marks",
+ },
+ {
+ "raw_layer": "p施設・境界線等",
+ "delivery_layer": "facility_boundary_point",
+ "raw_match_field": "分類番号",
+ "delivery_match_field": "class_code",
+ "label": "facility points",
+ },
+ {
+ "raw_layer": "P航路ククリ",
+ "delivery_layer": "route_outline",
+ "raw_match_field": "分類番号",
+ "delivery_match_field": "class_code",
+ "label": "route outlines",
+ },
)
MAX_EXAMPLES = 20
@@ -109,19 +130,19 @@ def audit_one_target(
x = int(rel.parts[1])
y = int(Path(rel.parts[2]).stem)
tile = TileCoord(z=z, x=x, y=y)
- raw_index = build_tile_index(raw_tile, HAZARD_LAYER_RULES)
- target_index = build_tile_index(target_tile, HAZARD_LAYER_RULES)
+ raw_index = build_tile_index(raw_tile, AUDIT_RULES)
+ target_index = build_tile_index(target_tile, AUDIT_RULES)
all_target_geoms: dict[str, list[tuple[str, dict[str, Any]]]] = defaultdict(list)
- for rule in HAZARD_LAYER_RULES:
+ for rule in AUDIT_RULES:
for feat in target_index[rule["delivery_layer"]]:
all_target_geoms[geometry_signature(feat)].append((rule["delivery_layer"], feat))
- for rule in HAZARD_LAYER_RULES:
+ for rule in AUDIT_RULES:
raw_layer = rule["raw_layer"]
delivery_layer = rule["delivery_layer"]
- raw_class_field = rule["raw_class_field"]
- delivery_class_field = rule["delivery_class_field"]
+ raw_match_field = rule["raw_match_field"]
+ delivery_match_field = rule["delivery_match_field"]
key = f"{raw_layer}->{delivery_layer}"
target_by_geom: dict[str, list[dict[str, Any]]] = defaultdict(list)
@@ -132,8 +153,8 @@ def audit_one_target(
totals["raw_objects"] += 1
rule_stats[key]["raw_objects"] += 1
raw_props = raw_feat.get("properties", {})
- raw_class = raw_props.get(raw_class_field)
- class_key = f"{raw_layer}:{raw_class}"
+ raw_match_value = raw_props.get(raw_match_field)
+ class_key = f"{raw_layer}:{raw_match_value}"
geom_sig = geometry_signature(raw_feat)
name = raw_props.get("名称") or parse_at_name(raw_props.get("at"))
candidates = target_by_geom.get(geom_sig, [])
@@ -155,11 +176,13 @@ def audit_one_target(
"name": name,
"raw_layer": raw_layer,
"delivery_layer": delivery_layer,
- "raw_class": raw_class,
+ "raw_match_field": raw_match_field,
+ "raw_match_value": raw_match_value,
"other_layer_hits": [
{
"delivery_layer": layer_name,
- "delivery_class": feat.get("properties", {}).get(delivery_class_field),
+ "delivery_match_field": delivery_match_field,
+ "delivery_match_value": feat.get("properties", {}).get(delivery_match_field),
"canonical_object_type": feat.get("properties", {}).get("canonical_object_type"),
}
for layer_name, feat in other_layer_hits[:5]
@@ -170,7 +193,7 @@ def audit_one_target(
for candidate in candidates:
target_props = candidate.get("properties", {})
- if target_props.get(delivery_class_field) == raw_class:
+ if target_props.get(delivery_match_field) == raw_match_value:
matched_class = True
break
@@ -180,10 +203,10 @@ def audit_one_target(
class_stats[class_key]["preserved"] += 1
continue
- if all(candidate.get("properties", {}).get(delivery_class_field) is None for candidate in candidates):
- issue = "raw_class_lost"
+ if all(candidate.get("properties", {}).get(delivery_match_field) is None for candidate in candidates):
+ issue = "identifier_lost"
else:
- issue = "class_mismatch"
+ issue = "identifier_mismatch"
totals[issue] += 1
rule_stats[key][issue] += 1
@@ -196,10 +219,12 @@ def audit_one_target(
"name": name,
"raw_layer": raw_layer,
"delivery_layer": delivery_layer,
- "raw_class": raw_class,
+ "raw_match_field": raw_match_field,
+ "raw_match_value": raw_match_value,
"candidates": [
{
- "delivery_class": candidate.get("properties", {}).get(delivery_class_field),
+ "delivery_match_field": delivery_match_field,
+ "delivery_match_value": candidate.get("properties", {}).get(delivery_match_field),
"canonical_object_type": candidate.get("properties", {}).get("canonical_object_type"),
"chart_symbol_code": candidate.get("properties", {}).get("chart_symbol_code"),
"chart_icon_image": candidate.get("properties", {}).get("chart_icon_image"),
@@ -218,13 +243,13 @@ def audit_one_target(
"preserved": stats.get("preserved", 0),
"missing_object": stats.get("missing_object", 0),
"wrong_relayer": stats.get("wrong_relayer", 0),
- "raw_class_lost": stats.get("raw_class_lost", 0),
- "class_mismatch": stats.get("class_mismatch", 0),
+ "identifier_lost": stats.get("identifier_lost", 0),
+ "identifier_mismatch": stats.get("identifier_mismatch", 0),
}
)
top_class_issues.sort(
key=lambda item: (
- item["missing_object"] + item["wrong_relayer"] + item["raw_class_lost"] + item["class_mismatch"],
+ item["missing_object"] + item["wrong_relayer"] + item["identifier_lost"] + item["identifier_mismatch"],
item["raw_objects"],
),
reverse=True,
@@ -254,8 +279,8 @@ def audit_one_target(
f"- preserved: `{totals.get('preserved', 0)}`",
f"- missing object: `{totals.get('missing_object', 0)}`",
f"- wrong relayer: `{totals.get('wrong_relayer', 0)}`",
- f"- raw class lost: `{totals.get('raw_class_lost', 0)}`",
- f"- class mismatch: `{totals.get('class_mismatch', 0)}`",
+ f"- identifier lost: `{totals.get('identifier_lost', 0)}`",
+ f"- identifier mismatch: `{totals.get('identifier_mismatch', 0)}`",
"",
"## Per Rule",
"",
@@ -269,8 +294,8 @@ def audit_one_target(
f"- preserved: `{stats.get('preserved', 0)}`",
f"- missing object: `{stats.get('missing_object', 0)}`",
f"- wrong relayer: `{stats.get('wrong_relayer', 0)}`",
- f"- raw class lost: `{stats.get('raw_class_lost', 0)}`",
- f"- class mismatch: `{stats.get('class_mismatch', 0)}`",
+ f"- identifier lost: `{stats.get('identifier_lost', 0)}`",
+ f"- identifier mismatch: `{stats.get('identifier_mismatch', 0)}`",
"",
]
)
@@ -279,7 +304,7 @@ def audit_one_target(
for item in top_class_issues[:12]:
lines.append(
"- `{class_key}` raw=`{raw_objects}` preserved=`{preserved}` missing=`{missing_object}` "
- "wrong_relayer=`{wrong_relayer}` class_lost=`{raw_class_lost}` class_mismatch=`{class_mismatch}`".format(
+ "wrong_relayer=`{wrong_relayer}` identifier_lost=`{identifier_lost}` identifier_mismatch=`{identifier_mismatch}`".format(
**item
)
)
@@ -299,7 +324,7 @@ def audit_one_target(
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(
- description="Audit raw-object preservation for hazard layers between original and delivery/final PBFs."
+ description="Audit raw-object preservation for hazards, navigation marks, facility points, and route outlines between original and delivery/final PBFs."
)
parser.add_argument("--raw-root", type=Path, default=DEFAULT_RAW_ROOT)
parser.add_argument("--delivery-root", type=Path, default=DEFAULT_DELIVERY_ROOT)
diff --git a/report/object_preservation_20nm/object_preservation_delivery_20nm.json b/report/object_preservation_20nm/object_preservation_delivery_20nm.json
index 429a4f0..023f685 100644
--- a/report/object_preservation_20nm/object_preservation_delivery_20nm.json
+++ b/report/object_preservation_20nm/object_preservation_delivery_20nm.json
@@ -4,17 +4,29 @@
"target_root": "/home/wwwroot/pbf-delivery-karatsu-20nm",
"totals": {
"tiles_compared": 154,
- "raw_objects": 2090,
- "raw_class_lost": 2090
+ "raw_objects": 4165,
+ "identifier_lost": 4165
},
"rule_stats": {
+ "P航路ククリ->route_outline": {
+ "raw_objects": 19,
+ "identifier_lost": 19
+ },
"p投錨注意障害物->anchor_caution_hazard_point": {
"raw_objects": 1426,
- "raw_class_lost": 1426
+ "identifier_lost": 1426
+ },
+ "p施設・境界線等->facility_boundary_point": {
+ "raw_objects": 171,
+ "identifier_lost": 171
},
"p航行危険障害物->navigation_hazard_point": {
"raw_objects": 664,
- "raw_class_lost": 664
+ "identifier_lost": 664
+ },
+ "p航路標識群->navigation_marks": {
+ "raw_objects": 1885,
+ "identifier_lost": 1885
}
},
"top_class_issues": [
@@ -24,8 +36,8 @@
"preserved": 0,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 702,
- "class_mismatch": 0
+ "identifier_lost": 702,
+ "identifier_mismatch": 0
},
{
"class_key": "p航行危険障害物:404",
@@ -33,8 +45,8 @@
"preserved": 0,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 413,
- "class_mismatch": 0
+ "identifier_lost": 413,
+ "identifier_mismatch": 0
},
{
"class_key": "p投錨注意障害物:420",
@@ -42,8 +54,8 @@
"preserved": 0,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 355,
- "class_mismatch": 0
+ "identifier_lost": 355,
+ "identifier_mismatch": 0
},
{
"class_key": "p投錨注意障害物:425",
@@ -51,8 +63,53 @@
"preserved": 0,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 255,
- "class_mismatch": 0
+ "identifier_lost": 255,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30600003",
+ "raw_objects": 255,
+ "preserved": 0,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 255,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:31000000",
+ "raw_objects": 200,
+ "preserved": 0,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 200,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30600002",
+ "raw_objects": 191,
+ "preserved": 0,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 191,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30600001",
+ "raw_objects": 189,
+ "preserved": 0,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 189,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30100004",
+ "raw_objects": 142,
+ "preserved": 0,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 142,
+ "identifier_mismatch": 0
},
{
"class_key": "p航行危険障害物:403",
@@ -60,8 +117,80 @@
"preserved": 0,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 128,
- "class_mismatch": 0
+ "identifier_lost": 128,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p施設・境界線等:520",
+ "raw_objects": 128,
+ "preserved": 0,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 128,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:31336300",
+ "raw_objects": 108,
+ "preserved": 0,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 108,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30200002",
+ "raw_objects": 75,
+ "preserved": 0,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 75,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:31300003",
+ "raw_objects": 66,
+ "preserved": 0,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 66,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30600000",
+ "raw_objects": 60,
+ "preserved": 0,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 60,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30600004",
+ "raw_objects": 48,
+ "preserved": 0,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 48,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:31235102",
+ "raw_objects": 46,
+ "preserved": 0,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 46,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30200001",
+ "raw_objects": 44,
+ "preserved": 0,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 44,
+ "identifier_mismatch": 0
},
{
"class_key": "p航行危険障害物:432",
@@ -69,535 +198,458 @@
"preserved": 0,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 40,
- "class_mismatch": 0
+ "identifier_lost": 40,
+ "identifier_mismatch": 0
},
{
- "class_key": "p投錨注意障害物:421",
- "raw_objects": 32,
+ "class_key": "p航路標識群:31135102",
+ "raw_objects": 37,
"preserved": 0,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 32,
- "class_mismatch": 0
- },
- {
- "class_key": "p投錨注意障害物:415",
- "raw_objects": 25,
- "preserved": 0,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 25,
- "class_mismatch": 0
- },
- {
- "class_key": "p投錨注意障害物:413",
- "raw_objects": 25,
- "preserved": 0,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 25,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:409",
- "raw_objects": 25,
- "preserved": 0,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 25,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:431",
- "raw_objects": 22,
- "preserved": 0,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 22,
- "class_mismatch": 0
- },
- {
- "class_key": "p投錨注意障害物:434",
- "raw_objects": 18,
- "preserved": 0,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 18,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:433",
- "raw_objects": 15,
- "preserved": 0,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 15,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:427",
- "raw_objects": 9,
- "preserved": 0,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 9,
- "class_mismatch": 0
- },
- {
- "class_key": "p投錨注意障害物:405",
- "raw_objects": 5,
- "preserved": 0,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 5,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:412",
- "raw_objects": 5,
- "preserved": 0,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 5,
- "class_mismatch": 0
- },
- {
- "class_key": "p投錨注意障害物:422",
- "raw_objects": 4,
- "preserved": 0,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 4,
- "class_mismatch": 0
- },
- {
- "class_key": "p投錨注意障害物:424",
- "raw_objects": 3,
- "preserved": 0,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 3,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:402",
- "raw_objects": 3,
- "preserved": 0,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 3,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:410",
- "raw_objects": 3,
- "preserved": 0,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 3,
- "class_mismatch": 0
+ "identifier_lost": 37,
+ "identifier_mismatch": 0
}
],
"issue_examples": {
- "raw_class_lost": [
+ "identifier_lost": [
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 409
],
- "fid": 13018869,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 428,
+ "fid": 12007768,
+ "name": "若宮灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30000004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "魚礁",
- "chart_symbol_code": "fish_reef",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "沿岸灯台 (15M over)",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 409
],
- "fid": 13018870,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 428,
+ "fid": 12007824,
+ "name": "壱岐長島灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "魚礁",
- "chart_symbol_code": "fish_reef",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 409
],
- "fid": 13018918,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 428,
+ "fid": 12007921,
+ "name": "手長島灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "魚礁",
- "chart_symbol_code": "fish_reef",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 409
],
- "fid": 13020459,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 428,
+ "fid": 12007971,
+ "name": "壱岐大瀬灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "魚礁",
- "chart_symbol_code": "fish_reef",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 410
],
- "fid": 13020673,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 428,
+ "fid": 12007773,
+ "name": "二神島灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30000007",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "魚礁",
- "chart_symbol_code": "fish_reef",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "沿岸灯台 (15M over)",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 410
],
- "fid": 13020674,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 428,
+ "fid": 12007805,
+ "name": "的山大島曲り鼻灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "魚礁",
- "chart_symbol_code": "fish_reef",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 410
],
- "fid": 13020675,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 428,
+ "fid": 12007823,
+ "name": "海豚鼻灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "魚礁",
- "chart_symbol_code": "fish_reef",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 410
],
- "fid": 13020697,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 428,
+ "fid": 12007824,
+ "name": "壱岐長島灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "魚礁",
- "chart_symbol_code": "fish_reef",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 410
],
- "fid": 13020698,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 428,
+ "fid": 12007836,
+ "name": "大碆鼻灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "魚礁",
- "chart_symbol_code": "fish_reef",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 410
],
- "fid": 13020699,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 428,
+ "fid": 12007880,
+ "name": "壱岐郷ノ瀬灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "魚礁",
- "chart_symbol_code": "fish_reef",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 410
],
- "fid": 13018650,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 425,
+ "fid": 12007885,
+ "name": "馬ノ頭鼻灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "海草",
- "chart_symbol_code": "hazard_mark",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 410
],
- "fid": 13018651,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 425,
+ "fid": 12007886,
+ "name": "崎瀬鼻灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "海草",
- "chart_symbol_code": "hazard_mark",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 410
],
- "fid": 13018652,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 425,
+ "fid": 12007938,
+ "name": "的山大島長崎鼻灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "海草",
- "chart_symbol_code": "hazard_mark",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 411
],
- "fid": 13018653,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 425,
+ "fid": 12007795,
+ "name": "青砂埼灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "海草",
- "chart_symbol_code": "hazard_mark",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 411
],
- "fid": 13018654,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 425,
+ "fid": 12007835,
+ "name": "生月長瀬鼻灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "海草",
- "chart_symbol_code": "hazard_mark",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 411
],
- "fid": 13018655,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 425,
+ "fid": 12007897,
+ "name": "平戸牛ケ首灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100005",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "海草",
- "chart_symbol_code": "hazard_mark",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 411
],
- "fid": 13018656,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 425,
+ "fid": 12007919,
+ "name": "津崎鼻灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "海草",
- "chart_symbol_code": "hazard_mark",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 411
],
- "fid": 13018657,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 425,
+ "fid": 12007939,
+ "name": "肥前横島灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "海草",
- "chart_symbol_code": "hazard_mark",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 411
],
- "fid": 13018658,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 425,
+ "fid": 12007940,
+ "name": "南風埼灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "海草",
- "chart_symbol_code": "hazard_mark",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
},
{
"tile": [
- 11,
- 1761,
- 819
+ 10,
+ 880,
+ 411
],
- "fid": 13018659,
- "name": null,
- "raw_layer": "p投錨注意障害物",
- "delivery_layer": "anchor_caution_hazard_point",
- "raw_class": 425,
+ "fid": 12007941,
+ "name": "下枯木島灯台",
+ "raw_layer": "p航路標識群",
+ "delivery_layer": "navigation_marks",
+ "raw_match_field": "表示用番号",
+ "raw_match_value": "30100004",
"candidates": [
{
- "delivery_class": null,
- "canonical_object_type": "海草",
- "chart_symbol_code": "hazard_mark",
- "chart_icon_image": "symbol-daytime-428"
+ "delivery_match_field": "display_code",
+ "delivery_match_value": null,
+ "canonical_object_type": "港湾灯台",
+ "chart_symbol_code": "lighthouse",
+ "chart_icon_image": "symbol-daytime-301"
}
]
}
diff --git a/report/object_preservation_20nm/object_preservation_delivery_20nm.md b/report/object_preservation_20nm/object_preservation_delivery_20nm.md
index c7e17ea..4f02df4 100644
--- a/report/object_preservation_20nm/object_preservation_delivery_20nm.md
+++ b/report/object_preservation_20nm/object_preservation_delivery_20nm.md
@@ -6,23 +6,41 @@
## Totals
- tiles compared: `154`
-- raw objects: `2090`
+- raw objects: `4165`
- preserved: `0`
- missing object: `0`
- wrong relayer: `0`
-- raw class lost: `2090`
-- class mismatch: `0`
+- identifier lost: `4165`
+- identifier mismatch: `0`
## Per Rule
+### `P航路ククリ->route_outline`
+
+- raw objects: `19`
+- preserved: `0`
+- missing object: `0`
+- wrong relayer: `0`
+- identifier lost: `19`
+- identifier mismatch: `0`
+
### `p投錨注意障害物->anchor_caution_hazard_point`
- raw objects: `1426`
- preserved: `0`
- missing object: `0`
- wrong relayer: `0`
-- raw class lost: `1426`
-- class mismatch: `0`
+- identifier lost: `1426`
+- identifier mismatch: `0`
+
+### `p施設・境界線等->facility_boundary_point`
+
+- raw objects: `171`
+- preserved: `0`
+- missing object: `0`
+- wrong relayer: `0`
+- identifier lost: `171`
+- identifier mismatch: `0`
### `p航行危険障害物->navigation_hazard_point`
@@ -30,43 +48,52 @@
- preserved: `0`
- missing object: `0`
- wrong relayer: `0`
-- raw class lost: `664`
-- class mismatch: `0`
+- identifier lost: `664`
+- identifier mismatch: `0`
+
+### `p航路標識群->navigation_marks`
+
+- raw objects: `1885`
+- preserved: `0`
+- missing object: `0`
+- wrong relayer: `0`
+- identifier lost: `1885`
+- identifier mismatch: `0`
## Top Class Issues
-- `p投錨注意障害物:428` raw=`702` preserved=`0` missing=`0` wrong_relayer=`0` class_lost=`702` class_mismatch=`0`
-- `p航行危険障害物:404` raw=`413` preserved=`0` missing=`0` wrong_relayer=`0` class_lost=`413` class_mismatch=`0`
-- `p投錨注意障害物:420` raw=`355` preserved=`0` missing=`0` wrong_relayer=`0` class_lost=`355` class_mismatch=`0`
-- `p投錨注意障害物:425` raw=`255` preserved=`0` missing=`0` wrong_relayer=`0` class_lost=`255` class_mismatch=`0`
-- `p航行危険障害物:403` raw=`128` preserved=`0` missing=`0` wrong_relayer=`0` class_lost=`128` class_mismatch=`0`
-- `p航行危険障害物:432` raw=`40` preserved=`0` missing=`0` wrong_relayer=`0` class_lost=`40` class_mismatch=`0`
-- `p投錨注意障害物:421` raw=`32` preserved=`0` missing=`0` wrong_relayer=`0` class_lost=`32` class_mismatch=`0`
-- `p投錨注意障害物:415` raw=`25` preserved=`0` missing=`0` wrong_relayer=`0` class_lost=`25` class_mismatch=`0`
-- `p投錨注意障害物:413` raw=`25` preserved=`0` missing=`0` wrong_relayer=`0` class_lost=`25` class_mismatch=`0`
-- `p航行危険障害物:409` raw=`25` preserved=`0` missing=`0` wrong_relayer=`0` class_lost=`25` class_mismatch=`0`
-- `p航行危険障害物:431` raw=`22` preserved=`0` missing=`0` wrong_relayer=`0` class_lost=`22` class_mismatch=`0`
-- `p投錨注意障害物:434` raw=`18` preserved=`0` missing=`0` wrong_relayer=`0` class_lost=`18` class_mismatch=`0`
+- `p投錨注意障害物:428` raw=`702` preserved=`0` missing=`0` wrong_relayer=`0` identifier_lost=`702` identifier_mismatch=`0`
+- `p航行危険障害物:404` raw=`413` preserved=`0` missing=`0` wrong_relayer=`0` identifier_lost=`413` identifier_mismatch=`0`
+- `p投錨注意障害物:420` raw=`355` preserved=`0` missing=`0` wrong_relayer=`0` identifier_lost=`355` identifier_mismatch=`0`
+- `p投錨注意障害物:425` raw=`255` preserved=`0` missing=`0` wrong_relayer=`0` identifier_lost=`255` identifier_mismatch=`0`
+- `p航路標識群:30600003` raw=`255` preserved=`0` missing=`0` wrong_relayer=`0` identifier_lost=`255` identifier_mismatch=`0`
+- `p航路標識群:31000000` raw=`200` preserved=`0` missing=`0` wrong_relayer=`0` identifier_lost=`200` identifier_mismatch=`0`
+- `p航路標識群:30600002` raw=`191` preserved=`0` missing=`0` wrong_relayer=`0` identifier_lost=`191` identifier_mismatch=`0`
+- `p航路標識群:30600001` raw=`189` preserved=`0` missing=`0` wrong_relayer=`0` identifier_lost=`189` identifier_mismatch=`0`
+- `p航路標識群:30100004` raw=`142` preserved=`0` missing=`0` wrong_relayer=`0` identifier_lost=`142` identifier_mismatch=`0`
+- `p航行危険障害物:403` raw=`128` preserved=`0` missing=`0` wrong_relayer=`0` identifier_lost=`128` identifier_mismatch=`0`
+- `p施設・境界線等:520` raw=`128` preserved=`0` missing=`0` wrong_relayer=`0` identifier_lost=`128` identifier_mismatch=`0`
+- `p航路標識群:31336300` raw=`108` preserved=`0` missing=`0` wrong_relayer=`0` identifier_lost=`108` identifier_mismatch=`0`
-## Examples: `raw_class_lost`
+## Examples: `identifier_lost`
-- {"candidates":[{"canonical_object_type":"魚礁","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"fish_reef","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13018869,"name":null,"raw_class":428,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"魚礁","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"fish_reef","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13018870,"name":null,"raw_class":428,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"魚礁","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"fish_reef","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13018918,"name":null,"raw_class":428,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"魚礁","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"fish_reef","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13020459,"name":null,"raw_class":428,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"魚礁","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"fish_reef","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13020673,"name":null,"raw_class":428,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"魚礁","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"fish_reef","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13020674,"name":null,"raw_class":428,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"魚礁","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"fish_reef","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13020675,"name":null,"raw_class":428,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"魚礁","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"fish_reef","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13020697,"name":null,"raw_class":428,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"魚礁","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"fish_reef","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13020698,"name":null,"raw_class":428,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"魚礁","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"fish_reef","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13020699,"name":null,"raw_class":428,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"海草","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"hazard_mark","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13018650,"name":null,"raw_class":425,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"海草","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"hazard_mark","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13018651,"name":null,"raw_class":425,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"海草","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"hazard_mark","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13018652,"name":null,"raw_class":425,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"海草","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"hazard_mark","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13018653,"name":null,"raw_class":425,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"海草","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"hazard_mark","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13018654,"name":null,"raw_class":425,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"海草","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"hazard_mark","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13018655,"name":null,"raw_class":425,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"海草","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"hazard_mark","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13018656,"name":null,"raw_class":425,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"海草","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"hazard_mark","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13018657,"name":null,"raw_class":425,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"海草","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"hazard_mark","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13018658,"name":null,"raw_class":425,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
-- {"candidates":[{"canonical_object_type":"海草","chart_icon_image":"symbol-daytime-428","chart_symbol_code":"hazard_mark","delivery_class":null}],"delivery_layer":"anchor_caution_hazard_point","fid":13018659,"name":null,"raw_class":425,"raw_layer":"p投錨注意障害物","tile":[11,1761,819]}
+- {"candidates":[{"canonical_object_type":"沿岸灯台 (15M over)","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007768,"name":"若宮灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30000004","tile":[10,880,409]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007824,"name":"壱岐長島灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,409]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007921,"name":"手長島灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,409]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007971,"name":"壱岐大瀬灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,409]}
+- {"candidates":[{"canonical_object_type":"沿岸灯台 (15M over)","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007773,"name":"二神島灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30000007","tile":[10,880,410]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007805,"name":"的山大島曲り鼻灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,410]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007823,"name":"海豚鼻灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,410]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007824,"name":"壱岐長島灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,410]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007836,"name":"大碆鼻灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,410]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007880,"name":"壱岐郷ノ瀬灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,410]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007885,"name":"馬ノ頭鼻灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,410]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007886,"name":"崎瀬鼻灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,410]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007938,"name":"的山大島長崎鼻灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,410]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007795,"name":"青砂埼灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,411]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007835,"name":"生月長瀬鼻灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,411]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007897,"name":"平戸牛ケ首灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100005","tile":[10,880,411]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007919,"name":"津崎鼻灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,411]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007939,"name":"肥前横島灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,411]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007940,"name":"南風埼灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,411]}
+- {"candidates":[{"canonical_object_type":"港湾灯台","chart_icon_image":"symbol-daytime-301","chart_symbol_code":"lighthouse","delivery_match_field":"display_code","delivery_match_value":null}],"delivery_layer":"navigation_marks","fid":12007941,"name":"下枯木島灯台","raw_layer":"p航路標識群","raw_match_field":"表示用番号","raw_match_value":"30100004","tile":[10,880,411]}
diff --git a/report/object_preservation_20nm/object_preservation_final_20nm.json b/report/object_preservation_20nm/object_preservation_final_20nm.json
index fc808d7..f45f9cc 100644
--- a/report/object_preservation_20nm/object_preservation_final_20nm.json
+++ b/report/object_preservation_20nm/object_preservation_final_20nm.json
@@ -4,17 +4,29 @@
"target_root": "/home/wwwroot/pbf-delivery-karatsu-20nm-final",
"totals": {
"tiles_compared": 154,
- "raw_objects": 2090,
- "preserved": 2090
+ "raw_objects": 4165,
+ "preserved": 4165
},
"rule_stats": {
+ "P航路ククリ->route_outline": {
+ "raw_objects": 19,
+ "preserved": 19
+ },
"p投錨注意障害物->anchor_caution_hazard_point": {
"raw_objects": 1426,
"preserved": 1426
},
+ "p施設・境界線等->facility_boundary_point": {
+ "raw_objects": 171,
+ "preserved": 171
+ },
"p航行危険障害物->navigation_hazard_point": {
"raw_objects": 664,
"preserved": 664
+ },
+ "p航路標識群->navigation_marks": {
+ "raw_objects": 1885,
+ "preserved": 1885
}
},
"top_class_issues": [
@@ -24,8 +36,8 @@
"preserved": 702,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
},
{
"class_key": "p航行危険障害物:404",
@@ -33,8 +45,8 @@
"preserved": 413,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
},
{
"class_key": "p投錨注意障害物:420",
@@ -42,8 +54,8 @@
"preserved": 355,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
},
{
"class_key": "p投錨注意障害物:425",
@@ -51,8 +63,53 @@
"preserved": 255,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30600003",
+ "raw_objects": 255,
+ "preserved": 255,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:31000000",
+ "raw_objects": 200,
+ "preserved": 200,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30600002",
+ "raw_objects": 191,
+ "preserved": 191,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30600001",
+ "raw_objects": 189,
+ "preserved": 189,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30100004",
+ "raw_objects": 142,
+ "preserved": 142,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
},
{
"class_key": "p航行危険障害物:403",
@@ -60,8 +117,80 @@
"preserved": 128,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p施設・境界線等:520",
+ "raw_objects": 128,
+ "preserved": 128,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:31336300",
+ "raw_objects": 108,
+ "preserved": 108,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30200002",
+ "raw_objects": 75,
+ "preserved": 75,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:31300003",
+ "raw_objects": 66,
+ "preserved": 66,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30600000",
+ "raw_objects": 60,
+ "preserved": 60,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30600004",
+ "raw_objects": 48,
+ "preserved": 48,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:31235102",
+ "raw_objects": 46,
+ "preserved": 46,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
+ },
+ {
+ "class_key": "p航路標識群:30200001",
+ "raw_objects": 44,
+ "preserved": 44,
+ "missing_object": 0,
+ "wrong_relayer": 0,
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
},
{
"class_key": "p航行危険障害物:432",
@@ -69,134 +198,17 @@
"preserved": 40,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
},
{
- "class_key": "p投錨注意障害物:421",
- "raw_objects": 32,
- "preserved": 32,
+ "class_key": "p航路標識群:31135102",
+ "raw_objects": 37,
+ "preserved": 37,
"missing_object": 0,
"wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
- },
- {
- "class_key": "p投錨注意障害物:415",
- "raw_objects": 25,
- "preserved": 25,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
- },
- {
- "class_key": "p投錨注意障害物:413",
- "raw_objects": 25,
- "preserved": 25,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:409",
- "raw_objects": 25,
- "preserved": 25,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:431",
- "raw_objects": 22,
- "preserved": 22,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
- },
- {
- "class_key": "p投錨注意障害物:434",
- "raw_objects": 18,
- "preserved": 18,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:433",
- "raw_objects": 15,
- "preserved": 15,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:427",
- "raw_objects": 9,
- "preserved": 9,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
- },
- {
- "class_key": "p投錨注意障害物:405",
- "raw_objects": 5,
- "preserved": 5,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:412",
- "raw_objects": 5,
- "preserved": 5,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
- },
- {
- "class_key": "p投錨注意障害物:422",
- "raw_objects": 4,
- "preserved": 4,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
- },
- {
- "class_key": "p投錨注意障害物:424",
- "raw_objects": 3,
- "preserved": 3,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:402",
- "raw_objects": 3,
- "preserved": 3,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
- },
- {
- "class_key": "p航行危険障害物:410",
- "raw_objects": 3,
- "preserved": 3,
- "missing_object": 0,
- "wrong_relayer": 0,
- "raw_class_lost": 0,
- "class_mismatch": 0
+ "identifier_lost": 0,
+ "identifier_mismatch": 0
}
],
"issue_examples": {}
diff --git a/report/object_preservation_20nm/object_preservation_final_20nm.md b/report/object_preservation_20nm/object_preservation_final_20nm.md
index 4f4f48c..162e985 100644
--- a/report/object_preservation_20nm/object_preservation_final_20nm.md
+++ b/report/object_preservation_20nm/object_preservation_final_20nm.md
@@ -6,23 +6,41 @@
## Totals
- tiles compared: `154`
-- raw objects: `2090`
-- preserved: `2090`
+- raw objects: `4165`
+- preserved: `4165`
- missing object: `0`
- wrong relayer: `0`
-- raw class lost: `0`
-- class mismatch: `0`
+- identifier lost: `0`
+- identifier mismatch: `0`
## Per Rule
+### `P航路ククリ->route_outline`
+
+- raw objects: `19`
+- preserved: `19`
+- missing object: `0`
+- wrong relayer: `0`
+- identifier lost: `0`
+- identifier mismatch: `0`
+
### `p投錨注意障害物->anchor_caution_hazard_point`
- raw objects: `1426`
- preserved: `1426`
- missing object: `0`
- wrong relayer: `0`
-- raw class lost: `0`
-- class mismatch: `0`
+- identifier lost: `0`
+- identifier mismatch: `0`
+
+### `p施設・境界線等->facility_boundary_point`
+
+- raw objects: `171`
+- preserved: `171`
+- missing object: `0`
+- wrong relayer: `0`
+- identifier lost: `0`
+- identifier mismatch: `0`
### `p航行危険障害物->navigation_hazard_point`
@@ -30,20 +48,29 @@
- preserved: `664`
- missing object: `0`
- wrong relayer: `0`
-- raw class lost: `0`
-- class mismatch: `0`
+- identifier lost: `0`
+- identifier mismatch: `0`
+
+### `p航路標識群->navigation_marks`
+
+- raw objects: `1885`
+- preserved: `1885`
+- missing object: `0`
+- wrong relayer: `0`
+- identifier lost: `0`
+- identifier mismatch: `0`
## Top Class Issues
-- `p投錨注意障害物:428` raw=`702` preserved=`702` missing=`0` wrong_relayer=`0` class_lost=`0` class_mismatch=`0`
-- `p航行危険障害物:404` raw=`413` preserved=`413` missing=`0` wrong_relayer=`0` class_lost=`0` class_mismatch=`0`
-- `p投錨注意障害物:420` raw=`355` preserved=`355` missing=`0` wrong_relayer=`0` class_lost=`0` class_mismatch=`0`
-- `p投錨注意障害物:425` raw=`255` preserved=`255` missing=`0` wrong_relayer=`0` class_lost=`0` class_mismatch=`0`
-- `p航行危険障害物:403` raw=`128` preserved=`128` missing=`0` wrong_relayer=`0` class_lost=`0` class_mismatch=`0`
-- `p航行危険障害物:432` raw=`40` preserved=`40` missing=`0` wrong_relayer=`0` class_lost=`0` class_mismatch=`0`
-- `p投錨注意障害物:421` raw=`32` preserved=`32` missing=`0` wrong_relayer=`0` class_lost=`0` class_mismatch=`0`
-- `p投錨注意障害物:415` raw=`25` preserved=`25` missing=`0` wrong_relayer=`0` class_lost=`0` class_mismatch=`0`
-- `p投錨注意障害物:413` raw=`25` preserved=`25` missing=`0` wrong_relayer=`0` class_lost=`0` class_mismatch=`0`
-- `p航行危険障害物:409` raw=`25` preserved=`25` missing=`0` wrong_relayer=`0` class_lost=`0` class_mismatch=`0`
-- `p航行危険障害物:431` raw=`22` preserved=`22` missing=`0` wrong_relayer=`0` class_lost=`0` class_mismatch=`0`
-- `p投錨注意障害物:434` raw=`18` preserved=`18` missing=`0` wrong_relayer=`0` class_lost=`0` class_mismatch=`0`
+- `p投錨注意障害物:428` raw=`702` preserved=`702` missing=`0` wrong_relayer=`0` identifier_lost=`0` identifier_mismatch=`0`
+- `p航行危険障害物:404` raw=`413` preserved=`413` missing=`0` wrong_relayer=`0` identifier_lost=`0` identifier_mismatch=`0`
+- `p投錨注意障害物:420` raw=`355` preserved=`355` missing=`0` wrong_relayer=`0` identifier_lost=`0` identifier_mismatch=`0`
+- `p投錨注意障害物:425` raw=`255` preserved=`255` missing=`0` wrong_relayer=`0` identifier_lost=`0` identifier_mismatch=`0`
+- `p航路標識群:30600003` raw=`255` preserved=`255` missing=`0` wrong_relayer=`0` identifier_lost=`0` identifier_mismatch=`0`
+- `p航路標識群:31000000` raw=`200` preserved=`200` missing=`0` wrong_relayer=`0` identifier_lost=`0` identifier_mismatch=`0`
+- `p航路標識群:30600002` raw=`191` preserved=`191` missing=`0` wrong_relayer=`0` identifier_lost=`0` identifier_mismatch=`0`
+- `p航路標識群:30600001` raw=`189` preserved=`189` missing=`0` wrong_relayer=`0` identifier_lost=`0` identifier_mismatch=`0`
+- `p航路標識群:30100004` raw=`142` preserved=`142` missing=`0` wrong_relayer=`0` identifier_lost=`0` identifier_mismatch=`0`
+- `p航行危険障害物:403` raw=`128` preserved=`128` missing=`0` wrong_relayer=`0` identifier_lost=`0` identifier_mismatch=`0`
+- `p施設・境界線等:520` raw=`128` preserved=`128` missing=`0` wrong_relayer=`0` identifier_lost=`0` identifier_mismatch=`0`
+- `p航路標識群:31336300` raw=`108` preserved=`108` missing=`0` wrong_relayer=`0` identifier_lost=`0` identifier_mismatch=`0`
diff --git a/report/strict_audit_20nm_hakata_r11/strict_audit_summary.json b/report/strict_audit_20nm_hakata_r11/strict_audit_summary.json
new file mode 100644
index 0000000..81eb915
--- /dev/null
+++ b/report/strict_audit_20nm_hakata_r11/strict_audit_summary.json
@@ -0,0 +1,325 @@
+{
+ "compare_url": "http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html?profile=karatsu20¢er=130.335,33.6385&zoom=12.2",
+ "compare_version": "compare-r15-20260401-1705",
+ "backend_audit_json": "/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.r7.json",
+ "visual_metrics": {
+ "image_width": 640,
+ "image_height": 400,
+ "total_pixels": 256000,
+ "changed_pixels": 204870,
+ "changed_ratio": 0.800273,
+ "mean_abs_rgb": [
+ 35.246,
+ 30.4837,
+ 37.2849
+ ],
+ "rms_rgb": [
+ 63.4187,
+ 58.8447,
+ 61.8033
+ ],
+ "diff_bbox": [
+ 0,
+ 0,
+ 640,
+ 400
+ ],
+ "full_crop_left": [
+ 0,
+ 150,
+ 640,
+ 550
+ ],
+ "full_crop_right": [
+ 640,
+ 150,
+ 1280,
+ 550
+ ],
+ "hotspots": [
+ {
+ "image_width": 243,
+ "image_height": 160,
+ "total_pixels": 38880,
+ "changed_pixels": 36572,
+ "changed_ratio": 0.940638,
+ "mean_abs_rgb": [
+ 56.5193,
+ 48.903,
+ 59.1648
+ ],
+ "rms_rgb": [
+ 80.9755,
+ 76.7491,
+ 82.393
+ ],
+ "diff_bbox": [
+ 0,
+ 0,
+ 243,
+ 160
+ ],
+ "id": "hakata_inner_harbor_facilities",
+ "label": "博多港内港设施区",
+ "notes": "校验港湾、渔港、海之驿、码头设施点是否保留细分类图标。",
+ "backend_focus": [
+ "p施設・境界線等",
+ "facility_boundary_point",
+ "class_code"
+ ],
+ "pane_box_norm": [
+ 0.48,
+ 0.36,
+ 0.86,
+ 0.76
+ ],
+ "pane_box_pixels": [
+ 307,
+ 144,
+ 550,
+ 304
+ ],
+ "left_image": "report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_left.png",
+ "right_image": "report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_right.png",
+ "diff_image": "report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_diff.png"
+ },
+ {
+ "image_width": 269,
+ "image_height": 128,
+ "total_pixels": 34432,
+ "changed_pixels": 27307,
+ "changed_ratio": 0.79307,
+ "mean_abs_rgb": [
+ 26.1097,
+ 26.7583,
+ 39.4596
+ ],
+ "rms_rgb": [
+ 47.3354,
+ 47.654,
+ 59.348
+ ],
+ "diff_bbox": [
+ 0,
+ 0,
+ 269,
+ 128
+ ],
+ "id": "hakata_route_outline_facility",
+ "label": "博多港航路边界与设施点区",
+ "notes": "校验紫色航路虚线是否存在,以及 class 505/520/530/550 设施点是否不再被画成通用图标。",
+ "backend_focus": [
+ "P航路ククリ",
+ "p施設・境界線等",
+ "route_outline",
+ "facility_boundary_point"
+ ],
+ "pane_box_norm": [
+ 0.2,
+ 0.2,
+ 0.62,
+ 0.52
+ ],
+ "pane_box_pixels": [
+ 128,
+ 80,
+ 397,
+ 208
+ ],
+ "left_image": "report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_left.png",
+ "right_image": "report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_right.png",
+ "diff_image": "report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_diff.png"
+ },
+ {
+ "image_width": 256,
+ "image_height": 104,
+ "total_pixels": 26624,
+ "changed_pixels": 20980,
+ "changed_ratio": 0.788011,
+ "mean_abs_rgb": [
+ 28.3871,
+ 26.5249,
+ 30.4682
+ ],
+ "rms_rgb": [
+ 54.1879,
+ 52.0871,
+ 54.2968
+ ],
+ "diff_bbox": [
+ 0,
+ 0,
+ 256,
+ 104
+ ],
+ "id": "hakata_central_passage_marks",
+ "label": "博多港中央航路灯标区",
+ "notes": "校验 31135x 灯标、红绿小灯和航路文字是否仍然可见。",
+ "backend_focus": [
+ "p航路標識群",
+ "navigation_marks",
+ "display_code"
+ ],
+ "pane_box_norm": [
+ 0.02,
+ 0.1,
+ 0.42,
+ 0.36
+ ],
+ "pane_box_pixels": [
+ 13,
+ 40,
+ 269,
+ 144
+ ],
+ "left_image": "report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_left.png",
+ "right_image": "report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_right.png",
+ "diff_image": "report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_diff.png"
+ }
+ ]
+ },
+ "backend_summary": {
+ "original_feature_instances": 258317,
+ "engineering_feature_instances": 258317,
+ "result_count": 516634,
+ "status_counts": {
+ "extra_in_engineering": 258317,
+ "missing_in_engineering": 258317
+ },
+ "top_annotation_issues": [
+ {
+ "issue": "extra_text_in_engineering",
+ "source_layer": "bathymetry_line",
+ "count": 24168
+ },
+ {
+ "issue": "text_missing_in_engineering",
+ "source_layer": "L海底地形",
+ "count": 24168
+ },
+ {
+ "issue": "extra_text_in_engineering",
+ "source_layer": "depth_contour",
+ "count": 11929
+ },
+ {
+ "issue": "text_missing_in_engineering",
+ "source_layer": "L等深線",
+ "count": 11929
+ },
+ {
+ "issue": "extra_text_in_engineering",
+ "source_layer": "seabed_text_point",
+ "count": 4499
+ },
+ {
+ "issue": "text_missing_in_engineering",
+ "source_layer": "p底質",
+ "count": 4499
+ },
+ {
+ "issue": "extra_text_in_engineering",
+ "source_layer": "navigation_marks",
+ "count": 1516
+ },
+ {
+ "issue": "text_missing_in_engineering",
+ "source_layer": "p航路標識群",
+ "count": 1516
+ },
+ {
+ "issue": "text_missing_in_engineering",
+ "source_layer": "p地名",
+ "count": 1444
+ },
+ {
+ "issue": "extra_text_in_engineering",
+ "source_layer": "place_label_sea",
+ "count": 1444
+ }
+ ],
+ "top_style_semantic_issues": [
+ {
+ "issue": "depth_numeric_missing",
+ "source_layer": "L海底地形",
+ "count": 24168
+ },
+ {
+ "issue": "depth_numeric_missing",
+ "source_layer": "L等深線",
+ "count": 11929
+ },
+ {
+ "issue": "safety_icon_missing",
+ "source_layer": "p航路標識群",
+ "count": 1885
+ },
+ {
+ "issue": "depth_numeric_missing",
+ "source_layer": "L概略等深線",
+ "count": 350
+ },
+ {
+ "issue": "clearance_numeric_missing",
+ "source_layer": "p高さ制限",
+ "count": 33
+ }
+ ],
+ "top_source_layer_issues": [
+ {
+ "status": "extra_in_engineering",
+ "source_layer": "baseline_outline",
+ "count": 87709
+ },
+ {
+ "status": "missing_in_engineering",
+ "source_layer": "P基本線ククリ",
+ "count": 87709
+ },
+ {
+ "status": "extra_in_engineering",
+ "source_layer": "baseline_area",
+ "count": 50421
+ },
+ {
+ "status": "missing_in_engineering",
+ "source_layer": "P基本線",
+ "count": 50421
+ },
+ {
+ "status": "extra_in_engineering",
+ "source_layer": "depth_contour",
+ "count": 36460
+ },
+ {
+ "status": "missing_in_engineering",
+ "source_layer": "L等深線",
+ "count": 36460
+ },
+ {
+ "status": "extra_in_engineering",
+ "source_layer": "bathymetry_line",
+ "count": 35940
+ },
+ {
+ "status": "missing_in_engineering",
+ "source_layer": "L海底地形",
+ "count": 35940
+ },
+ {
+ "status": "extra_in_engineering",
+ "source_layer": "onshore_structure_line",
+ "count": 10544
+ },
+ {
+ "status": "missing_in_engineering",
+ "source_layer": "L陸上構造物陸",
+ "count": 10544
+ }
+ ]
+ },
+ "notes": [
+ "Visual metrics are browser-rendered screenshot diff metrics from the fixed compare page.",
+ "Backend metrics are current render-audit summary metrics and may remain blind to sprite-load failures."
+ ]
+}
\ No newline at end of file
diff --git a/report/strict_audit_20nm_hakata_r11/strict_audit_summary.md b/report/strict_audit_20nm_hakata_r11/strict_audit_summary.md
new file mode 100644
index 0000000..6fe0ccd
--- /dev/null
+++ b/report/strict_audit_20nm_hakata_r11/strict_audit_summary.md
@@ -0,0 +1,104 @@
+# NavSea Strict Audit Summary
+
+## Scope
+
+- Compare page: `http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html?profile=karatsu20¢er=130.335,33.6385&zoom=12.2`
+- Compare version: `compare-r15-20260401-1705`
+- Backend render audit: `/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.r7.json`
+
+## Visual Audit
+
+- changed pixels: `204870` / `256000`
+- changed ratio: `0.800273`
+- mean abs rgb: `[35.246, 30.4837, 37.2849]`
+- rms rgb: `[63.4187, 58.8447, 61.8033]`
+- left crop: `[0, 150, 640, 550]`
+- right crop: `[640, 150, 1280, 550]`
+
+Artifacts:
+
+- `report/strict_audit_20nm_hakata_r11/compare_full.png`
+- `report/strict_audit_20nm_hakata_r11/compare_left.png`
+- `report/strict_audit_20nm_hakata_r11/compare_right.png`
+- `report/strict_audit_20nm_hakata_r11/compare_diff.png`
+
+## Hotspot AOI Audit
+
+### 博多港内港设施区
+
+- id: `hakata_inner_harbor_facilities`
+- notes: `校验港湾、渔港、海之驿、码头设施点是否保留细分类图标。`
+- backend focus: `['p施設・境界線等', 'facility_boundary_point', 'class_code']`
+- changed pixels: `36572` / `38880`
+- changed ratio: `0.940638`
+- mean abs rgb: `[56.5193, 48.903, 59.1648]`
+- pane box norm: `[0.48, 0.36, 0.86, 0.76]`
+- pane box pixels: `[307, 144, 550, 304]`
+- left image: `report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_left.png`
+- right image: `report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_right.png`
+- diff image: `report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_diff.png`
+
+### 博多港航路边界与设施点区
+
+- id: `hakata_route_outline_facility`
+- notes: `校验紫色航路虚线是否存在,以及 class 505/520/530/550 设施点是否不再被画成通用图标。`
+- backend focus: `['P航路ククリ', 'p施設・境界線等', 'route_outline', 'facility_boundary_point']`
+- changed pixels: `27307` / `34432`
+- changed ratio: `0.79307`
+- mean abs rgb: `[26.1097, 26.7583, 39.4596]`
+- pane box norm: `[0.2, 0.2, 0.62, 0.52]`
+- pane box pixels: `[128, 80, 397, 208]`
+- left image: `report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_left.png`
+- right image: `report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_right.png`
+- diff image: `report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_diff.png`
+
+### 博多港中央航路灯标区
+
+- id: `hakata_central_passage_marks`
+- notes: `校验 31135x 灯标、红绿小灯和航路文字是否仍然可见。`
+- backend focus: `['p航路標識群', 'navigation_marks', 'display_code']`
+- changed pixels: `20980` / `26624`
+- changed ratio: `0.788011`
+- mean abs rgb: `[28.3871, 26.5249, 30.4682]`
+- pane box norm: `[0.02, 0.1, 0.42, 0.36]`
+- pane box pixels: `[13, 40, 269, 144]`
+- left image: `report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_left.png`
+- right image: `report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_right.png`
+- diff image: `report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_diff.png`
+
+## Backend Render Audit
+
+- original feature instances: `258317`
+- delivery feature instances: `258317`
+- result count: `516634`
+
+Status counts:
+
+- `extra_in_engineering`: `258317`
+- `missing_in_engineering`: `258317`
+
+Top annotation issues:
+
+- `extra_text_in_engineering` | `bathymetry_line` | `24168`
+- `text_missing_in_engineering` | `L海底地形` | `24168`
+- `extra_text_in_engineering` | `depth_contour` | `11929`
+- `text_missing_in_engineering` | `L等深線` | `11929`
+- `extra_text_in_engineering` | `seabed_text_point` | `4499`
+- `text_missing_in_engineering` | `p底質` | `4499`
+- `extra_text_in_engineering` | `navigation_marks` | `1516`
+- `text_missing_in_engineering` | `p航路標識群` | `1516`
+- `text_missing_in_engineering` | `p地名` | `1444`
+- `extra_text_in_engineering` | `place_label_sea` | `1444`
+
+Top style semantic issues:
+
+- `depth_numeric_missing` | `L海底地形` | `24168`
+- `depth_numeric_missing` | `L等深線` | `11929`
+- `safety_icon_missing` | `p航路標識群` | `1885`
+- `depth_numeric_missing` | `L概略等深線` | `350`
+- `clearance_numeric_missing` | `p高さ制限` | `33`
+
+## Interpretation
+
+- This report intentionally puts browser-rendered visual output and backend render-audit summary in one place.
+- If the browser screenshot improves but backend counts do not, the current backend audit is likely blind to a browser/runtime issue such as sprite resolution.
diff --git a/report/strict_audit_20nm_hakata_r9/strict_audit_summary.json b/report/strict_audit_20nm_hakata_r9/strict_audit_summary.json
new file mode 100644
index 0000000..99ab255
--- /dev/null
+++ b/report/strict_audit_20nm_hakata_r9/strict_audit_summary.json
@@ -0,0 +1,325 @@
+{
+ "compare_url": "http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html?profile=karatsu20¢er=130.335,33.6385&zoom=12.2",
+ "compare_version": "compare-r15-20260401-1705",
+ "backend_audit_json": "/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.r7.json",
+ "visual_metrics": {
+ "image_width": 640,
+ "image_height": 400,
+ "total_pixels": 256000,
+ "changed_pixels": 204833,
+ "changed_ratio": 0.800129,
+ "mean_abs_rgb": [
+ 35.2451,
+ 30.4831,
+ 37.2841
+ ],
+ "rms_rgb": [
+ 63.4189,
+ 58.8449,
+ 61.8034
+ ],
+ "diff_bbox": [
+ 0,
+ 0,
+ 640,
+ 400
+ ],
+ "full_crop_left": [
+ 0,
+ 150,
+ 640,
+ 550
+ ],
+ "full_crop_right": [
+ 640,
+ 150,
+ 1280,
+ 550
+ ],
+ "hotspots": [
+ {
+ "image_width": 243,
+ "image_height": 160,
+ "total_pixels": 38880,
+ "changed_pixels": 36572,
+ "changed_ratio": 0.940638,
+ "mean_abs_rgb": [
+ 56.5193,
+ 48.903,
+ 59.1648
+ ],
+ "rms_rgb": [
+ 80.9755,
+ 76.7491,
+ 82.393
+ ],
+ "diff_bbox": [
+ 0,
+ 0,
+ 243,
+ 160
+ ],
+ "id": "hakata_inner_harbor_facilities",
+ "label": "博多港内港设施区",
+ "notes": "校验港湾、渔港、海之驿、码头设施点是否保留细分类图标。",
+ "backend_focus": [
+ "p施設・境界線等",
+ "facility_boundary_point",
+ "class_code"
+ ],
+ "pane_box_norm": [
+ 0.48,
+ 0.36,
+ 0.86,
+ 0.76
+ ],
+ "pane_box_pixels": [
+ 307,
+ 144,
+ 550,
+ 304
+ ],
+ "left_image": "report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_left.png",
+ "right_image": "report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_right.png",
+ "diff_image": "report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_diff.png"
+ },
+ {
+ "image_width": 269,
+ "image_height": 128,
+ "total_pixels": 34432,
+ "changed_pixels": 27307,
+ "changed_ratio": 0.79307,
+ "mean_abs_rgb": [
+ 26.1097,
+ 26.7583,
+ 39.4596
+ ],
+ "rms_rgb": [
+ 47.3354,
+ 47.654,
+ 59.348
+ ],
+ "diff_bbox": [
+ 0,
+ 0,
+ 269,
+ 128
+ ],
+ "id": "hakata_route_outline_facility",
+ "label": "博多港航路边界与设施点区",
+ "notes": "校验紫色航路虚线是否存在,以及 class 505/520/530/550 设施点是否不再被画成通用图标。",
+ "backend_focus": [
+ "P航路ククリ",
+ "p施設・境界線等",
+ "route_outline",
+ "facility_boundary_point"
+ ],
+ "pane_box_norm": [
+ 0.2,
+ 0.2,
+ 0.62,
+ 0.52
+ ],
+ "pane_box_pixels": [
+ 128,
+ 80,
+ 397,
+ 208
+ ],
+ "left_image": "report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_left.png",
+ "right_image": "report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_right.png",
+ "diff_image": "report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_diff.png"
+ },
+ {
+ "image_width": 256,
+ "image_height": 104,
+ "total_pixels": 26624,
+ "changed_pixels": 20980,
+ "changed_ratio": 0.788011,
+ "mean_abs_rgb": [
+ 28.3871,
+ 26.5249,
+ 30.4682
+ ],
+ "rms_rgb": [
+ 54.1879,
+ 52.0871,
+ 54.2968
+ ],
+ "diff_bbox": [
+ 0,
+ 0,
+ 256,
+ 104
+ ],
+ "id": "hakata_central_passage_marks",
+ "label": "博多港中央航路灯标区",
+ "notes": "校验 31135x 灯标、红绿小灯和航路文字是否仍然可见。",
+ "backend_focus": [
+ "p航路標識群",
+ "navigation_marks",
+ "display_code"
+ ],
+ "pane_box_norm": [
+ 0.02,
+ 0.1,
+ 0.42,
+ 0.36
+ ],
+ "pane_box_pixels": [
+ 13,
+ 40,
+ 269,
+ 144
+ ],
+ "left_image": "report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_left.png",
+ "right_image": "report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_right.png",
+ "diff_image": "report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_diff.png"
+ }
+ ]
+ },
+ "backend_summary": {
+ "original_feature_instances": 258317,
+ "engineering_feature_instances": 258317,
+ "result_count": 516634,
+ "status_counts": {
+ "extra_in_engineering": 258317,
+ "missing_in_engineering": 258317
+ },
+ "top_annotation_issues": [
+ {
+ "issue": "extra_text_in_engineering",
+ "source_layer": "bathymetry_line",
+ "count": 24168
+ },
+ {
+ "issue": "text_missing_in_engineering",
+ "source_layer": "L海底地形",
+ "count": 24168
+ },
+ {
+ "issue": "extra_text_in_engineering",
+ "source_layer": "depth_contour",
+ "count": 11929
+ },
+ {
+ "issue": "text_missing_in_engineering",
+ "source_layer": "L等深線",
+ "count": 11929
+ },
+ {
+ "issue": "extra_text_in_engineering",
+ "source_layer": "seabed_text_point",
+ "count": 4499
+ },
+ {
+ "issue": "text_missing_in_engineering",
+ "source_layer": "p底質",
+ "count": 4499
+ },
+ {
+ "issue": "extra_text_in_engineering",
+ "source_layer": "navigation_marks",
+ "count": 1516
+ },
+ {
+ "issue": "text_missing_in_engineering",
+ "source_layer": "p航路標識群",
+ "count": 1516
+ },
+ {
+ "issue": "text_missing_in_engineering",
+ "source_layer": "p地名",
+ "count": 1444
+ },
+ {
+ "issue": "extra_text_in_engineering",
+ "source_layer": "place_label_sea",
+ "count": 1444
+ }
+ ],
+ "top_style_semantic_issues": [
+ {
+ "issue": "depth_numeric_missing",
+ "source_layer": "L海底地形",
+ "count": 24168
+ },
+ {
+ "issue": "depth_numeric_missing",
+ "source_layer": "L等深線",
+ "count": 11929
+ },
+ {
+ "issue": "safety_icon_missing",
+ "source_layer": "p航路標識群",
+ "count": 1885
+ },
+ {
+ "issue": "depth_numeric_missing",
+ "source_layer": "L概略等深線",
+ "count": 350
+ },
+ {
+ "issue": "clearance_numeric_missing",
+ "source_layer": "p高さ制限",
+ "count": 33
+ }
+ ],
+ "top_source_layer_issues": [
+ {
+ "status": "extra_in_engineering",
+ "source_layer": "baseline_outline",
+ "count": 87709
+ },
+ {
+ "status": "missing_in_engineering",
+ "source_layer": "P基本線ククリ",
+ "count": 87709
+ },
+ {
+ "status": "extra_in_engineering",
+ "source_layer": "baseline_area",
+ "count": 50421
+ },
+ {
+ "status": "missing_in_engineering",
+ "source_layer": "P基本線",
+ "count": 50421
+ },
+ {
+ "status": "extra_in_engineering",
+ "source_layer": "depth_contour",
+ "count": 36460
+ },
+ {
+ "status": "missing_in_engineering",
+ "source_layer": "L等深線",
+ "count": 36460
+ },
+ {
+ "status": "extra_in_engineering",
+ "source_layer": "bathymetry_line",
+ "count": 35940
+ },
+ {
+ "status": "missing_in_engineering",
+ "source_layer": "L海底地形",
+ "count": 35940
+ },
+ {
+ "status": "extra_in_engineering",
+ "source_layer": "onshore_structure_line",
+ "count": 10544
+ },
+ {
+ "status": "missing_in_engineering",
+ "source_layer": "L陸上構造物陸",
+ "count": 10544
+ }
+ ]
+ },
+ "notes": [
+ "Visual metrics are browser-rendered screenshot diff metrics from the fixed compare page.",
+ "Backend metrics are current render-audit summary metrics and may remain blind to sprite-load failures."
+ ]
+}
\ No newline at end of file
diff --git a/report/strict_audit_20nm_hakata_r9/strict_audit_summary.md b/report/strict_audit_20nm_hakata_r9/strict_audit_summary.md
new file mode 100644
index 0000000..6166e4f
--- /dev/null
+++ b/report/strict_audit_20nm_hakata_r9/strict_audit_summary.md
@@ -0,0 +1,104 @@
+# NavSea Strict Audit Summary
+
+## Scope
+
+- Compare page: `http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html?profile=karatsu20¢er=130.335,33.6385&zoom=12.2`
+- Compare version: `compare-r15-20260401-1705`
+- Backend render audit: `/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.r7.json`
+
+## Visual Audit
+
+- changed pixels: `204833` / `256000`
+- changed ratio: `0.800129`
+- mean abs rgb: `[35.2451, 30.4831, 37.2841]`
+- rms rgb: `[63.4189, 58.8449, 61.8034]`
+- left crop: `[0, 150, 640, 550]`
+- right crop: `[640, 150, 1280, 550]`
+
+Artifacts:
+
+- `report/strict_audit_20nm_hakata_r9/compare_full.png`
+- `report/strict_audit_20nm_hakata_r9/compare_left.png`
+- `report/strict_audit_20nm_hakata_r9/compare_right.png`
+- `report/strict_audit_20nm_hakata_r9/compare_diff.png`
+
+## Hotspot AOI Audit
+
+### 博多港内港设施区
+
+- id: `hakata_inner_harbor_facilities`
+- notes: `校验港湾、渔港、海之驿、码头设施点是否保留细分类图标。`
+- backend focus: `['p施設・境界線等', 'facility_boundary_point', 'class_code']`
+- changed pixels: `36572` / `38880`
+- changed ratio: `0.940638`
+- mean abs rgb: `[56.5193, 48.903, 59.1648]`
+- pane box norm: `[0.48, 0.36, 0.86, 0.76]`
+- pane box pixels: `[307, 144, 550, 304]`
+- left image: `report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_left.png`
+- right image: `report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_right.png`
+- diff image: `report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_diff.png`
+
+### 博多港航路边界与设施点区
+
+- id: `hakata_route_outline_facility`
+- notes: `校验紫色航路虚线是否存在,以及 class 505/520/530/550 设施点是否不再被画成通用图标。`
+- backend focus: `['P航路ククリ', 'p施設・境界線等', 'route_outline', 'facility_boundary_point']`
+- changed pixels: `27307` / `34432`
+- changed ratio: `0.79307`
+- mean abs rgb: `[26.1097, 26.7583, 39.4596]`
+- pane box norm: `[0.2, 0.2, 0.62, 0.52]`
+- pane box pixels: `[128, 80, 397, 208]`
+- left image: `report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_left.png`
+- right image: `report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_right.png`
+- diff image: `report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_diff.png`
+
+### 博多港中央航路灯标区
+
+- id: `hakata_central_passage_marks`
+- notes: `校验 31135x 灯标、红绿小灯和航路文字是否仍然可见。`
+- backend focus: `['p航路標識群', 'navigation_marks', 'display_code']`
+- changed pixels: `20980` / `26624`
+- changed ratio: `0.788011`
+- mean abs rgb: `[28.3871, 26.5249, 30.4682]`
+- pane box norm: `[0.02, 0.1, 0.42, 0.36]`
+- pane box pixels: `[13, 40, 269, 144]`
+- left image: `report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_left.png`
+- right image: `report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_right.png`
+- diff image: `report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_diff.png`
+
+## Backend Render Audit
+
+- original feature instances: `258317`
+- delivery feature instances: `258317`
+- result count: `516634`
+
+Status counts:
+
+- `extra_in_engineering`: `258317`
+- `missing_in_engineering`: `258317`
+
+Top annotation issues:
+
+- `extra_text_in_engineering` | `bathymetry_line` | `24168`
+- `text_missing_in_engineering` | `L海底地形` | `24168`
+- `extra_text_in_engineering` | `depth_contour` | `11929`
+- `text_missing_in_engineering` | `L等深線` | `11929`
+- `extra_text_in_engineering` | `seabed_text_point` | `4499`
+- `text_missing_in_engineering` | `p底質` | `4499`
+- `extra_text_in_engineering` | `navigation_marks` | `1516`
+- `text_missing_in_engineering` | `p航路標識群` | `1516`
+- `text_missing_in_engineering` | `p地名` | `1444`
+- `extra_text_in_engineering` | `place_label_sea` | `1444`
+
+Top style semantic issues:
+
+- `depth_numeric_missing` | `L海底地形` | `24168`
+- `depth_numeric_missing` | `L等深線` | `11929`
+- `safety_icon_missing` | `p航路標識群` | `1885`
+- `depth_numeric_missing` | `L概略等深線` | `350`
+- `clearance_numeric_missing` | `p高さ制限` | `33`
+
+## Interpretation
+
+- This report intentionally puts browser-rendered visual output and backend render-audit summary in one place.
+- If the browser screenshot improves but backend counts do not, the current backend audit is likely blind to a browser/runtime issue such as sprite resolution.
diff --git a/src/pbf/navsea-compare-karatsu-20nm.html b/src/pbf/navsea-compare-karatsu-20nm.html
index 9c2ea5c..307ef2c 100644
--- a/src/pbf/navsea-compare-karatsu-20nm.html
+++ b/src/pbf/navsea-compare-karatsu-20nm.html
@@ -314,7 +314,7 @@