diff --git a/NavSea_Chart_Domain_Layer_Catalog.md b/NavSea_Chart_Domain_Layer_Catalog.md new file mode 100644 index 0000000..7787e07 --- /dev/null +++ b/NavSea_Chart_Domain_Layer_Catalog.md @@ -0,0 +1,105 @@ +# NavSea Chart Domain Layer Catalog + +本文列出当前 `NavSea_Chart_Domain_Model_v1` 中三层逻辑域的全部 layer,并说明每个 layer 主要承载什么对象/内容。 + +## Safety Core + +这一层属于最低安全底线,缺失时不应被视为可安全航行表达。 + +| Layer | 中文语义 | 主要包含内容 | +|---|---|---| +| `depth_contour` | 等深线 | 主要等深线、本航海尺度下的重要水深分界线及其水深数字承载线。 | +| `depth_contour_overview` | 概略等深线 | 小比例尺或概略表达下的等深线,用于补充整体海底起伏和水深梯度。 | +| `hazard_boundary_line` | 危险界线 | 直接表达危险范围或危险界的线性对象。 | +| `hazard_boundary_outline` | 危险界边界 | 危险区域的边框、轮廓或强调线。 | +| `land_area` | 陆地区域 | 陆地面,岸线内陆地区域,是最低安全判断必须存在的地形基础,同时也是陆海二分的主判定层。 | +| `navigation_hazard_area` | 航行危险障害物面 | 会直接影响通航安全的危险区域面,如航行危险障碍区。 | +| `navigation_hazard_outline` | 航行危险障害物边界 | 航行危险区域的边界轮廓线。 | +| `navigation_hazard_point` | 航行危险障害物点 | 航行危险点对象,如暗礁、危险障碍点、沉船类危险点等。 | +| `navigation_marks` | 航标/灯标/浮标点 | 灯台、灯浮标、航标、浮标等直接承担导助航作用的点对象。 | +| `fixed_fishing_gear_area` | 定置渔具区域 | 定置渔具、渔业相关作业区域面,属于航行规避时必须感知的安全底线信息。 | +| `submerged_reef_area` | 潜堤/潜礁区域 | 潜堤、潜礁等低于水面的危险地形区域。 | + +## Safety Extended + +这一层属于重要航海信息,但缺失时不一定立刻构成最低安全失效。 + +| Layer | 中文语义 | 主要包含内容 | +|---|---|---| +| `anchor_caution_hazard_area` | 抛锚注意障害物面 | 会影响抛锚决策的障碍区域面,例如锚泊注意障碍区域、鱼礁/障碍物相关警示面容器。 | +| `anchor_caution_hazard_outline` | 抛锚注意障害物边界 | 上述抛锚注意障碍区域的边线、虚线或边界轮廓。 | +| `anchor_caution_hazard_point` | 抛锚注意障害物点 | 与抛锚行为直接相关的点状障碍物、鱼礁、险恶物等点对象。 | +| `anchorage_area` | 锚地/锚泊地区域 | 锚地、锚泊区、检疫锚地等可锚泊区域面。 | +| `anchorage_outline` | 锚地边界 | 锚地边界线、锚泊区域轮廓。 | +| `anchorage_point` | 锚地符号点 | 锚地图标、锚泊区点状符号。 | +| `baseline_area` | 基本线相关面 | 与基本线体系相关的面性容器,目前仍偏制图容器语义。 | +| `baseline_line` | 基本线线层 | 基本线主线。 | +| `baseline_outline` | 基本线边界 | 基本线轮廓或配套边线。 | +| `bridge_structure` | 桥梁等结构物面 | 桥梁、桥区等可能影响通航净空或航道通过的结构物。 | +| `clearance_limit_line` | 高度/净空限制线 | 高度限制、净空限制相关线对象。 | +| `clearance_limit_point` | 高度限制点标注 | 高度限制点、净空值标注点。 | +| `leading_line_outline` | 导标/引导线边界 | 导标线、引导线等边界或强调线。 | +| `onshore_structure_area` | 陆上结构物面 | 靠近岸线、与海图表达相关的陆上结构物面。 | +| `onshore_structure_line` | 陆上结构物线 | 上述陆上结构物的线性表达。 | +| `onshore_structure_point` | 陆上结构物点 | 陆上结构物点对象或点符号。 | +| `pilot_station_point` | 引航站点 | 引航站、引航相关服务点。 | +| `route_area` | 航路区域 | 航路面、通航区域面。 | +| `route_axis_line` | 航路线/航路轴线 | 航路中线、航路轴线。 | +| `route_boundary_point` | 航路边界标注点 | 航路边界相关点标注或点状符号。 | +| `route_outline` | 航路边界 | 航路外框、边界轮廓。 | + +## Detail + +这一层属于细节信息层,缺失不会破坏最低安全表达,但会降低海图完整性和可读性。 + +| Layer | 中文语义 | 主要包含内容 | +|---|---|---| +| `bathymetry_line` | 海底地形支撑线 | 海底地形辅助线、非最终业务语义主层,但对海底起伏阅读有帮助。 | +| `facility_boundary_area` | 设施/边界相关区域 | 港区设施、边界性容器面、辅助设施面等。 | +| `facility_boundary_area_transparent` | 透明设施/边界区域 | 透明面表达的设施/边界区域。 | +| `facility_boundary_outline` | 设施/边界边线 | 设施边线、边界轮廓。 | +| `facility_boundary_point` | 设施/边界符号点 | 设施相关点符号、辅助边界点符号。 | +| `hole_area` | 穴/凹地区域 | 穴地、凹地等面性补充表达。 | +| `place_label_land` | 陆上地名标注 | 陆上地名、岛屿名称、山体名称等。 | +| `place_label_sea` | 海上地名标注 | 海湾、海域、岛礁相关海上名称。 | +| `seabed_line` | 海底线 | 海底相关线性对象,通常是底质/海底辅助线。 | +| `seabed_text_point` | 底质标注点 | 底质文字,如泥、沙、砾、壳等底质缩写/名称。 | + +## 说明 + +### 1. 这里列的是逻辑语义层,不是旧样式 `layer id` + +例如: + +- `depth_contour` +- `navigation_marks` +- `land_area` + +这些是 Domain 标准 layer。 + +它们不同于旧样式里的 `layer id`,例如: + +- `#b#L等深線` +- `#b#d2#d5#d10#at#S3#S航路標識群` + +旧样式 `layer id` 只是制图层命名,不是 Domain 语义层命名。 + +### 2. 这里列的是当前 v1 域模型,不包含 `domain_pending` + +像下面这些仍属于待重建层: + +- `depth_zone_739` +- `depth_zone_741` +- `clip_outline_754` + +它们不在本清单的三层正式域里。 + +### 3. 某些 layer 仍带“容器”性质 + +例如: + +- `baseline_area` +- `facility_boundary_area` +- `bathymetry_line` + +这些当前已足够支持 `v1`,但后续可能继续细拆成更明确的业务语义层。 diff --git a/NavSea_Chart_Domain_Model_v1.md b/NavSea_Chart_Domain_Model_v1.md new file mode 100644 index 0000000..c472db6 --- /dev/null +++ b/NavSea_Chart_Domain_Model_v1.md @@ -0,0 +1,596 @@ +# NavSea Chart Domain Model v1 + +## 1. 目的 + +本文件定义 NavSea 在“去掉交付版 `pbf` 对旧日文 layer 体系依赖”之后,面向渲染、离线包、Tile Resolver 和业务消费的 **语义分层模型**。 + +这不是旧 `source-layer` 的简单改名,而是一次 **按语义重建 layer domain** 的设计。 + +目标: + +- 让交付版 `pbf` 的 layer 结构按航海语义组织 +- 为离线最小包 / 增强包 / 细节包提供稳定结构 +- 为 Tile Resolver 提供明确的优先级 +- 为后续“去旧字段依赖”“去日文化技术依赖”提供域模型基础 +- 为审计提供明确的验收口径 + +## 2. 核心结论 + +NavSea 不应只分成 `Safety / Detail` 两层,而应分成 **三层语义域**: + +1. `safety_core` +2. `safety_extended` +3. `detail` + +同时再保留一个过渡状态: + +4. `domain_pending` + +其中: + +- `safety_core` + - 生存核心层 + - 离线最小包必须包含 + - Tile Resolver 永远优先返回 +- `safety_extended` + - 增强安全层 + - 对航海有价值,但缺失不会立刻致命 + - 建议缓存,可离线降级 +- `detail` + - 细节层 + - 信息丰富,但不是安全底线 + - 可延迟加载,甚至可完全缺失 +- `domain_pending` + - 语义尚未完成重建的过渡层 + - 不能直接进入最终交付域模型 + +## 3. 设计原则 + +### 3.1 这是“语义分层”,不是“旧 layer 改英文名” + +域模型的判断依据应是: + +- 航海风险 +- 是否属于安全底线 +- 是否必须离线存在 +- 是否属于细节补充 + +不应只依据: + +- 旧 `source-layer` +- 旧编码号 +- 当前样式中是否好画 + +### 3.2 物体优先,图层其次 + +最终分层应该优先考虑对象语义,而不是历史制图层名。 + +例如: + +- `navigation_marks` + - 虽然来自点层,但本质是安全核心对象 +- `place_label_sea` + - 虽然在视觉上重要,但不属于安全底线 + +### 3.3 逻辑层三层,物理分发两包 + +推荐结构: + +- 逻辑域模型:三层 + - `safety_core` + - `safety_extended` + - `detail` +- 物理分发模型:两包 + - `safety` + - `detail` + +其中: + +- `safety = safety_core + safety_extended` +- `detail = detail` + +如果需要极简离线模式,可额外定义: + +- `base_pack = safety_core` + +### 3.4 安全层不得被细节层替代 + +这是一个硬约束: + +- 任意 `detail` feature 不得被视为 `safety_core` 的替代来源 + +即使某个 `detail` 对象在视觉上“看起来像”危险物、边界或航标,也不能因为它恰好被画出来,就把它当作安全底线的一部分。 + +原因: + +- `detail` 本来就是允许缺失的 +- 离线模式下,`detail` 可能根本不下载 +- 如果系统把 `detail` 当作 `safety_core` 的替代,会导致错误安全感 + +因此: + +- `safety_core` 必须由明确归入 `safety_core` 的对象独立构成 +- 不允许通过 `detail` 的“视觉相似性”补齐安全层 + +### 3.5 Resolver 以物理包为最小分发单位 + +`v1` 阶段必须明确限制客户端复杂度: + +- Tile Resolver 的最小分发单位是物理包 +- 不在客户端做 feature 级或 layer 级重组 + +也就是说,Resolver 优先返回: + +- `safety` 包 +- `detail` 包 + +而不是: + +- 从某个 tile 中抽几个 `safety_core` layer +- 再拼几个 `detail` layer +- 然后在客户端重新生成一块新 `pbf` + +原因: + +- 客户端复杂度会显著增加 +- 缓存模型会被打碎 +- 调试、审计、回放都会变复杂 +- 第一阶段很容易陷入过度工程 + +因此 `v1` 原则是: + +- 逻辑上按 domain 建模 +- 物理上按包分发 +- 客户端只做“选包”,不做“重组包” + +### 3.6 `land_area` 是陆海主判定层 + +为了支持快速、稳定地将陆地与海洋分开渲染,`v1` 明确规定: + +- `land_area` 是陆海二分的唯一主来源 +- `land_area` 内部视为陆地 +- `land_area` 外部默认视为海域/水域背景 + +同时明确: + +- `baseline_area` +- `baseline_line` +- `baseline_outline` +- `onshore_structure_*` +- 港岸结构、防波堤、码头边线 + +这些对象可以辅助表达岸线和港湾结构,但**不作为陆海主判定层**。 + +这条规则的目的,是让显示层和后续 Resolver / 切包逻辑都能用一条简单规则完成陆海分离,而不需要在多个 layer 之间做启发式拼接判断。 + +## 4. 域定义 + +### 4.1 `safety_core` + +定义: + +- 没有它就不该航行 +- 离线底线包必须存在 +- 缺失会直接影响最低安全判断 + +典型特征: + +- 航行危险 +- 航标 +- 水深核心 +- 危险地形 +- 地形基础参考 + +### 4.2 `safety_extended` + +定义: + +- 对航行明显重要 +- 但缺失不会立刻让系统失去最低安全能力 + +典型特征: + +- 锚地 +- 净空/限制 +- 重要结构物 +- 基本边界参考 + +### 4.3 `detail` + +定义: + +- 丰富表达、增强理解、提升体验 +- 但不影响最低安全底线 + +典型特征: + +- 地名 +- 底质 +- 次级边界 +- 支撑线 +- 展示性文字 + +### 4.4 `domain_pending` + +定义: + +- 当前尚未完成语义重建 +- 仍然带旧编码痕迹 +- 只能作为过渡层,不得直接当最终域模型交付 + +典型特征: + +- 编码型 layer +- 仅具“稳定占位名”,不具业务语义 + +## 5. 第一轮域归类 + +以下归类是当前讨论后的 `v1` 基线。 + +### 5.1 `safety_core` + +- `navigation_hazard_area` +- `navigation_hazard_outline` +- `navigation_hazard_point` +- `depth_contour` +- `depth_contour_overview` +- `navigation_marks` +- `fixed_fishing_gear_area` +- `land_area` +- `submerged_reef_area` + +### 5.2 `safety_extended` + +- `anchor_caution_hazard_area` +- `anchor_caution_hazard_outline` +- `anchor_caution_hazard_point` +- `anchorage_area` +- `anchorage_outline` +- `anchorage_point` +- `clearance_limit_line` +- `clearance_limit_point` +- `bridge_structure` +- `onshore_structure_area` +- `onshore_structure_line` +- `onshore_structure_point` +- `baseline_area` +- `baseline_line` +- `baseline_outline` +- `route_area` +- `route_outline` +- `route_axis_line` +- `route_boundary_point` +- `leading_line_outline` +- `pilot_station_point` + +### 5.3 `detail` + +- `place_label_sea` +- `place_label_land` +- `seabed_text_point` +- `facility_boundary_area` +- `facility_boundary_outline` +- `facility_boundary_point` +- `hole_area` +- `bathymetry_line` +- `seabed_line` + +### 5.4 `domain_pending` + +这几类当前不得直接进入最终 Chart Domain: + +- `depth_zone_739` +- `depth_zone_741` +- `clip_outline_754` + +原因: + +- 仍然依赖旧编码 +- 语义不够明确 +- Resolver 和离线模型无法稳定消费 + +## 6. 对当前层命名的解释 + +本模型中的 layer 名,指的是 **建议标准语义层名**,不是当前交付版实际使用的旧日文 `source-layer`。 + +也就是说,像: + +- `P錨泊地等` +- `p航路標識群` +- `L等深線` + +应先标准化为: + +- `anchorage_area` +- `navigation_marks` +- `depth_contour` + +再进入 Chart Domain 分类。 + +## 7. 面向 Tile Resolver 的结构建议 + +未来 Tile Resolver 不应只拿“某个标准 layer 名”做决策,还应同时读取: + +- `chart_domain` +- `resolver_priority` +- `offline_pack` + +建议输出字段: + +- `chart_domain` + - `safety_core | safety_extended | detail | domain_pending` +- `resolver_priority` + - 整数,数值越小优先级越高 +- `offline_pack` + - `base | safety | detail | pending` +- `domain_status` + - `active | pending | deprecated` + +建议默认优先级: + +- `safety_core`: `10` +- `safety_extended`: `20` +- `detail`: `30` +- `domain_pending`: `99` + +## 8. 面向分包的结构建议 + +推荐的物理输出结构: + +```text +tiles/ + ├── safety/{z}/{x}/{y}.pbf + └── detail/{z}/{x}/{y}.pbf +``` + +其中: + +- `safety` + - 包含 `safety_core + safety_extended` +- `detail` + - 包含 `detail` + +如果后续确实需要更细粒度离线控制,可扩展为: + +```text +tiles/ + ├── safety-core/{z}/{x}/{y}.pbf + ├── safety-extended/{z}/{x}/{y}.pbf + └── detail/{z}/{x}/{y}.pbf +``` + +但当前 `v1` 建议先不要切太细,以免: + +- 分发复杂 +- 前端消费复杂 +- 缓存策略过碎 + +## 9. 审计设计 + +这部分是本文件最重要的配套要求:**域模型不是写出来就算完成,必须可以审计。** + +### 9.1 审计目标 + +要能回答: + +1. 每个标准 layer 是否被正确归入某个 Chart Domain +2. 是否有对象被错分到不合适的域 +3. 是否有 `domain_pending` 层被错误放入正式交付 +4. 按当前 style 渲染时,域变化是否破坏原始渲染 +5. 离线包拆分后,是否仍满足“安全底线” + +### 9.2 审计分层 + +建议分 4 层审计。 + +#### A. 规则审计 + +检查内容: + +- 每个标准 layer 是否有明确域归属 +- 每个域归属是否有规则来源 +- 是否存在重复归类或冲突归类 + +建议表结构: + +- `chart_domain_rules` +- `chart_domain_rule_trace` + +建议最小字段: + +- `domain_rule_id` +- `bundle_id` +- `layer_std` +- `chart_domain` +- `resolver_priority` +- `offline_pack` +- `rule_reason` + +#### B. 数据审计 + +检查内容: + +- 当前交付版/工程版 `pbf` 中,每个 feature 属于哪个标准 layer +- 是否存在 feature 无法映射到任何域 +- 是否存在 `domain_pending` layer 进入了正式输出 + +建议输出: + +- `feature_count by chart_domain` +- `feature_count by layer_std` +- `feature_count by domain_pending` + +关键断言: + +- 每个正式输出 feature 必须有 `chart_domain` +- `domain_pending` 不得进入最终交付版 + +#### C. Resolver 审计 + +检查内容: + +- `safety_core` 是否总是优先被 Resolver 选择 +- `detail` 是否不会覆盖 `safety_core` +- 离线模式下 Base Pack 是否真的包含全部 `safety_core` +- Resolver 是否始终按物理包返回,而不是按 layer/feature 临时拼装 + +关键断言: + +- `safety_core` 丢失即判定不通过 +- `detail` 缺失不影响 `base_pack` 合格 +- 不允许 `detail` 被当作 `safety_core` 的替代来源 +- 不允许客户端执行 feature 级或 layer 级重组后再返回 tile + +#### D. 渲染审计 + +检查内容: + +- 在 layer domain 切换后,原始样式与新样式是否仍然等价 +- 是否有 feature 因域拆分而不再被渲染 +- 是否有对象在新样式中出现“语义画反” + - 水下对象被画成陆地/露出 + - 水上对象被画成水下/危险物 + - render-support 层被错误强化成业务语义对象 + +##### D-1. Style 语义审计 + +这是渲染审计中的强制子项,目的不是只看“有没有画出来”,而是看: + +- 新版 style 是否忠于旧版 style 的表现语义 +- 是否把旧版的弱语义/辅助语义误画成强语义 +- 是否把航行关键语义画反 + +重点检查: + +- 陆海主判定是否与旧版一致 +- 水上 / 水下 / 露出 / 干出语义是否与旧版一致 +- 危险物、潜堤、暗礁、浅水区等是否被误画成普通背景 +- render-support 层是否仍保持旧版的支撑性表现 + - 例如 `P穴 -> hole_area` 必须忠于旧版透明/孔洞式表现,不得画成陆地区块 +- 文字与符号是否仍表达旧版相同含义 + - 有对象、无数字 + - 有线、无深度标注 + - 有主符号、无关键辅助注记 + +审计口径: + +- 旧版 style 是表现基准 +- 新版 style 是对旧版 style 的语义转译,不是重新设计 +- 只要旧版表现会影响航行判断,该表现就必须被视为“语义表现”,纳入审计 +- 交付前执行规范详见 [`NavSea_Delivery_Preflight_Audit_Spec.md`](/root/sourceserver/pbf/NavSea_Delivery_Preflight_Audit_Spec.md) + +关键断言: + +- 不允许把水域对象画成陆地感对象 +- 不允许把陆地/露出对象画成水下对象 +- 不允许把 render-support 层画成会误导航行判断的实体语义对象 +- 不允许因样式转译而丢失关键深度数字、净空数字、灯标说明、危险物标记 + +审计口径: + +- 原始 `pbf` + 原始 style +- 工程版/交付版 `pbf` + 对应 style +- 按 feature instance 级别比较 icon/text/line/fill + +关键断言: + +- 不允许因为域重组导致“原来有渲染、现在完全没渲染” +- 不允许 `safety_core` 对象被错误降到 `detail` + +## 10. 审计通过条件 + +本模型建议的最低通过条件如下: + +### 10.1 命名通过 + +- 所有正式输出 layer 必须使用标准层名 +- 不再直接暴露旧日文 layer 名 + +### 10.2 域归类通过 + +- 所有正式输出 layer 必须属于: + - `safety_core` + - `safety_extended` + - `detail` +- 不允许正式交付 layer 仍停留在 `domain_pending` + +### 10.3 渲染通过 + +- 原始版 vs 新版渲染审计通过 +- 不存在 feature 完全失去渲染观察 +- Style 语义审计通过 +- 不存在会影响航行判断的“语义画反” +- render-support 层未被误画为强业务语义对象 + +### 10.4 离线通过 + +- `base_pack` 能独立支撑 `safety_core` +- `safety_pack` 能完整支撑安全域 +- 缺失 `detail` 时,不得靠 `detail` 外观相似对象替代 `safety_core` +- Resolver 返回应保持物理包边界,不做客户端临时重组 + +## 11. 当前已知风险 + +### 11.1 编码层风险 + +当前最大的风险仍然是: + +- `depth_zone_739` +- `depth_zone_741` +- `clip_outline_754` + +如果这些层不先做语义拆解,后续: + +- Resolver 无法稳定使用 +- 离线打包会失真 +- Chart Domain 会夹杂“编码占位层” + +### 11.2 容器层风险 + +这几层当前仍偏“容器命名”: + +- `baseline_area` +- `facility_boundary_area` +- `bathymetry_line` + +它们虽然比旧日文层名好,但还不是最终最清晰的业务层名。 + +## 12. 建议的推进顺序 + +### Phase 1 + +- 完成 layer 标准命名 +- 不改现有运行系统 +- 只形成 Chart Domain 设计与审计要求 + +### Phase 2 + +- 建立 `chart_domain_rules` +- 为每个标准 layer 补: + - `chart_domain` + - `resolver_priority` + - `offline_pack` + +### Phase 3 + +- 输出新的语义域 layer 结构 +- 仍保留可逆追溯 +- 做渲染审计和 Resolver 审计 + +### Phase 4 + +- 正式切换交付版 +- 旧日文 layer 退出交付体系 + +## 13. 当前结论 + +NavSea 下一步不是继续停留在“旧 layer 改英文名”,而是要进入: + +- **按语义重建 layer domain** + +`v1` 的基础结论是: + +- 三层域模型是必要的 +- 需要额外保留 `domain_pending` +- 推荐逻辑三层、物理两包 +- 任何后续切换都必须配套审计 diff --git a/NavSea_Delivery_Layer_Naming_Review.md b/NavSea_Delivery_Layer_Naming_Review.md new file mode 100644 index 0000000..4a64c41 --- /dev/null +++ b/NavSea_Delivery_Layer_Naming_Review.md @@ -0,0 +1,163 @@ +# NavSea 交付版 Layer 命名评估表 + +## 目的 + +这份表专门回答一个问题: + +- 当前交付版 `pbf` 中实际使用的 layer 名,是否表达清晰? + +评估口径: + +- `当前交付 layer` + - 指当前交付版 `pbf` / `style` 实际在消费的 layer 名 +- `建议标准名` + - 指后续去掉对日文技术依赖时,建议暴露给交付体系的标准 layer 名 +- `中文语义` + - 便于人工确认命名是否准确 +- `是否足够清晰` + - 站在“交付给下游或团队协作”角度评估 +- `是否建议重命名` + - 指是否建议最终交付版不再直接暴露当前 layer 名 + +## 总结判断 + +当前交付版 layer 名整体上 **不够清晰**,原因主要有三类: + +- 仍保留大量日文 layer 名 +- 仍保留 `P/L/p` 与 `ククリ` 这种旧体系术语 +- 仍保留 `L739`、`P754ククリ` 这类编码型 layer 名 + +从表达清晰度看,可以分成两组: + +- 已经比较清晰,只是还没真正切换到交付层: + - `anchorage_area` + - `navigation_marks` + - `depth_contour` + - `place_label_sea` + - `land_area` +- 仍然不够清晰,建议继续细化: + - `depth_zone_739` + - `depth_zone_741` + - `clip_outline_754` + - `baseline_area` + - `facility_boundary_area` + +## 正式评估表 + +| 当前交付 layer | 建议标准名 | 中文语义 | 是否足够清晰 | 是否建议重命名 | +| --- | --- | --- | --- | --- | +| `P基本線` | `baseline_area` | 基本线相关面/容器层 | 否 | 是 | +| `P投錨注意障害物` | `anchor_caution_hazard_area` | 抛锚注意障害物面 | 否 | 是 | +| `P航行危険障害物` | `navigation_hazard_area` | 航行危险障害物面 | 否 | 是 | +| `P漁具定置箇所` | `fixed_fishing_gear_area` | 定置渔具区域 | 否 | 是 | +| `P錨泊地等` | `anchorage_area` | 锚地/锚泊地区域 | 否 | 是 | +| `P施設・境界線等` | `facility_boundary_area` | 设施/边界相关区域 | 否 | 是 | +| `P潜堤` | `submerged_reef_area` | 潜堤/潜礁区域 | 否 | 是 | +| `P橋りょう等構造物` | `bridge_structure` | 桥梁等结构物面 | 否 | 是 | +| `P陸上構造物陸` | `onshore_structure_area` | 陆上结构物面 | 否 | 是 | +| `P陸域` | `land_area` | 陆地区域 | 否 | 是 | +| `P穴` | `hole_area` | 穴/凹地面 | 否 | 是 | +| `L海底地形` | `bathymetry_line` | 海底地形支撑线 | 否 | 是 | +| `L等深線` | `depth_contour` | 等深线 | 否 | 是 | +| `L概略等深線` | `depth_contour_overview` | 概略等深线 | 否 | 是 | +| `L海底線` | `seabed_line` | 海底线 | 否 | 是 | +| `L基本線` | `baseline_line` | 基本线线层 | 否 | 是 | +| `L陸上構造物陸` | `onshore_structure_line` | 陆上结构物线层 | 否 | 是 | +| `L739` | `depth_zone_739` | 深度分带编码层 739 | 否 | 是 | +| `L741` | `depth_zone_741` | 深度分带编码层 741 | 否 | 是 | +| `L高さ制限` | `clearance_limit_line` | 高度/净空限制线 | 否 | 是 | +| `P基本線ククリ` | `baseline_outline` | 基本线边界 | 否 | 是 | +| `P危険界ククリ` | `hazard_boundary_outline` | 危险界边界 | 否 | 是 | +| `P航行危険障害物ククリ` | `navigation_hazard_outline` | 航行危险障害物边界 | 否 | 是 | +| `P投錨注意障害物ククリ` | `anchor_caution_hazard_outline` | 抛锚注意障害物边界 | 否 | 是 | +| `P錨泊地等ククリ` | `anchorage_outline` | 锚地边界 | 否 | 是 | +| `P施設・境界線等ククリ` | `facility_boundary_outline` | 设施/边界边线 | 否 | 是 | +| `P754ククリ` | `clip_outline_754` | 编码型边界层 754 | 否 | 是 | +| `p航行危険障害物` | `navigation_hazard_point` | 航行危险障害物点 | 否 | 是 | +| `p錨泊地等` | `anchorage_point` | 锚地符号点 | 否 | 是 | +| `p投錨注意障害物` | `anchor_caution_hazard_point` | 抛锚注意障害物点 | 否 | 是 | +| `p航路標識群` | `navigation_marks` | 航标/灯标/浮标点 | 否 | 是 | +| `p施設・境界線等` | `facility_boundary_point` | 设施/边界符号点 | 否 | 是 | +| `p陸上構造物` | `onshore_structure_point` | 陆上结构物点 | 否 | 是 | +| `p底質` | `seabed_text_point` | 底质标注点 | 否 | 是 | +| `p高さ制限` | `clearance_limit_point` | 高度限制点标注 | 否 | 是 | +| `p地名` | `place_label_sea` | 海上地名标注 | 否 | 是 | +| `p地名陸` | `place_label_land` | 陆上地名标注 | 否 | 是 | + +## 重点建议 + +### 1. 可以直接进入最终交付标准层名的对象 + +这些建议标准名已经比较清楚,可以直接作为最终交付版 layer 名候选: + +- `anchorage_area` +- `anchorage_outline` +- `anchorage_point` +- `navigation_marks` +- `navigation_hazard_point` +- `navigation_hazard_outline` +- `depth_contour` +- `depth_contour_overview` +- `place_label_sea` +- `place_label_land` +- `land_area` +- `bridge_structure` +- `onshore_structure_area` +- `onshore_structure_line` +- `onshore_structure_point` +- `clearance_limit_line` +- `clearance_limit_point` + +### 2. 还不够理想,需要二次命名设计的对象 + +这些虽然已经有了英文标准名,但表达仍然偏“技术命名”或“容器命名”,建议二次优化: + +- `baseline_area` + - 问题:像容器层,不像业务对象 +- `facility_boundary_area` + - 问题:语义过宽,设施和边界混在一起 +- `bathymetry_line` + - 问题:更像支撑线,不够区分其具体作用 +- `seabed_text_point` + - 问题:表达的是文字载体,不是业务对象 +- `submerged_reef_area` + - 问题:要确认是否会和鱼礁/暗礁语义混淆 + +### 3. 明显不适合作为最终交付层名的对象 + +这些标准名本质上仍然只是“稳定占位名”,不适合长期直接暴露给下游: + +- `depth_zone_739` +- `depth_zone_741` +- `clip_outline_754` + +它们的问题是: + +- 仍然带旧编码 +- 只能表达“来源编号”,不能表达“业务含义” + +建议最终方向: + +- 先查清这些编码型层到底承载什么对象语义 +- 再改成真正的业务名 + +## 建议的推进顺序 + +如果下一步要真正去掉交付版对日文 layer 名的依赖,建议按这个顺序做: + +1. 先把“已经足够清晰”的标准名直接切到交付版 +2. 对 `baseline_*`、`facility_boundary_*`、`bathymetry_*` 这类做二次命名收敛 +3. 最后处理 `depth_zone_*`、`clip_outline_*` 这类编码型层 + +## 当前结论 + +当前交付版 layer 名: + +- 对历史系统兼容是有效的 +- 对团队理解和长期交付不够清晰 + +当前已经存在的标准层名体系: + +- 足以作为去日文化的第一版基础 +- 但还需要再做一轮“语义清晰化” + diff --git a/NavSea_Delivery_Preflight_Audit_Spec.md b/NavSea_Delivery_Preflight_Audit_Spec.md new file mode 100644 index 0000000..ca2ae8c --- /dev/null +++ b/NavSea_Delivery_Preflight_Audit_Spec.md @@ -0,0 +1,480 @@ +# NavSea 交付前审计规范 + +## 1. 目标 + +本规范用于约束 NavSea 在正式交付前的审计方式,确保: + +- 交付版 `pbf` 不依赖工程期映射字段即可完成渲染与点击说明 +- 交付版 style 忠于旧版 style 的表现语义,而不是重新设计 +- 不只是“对象还在”,还要确认“对象被正确解释并正确表现” +- 不会因为语义转译、样式改写或字段裁剪而引入航行风险 + +本规范既适用于当前 `delivery pbf`,也适用于后续拆分出的: + +- 航海版 +- 钓鱼版 + +## 2. 核心原则 + +### 2.1 旧版表现是基准 + +- 对航行安全相关对象,旧版 `pbf + style.json` 是表现基准 +- 新版 style 的职责是把旧版表现语义转译到新字段体系,不是重新设计 +- 只有经过明确登记和批准的差异,才允许故意偏离旧版表现 + +### 2.2 审计重点是“解释与表现” + +- 不能只审“对象有没有” +- 必须审“对象命中了哪些渲染层” +- 必须审“命中的渲染层是否保持了旧版相同的语义” +- 必须审“最终画面是否仍会让用户做出相同的安全判断” + +### 2.3 安全对象从严,普通对象从宽 + +- 灯火、浮标、危险物、暗礁、潜堤、洗岩、露岩、浅水区、陆海边界、净空限制等属于硬门禁对象 +- 地名、底质、一般说明文字等允许有限偏差,但不得影响安全判断 + +### 2.4 render-support 不得被强化成业务语义 + +- `P穴 -> hole_area` 这类支撑层必须忠于旧版支撑性表现 +- 不允许把辅助层画成会误导用户的实体语义对象 +- 不允许把透明/挖空/弱表现对象画成陆地色、危险礁色或其他强语义实体色 + +## 3. 适用范围 + +本规范覆盖以下交付物: + +- `pbf` +- `style json` +- 对比页面与公开部署版本 +- 自动审计脚本生成的 Markdown / JSON 报告 + +本规范不替代工程期数据库审计。旧新字段映射、trace 和回查仍由数据库承担。 + +## 4. 术语 + +### 4.1 旧版基准 + +- 原始 `pbf` +- 原始 `style.json` + +### 4.2 候选交付版 + +- 待交付 `pbf` +- 待交付 style + +### 4.3 物体 + +- 同一个原始海图对象 +- 审计时优先按 legacy `fid` 对齐 +- 无 `fid` 时,回退到 `geometry + 稳定旧属性` + +### 4.4 feature instance + +- 同一物体在不同 tile / zoom 下的具体实例 +- 渲染审计保留 tile 实例粒度,因为渲染具有 zoom 敏感性 + +### 4.5 render hit + +- 某个 feature instance 在某个 style layer 上实际命中的一次渲染观察 +- 观察类型分为: + - `fill` + - `line` + - `icon` + - `text` + +### 4.6 有效 render hit + +- 不只是“命中了某层” +- 还要求该命中对最终画面有实际贡献 +- 透明填充、零宽线、不可见 icon、空文本等不得被算作有效命中 + +### 4.7 场景窗口 + +- 固定中心点、固定缩放级、固定 viewport 的对比视窗 +- 用于检查对象间叠压、标签碰撞、底色覆盖、整体安全感知 + +## 5. 用途分轨 + +### 5.1 航海版 + +目标: + +- 保障航行安全 +- 支撑通航判断、风险识别、航线设计和安全计算 + +特点: + +- 用户视角大面积、粗线条 +- 危险物和航标优先级最高 +- 表现必须忠于旧版海图安全语义 + +### 5.2 钓鱼版 + +目标: + +- 保障安全 +- 强调地形、深度、底质和海里有什么 + +特点: + +- 用户视角小面积、高细节 +- 地形和深度优先级高于多数航海辅助对象 +- 对安全对象仍从严,对非安全对象允许有选择地弱化 + +### 5.3 两版共用红线 + +- 安全对象不得缺失 +- 不得出现“水上 / 水下 / 露出 / 干出”语义画反 +- 不得把 render-support 层强化为危险误导源 +- 不得缺失会影响判断的深度数字、净空数字、灯标关键信息 + +## 6. 审计分层 + +交付前审计必须按以下顺序执行。 + +### 6.1 第一层:Style 有效性门禁 + +检查内容: + +- style JSON 语法合法 +- MapLibre / Mapbox Style 规范校验通过 +- source、sprite、glyph、tile URL 可达 +- 公开部署页实际加载的是候选交付版 style,不是旧缓存或其他旧版本 + +不通过示例: + +- `paint.fill-color` 表达式参数个数错误 +- `match` 分支标签类型错误 +- 公开页面仍引用旧 style 或旧 tile + +### 6.2 第二层:对象存在性门禁 + +检查内容: + +- 审计对象总量是否与旧版同量级 +- 安全关键对象是否仍能在候选交付版中被对齐到 +- 不允许因字段清理、layer 重命名、id 变更导致对象失联 + +允许差异: + +- 工程追溯字段移除 +- layer 名由旧日文名变为新语义名 + +不允许差异: + +- 安全关键对象在交付版完全找不到 +- 只能在数据库中回查到,但运行时对象不存在 + +### 6.3 第三层:物体级 render-hit 审计 + +这是主审计层。 + +对每个 feature instance,分别执行: + +- 旧版 `pbf + 旧版 style` +- 候选交付版 `pbf + 候选交付版 style` + +并记录: + +- `hit_count_old` +- `hit_count_new` +- `hit_types_old` +- `hit_types_new` +- 每个 hit 的 payload + - 颜色 + - 图标名 + - 线宽 + - dash + - 文本值 + - anchor + - pattern + - opacity + +比较规则: + +- 先比有效 hit 数 +- 再比 hit 类型集合 +- 最后比 hit payload + +特别说明: + +- 不能只比 hit 数量 +- 命中数量一致但 icon / color / line width 语义不同,仍算不通过 +- 透明 fill、零宽线、空文本等无效 hit 不得充数 + +### 6.4 第四层:Style 语义审计 + +这是物体级审计的强制子项。 + +必须回答: + +- 陆海主判定是否与旧版一致 +- 水上 / 水下 / 露出 / 干出语义是否与旧版一致 +- 危险物、潜堤、暗礁、浅水区等是否被误画成普通背景 +- render-support 层是否被错误强化为实体业务语义对象 +- 点击能命中但地图上没显示关键数字/文字的情况是否存在 + +当前重点专项至少包括: + +- `depth_numeric_missing` +- `clearance_numeric_missing` +- `safety_icon_missing` +- `support_layer_strengthened_fill` + +### 6.5 第五层:场景窗口审计 + +render-hit 审计不能完全覆盖标签碰撞、遮挡、底色覆盖、叠压顺序等上下文问题,因此必须有场景窗口审计兜底。 + +每个候选交付版至少要有固定样区集,覆盖: + +- 港口进出口 +- 近岸浅水带 +- 灯火和浮标密集区 +- 暗礁 / 潜堤 / 危险障碍物密集区 +- 等深线和深度数字复杂区 +- 适合钓鱼的复杂海底地形区 + +每个样区必须固定: + +- 中心经纬度 +- 缩放级 +- viewport 尺寸 +- 左右对比截图 +- 样区关注对象 + +场景窗口审计用于回答: + +- 危险是否一眼可见 +- 关键数字是否在可读位置出现 +- 颜色和底色是否传达了正确语义 +- 新旧整体判断是否一致 + +### 6.6 第六层:风险分级门禁 + +所有差异都必须分级。 + +建议最低分为: + +- `P0`: 会直接影响航行安全或错误通航判断 +- `P1`: 会明显误导用户对危险或限制的识别 +- `P2`: 有视觉差异,但不改变主要判断 +- `P3`: 样式细节偏差或非关键缺失 + +`P0` 示例: + +- 水下物画成陆地或露出 +- 露出物画成水下 +- 灯火、浮标、危险物主图标缺失 +- 关键深度数字、净空数字缺失 +- 陆海边界明显误画 + +通过条件: + +- `P0` 必须为 0 +- `P1` 必须在批准阈值以下并有整改计划 +- `P2/P3` 允许暂存,但必须进入差异清单 + +### 6.7 第七层:公开部署一致性审计 + +必须确认: + +- 本地 style 与公开 style 内容一致 +- 本地 tile 与公开 tile 内容一致 +- 对比页和单页加载的是候选交付版,而不是缓存或旧版本 + +公开页一旦与本地待交付版本不一致,交付前审计视为未完成。 + +## 7. 航海版与钓鱼版的通过标准 + +### 7.1 航海版硬门禁 + +以下对象不得缺失或画反: + +- 灯台、灯標、灯浮標、灯立標、航路標識 +- 危险障碍物、暗礁、洗岩、露岩、潜堤、沉船 +- 陆地、岸线、浅水区、干潮帯、可通航边界 +- 净空限制、高度限制、航路边界、锚地相关限制 +- 水深数字、关键等深线、关键危险辅助注记 + +额外要求: + +- 颜色、图标、线型必须忠于旧版安全语义 +- 不允许为了“画面更好看”而改变危险对象的识别方式 + +### 7.2 钓鱼版硬门禁 + +以下对象必须优先正确: + +- 水深数字 +- 等深线 +- 海底线与海底地形 +- 底质 +- 鱼礁、障碍物、沉船、潜堤、暗礁 +- 近岸结构和小范围危险物 + +钓鱼版允许: + +- 弱化部分纯航海辅助对象 +- 用更强调地形的方式表现非安全信息 + +但仍不允许: + +- 安全对象画反 +- 缺失会导致挂底、碰撞、搁浅误判的对象 + +## 8. 漏洞与补洞办法 + +单纯“比每个物体 hit 了多少层”仍然有漏洞。本规范明确要求同时补上以下检查。 + +### 8.1 count 不等于等价 + +漏洞: + +- 新旧都 hit 了 2 层,但其中一层图标或颜色语义不同 + +补洞: + +- 必须比 `type + payload`,不能只比 count + +### 8.2 命中不等于可见 + +漏洞: + +- 透明 fill、零宽线、空文本也可能被算作命中 + +补洞: + +- 审计统计必须区分“命中”与“有效命中” + +### 8.3 单对象通过不等于整体安全 + +漏洞: + +- 对象单独没问题,但放进场景后被遮挡、碰撞或底色误导 + +补洞: + +- 固定样区做场景窗口审计 + +### 8.4 旧新版不一定层数一一对应 + +漏洞: + +- 旧版 `1 icon`,新版可能拆成 `arc + symbol` +- 或旧版 `fill + pattern`,新版用等价组合表达 + +补洞: + +- 审计允许“等价表达”,但必须登记等价规则 +- 等价规则未经登记,不得自行解释为通过 + +### 8.5 航海版和钓鱼版不能用同一把尺子 + +漏洞: + +- 同一条差异,对航海版是 `P0`,对钓鱼版可能是 `P2` + +补洞: + +- 风险分级和通过阈值必须分轨维护 + +## 9. 审计输出要求 + +每次交付前至少输出以下内容: + +- 一份 Markdown 审计报告 +- 一份 JSON 审计明细 +- 一份样区截图包 +- 一份差异清单 +- 一份例外清单 + +Markdown 报告至少包含: + +- 审计范围 +- 匹配口径 +- 总体结果统计 +- 主要问题层 +- 标注专项问题 +- Style 语义专项问题 +- `P0/P1/P2/P3` 分布 +- 场景窗口结论 +- 是否通过 + +JSON 明细至少包含: + +- 物体标识 +- tile 实例信息 +- 旧版命中 +- 新版命中 +- 差异类型 +- 风险等级 +- 是否属于航海版硬门禁对象 +- 是否属于钓鱼版硬门禁对象 + +## 10. 通过与不通过判定 + +交付版只有在同时满足以下条件时,才允许进入正式交付: + +- Style 有效性门禁通过 +- 对象存在性门禁通过 +- 物体级 render-hit 主审计通过 +- Style 语义审计通过 +- 场景窗口审计通过 +- `P0 = 0` +- 公开部署一致性审计通过 + +下列任一情况直接判定不通过: + +- 安全对象完全失去渲染 +- 安全对象出现语义画反 +- render-support 层被画成强实体语义对象 +- 关键深度数字、净空数字、灯标主注记缺失 +- 公开部署版本与本地待交付版本不一致 + +## 11. 例外管理 + +若确有必要故意偏离旧版表现,必须登记: + +- 对象类型 +- 影响范围 +- 偏离原因 +- 新旧差异说明 +- 风险等级 +- 批准人 +- 回滚方式 + +未登记例外一律按缺陷处理。 + +## 12. 当前脚本实现边界 + +当前 [`navsea_render_audit.py`](/root/sourceserver/pbf/navsea_render_audit.py) 已经覆盖: + +- 物体级 render observation 对比 +- 标注缺失专项 +- Style 语义专项 +- 按 tile instance 粒度输出 Markdown / JSON 报告 + +当前仍未完全自动化的部分: + +- 场景窗口审计 +- 部署一致性自动校验 +- 航海版 / 钓鱼版双阈值硬门禁 +- 已登记等价表达规则的自动判定 + +因此,在这些能力补齐前: + +- 自动审计报告只能视为主证据 +- 固定样区人工复核仍是强制步骤 + +## 13. 规范与现有文档关系 + +本规范是交付前的执行规范。 + +相关上位和配套文档: + +- [`NavSea_Chart_Domain_Model_v1.md`](/root/sourceserver/pbf/NavSea_Chart_Domain_Model_v1.md) +- [`NavSea_Legacy_Field_Exit_Roadmap.md`](/root/sourceserver/pbf/NavSea_Legacy_Field_Exit_Roadmap.md) +- [`NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm.md`](/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm.md) + +后续如航海版与钓鱼版正式拆分,应在本规范下再各自补一份专项验收细则。 diff --git a/NavSea_Legacy_Field_Exit_Roadmap.md b/NavSea_Legacy_Field_Exit_Roadmap.md index 230b89e..129375c 100644 --- a/NavSea_Legacy_Field_Exit_Roadmap.md +++ b/NavSea_Legacy_Field_Exit_Roadmap.md @@ -263,6 +263,22 @@ - 对比旧样式与新样式的主要对象覆盖 - 对比使用版旧字段驱动与新字段驱动的渲染结果 +- 对比旧样式与新样式的语义表现是否一致 + - 不是只看“画没画出来” + - 还要看“有没有画反” + +Style 语义审计必须回答: + +- 水上 / 水下 / 露出 / 干出 是否仍与旧样式一致 +- render-support 层是否被错误强化为业务语义对象 +- 深度数字、净空数字、灯标说明、危险物标记是否仍正确出现 +- 是否存在“点击能命中,但地图上没显示关键数字/文字”的情况 +- 交付前审计执行方式以 [`NavSea_Delivery_Preflight_Audit_Spec.md`](/root/sourceserver/pbf/NavSea_Delivery_Preflight_Audit_Spec.md) 为准 + +特别红线: + +- `P穴 -> hole_area` 这类辅助层,必须忠于旧样式的支撑性表现 +- 不允许因为新语义转译,把它画成陆地色、危险礁色或其他会误导航行判断的强语义表现 验收: @@ -274,6 +290,10 @@ - 水深数字 - 锚地/航路/鱼业区 - 地名 +- 航行关键语义不得出现“画反”: + - 水下画成水上 + - 水上画成水下 + - 支撑层画成实体语义层 ## 阶段 D:旧字段降级为兼容字段 @@ -308,6 +328,8 @@ - 碰撞或检测链路不再直接读取它 - 工程版仍能回查原值 - 审计报告确认关键对象渲染未明显退化 +- Style 语义审计确认旧样式表现已被等价转译 +- 不存在因删旧字段导致的航行关键语义误绘 ## 7. 下一步最值得做的事 diff --git a/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.json b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.json new file mode 100644 index 0000000..91fa267 --- /dev/null +++ b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.json @@ -0,0 +1,3839 @@ +{ + "original_feature_instances": 134772, + "engineering_feature_instances": 134772, + "result_count": 138071, + "status_counts": { + "extra_in_engineering": 3299, + "exact_match": 118747, + "missing_in_engineering": 3304, + "mismatch": 12721 + }, + "source_layer_issue_counts": [ + { + "status": "mismatch", + "source_layer": "P基本線ククリ", + "count": 7694 + }, + { + "status": "mismatch", + "source_layer": "P基本線", + "count": 2804 + }, + { + "status": "extra_in_engineering", + "source_layer": "baseline_outline", + "count": 1381 + }, + { + "status": "missing_in_engineering", + "source_layer": "P基本線ククリ", + "count": 1381 + }, + { + "status": "extra_in_engineering", + "source_layer": "baseline_area", + "count": 710 + }, + { + "status": "missing_in_engineering", + "source_layer": "P基本線", + "count": 710 + }, + { + "status": "mismatch", + "source_layer": "L基本線", + "count": 610 + }, + { + "status": "extra_in_engineering", + "source_layer": "depth_contour", + "count": 481 + }, + { + "status": "missing_in_engineering", + "source_layer": "L等深線", + "count": 481 + }, + { + "status": "mismatch", + "source_layer": "p航路標識群", + "count": 460 + }, + { + "status": "mismatch", + "source_layer": "P漁具定置箇所", + "count": 448 + }, + { + "status": "extra_in_engineering", + "source_layer": "bathymetry_line", + "count": 310 + }, + { + "status": "missing_in_engineering", + "source_layer": "L海底地形", + "count": 310 + }, + { + "status": "mismatch", + "source_layer": "p航行危険障害物", + "count": 293 + }, + { + "status": "mismatch", + "source_layer": "p投錨注意障害物", + "count": 123 + }, + { + "status": "extra_in_engineering", + "source_layer": "hole_area", + "count": 111 + }, + { + "status": "missing_in_engineering", + "source_layer": "P穴", + "count": 111 + }, + { + "status": "mismatch", + "source_layer": "L海底線", + "count": 99 + }, + { + "status": "mismatch", + "source_layer": "P陸上構造物陸", + "count": 98 + }, + { + "status": "extra_in_engineering", + "source_layer": "land_area", + "count": 73 + }, + { + "status": "missing_in_engineering", + "source_layer": "P陸域", + "count": 73 + }, + { + "status": "extra_in_engineering", + "source_layer": "onshore_structure_line", + "count": 70 + }, + { + "status": "missing_in_engineering", + "source_layer": "L陸上構造物陸", + "count": 70 + }, + { + "status": "mismatch", + "source_layer": "P潜堤", + "count": 32 + }, + { + "status": "extra_in_engineering", + "source_layer": "seabed_text_point", + "count": 31 + }, + { + "status": "missing_in_engineering", + "source_layer": "p底質", + "count": 31 + }, + { + "status": "missing_in_engineering", + "source_layer": "p航路標識群", + "count": 20 + }, + { + "status": "extra_in_engineering", + "source_layer": "navigation_marks", + "count": 20 + }, + { + "status": "missing_in_engineering", + "source_layer": "p陸上構造物", + "count": 20 + }, + { + "status": "extra_in_engineering", + "source_layer": "hazard_boundary_outline", + "count": 17 + } + ], + "annotation_issue_counts": [ + { + "issue": "extra_text_in_engineering", + "source_layer": "bathymetry_line", + "count": 160 + }, + { + "issue": "text_missing_in_engineering", + "source_layer": "L海底地形", + "count": 160 + }, + { + "issue": "text_missing_in_engineering", + "source_layer": "L等深線", + "count": 93 + }, + { + "issue": "extra_text_in_engineering", + "source_layer": "depth_contour", + "count": 93 + }, + { + "issue": "extra_text_in_engineering", + "source_layer": "seabed_text_point", + "count": 31 + }, + { + "issue": "text_missing_in_engineering", + "source_layer": "p底質", + "count": 31 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p陸上構造物", + "count": 20 + }, + { + "issue": "text_missing_in_engineering", + "source_layer": "p航路標識群", + "count": 17 + }, + { + "issue": "extra_text_in_engineering", + "source_layer": "navigation_marks", + "count": 17 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "onshore_structure_point", + "count": 15 + }, + { + "issue": "text_missing_in_engineering", + "source_layer": "p地名", + "count": 14 + }, + { + "issue": "extra_text_in_engineering", + "source_layer": "place_label_sea", + "count": 14 + }, + { + "issue": "text_missing_in_engineering", + "source_layer": "p地名陸", + "count": 11 + }, + { + "issue": "extra_text_in_engineering", + "source_layer": "place_label_land", + "count": 11 + }, + { + "issue": "text_missing_in_engineering", + "source_layer": "L概略等深線", + "count": 4 + }, + { + "issue": "extra_text_in_engineering", + "source_layer": "depth_contour_overview", + "count": 4 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p航路標識群", + "count": 3 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "navigation_marks", + "count": 3 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p投錨注意障害物", + "count": 3 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "anchor_caution_hazard_point", + "count": 3 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p航行危険障害物", + "count": 3 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "navigation_hazard_point", + "count": 3 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p施設・境界線等", + "count": 2 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "facility_boundary_point", + "count": 2 + } + ], + "style_semantic_issue_counts": [ + { + "issue": "depth_numeric_missing", + "source_layer": "L海底地形", + "count": 160 + }, + { + "issue": "depth_numeric_missing", + "source_layer": "L等深線", + "count": 93 + }, + { + "issue": "safety_icon_missing", + "source_layer": "p航路標識群", + "count": 20 + }, + { + "issue": "depth_numeric_missing", + "source_layer": "L概略等深線", + "count": 4 + } + ], + "mismatch_examples": [ + { + "status": "extra_in_engineering", + "object_instance_id": "fid:1058140|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:1058140|geom:LineString", + "fid_legacy": "1058140", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:12118651|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:12118651|geom:LineString", + "fid_legacy": "12118651", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:1404840|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:1404840|geom:LineString", + "fid_legacy": "1404840", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:14670203|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:14670203|geom:LineString", + "fid_legacy": "14670203", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:16172728|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:16172728|geom:LineString", + "fid_legacy": "16172728", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:16240499|geom:Polygon|z:0|x:0|y:0", + "object_id": "fid:16240499|geom:Polygon", + "fid_legacy": "16240499", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_area", + "canonical_object_type": "3000-4000m", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(89,155,255,1)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "sea-area-fill", + "fill_color": "rgba(89,155,255,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:16700768|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:16700768|geom:LineString", + "fid_legacy": "16700768", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:17964522|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:17964522|geom:LineString", + "fid_legacy": "17964522", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:19018986|geom:Polygon|z:0|x:0|y:0", + "object_id": "fid:19018986|geom:Polygon", + "fid_legacy": "19018986", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_area", + "canonical_object_type": "20-100m", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(200,240,255,1)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "sea-area-fill", + "fill_color": "rgba(200,240,255,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:19548092|geom:Polygon|z:0|x:0|y:0", + "object_id": "fid:19548092|geom:Polygon", + "fid_legacy": "19548092", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_area", + "canonical_object_type": "2-5m", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(240,250,255,1)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "sea-area-fill", + "fill_color": "rgba(240,250,255,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:2042515|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:2042515|geom:LineString", + "fid_legacy": "2042515", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:20474664|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:20474664|geom:LineString", + "fid_legacy": "20474664", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:2048201|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:2048201|geom:LineString", + "fid_legacy": "2048201", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:21243625|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:21243625|geom:LineString", + "fid_legacy": "21243625", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:22474444|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:22474444|geom:LineString", + "fid_legacy": "22474444", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:22830504|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:22830504|geom:LineString", + "fid_legacy": "22830504", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:23577447|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:23577447|geom:LineString", + "fid_legacy": "23577447", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:25266268|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:25266268|geom:LineString", + "fid_legacy": "25266268", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:26628848|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:26628848|geom:LineString", + "fid_legacy": "26628848", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:27264093|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:27264093|geom:LineString", + "fid_legacy": "27264093", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:28191177|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:28191177|geom:LineString", + "fid_legacy": "28191177", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:29816935|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:29816935|geom:LineString", + "fid_legacy": "29816935", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:29859845|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:29859845|geom:LineString", + "fid_legacy": "29859845", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:31252609|geom:Polygon|z:0|x:0|y:0", + "object_id": "fid:31252609|geom:Polygon", + "fid_legacy": "31252609", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "hole_area", + "canonical_object_type": "P穴", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "land-hole", + "fill_color": "rgba(0,0,0,0)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:32205896|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:32205896|geom:LineString", + "fid_legacy": "32205896", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:32854165|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:32854165|geom:LineString", + "fid_legacy": "32854165", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:33449722|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:33449722|geom:LineString", + "fid_legacy": "33449722", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:34018314|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:34018314|geom:LineString", + "fid_legacy": "34018314", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:36874832|geom:Polygon|z:0|x:0|y:0", + "object_id": "fid:36874832|geom:Polygon", + "fid_legacy": "36874832", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_area", + "canonical_object_type": "5-10m", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(230,250,255,1)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "sea-area-fill", + "fill_color": "rgba(230,250,255,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:38272331|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:38272331|geom:LineString", + "fid_legacy": "38272331", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + } + ], + "annotation_issue_examples": [ + { + "status": "missing_in_engineering", + "object_instance_id": "fid:16040759|geom:Point|z:10|x:881|y:410", + "object_id": "fid:16040759|geom:Point", + "fid_legacy": "16040759", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p地名陸", + "canonical_object_type": null, + "original_components": { + "text": [ + "text:{\"text_anchor\":\"bottom\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"玄海町\"}", + "text:{\"text_anchor\":\"top\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Genkai\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "text": [ + { + "layer_id": "#b#d2#d5#d10#land#C800#EN", + "text_value": "Genkai", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "top", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#land#C800#JA", + "text_value": "玄海町", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "bottom", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:21272367|geom:Point|z:10|x:881|y:410", + "object_id": "fid:21272367|geom:Point", + "fid_legacy": "21272367", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "place_label_land", + "canonical_object_type": "p地名陸", + "original_components": {}, + "engineering_components": { + "text": [ + "text:{\"text_anchor\":\"bottom\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"玄海町\"}", + "text:{\"text_anchor\":\"top\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Genkai\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "text": [ + { + "layer_id": "place-labels-land-en", + "text_value": "Genkai", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "top", + "text_size": 10 + }, + { + "layer_id": "place-labels-land-ja", + "text_value": "玄海町", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "bottom", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12008012|geom:Point|z:10|x:882|y:410", + "object_id": "fid:12008012|geom:Point", + "fid_legacy": "12008012", + "tile": "10/882/410", + "tile_z": 10, + "tile_x": 882, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 11m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"博多港端島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 11m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "博多港端島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:65286791|geom:Point|z:10|x:882|y:410", + "object_id": "fid:65286791|geom:Point", + "fid_legacy": "65286791", + "tile": "10/882/410", + "tile_z": 10, + "tile_x": 882, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 11m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"博多港端島灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 3s 11m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "博多港端島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:10445884|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:10445884|geom:LineString", + "fid_legacy": "10445884", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "bathymetry_line", + "canonical_object_type": "L海底地形", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"11\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "bathymetry-support", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "bathymetry-depth-labels", + "text_value": "11", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:11740214|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:11740214|geom:LineString", + "fid_legacy": "11740214", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "bathymetry_line", + "canonical_object_type": "L海底地形", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"41\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "bathymetry-support", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "bathymetry-depth-labels", + "text_value": "41", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:15015009|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:15015009|geom:LineString", + "fid_legacy": "15015009", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "bathymetry_line", + "canonical_object_type": "L海底地形", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"44\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "bathymetry-support", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "bathymetry-depth-labels", + "text_value": "44", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:16472950|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:16472950|geom:LineString", + "fid_legacy": "16472950", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "bathymetry_line", + "canonical_object_type": "L海底地形", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"19\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "bathymetry-support", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "bathymetry-depth-labels", + "text_value": "19", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19170204|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19170204|geom:LineString", + "fid_legacy": "19170204", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"4\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "4", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19181431|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19181431|geom:LineString", + "fid_legacy": "19181431", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(106,210,126,1)\",\"line_width\":1}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"10\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(106,210,126,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "10", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19183407|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19183407|geom:LineString", + "fid_legacy": "19183407", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"11\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "11", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19186614|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19186614|geom:LineString", + "fid_legacy": "19186614", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"13\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "13", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19195430|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19195430|geom:LineString", + "fid_legacy": "19195430", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"19\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "19", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19198220|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19198220|geom:LineString", + "fid_legacy": "19198220", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"21\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "21", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19203962|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19203962|geom:LineString", + "fid_legacy": "19203962", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"25\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "25", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19209350|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19209350|geom:LineString", + "fid_legacy": "19209350", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"29\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "29", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19213087|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19213087|geom:LineString", + "fid_legacy": "19213087", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"32\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "32", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19213120|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19213120|geom:LineString", + "fid_legacy": "19213120", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"32\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "32", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19214419|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19214419|geom:LineString", + "fid_legacy": "19214419", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"33\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "33", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19214421|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19214421|geom:LineString", + "fid_legacy": "19214421", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"33\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "33", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19215796|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19215796|geom:LineString", + "fid_legacy": "19215796", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"34\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "34", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19216767|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19216767|geom:LineString", + "fid_legacy": "19216767", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"35\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "35", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19221945|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19221945|geom:LineString", + "fid_legacy": "19221945", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"39\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "39", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19223776|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19223776|geom:LineString", + "fid_legacy": "19223776", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"41\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "41", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19223786|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19223786|geom:LineString", + "fid_legacy": "19223786", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"41\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "41", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19224936|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19224936|geom:LineString", + "fid_legacy": "19224936", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"42\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "42", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19226052|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19226052|geom:LineString", + "fid_legacy": "19226052", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"43\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "43", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19227202|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19227202|geom:LineString", + "fid_legacy": "19227202", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"44\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "44", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19227398|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19227398|geom:LineString", + "fid_legacy": "19227398", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"44\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "44", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19228072|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19228072|geom:LineString", + "fid_legacy": "19228072", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(122,206,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"45\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(122,206,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "45", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + } + ], + "style_semantic_issue_examples": [ + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12008012|geom:Point|z:10|x:882|y:410", + "object_id": "fid:12008012|geom:Point", + "fid_legacy": "12008012", + "tile": "10/882/410", + "tile_z": 10, + "tile_x": 882, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 11m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"博多港端島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 11m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "博多港端島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19170204|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19170204|geom:LineString", + "fid_legacy": "19170204", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"4\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "4", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19181431|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19181431|geom:LineString", + "fid_legacy": "19181431", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(106,210,126,1)\",\"line_width\":1}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"10\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(106,210,126,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "10", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19183407|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19183407|geom:LineString", + "fid_legacy": "19183407", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"11\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "11", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19186614|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19186614|geom:LineString", + "fid_legacy": "19186614", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"13\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "13", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19195430|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19195430|geom:LineString", + "fid_legacy": "19195430", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"19\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "19", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19198220|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19198220|geom:LineString", + "fid_legacy": "19198220", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"21\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "21", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19203962|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19203962|geom:LineString", + "fid_legacy": "19203962", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"25\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "25", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19209350|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19209350|geom:LineString", + "fid_legacy": "19209350", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(126,230,146,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"29\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(126,230,146,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "29", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19213087|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19213087|geom:LineString", + "fid_legacy": "19213087", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"32\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "32", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19213120|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19213120|geom:LineString", + "fid_legacy": "19213120", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"32\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "32", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19214419|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19214419|geom:LineString", + "fid_legacy": "19214419", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"33\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "33", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19214421|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19214421|geom:LineString", + "fid_legacy": "19214421", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"33\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "33", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19215796|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19215796|geom:LineString", + "fid_legacy": "19215796", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"34\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "34", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19216767|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19216767|geom:LineString", + "fid_legacy": "19216767", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"35\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "35", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19221945|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19221945|geom:LineString", + "fid_legacy": "19221945", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(144,220,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"39\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(144,220,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "39", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19223776|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19223776|geom:LineString", + "fid_legacy": "19223776", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"41\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "41", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19223786|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19223786|geom:LineString", + "fid_legacy": "19223786", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"41\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "41", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19224936|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19224936|geom:LineString", + "fid_legacy": "19224936", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"42\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "42", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19226052|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19226052|geom:LineString", + "fid_legacy": "19226052", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"43\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "43", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19227202|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19227202|geom:LineString", + "fid_legacy": "19227202", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"44\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "44", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19227398|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19227398|geom:LineString", + "fid_legacy": "19227398", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(133,213,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"44\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(133,213,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "44", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19228072|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19228072|geom:LineString", + "fid_legacy": "19228072", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(122,206,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"45\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(122,206,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "45", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19230074|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19230074|geom:LineString", + "fid_legacy": "19230074", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(122,206,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"47\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(122,206,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "47", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19230892|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19230892|geom:LineString", + "fid_legacy": "19230892", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(122,206,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"48\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(122,206,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "48", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19233432|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19233432|geom:LineString", + "fid_legacy": "19233432", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(111,199,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"51\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(111,199,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "51", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19234301|geom:MultiLineString|z:11|x:1762|y:820", + "object_id": "fid:19234301|geom:MultiLineString", + "fid_legacy": "19234301", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(111,199,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"52\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(111,199,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "52", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19234325|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19234325|geom:LineString", + "fid_legacy": "19234325", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(111,199,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"52\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(111,199,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "52", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19235178|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19235178|geom:LineString", + "fid_legacy": "19235178", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(111,199,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"53\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(111,199,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "53", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:19235840|geom:LineString|z:11|x:1762|y:820", + "object_id": "fid:19235840|geom:LineString", + "fid_legacy": "19235840", + "tile": "11/1762/820", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 820, + "source_layer": "L海底地形", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(111,199,255,1)\",\"line_width\":0.5}" + ], + "text": [ + "text:{\"text_color\":\"rgba(7,7,7,1)\",\"text_size\":10,\"text_value\":\"54\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "line": [ + { + "layer_id": "#b#海底地形", + "line_color": "rgba(111,199,255,1)", + "line_width": 0.5, + "line_dasharray": null, + "line_pattern": null + } + ], + "text": [ + { + "layer_id": "#b#C000", + "text_value": "54", + "text_color": "rgba(7,7,7,1)", + "text_anchor": null, + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "depth_numeric_missing" + } + ] +} \ No newline at end of file diff --git a/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.md b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.md new file mode 100644 index 0000000..e56efc6 --- /dev/null +++ b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.md @@ -0,0 +1,356 @@ +# NavSea 原始版 vs delivery版渲染审计报告 + +## 范围 + +- 原始样式: `/root/sourceserver/pbf/src/pbf/style.json` +- delivery版样式: `/root/sourceserver/pbf/src/pbf/style.navsea-delivery-karatsu-10nm.json` +- 原始瓦片根目录: `/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles` +- delivery版瓦片根目录: `/home/wwwroot/pbf-delivery-karatsu-10nm` +- 原始 feature 实例数: `134772` +- delivery版 feature 实例数: `134772` +- 审计结果数: `138071` + +## 匹配口径 + +- 主键优先使用 legacy `fid`。 +- 没有 `fid` 的对象,回退到 `geometry + 稳定旧属性`。 +- 审计粒度保留 tile 实例,因为渲染具有 zoom 敏感性。 + +## 结果统计 + +- `exact_match`: `118747` +- `mismatch`: `12721` +- `missing_in_engineering`: `3304` +- `extra_in_engineering`: `3299` + +## 主要问题层 + +- `mismatch` | `P基本線ククリ` | `7694` +- `mismatch` | `P基本線` | `2804` +- `extra_in_engineering` | `baseline_outline` | `1381` +- `missing_in_engineering` | `P基本線ククリ` | `1381` +- `extra_in_engineering` | `baseline_area` | `710` +- `missing_in_engineering` | `P基本線` | `710` +- `mismatch` | `L基本線` | `610` +- `extra_in_engineering` | `depth_contour` | `481` +- `missing_in_engineering` | `L等深線` | `481` +- `mismatch` | `p航路標識群` | `460` +- `mismatch` | `P漁具定置箇所` | `448` +- `extra_in_engineering` | `bathymetry_line` | `310` +- `missing_in_engineering` | `L海底地形` | `310` +- `mismatch` | `p航行危険障害物` | `293` +- `mismatch` | `p投錨注意障害物` | `123` +- `extra_in_engineering` | `hole_area` | `111` +- `missing_in_engineering` | `P穴` | `111` +- `mismatch` | `L海底線` | `99` +- `mismatch` | `P陸上構造物陸` | `98` +- `extra_in_engineering` | `land_area` | `73` + +## 标注专项问题 + +- `extra_text_in_engineering` | `bathymetry_line` | `160` +- `text_missing_in_engineering` | `L海底地形` | `160` +- `text_missing_in_engineering` | `L等深線` | `93` +- `extra_text_in_engineering` | `depth_contour` | `93` +- `extra_text_in_engineering` | `seabed_text_point` | `31` +- `text_missing_in_engineering` | `p底質` | `31` +- `icon_missing_in_engineering` | `p陸上構造物` | `20` +- `text_missing_in_engineering` | `p航路標識群` | `17` +- `extra_text_in_engineering` | `navigation_marks` | `17` +- `extra_icon_in_engineering` | `onshore_structure_point` | `15` +- `text_missing_in_engineering` | `p地名` | `14` +- `extra_text_in_engineering` | `place_label_sea` | `14` +- `text_missing_in_engineering` | `p地名陸` | `11` +- `extra_text_in_engineering` | `place_label_land` | `11` +- `text_missing_in_engineering` | `L概略等深線` | `4` +- `extra_text_in_engineering` | `depth_contour_overview` | `4` +- `icon_missing_in_engineering` | `p航路標識群` | `3` +- `extra_icon_in_engineering` | `navigation_marks` | `3` +- `icon_missing_in_engineering` | `p投錨注意障害物` | `3` +- `extra_icon_in_engineering` | `anchor_caution_hazard_point` | `3` + +## Style 语义专项问题 + +- `depth_numeric_missing` | `L海底地形` | `160` +- `depth_numeric_missing` | `L等深線` | `93` +- `safety_icon_missing` | `p航路標識群` | `20` +- `depth_numeric_missing` | `L概略等深線` | `4` + +## 差异样例 + +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`1058140` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`12118651` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`1404840` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`14670203` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`16172728` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_area` | fid=`16240499` | object=`3000-4000m` + original: none + engineering: fill=['fill:{"fill_color":"rgba(89,155,255,1)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`16700768` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`17964522` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_area` | fid=`19018986` | object=`20-100m` + original: none + engineering: fill=['fill:{"fill_color":"rgba(200,240,255,1)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_area` | fid=`19548092` | object=`2-5m` + original: none + engineering: fill=['fill:{"fill_color":"rgba(240,250,255,1)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`2042515` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`20474664` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`2048201` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`21243625` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`22474444` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`22830504` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`23577447` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`25266268` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`26628848` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`27264093` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`28191177` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`29816935` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`29859845` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`hole_area` | fid=`31252609` | object=`P穴` + original: none + engineering: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`32205896` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`32854165` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`33449722` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`34018314` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_area` | fid=`36874832` | object=`5-10m` + original: none + engineering: fill=['fill:{"fill_color":"rgba(230,250,255,1)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`38272331` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + +## 标注问题样例 + +- `text_missing_in_engineering` | tile=`10/881/410` | source_layer=`p地名陸` | fid=`16040759` | object=`n/a` + original: text=['text:{"text_anchor":"bottom","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"玄海町"}', 'text:{"text_anchor":"top","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Genkai"}'] + engineering: none +- `extra_text_in_engineering` | tile=`10/881/410` | source_layer=`place_label_land` | fid=`21272367` | object=`p地名陸` + original: none + engineering: text=['text:{"text_anchor":"bottom","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"玄海町"}', 'text:{"text_anchor":"top","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Genkai"}'] +- `text_missing_in_engineering` | tile=`10/882/410` | source_layer=`p航路標識群` | fid=`12008012` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 11m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"博多港端島灯台"}'] + engineering: none +- `extra_text_in_engineering` | tile=`10/882/410` | source_layer=`navigation_marks` | fid=`65286791` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 11m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"博多港端島灯台"}'] +- `extra_text_in_engineering` | tile=`11/1762/820` | source_layer=`bathymetry_line` | fid=`10445884` | object=`L海底地形` + original: none + engineering: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"11"}'] +- `extra_text_in_engineering` | tile=`11/1762/820` | source_layer=`bathymetry_line` | fid=`11740214` | object=`L海底地形` + original: none + engineering: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"41"}'] +- `extra_text_in_engineering` | tile=`11/1762/820` | source_layer=`bathymetry_line` | fid=`15015009` | object=`L海底地形` + original: none + engineering: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"44"}'] +- `extra_text_in_engineering` | tile=`11/1762/820` | source_layer=`bathymetry_line` | fid=`16472950` | object=`L海底地形` + original: none + engineering: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"19"}'] +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19170204` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"4"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19181431` | object=`n/a` + original: line=['line:{"line_color":"rgba(106,210,126,1)","line_width":1}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"10"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19183407` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"11"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19186614` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"13"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19195430` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"19"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19198220` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"21"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19203962` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"25"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19209350` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"29"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19213087` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"32"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19213120` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"32"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19214419` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"33"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19214421` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"33"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19215796` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"34"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19216767` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"35"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19221945` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"39"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19223776` | object=`n/a` + original: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"41"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19223786` | object=`n/a` + original: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"41"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19224936` | object=`n/a` + original: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"42"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19226052` | object=`n/a` + original: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"43"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19227202` | object=`n/a` + original: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"44"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19227398` | object=`n/a` + original: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"44"}'] + engineering: none +- `text_missing_in_engineering` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19228072` | object=`n/a` + original: line=['line:{"line_color":"rgba(122,206,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"45"}'] + engineering: none + +## Style 语义问题样例 + +- `safety_icon_missing` | tile=`10/882/410` | source_layer=`p航路標識群` | fid=`12008012` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 11m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"博多港端島灯台"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19170204` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"4"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19181431` | object=`n/a` + original: line=['line:{"line_color":"rgba(106,210,126,1)","line_width":1}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"10"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19183407` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"11"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19186614` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"13"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19195430` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"19"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19198220` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"21"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19203962` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"25"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19209350` | object=`n/a` + original: line=['line:{"line_color":"rgba(126,230,146,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"29"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19213087` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"32"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19213120` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"32"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19214419` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"33"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19214421` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"33"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19215796` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"34"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19216767` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"35"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19221945` | object=`n/a` + original: line=['line:{"line_color":"rgba(144,220,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"39"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19223776` | object=`n/a` + original: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"41"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19223786` | object=`n/a` + original: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"41"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19224936` | object=`n/a` + original: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"42"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19226052` | object=`n/a` + original: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"43"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19227202` | object=`n/a` + original: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"44"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19227398` | object=`n/a` + original: line=['line:{"line_color":"rgba(133,213,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"44"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19228072` | object=`n/a` + original: line=['line:{"line_color":"rgba(122,206,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"45"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19230074` | object=`n/a` + original: line=['line:{"line_color":"rgba(122,206,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"47"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19230892` | object=`n/a` + original: line=['line:{"line_color":"rgba(122,206,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"48"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19233432` | object=`n/a` + original: line=['line:{"line_color":"rgba(111,199,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"51"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19234301` | object=`n/a` + original: line=['line:{"line_color":"rgba(111,199,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"52"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19234325` | object=`n/a` + original: line=['line:{"line_color":"rgba(111,199,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"52"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19235178` | object=`n/a` + original: line=['line:{"line_color":"rgba(111,199,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"53"}'] + engineering: none +- `depth_numeric_missing` | tile=`11/1762/820` | source_layer=`L海底地形` | fid=`19235840` | object=`n/a` + original: line=['line:{"line_color":"rgba(111,199,255,1)","line_width":0.5}']; text=['text:{"text_color":"rgba(7,7,7,1)","text_size":10,"text_value":"54"}'] + engineering: none diff --git a/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm.json b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm.json new file mode 100644 index 0000000..0648be0 --- /dev/null +++ b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm.json @@ -0,0 +1,2392 @@ +{ + "original_feature_instances": 254342, + "engineering_feature_instances": 254342, + "result_count": 254342, + "status_counts": { + "exact_match": 222770, + "mismatch": 31513, + "missing_in_engineering": 59 + }, + "source_layer_issue_counts": [ + { + "status": "mismatch", + "source_layer": "P基本線ククリ", + "count": 16947 + }, + { + "status": "mismatch", + "source_layer": "P基本線", + "count": 5884 + }, + { + "status": "mismatch", + "source_layer": "P漁具定置箇所", + "count": 2479 + }, + { + "status": "mismatch", + "source_layer": "L基本線", + "count": 2408 + }, + { + "status": "mismatch", + "source_layer": "p航路標識群", + "count": 1519 + }, + { + "status": "mismatch", + "source_layer": "p投錨注意障害物", + "count": 724 + }, + { + "status": "mismatch", + "source_layer": "p航行危険障害物", + "count": 664 + }, + { + "status": "mismatch", + "source_layer": "P陸上構造物陸", + "count": 327 + }, + { + "status": "mismatch", + "source_layer": "L海底線", + "count": 206 + }, + { + "status": "mismatch", + "source_layer": "P潜堤", + "count": 87 + }, + { + "status": "mismatch", + "source_layer": "L741", + "count": 66 + }, + { + "status": "mismatch", + "source_layer": "P施設・境界線等", + "count": 48 + }, + { + "status": "mismatch", + "source_layer": "L高さ制限", + "count": 47 + }, + { + "status": "mismatch", + "source_layer": "p施設・境界線等", + "count": 43 + }, + { + "status": "mismatch", + "source_layer": "P投錨注意障害物", + "count": 28 + }, + { + "status": "mismatch", + "source_layer": "L739", + "count": 21 + }, + { + "status": "missing_in_engineering", + "source_layer": "p陸上構造物", + "count": 19 + }, + { + "status": "missing_in_engineering", + "source_layer": "P航路ククリ", + "count": 12 + }, + { + "status": "missing_in_engineering", + "source_layer": "p航路境界等", + "count": 11 + }, + { + "status": "missing_in_engineering", + "source_layer": "P航路", + "count": 8 + }, + { + "status": "missing_in_engineering", + "source_layer": "L748", + "count": 5 + }, + { + "status": "mismatch", + "source_layer": "P航行危険障害物ククリ", + "count": 5 + }, + { + "status": "mismatch", + "source_layer": "P航行危険障害物", + "count": 5 + }, + { + "status": "mismatch", + "source_layer": "p錨泊地等", + "count": 3 + }, + { + "status": "mismatch", + "source_layer": "P投錨注意障害物ククリ", + "count": 2 + }, + { + "status": "missing_in_engineering", + "source_layer": "L749", + "count": 2 + }, + { + "status": "missing_in_engineering", + "source_layer": "pパイロットステーション", + "count": 2 + } + ], + "annotation_issue_counts": [ + { + "issue": "icon_missing_in_engineering", + "source_layer": "p陸上構造物", + "count": 19 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p航路境界等", + "count": 11 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "pパイロットステーション", + "count": 2 + } + ], + "style_semantic_issue_counts": [], + "mismatch_examples": [ + { + "status": "mismatch", + "object_instance_id": "fid:3107890|geom:Polygon|z:10|x:880|y:409", + "object_id": "fid:3107890|geom:Polygon", + "fid_legacy": "3107890", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P潜堤", + "canonical_object_type": "潜提", + "original_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(129,195,226,1)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-175\"}" + ] + }, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"#7d7f95\",\"fill_opacity\":0.45,\"fill_outline_color\":\"#55586f\"}" + ] + }, + "original_payloads": { + "fill": [ + { + "layer_id": "#b#d2#d5#d10#at#P潜堤塗", + "fill_color": "rgba(129,195,226,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + }, + { + "layer_id": "#b#d2#d5#d10#P潜堤網", + "fill_color": null, + "fill_pattern": "fill-daytime-175", + "fill_outline_color": null, + "fill_opacity": null + } + ] + }, + "engineering_payloads": { + "fill": [ + { + "layer_id": "submerged-structures", + "fill_color": "#7d7f95", + "fill_pattern": null, + "fill_outline_color": "#55586f", + "fill_opacity": 0.45 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:3113597|geom:MultiPolygon|z:10|x:880|y:409", + "object_id": "fid:3113597|geom:MultiPolygon", + "fid_legacy": "3113597", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P潜堤", + "canonical_object_type": "潜提", + "original_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(129,195,226,1)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-175\"}" + ] + }, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"#7d7f95\",\"fill_opacity\":0.45,\"fill_outline_color\":\"#55586f\"}" + ] + }, + "original_payloads": { + "fill": [ + { + "layer_id": "#b#d2#d5#d10#at#P潜堤塗", + "fill_color": "rgba(129,195,226,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + }, + { + "layer_id": "#b#d2#d5#d10#P潜堤網", + "fill_color": null, + "fill_pattern": "fill-daytime-175", + "fill_outline_color": null, + "fill_opacity": null + } + ] + }, + "engineering_payloads": { + "fill": [ + { + "layer_id": "submerged-structures", + "fill_color": "#7d7f95", + "fill_pattern": null, + "fill_outline_color": "#55586f", + "fill_opacity": 0.45 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:3113792|geom:Polygon|z:10|x:880|y:409", + "object_id": "fid:3113792|geom:Polygon", + "fid_legacy": "3113792", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P潜堤", + "canonical_object_type": "潜提", + "original_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(129,195,226,1)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-175\"}" + ] + }, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"#7d7f95\",\"fill_opacity\":0.45,\"fill_outline_color\":\"#55586f\"}" + ] + }, + "original_payloads": { + "fill": [ + { + "layer_id": "#b#d2#d5#d10#at#P潜堤塗", + "fill_color": "rgba(129,195,226,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + }, + { + "layer_id": "#b#d2#d5#d10#P潜堤網", + "fill_color": null, + "fill_pattern": "fill-daytime-175", + "fill_outline_color": null, + "fill_opacity": null + } + ] + }, + "engineering_payloads": { + "fill": [ + { + "layer_id": "submerged-structures", + "fill_color": "#7d7f95", + "fill_pattern": null, + "fill_outline_color": "#55586f", + "fill_opacity": 0.45 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:3117479|geom:MultiPolygon|z:10|x:880|y:409", + "object_id": "fid:3117479|geom:MultiPolygon", + "fid_legacy": "3117479", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P潜堤", + "canonical_object_type": "潜提", + "original_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(129,195,226,1)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-175\"}" + ] + }, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"#7d7f95\",\"fill_opacity\":0.45,\"fill_outline_color\":\"#55586f\"}" + ] + }, + "original_payloads": { + "fill": [ + { + "layer_id": "#b#d2#d5#d10#at#P潜堤塗", + "fill_color": "rgba(129,195,226,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + }, + { + "layer_id": "#b#d2#d5#d10#P潜堤網", + "fill_color": null, + "fill_pattern": "fill-daytime-175", + "fill_outline_color": null, + "fill_opacity": null + } + ] + }, + "engineering_payloads": { + "fill": [ + { + "layer_id": "submerged-structures", + "fill_color": "#7d7f95", + "fill_pattern": null, + "fill_outline_color": "#55586f", + "fill_opacity": 0.45 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054123|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054123|geom:LineString", + "fid_legacy": "4054123", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054124|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054124|geom:LineString", + "fid_legacy": "4054124", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054125|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054125|geom:LineString", + "fid_legacy": "4054125", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054126|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054126|geom:LineString", + "fid_legacy": "4054126", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054127|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054127|geom:LineString", + "fid_legacy": "4054127", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054128|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054128|geom:LineString", + "fid_legacy": "4054128", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054129|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054129|geom:LineString", + "fid_legacy": "4054129", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054130|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054130|geom:LineString", + "fid_legacy": "4054130", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054131|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054131|geom:LineString", + "fid_legacy": "4054131", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054134|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054134|geom:LineString", + "fid_legacy": "4054134", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054135|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054135|geom:LineString", + "fid_legacy": "4054135", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054139|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054139|geom:LineString", + "fid_legacy": "4054139", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054142|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054142|geom:LineString", + "fid_legacy": "4054142", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054143|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054143|geom:LineString", + "fid_legacy": "4054143", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054144|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054144|geom:LineString", + "fid_legacy": "4054144", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054145|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054145|geom:LineString", + "fid_legacy": "4054145", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054146|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054146|geom:LineString", + "fid_legacy": "4054146", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054147|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054147|geom:LineString", + "fid_legacy": "4054147", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054148|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054148|geom:LineString", + "fid_legacy": "4054148", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054149|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054149|geom:LineString", + "fid_legacy": "4054149", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054150|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054150|geom:LineString", + "fid_legacy": "4054150", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054151|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054151|geom:LineString", + "fid_legacy": "4054151", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054152|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054152|geom:LineString", + "fid_legacy": "4054152", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054156|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054156|geom:LineString", + "fid_legacy": "4054156", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054167|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054167|geom:LineString", + "fid_legacy": "4054167", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4054173|geom:LineString|z:10|x:880|y:409", + "object_id": "fid:4054173|geom:LineString", + "fid_legacy": "4054173", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "P基本線ククリ", + "canonical_object_type": "P基本線ククリ", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + } + ], + "annotation_issue_examples": [ + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6012341|geom:Point|z:11|x:1761|y:822", + "object_id": "fid:6012341|geom:Point", + "fid_legacy": "6012341", + "tile": "11/1761/822", + "tile_z": 11, + "tile_x": 1761, + "tile_y": 822, + "source_layer": "p陸上構造物", + "canonical_object_type": "陸上顕著物 (観覧車等)", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-680\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-680", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:9003369|geom:Point|z:11|x:1761|y:822", + "object_id": "fid:9003369|geom:Point", + "fid_legacy": "9003369", + "tile": "11/1761/822", + "tile_z": 11, + "tile_x": 1761, + "tile_y": 822, + "source_layer": "p航路境界等", + "canonical_object_type": "水源方向", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-761\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#BK#S760", + "icon_image": "symbol-daytime-761", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:9003379|geom:Point|z:11|x:1761|y:822", + "object_id": "fid:9003379|geom:Point", + "fid_legacy": "9003379", + "tile": "11/1761/822", + "tile_z": 11, + "tile_x": 1761, + "tile_y": 822, + "source_layer": "p航路境界等", + "canonical_object_type": "水源方向", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-761\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#BK#S760", + "icon_image": "symbol-daytime-761", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011150|geom:Point|z:11|x:1761|y:823", + "object_id": "fid:6011150|geom:Point", + "fid_legacy": "6011150", + "tile": "11/1761/823", + "tile_z": 11, + "tile_x": 1761, + "tile_y": 823, + "source_layer": "p陸上構造物", + "canonical_object_type": "税関", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6013154|geom:Point|z:11|x:1761|y:824", + "object_id": "fid:6013154|geom:Point", + "fid_legacy": "6013154", + "tile": "11/1761/824", + "tile_z": 11, + "tile_x": 1761, + "tile_y": 824, + "source_layer": "p陸上構造物", + "canonical_object_type": "管制信号所", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-682\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-682", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:9003373|geom:Point|z:11|x:1761|y:824", + "object_id": "fid:9003373|geom:Point", + "fid_legacy": "9003373", + "tile": "11/1761/824", + "tile_z": 11, + "tile_x": 1761, + "tile_y": 824, + "source_layer": "p航路境界等", + "canonical_object_type": "水源方向", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-761\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#BK#S760", + "icon_image": "symbol-daytime-761", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:9003374|geom:Point|z:11|x:1761|y:824", + "object_id": "fid:9003374|geom:Point", + "fid_legacy": "9003374", + "tile": "11/1761/824", + "tile_z": 11, + "tile_x": 1761, + "tile_y": 824, + "source_layer": "p航路境界等", + "canonical_object_type": "水源方向", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-761\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#BK#S760", + "icon_image": "symbol-daytime-761", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:9003375|geom:Point|z:11|x:1761|y:824", + "object_id": "fid:9003375|geom:Point", + "fid_legacy": "9003375", + "tile": "11/1761/824", + "tile_z": 11, + "tile_x": 1761, + "tile_y": 824, + "source_layer": "p航路境界等", + "canonical_object_type": "水源方向", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-761\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#BK#S760", + "icon_image": "symbol-daytime-761", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:9003376|geom:Point|z:11|x:1761|y:824", + "object_id": "fid:9003376|geom:Point", + "fid_legacy": "9003376", + "tile": "11/1761/824", + "tile_z": 11, + "tile_x": 1761, + "tile_y": 824, + "source_layer": "p航路境界等", + "canonical_object_type": "水源方向", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-761\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#BK#S760", + "icon_image": "symbol-daytime-761", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011135|geom:Point|z:11|x:1762|y:822", + "object_id": "fid:6011135|geom:Point", + "fid_legacy": "6011135", + "tile": "11/1762/822", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 822, + "source_layer": "p陸上構造物", + "canonical_object_type": "税関", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011150|geom:Point|z:11|x:1762|y:823", + "object_id": "fid:6011150|geom:Point", + "fid_legacy": "6011150", + "tile": "11/1762/823", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 823, + "source_layer": "p陸上構造物", + "canonical_object_type": "税関", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011136|geom:Point|z:11|x:1763|y:821", + "object_id": "fid:6011136|geom:Point", + "fid_legacy": "6011136", + "tile": "11/1763/821", + "tile_z": 11, + "tile_x": 1763, + "tile_y": 821, + "source_layer": "p陸上構造物", + "canonical_object_type": "税関", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011134|geom:Point|z:11|x:1765|y:820", + "object_id": "fid:6011134|geom:Point", + "fid_legacy": "6011134", + "tile": "11/1765/820", + "tile_z": 11, + "tile_x": 1765, + "tile_y": 820, + "source_layer": "p陸上構造物", + "canonical_object_type": "税関", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6012337|geom:Point|z:11|x:1765|y:820", + "object_id": "fid:6012337|geom:Point", + "fid_legacy": "6012337", + "tile": "11/1765/820", + "tile_z": 11, + "tile_x": 1765, + "tile_y": 820, + "source_layer": "p陸上構造物", + "canonical_object_type": "陸上顕著物 (観覧車等)", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-680\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-680", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6012338|geom:Point|z:11|x:1765|y:820", + "object_id": "fid:6012338|geom:Point", + "fid_legacy": "6012338", + "tile": "11/1765/820", + "tile_z": 11, + "tile_x": 1765, + "tile_y": 820, + "source_layer": "p陸上構造物", + "canonical_object_type": "陸上顕著物 (観覧車等)", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-680\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-680", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011149|geom:Point|z:11|x:1765|y:824", + "object_id": "fid:6011149|geom:Point", + "fid_legacy": "6011149", + "tile": "11/1765/824", + "tile_z": 11, + "tile_x": 1765, + "tile_y": 824, + "source_layer": "p陸上構造物", + "canonical_object_type": "税関", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6012341|geom:Point|z:12|x:3522|y:1644", + "object_id": "fid:6012341|geom:Point", + "fid_legacy": "6012341", + "tile": "12/3522/1644", + "tile_z": 12, + "tile_x": 3522, + "tile_y": 1644, + "source_layer": "p陸上構造物", + "canonical_object_type": "陸上顕著物 (観覧車等)", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-680\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-680", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:9003369|geom:Point|z:12|x:3522|y:1644", + "object_id": "fid:9003369|geom:Point", + "fid_legacy": "9003369", + "tile": "12/3522/1644", + "tile_z": 12, + "tile_x": 3522, + "tile_y": 1644, + "source_layer": "p航路境界等", + "canonical_object_type": "水源方向", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-761\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#BK#S760", + "icon_image": "symbol-daytime-761", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:9003379|geom:Point|z:12|x:3522|y:1645", + "object_id": "fid:9003379|geom:Point", + "fid_legacy": "9003379", + "tile": "12/3522/1645", + "tile_z": 12, + "tile_x": 3522, + "tile_y": 1645, + "source_layer": "p航路境界等", + "canonical_object_type": "水源方向", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-761\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#BK#S760", + "icon_image": "symbol-daytime-761", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:9002198|geom:Point|z:12|x:3522|y:1648", + "object_id": "fid:9002198|geom:Point", + "fid_legacy": "9002198", + "tile": "12/3522/1648", + "tile_z": 12, + "tile_x": 3522, + "tile_y": 1648, + "source_layer": "pパイロットステーション", + "canonical_object_type": "パイロットステーション", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-500\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#BS#Sパイロットステーション", + "icon_image": "symbol-daytime-500", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:9003373|geom:Point|z:12|x:3522|y:1648", + "object_id": "fid:9003373|geom:Point", + "fid_legacy": "9003373", + "tile": "12/3522/1648", + "tile_z": 12, + "tile_x": 3522, + "tile_y": 1648, + "source_layer": "p航路境界等", + "canonical_object_type": "水源方向", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-761\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#BK#S760", + "icon_image": "symbol-daytime-761", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:9003375|geom:Point|z:12|x:3522|y:1648", + "object_id": "fid:9003375|geom:Point", + "fid_legacy": "9003375", + "tile": "12/3522/1648", + "tile_z": 12, + "tile_x": 3522, + "tile_y": 1648, + "source_layer": "p航路境界等", + "canonical_object_type": "水源方向", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-761\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#BK#S760", + "icon_image": "symbol-daytime-761", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011150|geom:Point|z:12|x:3523|y:1647", + "object_id": "fid:6011150|geom:Point", + "fid_legacy": "6011150", + "tile": "12/3523/1647", + "tile_z": 12, + "tile_x": 3523, + "tile_y": 1647, + "source_layer": "p陸上構造物", + "canonical_object_type": "税関", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6013154|geom:Point|z:12|x:3523|y:1648", + "object_id": "fid:6013154|geom:Point", + "fid_legacy": "6013154", + "tile": "12/3523/1648", + "tile_z": 12, + "tile_x": 3523, + "tile_y": 1648, + "source_layer": "p陸上構造物", + "canonical_object_type": "管制信号所", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-682\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-682", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:9003374|geom:Point|z:12|x:3523|y:1648", + "object_id": "fid:9003374|geom:Point", + "fid_legacy": "9003374", + "tile": "12/3523/1648", + "tile_z": 12, + "tile_x": 3523, + "tile_y": 1648, + "source_layer": "p航路境界等", + "canonical_object_type": "水源方向", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-761\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#BK#S760", + "icon_image": "symbol-daytime-761", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011135|geom:Point|z:12|x:3524|y:1645", + "object_id": "fid:6011135|geom:Point", + "fid_legacy": "6011135", + "tile": "12/3524/1645", + "tile_z": 12, + "tile_x": 3524, + "tile_y": 1645, + "source_layer": "p陸上構造物", + "canonical_object_type": "税関", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011150|geom:Point|z:12|x:3524|y:1647", + "object_id": "fid:6011150|geom:Point", + "fid_legacy": "6011150", + "tile": "12/3524/1647", + "tile_z": 12, + "tile_x": 3524, + "tile_y": 1647, + "source_layer": "p陸上構造物", + "canonical_object_type": "税関", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011136|geom:Point|z:12|x:3526|y:1643", + "object_id": "fid:6011136|geom:Point", + "fid_legacy": "6011136", + "tile": "12/3526/1643", + "tile_z": 12, + "tile_x": 3526, + "tile_y": 1643, + "source_layer": "p陸上構造物", + "canonical_object_type": "税関", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6012338|geom:Point|z:12|x:3530|y:1641", + "object_id": "fid:6012338|geom:Point", + "fid_legacy": "6012338", + "tile": "12/3530/1641", + "tile_z": 12, + "tile_x": 3530, + "tile_y": 1641, + "source_layer": "p陸上構造物", + "canonical_object_type": "陸上顕著物 (観覧車等)", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-680\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-680", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:9002206|geom:Point|z:12|x:3530|y:1641", + "object_id": "fid:9002206|geom:Point", + "fid_legacy": "9002206", + "tile": "12/3530/1641", + "tile_z": 12, + "tile_x": 3530, + "tile_y": 1641, + "source_layer": "pパイロットステーション", + "canonical_object_type": "パイロットステーション", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-500\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#BS#Sパイロットステーション", + "icon_image": "symbol-daytime-500", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + } + ], + "style_semantic_issue_examples": [] +} \ No newline at end of file diff --git a/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm.md b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm.md new file mode 100644 index 0000000..fc6bc63 --- /dev/null +++ b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm.md @@ -0,0 +1,246 @@ +# NavSea 原始版 vs delivery版渲染审计报告 + +## 范围 + +- 原始样式: `/root/sourceserver/pbf/src/pbf/style.json` +- delivery版样式: `/root/sourceserver/pbf/src/pbf/style.navsea-delivery-karatsu-10nm.json` +- 原始瓦片根目录: `/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles` +- delivery版瓦片根目录: `/home/wwwroot/pbf-delivery-karatsu-20nm` +- 原始 feature 实例数: `254342` +- delivery版 feature 实例数: `254342` +- 审计结果数: `254342` + +## 匹配口径 + +- 主键优先使用 legacy `fid`。 +- 没有 `fid` 的对象,回退到 `geometry + 稳定旧属性`。 +- 审计粒度保留 tile 实例,因为渲染具有 zoom 敏感性。 + +## 结果统计 + +- `exact_match`: `222770` +- `mismatch`: `31513` +- `missing_in_engineering`: `59` + +## 主要问题层 + +- `mismatch` | `P基本線ククリ` | `16947` +- `mismatch` | `P基本線` | `5884` +- `mismatch` | `P漁具定置箇所` | `2479` +- `mismatch` | `L基本線` | `2408` +- `mismatch` | `p航路標識群` | `1519` +- `mismatch` | `p投錨注意障害物` | `724` +- `mismatch` | `p航行危険障害物` | `664` +- `mismatch` | `P陸上構造物陸` | `327` +- `mismatch` | `L海底線` | `206` +- `mismatch` | `P潜堤` | `87` +- `mismatch` | `L741` | `66` +- `mismatch` | `P施設・境界線等` | `48` +- `mismatch` | `L高さ制限` | `47` +- `mismatch` | `p施設・境界線等` | `43` +- `mismatch` | `P投錨注意障害物` | `28` +- `mismatch` | `L739` | `21` +- `missing_in_engineering` | `p陸上構造物` | `19` +- `missing_in_engineering` | `P航路ククリ` | `12` +- `missing_in_engineering` | `p航路境界等` | `11` +- `missing_in_engineering` | `P航路` | `8` + +## 标注专项问题 + +- `icon_missing_in_engineering` | `p陸上構造物` | `19` +- `icon_missing_in_engineering` | `p航路境界等` | `11` +- `icon_missing_in_engineering` | `pパイロットステーション` | `2` + +## Style 语义专项问题 + +- 没有发现 style 语义专项问题。 + +## 差异样例 + +- `mismatch` | tile=`10/880/409` | source_layer=`P潜堤` | fid=`3107890` | object=`潜提` + original: fill=['fill:{"fill_color":"rgba(129,195,226,1)"}', 'fill:{"fill_pattern":"fill-daytime-175"}'] + engineering: fill=['fill:{"fill_color":"#7d7f95","fill_opacity":0.45,"fill_outline_color":"#55586f"}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P潜堤` | fid=`3113597` | object=`潜提` + original: fill=['fill:{"fill_color":"rgba(129,195,226,1)"}', 'fill:{"fill_pattern":"fill-daytime-175"}'] + engineering: fill=['fill:{"fill_color":"#7d7f95","fill_opacity":0.45,"fill_outline_color":"#55586f"}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P潜堤` | fid=`3113792` | object=`潜提` + original: fill=['fill:{"fill_color":"rgba(129,195,226,1)"}', 'fill:{"fill_pattern":"fill-daytime-175"}'] + engineering: fill=['fill:{"fill_color":"#7d7f95","fill_opacity":0.45,"fill_outline_color":"#55586f"}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P潜堤` | fid=`3117479` | object=`潜提` + original: fill=['fill:{"fill_color":"rgba(129,195,226,1)"}', 'fill:{"fill_pattern":"fill-daytime-175"}'] + engineering: fill=['fill:{"fill_color":"#7d7f95","fill_opacity":0.45,"fill_outline_color":"#55586f"}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054123` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054124` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054125` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054126` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054127` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054128` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054129` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054130` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054131` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054134` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054135` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054139` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054142` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054143` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054144` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054145` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054146` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054147` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054148` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054149` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054150` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054151` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054152` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054156` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054167` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/880/409` | source_layer=`P基本線ククリ` | fid=`4054173` | object=`P基本線ククリ` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + +## 标注问题样例 + +- `icon_missing_in_engineering` | tile=`11/1761/822` | source_layer=`p陸上構造物` | fid=`6012341` | object=`陸上顕著物 (観覧車等)` + original: icon=['icon:{"icon_image":"symbol-daytime-680"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1761/822` | source_layer=`p航路境界等` | fid=`9003369` | object=`水源方向` + original: icon=['icon:{"icon_image":"symbol-daytime-761"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1761/822` | source_layer=`p航路境界等` | fid=`9003379` | object=`水源方向` + original: icon=['icon:{"icon_image":"symbol-daytime-761"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1761/823` | source_layer=`p陸上構造物` | fid=`6011150` | object=`税関` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1761/824` | source_layer=`p陸上構造物` | fid=`6013154` | object=`管制信号所` + original: icon=['icon:{"icon_image":"symbol-daytime-682"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1761/824` | source_layer=`p航路境界等` | fid=`9003373` | object=`水源方向` + original: icon=['icon:{"icon_image":"symbol-daytime-761"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1761/824` | source_layer=`p航路境界等` | fid=`9003374` | object=`水源方向` + original: icon=['icon:{"icon_image":"symbol-daytime-761"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1761/824` | source_layer=`p航路境界等` | fid=`9003375` | object=`水源方向` + original: icon=['icon:{"icon_image":"symbol-daytime-761"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1761/824` | source_layer=`p航路境界等` | fid=`9003376` | object=`水源方向` + original: icon=['icon:{"icon_image":"symbol-daytime-761"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1762/822` | source_layer=`p陸上構造物` | fid=`6011135` | object=`税関` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1762/823` | source_layer=`p陸上構造物` | fid=`6011150` | object=`税関` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1763/821` | source_layer=`p陸上構造物` | fid=`6011136` | object=`税関` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1765/820` | source_layer=`p陸上構造物` | fid=`6011134` | object=`税関` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1765/820` | source_layer=`p陸上構造物` | fid=`6012337` | object=`陸上顕著物 (観覧車等)` + original: icon=['icon:{"icon_image":"symbol-daytime-680"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1765/820` | source_layer=`p陸上構造物` | fid=`6012338` | object=`陸上顕著物 (観覧車等)` + original: icon=['icon:{"icon_image":"symbol-daytime-680"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1765/824` | source_layer=`p陸上構造物` | fid=`6011149` | object=`税関` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3522/1644` | source_layer=`p陸上構造物` | fid=`6012341` | object=`陸上顕著物 (観覧車等)` + original: icon=['icon:{"icon_image":"symbol-daytime-680"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3522/1644` | source_layer=`p航路境界等` | fid=`9003369` | object=`水源方向` + original: icon=['icon:{"icon_image":"symbol-daytime-761"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3522/1645` | source_layer=`p航路境界等` | fid=`9003379` | object=`水源方向` + original: icon=['icon:{"icon_image":"symbol-daytime-761"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3522/1648` | source_layer=`pパイロットステーション` | fid=`9002198` | object=`パイロットステーション` + original: icon=['icon:{"icon_image":"symbol-daytime-500"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3522/1648` | source_layer=`p航路境界等` | fid=`9003373` | object=`水源方向` + original: icon=['icon:{"icon_image":"symbol-daytime-761"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3522/1648` | source_layer=`p航路境界等` | fid=`9003375` | object=`水源方向` + original: icon=['icon:{"icon_image":"symbol-daytime-761"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3523/1647` | source_layer=`p陸上構造物` | fid=`6011150` | object=`税関` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3523/1648` | source_layer=`p陸上構造物` | fid=`6013154` | object=`管制信号所` + original: icon=['icon:{"icon_image":"symbol-daytime-682"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3523/1648` | source_layer=`p航路境界等` | fid=`9003374` | object=`水源方向` + original: icon=['icon:{"icon_image":"symbol-daytime-761"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3524/1645` | source_layer=`p陸上構造物` | fid=`6011135` | object=`税関` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3524/1647` | source_layer=`p陸上構造物` | fid=`6011150` | object=`税関` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3526/1643` | source_layer=`p陸上構造物` | fid=`6011136` | object=`税関` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3530/1641` | source_layer=`p陸上構造物` | fid=`6012338` | object=`陸上顕著物 (観覧車等)` + original: icon=['icon:{"icon_image":"symbol-daytime-680"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3530/1641` | source_layer=`pパイロットステーション` | fid=`9002206` | object=`パイロットステーション` + original: icon=['icon:{"icon_image":"symbol-daytime-500"}'] + engineering: none + +## Style 语义问题样例 + +- 没有 style 语义问题样例。 diff --git a/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.fidonly.json b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.fidonly.json new file mode 100644 index 0000000..12db359 --- /dev/null +++ b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.fidonly.json @@ -0,0 +1,4782 @@ +{ + "original_feature_instances": 254342, + "engineering_feature_instances": 254342, + "result_count": 508684, + "status_counts": { + "extra_in_engineering": 254342, + "missing_in_engineering": 254342 + }, + "source_layer_issue_counts": [ + { + "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": 46452 + }, + { + "status": "missing_in_engineering", + "source_layer": "P基本線", + "count": 46452 + }, + { + "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 + }, + { + "status": "extra_in_engineering", + "source_layer": "land_area", + "count": 7961 + }, + { + "status": "missing_in_engineering", + "source_layer": "P陸域", + "count": 7961 + }, + { + "status": "extra_in_engineering", + "source_layer": "hole_area", + "count": 6857 + }, + { + "status": "missing_in_engineering", + "source_layer": "P穴", + "count": 6857 + }, + { + "status": "extra_in_engineering", + "source_layer": "seabed_text_point", + "count": 4499 + }, + { + "status": "missing_in_engineering", + "source_layer": "p底質", + "count": 4499 + }, + { + "status": "extra_in_engineering", + "source_layer": "hazard_boundary_outline", + "count": 2646 + }, + { + "status": "missing_in_engineering", + "source_layer": "P危険界ククリ", + "count": 2646 + }, + { + "status": "extra_in_engineering", + "source_layer": "fixed_fishing_gear_area", + "count": 2479 + }, + { + "status": "missing_in_engineering", + "source_layer": "P漁具定置箇所", + "count": 2479 + }, + { + "status": "extra_in_engineering", + "source_layer": "baseline_line", + "count": 2408 + }, + { + "status": "missing_in_engineering", + "source_layer": "L基本線", + "count": 2408 + }, + { + "status": "extra_in_engineering", + "source_layer": "navigation_marks", + "count": 1885 + }, + { + "status": "missing_in_engineering", + "source_layer": "p航路標識群", + "count": 1885 + }, + { + "status": "missing_in_engineering", + "source_layer": "p地名", + "count": 1444 + }, + { + "status": "extra_in_engineering", + "source_layer": "place_label_sea", + "count": 1444 + }, + { + "status": "extra_in_engineering", + "source_layer": "anchor_caution_hazard_point", + "count": 1426 + }, + { + "status": "missing_in_engineering", + "source_layer": "p投錨注意障害物", + "count": 1426 + }, + { + "status": "missing_in_engineering", + "source_layer": "p地名陸", + "count": 1109 + }, + { + "status": "extra_in_engineering", + "source_layer": "place_label_land", + "count": 1109 + } + ], + "annotation_issue_counts": [ + { + "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 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "anchor_caution_hazard_point", + "count": 1426 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p投錨注意障害物", + "count": 1426 + }, + { + "issue": "text_missing_in_engineering", + "source_layer": "p地名陸", + "count": 1109 + }, + { + "issue": "extra_text_in_engineering", + "source_layer": "place_label_land", + "count": 1109 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p陸上構造物", + "count": 910 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "onshore_structure_point", + "count": 891 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p航行危険障害物", + "count": 664 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "navigation_hazard_point", + "count": 664 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "navigation_marks", + "count": 369 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p航路標識群", + "count": 369 + }, + { + "issue": "extra_text_in_engineering", + "source_layer": "depth_contour_overview", + "count": 350 + }, + { + "issue": "text_missing_in_engineering", + "source_layer": "L概略等深線", + "count": 350 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "facility_boundary_point", + "count": 171 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p施設・境界線等", + "count": 171 + }, + { + "issue": "extra_text_in_engineering", + "source_layer": "clearance_limit_point", + "count": 33 + }, + { + "issue": "text_missing_in_engineering", + "source_layer": "p高さ制限", + "count": 33 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p航路境界等", + "count": 11 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p錨泊地等", + "count": 7 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "anchorage_point", + "count": 7 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "pパイロットステーション", + "count": 2 + } + ], + "style_semantic_issue_counts": [ + { + "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 + } + ], + "mismatch_examples": [ + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1001350668|geom:MultiPolygon|z:0|x:0|y:0", + "object_id": "fid:-1001350668|geom:MultiPolygon", + "fid_legacy": "-1001350668", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "hole_area", + "canonical_object_type": "P穴", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "land-hole", + "fill_color": "rgba(0,0,0,0)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1001350668|geom:Polygon|z:0|x:0|y:0", + "object_id": "fid:-1001350668|geom:Polygon", + "fid_legacy": "-1001350668", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "hole_area", + "canonical_object_type": "P穴", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "land-hole", + "fill_color": "rgba(0,0,0,0)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-100187935|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-100187935|geom:LineString", + "fid_legacy": "-100187935", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1004285450|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1004285450|geom:LineString", + "fid_legacy": "-1004285450", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1004478221|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1004478221|geom:LineString", + "fid_legacy": "-1004478221", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1004766316|geom:Polygon|z:0|x:0|y:0", + "object_id": "fid:-1004766316|geom:Polygon", + "fid_legacy": "-1004766316", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "hole_area", + "canonical_object_type": "P穴", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "land-hole", + "fill_color": "rgba(0,0,0,0)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1005227929|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1005227929|geom:LineString", + "fid_legacy": "-1005227929", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1006671238|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1006671238|geom:LineString", + "fid_legacy": "-1006671238", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-100667807|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-100667807|geom:LineString", + "fid_legacy": "-100667807", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1008857267|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1008857267|geom:LineString", + "fid_legacy": "-1008857267", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-10089736|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-10089736|geom:LineString", + "fid_legacy": "-10089736", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1011245193|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1011245193|geom:LineString", + "fid_legacy": "-1011245193", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1011298607|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1011298607|geom:LineString", + "fid_legacy": "-1011298607", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1012210428|geom:Polygon|z:0|x:0|y:0", + "object_id": "fid:-1012210428|geom:Polygon", + "fid_legacy": "-1012210428", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_area", + "canonical_object_type": "2000-3000m", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(132,169,255,1)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "sea-area-fill", + "fill_color": "rgba(132,169,255,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1012615342|geom:MultiPolygon|z:0|x:0|y:0", + "object_id": "fid:-1012615342|geom:MultiPolygon", + "fid_legacy": "-1012615342", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_area", + "canonical_object_type": "2000-3000m", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(132,169,255,1)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "sea-area-fill", + "fill_color": "rgba(132,169,255,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1012930076|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1012930076|geom:LineString", + "fid_legacy": "-1012930076", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-101311542|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-101311542|geom:LineString", + "fid_legacy": "-101311542", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1013768546|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1013768546|geom:LineString", + "fid_legacy": "-1013768546", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1013908015|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1013908015|geom:LineString", + "fid_legacy": "-1013908015", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1014608693|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1014608693|geom:LineString", + "fid_legacy": "-1014608693", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-101554676|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-101554676|geom:LineString", + "fid_legacy": "-101554676", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1015995687|geom:Polygon|z:0|x:0|y:0", + "object_id": "fid:-1015995687|geom:Polygon", + "fid_legacy": "-1015995687", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_area", + "canonical_object_type": "10-20m", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(220,250,255,1)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "sea-area-fill", + "fill_color": "rgba(220,250,255,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1016774370|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1016774370|geom:LineString", + "fid_legacy": "-1016774370", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1017142898|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1017142898|geom:LineString", + "fid_legacy": "-1017142898", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1018128169|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1018128169|geom:LineString", + "fid_legacy": "-1018128169", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1018165694|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1018165694|geom:LineString", + "fid_legacy": "-1018165694", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1020992820|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1020992820|geom:LineString", + "fid_legacy": "-1020992820", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1022609407|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1022609407|geom:LineString", + "fid_legacy": "-1022609407", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1023696695|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1023696695|geom:LineString", + "fid_legacy": "-1023696695", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1024292542|geom:LineString|z:0|x:0|y:0", + "object_id": "fid:-1024292542|geom:LineString", + "fid_legacy": "-1024292542", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + } + ], + "annotation_issue_examples": [ + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1033259184|geom:Point|z:10|x:880|y:409", + "object_id": "fid:-1033259184|geom:Point", + "fid_legacy": "-1033259184", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 22m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"手長島灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 3s 22m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "手長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-193326989|geom:Point|z:10|x:880|y:409", + "object_id": "fid:-193326989|geom:Point", + "fid_legacy": "-193326989", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "navigation_marks", + "canonical_object_type": "沿岸灯台 (15M over)", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-04027289\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Oc W 8s 106m 15M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"若宮灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-04027289", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Oc W 8s 106m 15M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "若宮灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-60468407|geom:Point|z:10|x:880|y:409", + "object_id": "fid:-60468407|geom:Point", + "fid_legacy": "-60468407", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐長島灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 4s 49m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "壱岐長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007768|geom:Point|z:10|x:880|y:409", + "object_id": "fid:12007768|geom:Point", + "fid_legacy": "12007768", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-04027289\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Oc W 8s 106m 15M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"若宮灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-04027289", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Oc W 8s 106m 15M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "若宮灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007824|geom:Point|z:10|x:880|y:409", + "object_id": "fid:12007824|geom:Point", + "fid_legacy": "12007824", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐長島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 49m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007921|geom:Point|z:10|x:880|y:409", + "object_id": "fid:12007921|geom:Point", + "fid_legacy": "12007921", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 22m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"手長島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 22m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "手長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007971|geom:Point|z:10|x:880|y:409", + "object_id": "fid:12007971|geom:Point", + "fid_legacy": "12007971", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐大瀬灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 14m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐大瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:16040739|geom:Point|z:10|x:880|y:409", + "object_id": "fid:16040739|geom:Point", + "fid_legacy": "16040739", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p地名陸", + "canonical_object_type": null, + "original_components": { + "text": [ + "text:{\"text_anchor\":\"bottom\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐市\"}", + "text:{\"text_anchor\":\"top\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iki\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "text": [ + { + "layer_id": "#b#d2#d5#d10#land#C800#EN", + "text_value": "Iki", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "top", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#land#C800#JA", + "text_value": "壱岐市", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "bottom", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:16040854|geom:Point|z:10|x:880|y:409", + "object_id": "fid:16040854|geom:Point", + "fid_legacy": "16040854", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p地名", + "canonical_object_type": null, + "original_components": { + "text": [ + "text:{\"text_anchor\":\"bottom\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐島\"}", + "text:{\"text_anchor\":\"top\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"IKI SHIMA\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "text": [ + { + "layer_id": "#b#d2#d5#d10#C800#EN", + "text_value": "IKI SHIMA", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "top", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#C800#JA", + "text_value": "壱岐島", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "bottom", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:2138221132|geom:Point|z:10|x:880|y:409", + "object_id": "fid:2138221132|geom:Point", + "fid_legacy": "2138221132", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "place_label_land", + "canonical_object_type": "p地名陸", + "original_components": {}, + "engineering_components": { + "text": [ + "text:{\"text_anchor\":\"bottom\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐市\"}", + "text:{\"text_anchor\":\"top\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iki\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "text": [ + { + "layer_id": "place-labels-land-en", + "text_value": "Iki", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "top", + "text_size": 10 + }, + { + "layer_id": "place-labels-land-ja", + "text_value": "壱岐市", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "bottom", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:509002199|geom:Point|z:10|x:880|y:409", + "object_id": "fid:509002199|geom:Point", + "fid_legacy": "509002199", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐大瀬灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl(2) W 6s 14m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "壱岐大瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:906640000|geom:Point|z:10|x:880|y:409", + "object_id": "fid:906640000|geom:Point", + "fid_legacy": "906640000", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "place_label_sea", + "canonical_object_type": "p地名", + "original_components": {}, + "engineering_components": { + "text": [ + "text:{\"text_anchor\":\"bottom\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐島\"}", + "text:{\"text_anchor\":\"top\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"IKI SHIMA\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "text": [ + { + "layer_id": "place-labels-sea-en", + "text_value": "IKI SHIMA", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "top", + "text_size": 10 + }, + { + "layer_id": "place-labels-sea-ja", + "text_value": "壱岐島", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "bottom", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1872756166|geom:Point|z:10|x:880|y:410", + "object_id": "fid:-1872756166|geom:Point", + "fid_legacy": "-1872756166", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "沿岸灯台 (15M over)", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Al Fl W,G 20s 99m W18,G16M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"二神島灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Al Fl W,G 20s 99m W18,G16M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "二神島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-457133759|geom:Point|z:10|x:880|y:410", + "object_id": "fid:-457133759|geom:Point", + "fid_legacy": "-457133759", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 101m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"大碆鼻灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Iso W 6s 101m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "大碆鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-60468407|geom:Point|z:10|x:880|y:410", + "object_id": "fid:-60468407|geom:Point", + "fid_legacy": "-60468407", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐長島灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 4s 49m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "壱岐長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-918710454|geom:Point|z:10|x:880|y:410", + "object_id": "fid:-918710454|geom:Point", + "fid_legacy": "-918710454", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 12m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"的山大島曲り鼻灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 4s 12m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "的山大島曲り鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007773|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007773|geom:Point", + "fid_legacy": "12007773", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-l3\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Al Fl W,G 20s 99m W18,G16M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"二神島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-l3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Al Fl W,G 20s 99m W18,G16M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "二神島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007805|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007805|geom:Point", + "fid_legacy": "12007805", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 12m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"的山大島曲り鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 12m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "的山大島曲り鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007823|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007823|geom:Point", + "fid_legacy": "12007823", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 31m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"海豚鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 31m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "海豚鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007824|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007824|geom:Point", + "fid_legacy": "12007824", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐長島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 49m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007836|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007836|geom:Point", + "fid_legacy": "12007836", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 101m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"大碆鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Iso W 6s 101m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "大碆鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007880|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007880|geom:Point", + "fid_legacy": "12007880", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 11m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐郷ノ瀬灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 11m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐郷ノ瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007885|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007885|geom:Point", + "fid_legacy": "12007885", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 5s 46m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"馬ノ頭鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 5s 46m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "馬ノ頭鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007886|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007886|geom:Point", + "fid_legacy": "12007886", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"崎瀬鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 14m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "崎瀬鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007938|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007938|geom:Point", + "fid_legacy": "12007938", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 25m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"的山大島長崎鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 25m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "的山大島長崎鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:1705367191|geom:Point|z:10|x:880|y:410", + "object_id": "fid:1705367191|geom:Point", + "fid_legacy": "1705367191", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 25m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"的山大島長崎鼻灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 4s 25m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "的山大島長崎鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:1788936661|geom:Point|z:10|x:880|y:410", + "object_id": "fid:1788936661|geom:Point", + "fid_legacy": "1788936661", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 5s 46m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"馬ノ頭鼻灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 5s 46m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "馬ノ頭鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:1977066498|geom:Point|z:10|x:880|y:410", + "object_id": "fid:1977066498|geom:Point", + "fid_legacy": "1977066498", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 11m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐郷ノ瀬灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 3s 11m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "壱岐郷ノ瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:298413274|geom:Point|z:10|x:880|y:410", + "object_id": "fid:298413274|geom:Point", + "fid_legacy": "298413274", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"崎瀬鼻灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl(2) W 6s 14m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "崎瀬鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:48104363|geom:Point|z:10|x:880|y:410", + "object_id": "fid:48104363|geom:Point", + "fid_legacy": "48104363", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 31m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"海豚鼻灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl(2) W 6s 31m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "海豚鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + } + ], + "style_semantic_issue_examples": [ + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007768|geom:Point|z:10|x:880|y:409", + "object_id": "fid:12007768|geom:Point", + "fid_legacy": "12007768", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-04027289\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Oc W 8s 106m 15M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"若宮灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-04027289", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Oc W 8s 106m 15M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "若宮灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007824|geom:Point|z:10|x:880|y:409", + "object_id": "fid:12007824|geom:Point", + "fid_legacy": "12007824", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐長島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 49m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007921|geom:Point|z:10|x:880|y:409", + "object_id": "fid:12007921|geom:Point", + "fid_legacy": "12007921", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 22m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"手長島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 22m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "手長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007971|geom:Point|z:10|x:880|y:409", + "object_id": "fid:12007971|geom:Point", + "fid_legacy": "12007971", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐大瀬灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 14m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐大瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007773|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007773|geom:Point", + "fid_legacy": "12007773", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-l3\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Al Fl W,G 20s 99m W18,G16M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"二神島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-l3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Al Fl W,G 20s 99m W18,G16M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "二神島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007805|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007805|geom:Point", + "fid_legacy": "12007805", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 12m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"的山大島曲り鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 12m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "的山大島曲り鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007823|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007823|geom:Point", + "fid_legacy": "12007823", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 31m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"海豚鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 31m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "海豚鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007824|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007824|geom:Point", + "fid_legacy": "12007824", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐長島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 49m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007836|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007836|geom:Point", + "fid_legacy": "12007836", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 101m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"大碆鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Iso W 6s 101m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "大碆鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007880|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007880|geom:Point", + "fid_legacy": "12007880", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 11m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐郷ノ瀬灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 11m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐郷ノ瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007885|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007885|geom:Point", + "fid_legacy": "12007885", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 5s 46m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"馬ノ頭鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 5s 46m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "馬ノ頭鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007886|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007886|geom:Point", + "fid_legacy": "12007886", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"崎瀬鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 14m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "崎瀬鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007938|geom:Point|z:10|x:880|y:410", + "object_id": "fid:12007938|geom:Point", + "fid_legacy": "12007938", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 25m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"的山大島長崎鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 25m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "的山大島長崎鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007795|geom:Point|z:10|x:880|y:411", + "object_id": "fid:12007795|geom:Point", + "fid_legacy": "12007795", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 11m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"青砂埼灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 11m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "青砂埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007835|geom:Point|z:10|x:880|y:411", + "object_id": "fid:12007835|geom:Point", + "fid_legacy": "12007835", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 109m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"生月長瀬鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 109m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "生月長瀬鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007897|geom:Point|z:10|x:880|y:411", + "object_id": "fid:12007897|geom:Point", + "fid_legacy": "12007897", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Al Fl(2) G,W 6s 7m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"平戸牛ケ首灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Al Fl(2) G,W 6s 7m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "平戸牛ケ首灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007919|geom:Point|z:10|x:880|y:411", + "object_id": "fid:12007919|geom:Point", + "fid_legacy": "12007919", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"津崎鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 49m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "津崎鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007939|geom:Point|z:10|x:880|y:411", + "object_id": "fid:12007939|geom:Point", + "fid_legacy": "12007939", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 20m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"肥前横島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 20m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "肥前横島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007940|geom:Point|z:10|x:880|y:411", + "object_id": "fid:12007940|geom:Point", + "fid_legacy": "12007940", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 9m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"南風埼灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 9m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "南風埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007941|geom:Point|z:10|x:880|y:411", + "object_id": "fid:12007941|geom:Point", + "fid_legacy": "12007941", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 37m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"下枯木島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 37m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "下枯木島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007942|geom:Point|z:10|x:880|y:411", + "object_id": "fid:12007942|geom:Point", + "fid_legacy": "12007942", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 8s 12m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"牛ケ首灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Iso W 8s 12m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "牛ケ首灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007977|geom:Point|z:10|x:880|y:411", + "object_id": "fid:12007977|geom:Point", + "fid_legacy": "12007977", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m1\"}", + "icon:{\"icon_image\":\"light-daytime-1\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl G 3s 10m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"平戸港灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m1", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-1", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl G 3s 10m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "平戸港灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12008014|geom:Point|z:10|x:880|y:411", + "object_id": "fid:12008014|geom:Point", + "fid_legacy": "12008014", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 69m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"魚固島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 69m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "魚固島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12008025|geom:Point|z:10|x:880|y:411", + "object_id": "fid:12008025|geom:Point", + "fid_legacy": "12008025", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"広瀬灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 14m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "広瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12008034|geom:Point|z:10|x:880|y:411", + "object_id": "fid:12008034|geom:Point", + "fid_legacy": "12008034", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 13m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"広瀬導流堤灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 13m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "広瀬導流堤灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12008035|geom:Point|z:10|x:880|y:411", + "object_id": "fid:12008035|geom:Point", + "fid_legacy": "12008035", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 19m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"佐世保港弁天島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 19m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "佐世保港弁天島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007774|geom:Point|z:10|x:880|y:412", + "object_id": "fid:12007774|geom:Point", + "fid_legacy": "12007774", + "tile": "10/880/412", + "tile_z": 10, + "tile_x": 880, + "tile_y": 412, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-l3\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 6s 64m 21M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"高後埼灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-l3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 6s 64m 21M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "高後埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007943|geom:Point|z:10|x:880|y:412", + "object_id": "fid:12007943|geom:Point", + "fid_legacy": "12007943", + "tile": "10/880/412", + "tile_z": 10, + "tile_x": 880, + "tile_y": 412, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 48m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"御床島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Iso W 6s 48m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "御床島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007944|geom:Point|z:10|x:880|y:412", + "object_id": "fid:12007944|geom:Point", + "fid_legacy": "12007944", + "tile": "10/880/412", + "tile_z": 10, + "tile_x": 880, + "tile_y": 412, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 24m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"兜島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 24m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "兜島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007945|geom:Point|z:10|x:880|y:412", + "object_id": "fid:12007945|geom:Point", + "fid_legacy": "12007945", + "tile": "10/880/412", + "tile_z": 10, + "tile_x": 880, + "tile_y": 412, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 15m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"大蟇島大瀬灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 15m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "大蟇島大瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + } + ] +} \ No newline at end of file diff --git a/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.fidonly.md b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.fidonly.md new file mode 100644 index 0000000..5d6357b --- /dev/null +++ b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.fidonly.md @@ -0,0 +1,355 @@ +# NavSea 原始版 vs delivery版渲染审计报告 + +## 范围 + +- 原始样式: `/root/sourceserver/pbf/src/pbf/style.json` +- delivery版样式: `/root/sourceserver/pbf/src/pbf/style.navsea-delivery-karatsu-10nm.json` +- 原始瓦片根目录: `/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles` +- delivery版瓦片根目录: `/home/wwwroot/pbf-delivery-karatsu-20nm` +- 原始 feature 实例数: `254342` +- delivery版 feature 实例数: `254342` +- 审计结果数: `508684` + +## 匹配口径 + +- 主键优先使用 legacy `fid`。 +- 没有 `fid` 的对象,回退到 `geometry + 稳定旧属性`。 +- 审计粒度保留 tile 实例,因为渲染具有 zoom 敏感性。 + +## 结果统计 + +- `extra_in_engineering`: `254342` +- `missing_in_engineering`: `254342` + +## 主要问题层 + +- `extra_in_engineering` | `baseline_outline` | `87709` +- `missing_in_engineering` | `P基本線ククリ` | `87709` +- `extra_in_engineering` | `baseline_area` | `46452` +- `missing_in_engineering` | `P基本線` | `46452` +- `extra_in_engineering` | `depth_contour` | `36460` +- `missing_in_engineering` | `L等深線` | `36460` +- `extra_in_engineering` | `bathymetry_line` | `35940` +- `missing_in_engineering` | `L海底地形` | `35940` +- `extra_in_engineering` | `onshore_structure_line` | `10544` +- `missing_in_engineering` | `L陸上構造物陸` | `10544` +- `extra_in_engineering` | `land_area` | `7961` +- `missing_in_engineering` | `P陸域` | `7961` +- `extra_in_engineering` | `hole_area` | `6857` +- `missing_in_engineering` | `P穴` | `6857` +- `extra_in_engineering` | `seabed_text_point` | `4499` +- `missing_in_engineering` | `p底質` | `4499` +- `extra_in_engineering` | `hazard_boundary_outline` | `2646` +- `missing_in_engineering` | `P危険界ククリ` | `2646` +- `extra_in_engineering` | `fixed_fishing_gear_area` | `2479` +- `missing_in_engineering` | `P漁具定置箇所` | `2479` + +## 标注专项问题 + +- `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` +- `extra_icon_in_engineering` | `anchor_caution_hazard_point` | `1426` +- `icon_missing_in_engineering` | `p投錨注意障害物` | `1426` +- `text_missing_in_engineering` | `p地名陸` | `1109` +- `extra_text_in_engineering` | `place_label_land` | `1109` +- `icon_missing_in_engineering` | `p陸上構造物` | `910` +- `extra_icon_in_engineering` | `onshore_structure_point` | `891` +- `icon_missing_in_engineering` | `p航行危険障害物` | `664` +- `extra_icon_in_engineering` | `navigation_hazard_point` | `664` +- `extra_icon_in_engineering` | `navigation_marks` | `369` +- `icon_missing_in_engineering` | `p航路標識群` | `369` + +## Style 语义专项问题 + +- `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` + +## 差异样例 + +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`hole_area` | fid=`-1001350668` | object=`P穴` + original: none + engineering: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`hole_area` | fid=`-1001350668` | object=`P穴` + original: none + engineering: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-100187935` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1004285450` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1004478221` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`hole_area` | fid=`-1004766316` | object=`P穴` + original: none + engineering: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1005227929` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1006671238` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-100667807` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1008857267` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-10089736` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1011245193` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1011298607` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_area` | fid=`-1012210428` | object=`2000-3000m` + original: none + engineering: fill=['fill:{"fill_color":"rgba(132,169,255,1)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_area` | fid=`-1012615342` | object=`2000-3000m` + original: none + engineering: fill=['fill:{"fill_color":"rgba(132,169,255,1)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1012930076` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-101311542` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1013768546` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1013908015` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1014608693` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-101554676` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_area` | fid=`-1015995687` | object=`10-20m` + original: none + engineering: fill=['fill:{"fill_color":"rgba(220,250,255,1)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1016774370` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1017142898` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1018128169` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1018165694` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1020992820` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1022609407` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1023696695` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1024292542` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + +## 标注问题样例 + +- `extra_text_in_engineering` | tile=`10/880/409` | source_layer=`navigation_marks` | fid=`-1033259184` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 22m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"手長島灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/409` | source_layer=`navigation_marks` | fid=`-193326989` | object=`沿岸灯台 (15M over)` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-04027289"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Oc W 8s 106m 15M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"若宮灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/409` | source_layer=`navigation_marks` | fid=`-60468407` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐長島灯台"}'] +- `text_missing_in_engineering` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007768` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-04027289"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Oc W 8s 106m 15M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"若宮灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007824` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐長島灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007921` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 22m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"手長島灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007971` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐大瀬灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/409` | source_layer=`p地名陸` | fid=`16040739` | object=`n/a` + original: text=['text:{"text_anchor":"bottom","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐市"}', 'text:{"text_anchor":"top","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iki"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/409` | source_layer=`p地名` | fid=`16040854` | object=`n/a` + original: text=['text:{"text_anchor":"bottom","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐島"}', 'text:{"text_anchor":"top","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"IKI SHIMA"}'] + engineering: none +- `extra_text_in_engineering` | tile=`10/880/409` | source_layer=`place_label_land` | fid=`2138221132` | object=`p地名陸` + original: none + engineering: text=['text:{"text_anchor":"bottom","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐市"}', 'text:{"text_anchor":"top","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iki"}'] +- `extra_text_in_engineering` | tile=`10/880/409` | source_layer=`navigation_marks` | fid=`509002199` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐大瀬灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/409` | source_layer=`place_label_sea` | fid=`906640000` | object=`p地名` + original: none + engineering: text=['text:{"text_anchor":"bottom","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐島"}', 'text:{"text_anchor":"top","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"IKI SHIMA"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`-1872756166` | object=`沿岸灯台 (15M over)` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Al Fl W,G 20s 99m W18,G16M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"二神島灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`-457133759` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 101m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"大碆鼻灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`-60468407` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐長島灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`-918710454` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 12m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"的山大島曲り鼻灯台"}'] +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007773` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-l3"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Al Fl W,G 20s 99m W18,G16M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"二神島灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007805` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 12m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"的山大島曲り鼻灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007823` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 31m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"海豚鼻灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007824` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐長島灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007836` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 101m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"大碆鼻灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007880` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 11m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐郷ノ瀬灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007885` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 5s 46m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"馬ノ頭鼻灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007886` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"崎瀬鼻灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007938` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 25m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"的山大島長崎鼻灯台"}'] + engineering: none +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`1705367191` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 25m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"的山大島長崎鼻灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`1788936661` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 5s 46m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"馬ノ頭鼻灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`1977066498` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 11m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐郷ノ瀬灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`298413274` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"崎瀬鼻灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`48104363` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 31m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"海豚鼻灯台"}'] + +## Style 语义问题样例 + +- `safety_icon_missing` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007768` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-04027289"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Oc W 8s 106m 15M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"若宮灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007824` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐長島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007921` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 22m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"手長島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007971` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐大瀬灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007773` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-l3"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Al Fl W,G 20s 99m W18,G16M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"二神島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007805` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 12m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"的山大島曲り鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007823` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 31m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"海豚鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007824` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐長島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007836` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 101m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"大碆鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007880` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 11m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐郷ノ瀬灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007885` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 5s 46m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"馬ノ頭鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007886` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"崎瀬鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007938` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 25m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"的山大島長崎鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007795` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 11m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"青砂埼灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007835` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 109m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"生月長瀬鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007897` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Al Fl(2) G,W 6s 7m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"平戸牛ケ首灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007919` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"津崎鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007939` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 20m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"肥前横島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007940` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 9m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"南風埼灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007941` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 37m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"下枯木島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007942` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 8s 12m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"牛ケ首灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007977` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m1"}', 'icon:{"icon_image":"light-daytime-1"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl G 3s 10m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"平戸港灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12008014` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 69m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"魚固島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12008025` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"広瀬灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12008034` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 13m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"広瀬導流堤灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12008035` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 19m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"佐世保港弁天島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/412` | source_layer=`p航路標識群` | fid=`12007774` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-l3"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 6s 64m 21M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"高後埼灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/412` | source_layer=`p航路標識群` | fid=`12007943` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 48m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"御床島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/412` | source_layer=`p航路標識群` | fid=`12007944` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 24m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"兜島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/412` | source_layer=`p航路標識群` | fid=`12007945` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 15m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"大蟇島大瀬灯台"}'] + engineering: none diff --git a/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.json b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.json new file mode 100644 index 0000000..a095895 --- /dev/null +++ b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.json @@ -0,0 +1,4782 @@ +{ + "original_feature_instances": 258317, + "engineering_feature_instances": 258317, + "result_count": 516634, + "status_counts": { + "extra_in_engineering": 258317, + "missing_in_engineering": 258317 + }, + "source_layer_issue_counts": [ + { + "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 + }, + { + "status": "extra_in_engineering", + "source_layer": "land_area", + "count": 7961 + }, + { + "status": "missing_in_engineering", + "source_layer": "P陸域", + "count": 7961 + }, + { + "status": "extra_in_engineering", + "source_layer": "hole_area", + "count": 6863 + }, + { + "status": "missing_in_engineering", + "source_layer": "P穴", + "count": 6863 + }, + { + "status": "extra_in_engineering", + "source_layer": "seabed_text_point", + "count": 4499 + }, + { + "status": "missing_in_engineering", + "source_layer": "p底質", + "count": 4499 + }, + { + "status": "extra_in_engineering", + "source_layer": "hazard_boundary_outline", + "count": 2646 + }, + { + "status": "missing_in_engineering", + "source_layer": "P危険界ククリ", + "count": 2646 + }, + { + "status": "extra_in_engineering", + "source_layer": "fixed_fishing_gear_area", + "count": 2479 + }, + { + "status": "missing_in_engineering", + "source_layer": "P漁具定置箇所", + "count": 2479 + }, + { + "status": "extra_in_engineering", + "source_layer": "baseline_line", + "count": 2408 + }, + { + "status": "missing_in_engineering", + "source_layer": "L基本線", + "count": 2408 + }, + { + "status": "extra_in_engineering", + "source_layer": "navigation_marks", + "count": 1885 + }, + { + "status": "missing_in_engineering", + "source_layer": "p航路標識群", + "count": 1885 + }, + { + "status": "missing_in_engineering", + "source_layer": "p地名", + "count": 1444 + }, + { + "status": "extra_in_engineering", + "source_layer": "place_label_sea", + "count": 1444 + }, + { + "status": "extra_in_engineering", + "source_layer": "anchor_caution_hazard_point", + "count": 1426 + }, + { + "status": "missing_in_engineering", + "source_layer": "p投錨注意障害物", + "count": 1426 + }, + { + "status": "missing_in_engineering", + "source_layer": "p地名陸", + "count": 1109 + }, + { + "status": "extra_in_engineering", + "source_layer": "place_label_land", + "count": 1109 + } + ], + "annotation_issue_counts": [ + { + "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 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "anchor_caution_hazard_point", + "count": 1426 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p投錨注意障害物", + "count": 1426 + }, + { + "issue": "text_missing_in_engineering", + "source_layer": "p地名陸", + "count": 1109 + }, + { + "issue": "extra_text_in_engineering", + "source_layer": "place_label_land", + "count": 1109 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p陸上構造物", + "count": 910 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "onshore_structure_point", + "count": 891 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p航行危険障害物", + "count": 664 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "navigation_hazard_point", + "count": 664 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "navigation_marks", + "count": 369 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p航路標識群", + "count": 369 + }, + { + "issue": "extra_text_in_engineering", + "source_layer": "depth_contour_overview", + "count": 350 + }, + { + "issue": "text_missing_in_engineering", + "source_layer": "L概略等深線", + "count": 350 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "facility_boundary_point", + "count": 171 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p施設・境界線等", + "count": 171 + }, + { + "issue": "extra_text_in_engineering", + "source_layer": "clearance_limit_point", + "count": 33 + }, + { + "issue": "text_missing_in_engineering", + "source_layer": "p高さ制限", + "count": 33 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p航路境界等", + "count": 11 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "p錨泊地等", + "count": 7 + }, + { + "issue": "extra_icon_in_engineering", + "source_layer": "anchorage_point", + "count": 7 + }, + { + "issue": "icon_missing_in_engineering", + "source_layer": "pパイロットステーション", + "count": 2 + } + ], + "style_semantic_issue_counts": [ + { + "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 + } + ], + "mismatch_examples": [ + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1001350668|src:baseline_area|geom:MultiPolygon|z:0|x:0|y:0|layer:baseline_area", + "object_id": "fid:-1001350668|src:baseline_area|geom:MultiPolygon", + "fid_legacy": "-1001350668", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_area", + "canonical_object_type": "100-200m", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(200,230,255,1)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "sea-area-fill", + "fill_color": "rgba(200,230,255,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1001350668|src:hole_area|geom:MultiPolygon|z:0|x:0|y:0|layer:hole_area", + "object_id": "fid:-1001350668|src:hole_area|geom:MultiPolygon", + "fid_legacy": "-1001350668", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "hole_area", + "canonical_object_type": "P穴", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "land-hole", + "fill_color": "rgba(0,0,0,0)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1001350668|src:hole_area|geom:Polygon|z:0|x:0|y:0|layer:hole_area", + "object_id": "fid:-1001350668|src:hole_area|geom:Polygon", + "fid_legacy": "-1001350668", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "hole_area", + "canonical_object_type": "P穴", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "land-hole", + "fill_color": "rgba(0,0,0,0)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-100187935|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-100187935|src:baseline_outline|geom:LineString", + "fid_legacy": "-100187935", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1004285450|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1004285450|src:baseline_outline|geom:LineString", + "fid_legacy": "-1004285450", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1004478221|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1004478221|src:baseline_outline|geom:LineString", + "fid_legacy": "-1004478221", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1004766316|src:hole_area|geom:Polygon|z:0|x:0|y:0|layer:hole_area", + "object_id": "fid:-1004766316|src:hole_area|geom:Polygon", + "fid_legacy": "-1004766316", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "hole_area", + "canonical_object_type": "P穴", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "land-hole", + "fill_color": "rgba(0,0,0,0)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1005227929|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1005227929|src:baseline_outline|geom:LineString", + "fid_legacy": "-1005227929", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1006671238|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1006671238|src:baseline_outline|geom:LineString", + "fid_legacy": "-1006671238", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-100667807|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-100667807|src:baseline_outline|geom:LineString", + "fid_legacy": "-100667807", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1008857267|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1008857267|src:baseline_outline|geom:LineString", + "fid_legacy": "-1008857267", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-10089736|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-10089736|src:baseline_outline|geom:LineString", + "fid_legacy": "-10089736", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1011245193|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1011245193|src:baseline_outline|geom:LineString", + "fid_legacy": "-1011245193", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1011298607|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1011298607|src:baseline_outline|geom:LineString", + "fid_legacy": "-1011298607", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1012210428|src:baseline_area|geom:Polygon|z:0|x:0|y:0|layer:baseline_area", + "object_id": "fid:-1012210428|src:baseline_area|geom:Polygon", + "fid_legacy": "-1012210428", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_area", + "canonical_object_type": "2000-3000m", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(132,169,255,1)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "sea-area-fill", + "fill_color": "rgba(132,169,255,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1012615342|src:baseline_area|geom:MultiPolygon|z:0|x:0|y:0|layer:baseline_area", + "object_id": "fid:-1012615342|src:baseline_area|geom:MultiPolygon", + "fid_legacy": "-1012615342", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_area", + "canonical_object_type": "2000-3000m", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(132,169,255,1)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "sea-area-fill", + "fill_color": "rgba(132,169,255,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1012930076|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1012930076|src:baseline_outline|geom:LineString", + "fid_legacy": "-1012930076", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-101311542|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-101311542|src:baseline_outline|geom:LineString", + "fid_legacy": "-101311542", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1013768546|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1013768546|src:baseline_outline|geom:LineString", + "fid_legacy": "-1013768546", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1013908015|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1013908015|src:baseline_outline|geom:LineString", + "fid_legacy": "-1013908015", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1014608693|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1014608693|src:baseline_outline|geom:LineString", + "fid_legacy": "-1014608693", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-101554676|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-101554676|src:baseline_outline|geom:LineString", + "fid_legacy": "-101554676", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1015995687|src:baseline_area|geom:Polygon|z:0|x:0|y:0|layer:baseline_area", + "object_id": "fid:-1015995687|src:baseline_area|geom:Polygon", + "fid_legacy": "-1015995687", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_area", + "canonical_object_type": "10-20m", + "original_components": {}, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(220,250,255,1)\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "fill": [ + { + "layer_id": "sea-area-fill", + "fill_color": "rgba(220,250,255,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1016774370|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1016774370|src:baseline_outline|geom:LineString", + "fid_legacy": "-1016774370", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1017142898|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1017142898|src:baseline_outline|geom:LineString", + "fid_legacy": "-1017142898", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1018128169|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1018128169|src:baseline_outline|geom:LineString", + "fid_legacy": "-1018128169", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1018165694|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1018165694|src:baseline_outline|geom:LineString", + "fid_legacy": "-1018165694", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1020992820|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1020992820|src:baseline_outline|geom:LineString", + "fid_legacy": "-1020992820", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1022609407|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1022609407|src:baseline_outline|geom:LineString", + "fid_legacy": "-1022609407", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1023696695|src:baseline_outline|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:-1023696695|src:baseline_outline|geom:LineString", + "fid_legacy": "-1023696695", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + } + ], + "annotation_issue_examples": [ + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1033259184|src:navigation_marks|geom:Point|z:10|x:880|y:409|layer:navigation_marks", + "object_id": "fid:-1033259184|src:navigation_marks|geom:Point", + "fid_legacy": "-1033259184", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 22m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"手長島灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 3s 22m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "手長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-193326989|src:navigation_marks|geom:Point|z:10|x:880|y:409|layer:navigation_marks", + "object_id": "fid:-193326989|src:navigation_marks|geom:Point", + "fid_legacy": "-193326989", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "navigation_marks", + "canonical_object_type": "沿岸灯台 (15M over)", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-04027289\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Oc W 8s 106m 15M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"若宮灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-04027289", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Oc W 8s 106m 15M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "若宮灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-60468407|src:navigation_marks|geom:Point|z:10|x:880|y:409|layer:navigation_marks", + "object_id": "fid:-60468407|src:navigation_marks|geom:Point", + "fid_legacy": "-60468407", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐長島灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 4s 49m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "壱岐長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007768|src:p航路標識群|geom:Point|z:10|x:880|y:409|layer:p航路標識群", + "object_id": "fid:12007768|src:p航路標識群|geom:Point", + "fid_legacy": "12007768", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-04027289\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Oc W 8s 106m 15M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"若宮灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-04027289", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Oc W 8s 106m 15M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "若宮灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007824|src:p航路標識群|geom:Point|z:10|x:880|y:409|layer:p航路標識群", + "object_id": "fid:12007824|src:p航路標識群|geom:Point", + "fid_legacy": "12007824", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐長島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 49m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007921|src:p航路標識群|geom:Point|z:10|x:880|y:409|layer:p航路標識群", + "object_id": "fid:12007921|src:p航路標識群|geom:Point", + "fid_legacy": "12007921", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 22m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"手長島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 22m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "手長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007971|src:p航路標識群|geom:Point|z:10|x:880|y:409|layer:p航路標識群", + "object_id": "fid:12007971|src:p航路標識群|geom:Point", + "fid_legacy": "12007971", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐大瀬灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 14m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐大瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:16040739|src:p地名陸|geom:Point|z:10|x:880|y:409|layer:p地名陸", + "object_id": "fid:16040739|src:p地名陸|geom:Point", + "fid_legacy": "16040739", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p地名陸", + "canonical_object_type": null, + "original_components": { + "text": [ + "text:{\"text_anchor\":\"bottom\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐市\"}", + "text:{\"text_anchor\":\"top\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iki\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "text": [ + { + "layer_id": "#b#d2#d5#d10#land#C800#EN", + "text_value": "Iki", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "top", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#land#C800#JA", + "text_value": "壱岐市", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "bottom", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:16040854|src:p地名|geom:Point|z:10|x:880|y:409|layer:p地名", + "object_id": "fid:16040854|src:p地名|geom:Point", + "fid_legacy": "16040854", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p地名", + "canonical_object_type": null, + "original_components": { + "text": [ + "text:{\"text_anchor\":\"bottom\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐島\"}", + "text:{\"text_anchor\":\"top\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"IKI SHIMA\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "text": [ + { + "layer_id": "#b#d2#d5#d10#C800#EN", + "text_value": "IKI SHIMA", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "top", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#C800#JA", + "text_value": "壱岐島", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "bottom", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:2138221132|src:place_label_land|geom:Point|z:10|x:880|y:409|layer:place_label_land", + "object_id": "fid:2138221132|src:place_label_land|geom:Point", + "fid_legacy": "2138221132", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "place_label_land", + "canonical_object_type": "p地名陸", + "original_components": {}, + "engineering_components": { + "text": [ + "text:{\"text_anchor\":\"bottom\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐市\"}", + "text:{\"text_anchor\":\"top\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iki\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "text": [ + { + "layer_id": "place-labels-land-en", + "text_value": "Iki", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "top", + "text_size": 10 + }, + { + "layer_id": "place-labels-land-ja", + "text_value": "壱岐市", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "bottom", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:509002199|src:navigation_marks|geom:Point|z:10|x:880|y:409|layer:navigation_marks", + "object_id": "fid:509002199|src:navigation_marks|geom:Point", + "fid_legacy": "509002199", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐大瀬灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl(2) W 6s 14m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "壱岐大瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:906640000|src:place_label_sea|geom:Point|z:10|x:880|y:409|layer:place_label_sea", + "object_id": "fid:906640000|src:place_label_sea|geom:Point", + "fid_legacy": "906640000", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "place_label_sea", + "canonical_object_type": "p地名", + "original_components": {}, + "engineering_components": { + "text": [ + "text:{\"text_anchor\":\"bottom\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐島\"}", + "text:{\"text_anchor\":\"top\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"IKI SHIMA\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "text": [ + { + "layer_id": "place-labels-sea-en", + "text_value": "IKI SHIMA", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "top", + "text_size": 10 + }, + { + "layer_id": "place-labels-sea-ja", + "text_value": "壱岐島", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "bottom", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-1872756166|src:navigation_marks|geom:Point|z:10|x:880|y:410|layer:navigation_marks", + "object_id": "fid:-1872756166|src:navigation_marks|geom:Point", + "fid_legacy": "-1872756166", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "沿岸灯台 (15M over)", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Al Fl W,G 20s 99m W18,G16M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"二神島灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Al Fl W,G 20s 99m W18,G16M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "二神島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-457133759|src:navigation_marks|geom:Point|z:10|x:880|y:410|layer:navigation_marks", + "object_id": "fid:-457133759|src:navigation_marks|geom:Point", + "fid_legacy": "-457133759", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 101m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"大碆鼻灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Iso W 6s 101m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "大碆鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-60468407|src:navigation_marks|geom:Point|z:10|x:880|y:410|layer:navigation_marks", + "object_id": "fid:-60468407|src:navigation_marks|geom:Point", + "fid_legacy": "-60468407", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐長島灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 4s 49m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "壱岐長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:-918710454|src:navigation_marks|geom:Point|z:10|x:880|y:410|layer:navigation_marks", + "object_id": "fid:-918710454|src:navigation_marks|geom:Point", + "fid_legacy": "-918710454", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 12m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"的山大島曲り鼻灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 4s 12m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "的山大島曲り鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007773|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007773|src:p航路標識群|geom:Point", + "fid_legacy": "12007773", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-l3\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Al Fl W,G 20s 99m W18,G16M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"二神島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-l3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Al Fl W,G 20s 99m W18,G16M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "二神島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007805|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007805|src:p航路標識群|geom:Point", + "fid_legacy": "12007805", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 12m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"的山大島曲り鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 12m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "的山大島曲り鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007823|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007823|src:p航路標識群|geom:Point", + "fid_legacy": "12007823", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 31m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"海豚鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 31m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "海豚鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007824|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007824|src:p航路標識群|geom:Point", + "fid_legacy": "12007824", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐長島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 49m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007836|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007836|src:p航路標識群|geom:Point", + "fid_legacy": "12007836", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 101m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"大碆鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Iso W 6s 101m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "大碆鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007880|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007880|src:p航路標識群|geom:Point", + "fid_legacy": "12007880", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 11m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐郷ノ瀬灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 11m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐郷ノ瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007885|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007885|src:p航路標識群|geom:Point", + "fid_legacy": "12007885", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 5s 46m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"馬ノ頭鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 5s 46m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "馬ノ頭鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007886|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007886|src:p航路標識群|geom:Point", + "fid_legacy": "12007886", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"崎瀬鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 14m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "崎瀬鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007938|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007938|src:p航路標識群|geom:Point", + "fid_legacy": "12007938", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 25m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"的山大島長崎鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 25m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "的山大島長崎鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "text_missing_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:1705367191|src:navigation_marks|geom:Point|z:10|x:880|y:410|layer:navigation_marks", + "object_id": "fid:1705367191|src:navigation_marks|geom:Point", + "fid_legacy": "1705367191", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 25m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"的山大島長崎鼻灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 4s 25m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "的山大島長崎鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:1788936661|src:navigation_marks|geom:Point|z:10|x:880|y:410|layer:navigation_marks", + "object_id": "fid:1788936661|src:navigation_marks|geom:Point", + "fid_legacy": "1788936661", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 5s 46m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"馬ノ頭鼻灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 5s 46m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "馬ノ頭鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:1977066498|src:navigation_marks|geom:Point|z:10|x:880|y:410|layer:navigation_marks", + "object_id": "fid:1977066498|src:navigation_marks|geom:Point", + "fid_legacy": "1977066498", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 11m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐郷ノ瀬灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 3s 11m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "壱岐郷ノ瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:298413274|src:navigation_marks|geom:Point|z:10|x:880|y:410|layer:navigation_marks", + "object_id": "fid:298413274|src:navigation_marks|geom:Point", + "fid_legacy": "298413274", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"崎瀬鼻灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl(2) W 6s 14m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "崎瀬鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:48104363|src:navigation_marks|geom:Point|z:10|x:880|y:410|layer:navigation_marks", + "object_id": "fid:48104363|src:navigation_marks|geom:Point", + "fid_legacy": "48104363", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "navigation_marks", + "canonical_object_type": "港湾灯台", + "original_components": {}, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 31m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"海豚鼻灯台\"}" + ] + }, + "original_payloads": {}, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "nav-marks", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl(2) W 6s 31m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "海豚鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "annotation_issue": "extra_text_in_engineering" + } + ], + "style_semantic_issue_examples": [ + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007768|src:p航路標識群|geom:Point|z:10|x:880|y:409|layer:p航路標識群", + "object_id": "fid:12007768|src:p航路標識群|geom:Point", + "fid_legacy": "12007768", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-04027289\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Oc W 8s 106m 15M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"若宮灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-04027289", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Oc W 8s 106m 15M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "若宮灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007824|src:p航路標識群|geom:Point|z:10|x:880|y:409|layer:p航路標識群", + "object_id": "fid:12007824|src:p航路標識群|geom:Point", + "fid_legacy": "12007824", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐長島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 49m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007921|src:p航路標識群|geom:Point|z:10|x:880|y:409|layer:p航路標識群", + "object_id": "fid:12007921|src:p航路標識群|geom:Point", + "fid_legacy": "12007921", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 22m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"手長島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 22m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "手長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007971|src:p航路標識群|geom:Point|z:10|x:880|y:409|layer:p航路標識群", + "object_id": "fid:12007971|src:p航路標識群|geom:Point", + "fid_legacy": "12007971", + "tile": "10/880/409", + "tile_z": 10, + "tile_x": 880, + "tile_y": 409, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐大瀬灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 14m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐大瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007773|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007773|src:p航路標識群|geom:Point", + "fid_legacy": "12007773", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-l3\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Al Fl W,G 20s 99m W18,G16M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"二神島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-l3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Al Fl W,G 20s 99m W18,G16M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "二神島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007805|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007805|src:p航路標識群|geom:Point", + "fid_legacy": "12007805", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 12m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"的山大島曲り鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 12m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "的山大島曲り鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007823|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007823|src:p航路標識群|geom:Point", + "fid_legacy": "12007823", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 31m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"海豚鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 31m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "海豚鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007824|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007824|src:p航路標識群|geom:Point", + "fid_legacy": "12007824", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐長島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 49m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐長島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007836|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007836|src:p航路標識群|geom:Point", + "fid_legacy": "12007836", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 101m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"大碆鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Iso W 6s 101m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "大碆鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007880|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007880|src:p航路標識群|geom:Point", + "fid_legacy": "12007880", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 11m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"壱岐郷ノ瀬灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 11m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "壱岐郷ノ瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007885|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007885|src:p航路標識群|geom:Point", + "fid_legacy": "12007885", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 5s 46m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"馬ノ頭鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 5s 46m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "馬ノ頭鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007886|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007886|src:p航路標識群|geom:Point", + "fid_legacy": "12007886", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"崎瀬鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 14m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "崎瀬鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007938|src:p航路標識群|geom:Point|z:10|x:880|y:410|layer:p航路標識群", + "object_id": "fid:12007938|src:p航路標識群|geom:Point", + "fid_legacy": "12007938", + "tile": "10/880/410", + "tile_z": 10, + "tile_x": 880, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 25m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"的山大島長崎鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 25m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "的山大島長崎鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007795|src:p航路標識群|geom:Point|z:10|x:880|y:411|layer:p航路標識群", + "object_id": "fid:12007795|src:p航路標識群|geom:Point", + "fid_legacy": "12007795", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 11m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"青砂埼灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 11m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "青砂埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007835|src:p航路標識群|geom:Point|z:10|x:880|y:411|layer:p航路標識群", + "object_id": "fid:12007835|src:p航路標識群|geom:Point", + "fid_legacy": "12007835", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 109m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"生月長瀬鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 109m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "生月長瀬鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007897|src:p航路標識群|geom:Point|z:10|x:880|y:411|layer:p航路標識群", + "object_id": "fid:12007897|src:p航路標識群|geom:Point", + "fid_legacy": "12007897", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Al Fl(2) G,W 6s 7m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"平戸牛ケ首灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Al Fl(2) G,W 6s 7m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "平戸牛ケ首灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007919|src:p航路標識群|geom:Point|z:10|x:880|y:411|layer:p航路標識群", + "object_id": "fid:12007919|src:p航路標識群|geom:Point", + "fid_legacy": "12007919", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 49m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"津崎鼻灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 49m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "津崎鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007939|src:p航路標識群|geom:Point|z:10|x:880|y:411|layer:p航路標識群", + "object_id": "fid:12007939|src:p航路標識群|geom:Point", + "fid_legacy": "12007939", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 20m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"肥前横島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 20m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "肥前横島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007940|src:p航路標識群|geom:Point|z:10|x:880|y:411|layer:p航路標識群", + "object_id": "fid:12007940|src:p航路標識群|geom:Point", + "fid_legacy": "12007940", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 9m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"南風埼灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 9m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "南風埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007941|src:p航路標識群|geom:Point|z:10|x:880|y:411|layer:p航路標識群", + "object_id": "fid:12007941|src:p航路標識群|geom:Point", + "fid_legacy": "12007941", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 37m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"下枯木島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 37m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "下枯木島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007942|src:p航路標識群|geom:Point|z:10|x:880|y:411|layer:p航路標識群", + "object_id": "fid:12007942|src:p航路標識群|geom:Point", + "fid_legacy": "12007942", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 8s 12m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"牛ケ首灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Iso W 8s 12m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "牛ケ首灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007977|src:p航路標識群|geom:Point|z:10|x:880|y:411|layer:p航路標識群", + "object_id": "fid:12007977|src:p航路標識群|geom:Point", + "fid_legacy": "12007977", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m1\"}", + "icon:{\"icon_image\":\"light-daytime-1\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl G 3s 10m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"平戸港灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m1", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-1", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl G 3s 10m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "平戸港灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12008014|src:p航路標識群|geom:Point|z:10|x:880|y:411|layer:p航路標識群", + "object_id": "fid:12008014|src:p航路標識群|geom:Point", + "fid_legacy": "12008014", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 69m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"魚固島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 69m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "魚固島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12008025|src:p航路標識群|geom:Point|z:10|x:880|y:411|layer:p航路標識群", + "object_id": "fid:12008025|src:p航路標識群|geom:Point", + "fid_legacy": "12008025", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(2) W 6s 14m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"広瀬灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(2) W 6s 14m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "広瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12008034|src:p航路標識群|geom:Point|z:10|x:880|y:411|layer:p航路標識群", + "object_id": "fid:12008034|src:p航路標識群|geom:Point", + "fid_legacy": "12008034", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 13m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"広瀬導流堤灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 13m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "広瀬導流堤灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12008035|src:p航路標識群|geom:Point|z:10|x:880|y:411|layer:p航路標識群", + "object_id": "fid:12008035|src:p航路標識群|geom:Point", + "fid_legacy": "12008035", + "tile": "10/880/411", + "tile_z": 10, + "tile_x": 880, + "tile_y": 411, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 19m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"佐世保港弁天島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 19m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "佐世保港弁天島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007774|src:p航路標識群|geom:Point|z:10|x:880|y:412|layer:p航路標識群", + "object_id": "fid:12007774|src:p航路標識群|geom:Point", + "fid_legacy": "12007774", + "tile": "10/880/412", + "tile_z": 10, + "tile_x": 880, + "tile_y": 412, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-l3\"}", + "icon:{\"icon_image\":\"symbol-daytime-300\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 6s 64m 21M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"高後埼灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-l3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-300", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 6s 64m 21M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "高後埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007943|src:p航路標識群|geom:Point|z:10|x:880|y:412|layer:p航路標識群", + "object_id": "fid:12007943|src:p航路標識群|geom:Point", + "fid_legacy": "12007943", + "tile": "10/880/412", + "tile_z": 10, + "tile_x": 880, + "tile_y": 412, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 48m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"御床島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Iso W 6s 48m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "御床島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007944|src:p航路標識群|geom:Point|z:10|x:880|y:412|layer:p航路標識群", + "object_id": "fid:12007944|src:p航路標識群|geom:Point", + "fid_legacy": "12007944", + "tile": "10/880/412", + "tile_z": 10, + "tile_x": 880, + "tile_y": 412, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 24m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"兜島灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 24m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "兜島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:12007945|src:p航路標識群|geom:Point|z:10|x:880|y:412|layer:p航路標識群", + "object_id": "fid:12007945|src:p航路標識群|geom:Point", + "fid_legacy": "12007945", + "tile": "10/880/412", + "tile_z": 10, + "tile_x": 880, + "tile_y": 412, + "source_layer": "p航路標識群", + "canonical_object_type": null, + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 15m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"大蟇島大瀬灯台\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 15m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "大蟇島大瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": {}, + "style_semantic_issue": "safety_icon_missing" + } + ] +} \ No newline at end of file diff --git a/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.md b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.md new file mode 100644 index 0000000..60e9b56 --- /dev/null +++ b/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.md @@ -0,0 +1,355 @@ +# NavSea 原始版 vs delivery版渲染审计报告 + +## 范围 + +- 原始样式: `/root/sourceserver/pbf/src/pbf/style.json` +- delivery版样式: `/root/sourceserver/pbf/src/pbf/style.navsea-delivery-karatsu-10nm.json` +- 原始瓦片根目录: `/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles` +- delivery版瓦片根目录: `/home/wwwroot/pbf-delivery-karatsu-20nm` +- 原始 feature 实例数: `258317` +- delivery版 feature 实例数: `258317` +- 审计结果数: `516634` + +## 匹配口径 + +- 主键优先使用 legacy `fid`。 +- 没有 `fid` 的对象,回退到 `geometry + 稳定旧属性`。 +- 审计粒度保留 tile 实例,因为渲染具有 zoom 敏感性。 + +## 结果统计 + +- `extra_in_engineering`: `258317` +- `missing_in_engineering`: `258317` + +## 主要问题层 + +- `extra_in_engineering` | `baseline_outline` | `87709` +- `missing_in_engineering` | `P基本線ククリ` | `87709` +- `extra_in_engineering` | `baseline_area` | `50421` +- `missing_in_engineering` | `P基本線` | `50421` +- `extra_in_engineering` | `depth_contour` | `36460` +- `missing_in_engineering` | `L等深線` | `36460` +- `extra_in_engineering` | `bathymetry_line` | `35940` +- `missing_in_engineering` | `L海底地形` | `35940` +- `extra_in_engineering` | `onshore_structure_line` | `10544` +- `missing_in_engineering` | `L陸上構造物陸` | `10544` +- `extra_in_engineering` | `land_area` | `7961` +- `missing_in_engineering` | `P陸域` | `7961` +- `extra_in_engineering` | `hole_area` | `6863` +- `missing_in_engineering` | `P穴` | `6863` +- `extra_in_engineering` | `seabed_text_point` | `4499` +- `missing_in_engineering` | `p底質` | `4499` +- `extra_in_engineering` | `hazard_boundary_outline` | `2646` +- `missing_in_engineering` | `P危険界ククリ` | `2646` +- `extra_in_engineering` | `fixed_fishing_gear_area` | `2479` +- `missing_in_engineering` | `P漁具定置箇所` | `2479` + +## 标注专项问题 + +- `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` +- `extra_icon_in_engineering` | `anchor_caution_hazard_point` | `1426` +- `icon_missing_in_engineering` | `p投錨注意障害物` | `1426` +- `text_missing_in_engineering` | `p地名陸` | `1109` +- `extra_text_in_engineering` | `place_label_land` | `1109` +- `icon_missing_in_engineering` | `p陸上構造物` | `910` +- `extra_icon_in_engineering` | `onshore_structure_point` | `891` +- `icon_missing_in_engineering` | `p航行危険障害物` | `664` +- `extra_icon_in_engineering` | `navigation_hazard_point` | `664` +- `extra_icon_in_engineering` | `navigation_marks` | `369` +- `icon_missing_in_engineering` | `p航路標識群` | `369` + +## Style 语义专项问题 + +- `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` + +## 差异样例 + +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_area` | fid=`-1001350668` | object=`100-200m` + original: none + engineering: fill=['fill:{"fill_color":"rgba(200,230,255,1)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`hole_area` | fid=`-1001350668` | object=`P穴` + original: none + engineering: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`hole_area` | fid=`-1001350668` | object=`P穴` + original: none + engineering: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-100187935` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1004285450` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1004478221` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`hole_area` | fid=`-1004766316` | object=`P穴` + original: none + engineering: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1005227929` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1006671238` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-100667807` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1008857267` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-10089736` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1011245193` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1011298607` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_area` | fid=`-1012210428` | object=`2000-3000m` + original: none + engineering: fill=['fill:{"fill_color":"rgba(132,169,255,1)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_area` | fid=`-1012615342` | object=`2000-3000m` + original: none + engineering: fill=['fill:{"fill_color":"rgba(132,169,255,1)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1012930076` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-101311542` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1013768546` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1013908015` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1014608693` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-101554676` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_area` | fid=`-1015995687` | object=`10-20m` + original: none + engineering: fill=['fill:{"fill_color":"rgba(220,250,255,1)"}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1016774370` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1017142898` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1018128169` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1018165694` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1020992820` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1022609407` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`-1023696695` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + +## 标注问题样例 + +- `extra_text_in_engineering` | tile=`10/880/409` | source_layer=`navigation_marks` | fid=`-1033259184` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 22m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"手長島灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/409` | source_layer=`navigation_marks` | fid=`-193326989` | object=`沿岸灯台 (15M over)` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-04027289"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Oc W 8s 106m 15M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"若宮灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/409` | source_layer=`navigation_marks` | fid=`-60468407` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐長島灯台"}'] +- `text_missing_in_engineering` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007768` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-04027289"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Oc W 8s 106m 15M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"若宮灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007824` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐長島灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007921` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 22m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"手長島灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007971` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐大瀬灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/409` | source_layer=`p地名陸` | fid=`16040739` | object=`n/a` + original: text=['text:{"text_anchor":"bottom","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐市"}', 'text:{"text_anchor":"top","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iki"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/409` | source_layer=`p地名` | fid=`16040854` | object=`n/a` + original: text=['text:{"text_anchor":"bottom","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐島"}', 'text:{"text_anchor":"top","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"IKI SHIMA"}'] + engineering: none +- `extra_text_in_engineering` | tile=`10/880/409` | source_layer=`place_label_land` | fid=`2138221132` | object=`p地名陸` + original: none + engineering: text=['text:{"text_anchor":"bottom","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐市"}', 'text:{"text_anchor":"top","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iki"}'] +- `extra_text_in_engineering` | tile=`10/880/409` | source_layer=`navigation_marks` | fid=`509002199` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐大瀬灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/409` | source_layer=`place_label_sea` | fid=`906640000` | object=`p地名` + original: none + engineering: text=['text:{"text_anchor":"bottom","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐島"}', 'text:{"text_anchor":"top","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"IKI SHIMA"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`-1872756166` | object=`沿岸灯台 (15M over)` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Al Fl W,G 20s 99m W18,G16M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"二神島灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`-457133759` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 101m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"大碆鼻灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`-60468407` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐長島灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`-918710454` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 12m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"的山大島曲り鼻灯台"}'] +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007773` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-l3"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Al Fl W,G 20s 99m W18,G16M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"二神島灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007805` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 12m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"的山大島曲り鼻灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007823` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 31m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"海豚鼻灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007824` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐長島灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007836` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 101m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"大碆鼻灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007880` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 11m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐郷ノ瀬灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007885` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 5s 46m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"馬ノ頭鼻灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007886` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"崎瀬鼻灯台"}'] + engineering: none +- `text_missing_in_engineering` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007938` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 25m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"的山大島長崎鼻灯台"}'] + engineering: none +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`1705367191` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 25m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"的山大島長崎鼻灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`1788936661` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 5s 46m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"馬ノ頭鼻灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`1977066498` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 11m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐郷ノ瀬灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`298413274` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"崎瀬鼻灯台"}'] +- `extra_text_in_engineering` | tile=`10/880/410` | source_layer=`navigation_marks` | fid=`48104363` | object=`港湾灯台` + original: none + engineering: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 31m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"海豚鼻灯台"}'] + +## Style 语义问题样例 + +- `safety_icon_missing` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007768` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-04027289"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Oc W 8s 106m 15M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"若宮灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007824` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐長島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007921` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 22m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"手長島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/409` | source_layer=`p航路標識群` | fid=`12007971` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐大瀬灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007773` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-l3"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Al Fl W,G 20s 99m W18,G16M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"二神島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007805` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 12m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"的山大島曲り鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007823` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 31m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"海豚鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007824` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐長島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007836` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 101m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"大碆鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007880` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 11m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"壱岐郷ノ瀬灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007885` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 5s 46m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"馬ノ頭鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007886` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"崎瀬鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/410` | source_layer=`p航路標識群` | fid=`12007938` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 25m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"的山大島長崎鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007795` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 11m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"青砂埼灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007835` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 109m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"生月長瀬鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007897` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Al Fl(2) G,W 6s 7m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"平戸牛ケ首灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007919` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 49m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"津崎鼻灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007939` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 20m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"肥前横島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007940` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 9m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"南風埼灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007941` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 37m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"下枯木島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007942` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 8s 12m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"牛ケ首灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12007977` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m1"}', 'icon:{"icon_image":"light-daytime-1"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl G 3s 10m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"平戸港灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12008014` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 69m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"魚固島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12008025` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(2) W 6s 14m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"広瀬灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12008034` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 13m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"広瀬導流堤灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/411` | source_layer=`p航路標識群` | fid=`12008035` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 19m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"佐世保港弁天島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/412` | source_layer=`p航路標識群` | fid=`12007774` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-l3"}', 'icon:{"icon_image":"symbol-daytime-300"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 6s 64m 21M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"高後埼灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/412` | source_layer=`p航路標識群` | fid=`12007943` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 48m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"御床島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/412` | source_layer=`p航路標識群` | fid=`12007944` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 24m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"兜島灯台"}'] + engineering: none +- `safety_icon_missing` | tile=`10/880/412` | source_layer=`p航路標識群` | fid=`12007945` | object=`n/a` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 15m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"大蟇島大瀬灯台"}'] + engineering: none diff --git a/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.domain.json b/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.domain.json new file mode 100644 index 0000000..ba15c1e --- /dev/null +++ b/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.domain.json @@ -0,0 +1,563 @@ +{ + "original_feature_instances": 136461, + "domain_feature_instances": 136461, + "result_count": 136461, + "status_counts": { + "exact_match": 136402, + "mismatch": 59 + }, + "source_layer_issue_counts": [ + { + "status": "mismatch", + "source_layer": "P投錨注意障害物", + "count": 48 + }, + { + "status": "mismatch", + "source_layer": "L739", + "count": 11 + } + ], + "mismatch_examples": [ + { + "status": "mismatch", + "tile": "11/1762/821", + "source_layer": "L739", + "fid_legacy": "10004352", + "canonical_object_type": "平水境界", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(7,7,7,1)\",\"line_dasharray\":[4,1],\"line_width\":1}" + ] + }, + "domain_components": { + "line": [ + "line:{\"line_color\":\"rgba(7,7,7,1)\",\"line_dasharray\":[3,1,1,1,1,1],\"line_width\":1}", + "line:{\"line_color\":\"rgba(7,7,7,1)\",\"line_dasharray\":[4,1],\"line_width\":1}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1762/821", + "source_layer": "L739", + "fid_legacy": "10004353", + "canonical_object_type": "平水境界", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(7,7,7,1)\",\"line_dasharray\":[4,1],\"line_width\":1}" + ] + }, + "domain_components": { + "line": [ + "line:{\"line_color\":\"rgba(7,7,7,1)\",\"line_dasharray\":[3,1,1,1,1,1],\"line_width\":1}", + "line:{\"line_color\":\"rgba(7,7,7,1)\",\"line_dasharray\":[4,1],\"line_width\":1}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1762/821", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001547", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1762/821", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001586", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1762/821", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001612", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1762/822", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15002049", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1763/821", + "source_layer": "L739", + "fid_legacy": "10004353", + "canonical_object_type": "平水境界", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(7,7,7,1)\",\"line_dasharray\":[4,1],\"line_width\":1}" + ] + }, + "domain_components": { + "line": [ + "line:{\"line_color\":\"rgba(7,7,7,1)\",\"line_dasharray\":[3,1,1,1,1,1],\"line_width\":1}", + "line:{\"line_color\":\"rgba(7,7,7,1)\",\"line_dasharray\":[4,1],\"line_width\":1}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1763/821", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001417", + "canonical_object_type": "険悪物", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-420\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-420\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1763/821", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001432", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1763/821", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001484", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1763/821", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001516", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1763/821", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001523", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1763/821", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001525", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1763/821", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001983", + "canonical_object_type": "険悪物", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-420\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-420\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1763/821", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15002047", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "L739", + "fid_legacy": "10004354", + "canonical_object_type": "平水境界", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(7,7,7,1)\",\"line_dasharray\":[4,1],\"line_width\":1}" + ] + }, + "domain_components": { + "line": [ + "line:{\"line_color\":\"rgba(7,7,7,1)\",\"line_dasharray\":[3,1,1,1,1,1],\"line_width\":1}", + "line:{\"line_color\":\"rgba(7,7,7,1)\",\"line_dasharray\":[4,1],\"line_width\":1}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001551", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001581", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001590", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001593", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001610", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001616", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001632", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001634", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001640", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001647", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001657", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001660", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001662", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + }, + { + "status": "mismatch", + "tile": "11/1764/820", + "source_layer": "P投錨注意障害物", + "fid_legacy": "15001673", + "canonical_object_type": "魚礁", + "original_components": { + "fill": [ + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + }, + "domain_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(0,0,0,0)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-428\"}" + ] + } + } + ] +} \ No newline at end of file diff --git a/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.domain.md b/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.domain.md new file mode 100644 index 0000000..f646220 --- /dev/null +++ b/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.domain.md @@ -0,0 +1,121 @@ +# NavSea 原始版 vs Domain 兼容版渲染审计报告 + +## 范围 + +- 原始样式: `/mnt/sda1/www/newpec/style.patched.local.json` +- Domain 样式: `/mnt/sda1/www/newpec/domain/style.domain-legacy-compatible-karatsu-10nm.json` +- 原始瓦片根目录: `/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles` +- Domain 瓦片根目录: `/tmp/pbf-domain-karatsu-10nm-merged` +- 原始 feature 实例数: `136461` +- Domain feature 实例数: `136461` +- 审计结果数: `136461` + +## Domain 口径说明 + +- 主键优先使用 legacy `fid`。 +- 没有 `fid` 的对象,回退到 `geometry + 稳定旧属性`。 +- 审计粒度保留 tile 实例,因为渲染具有 zoom 敏感性。 +- 与旧审计不同,本脚本按 `source_layer_jp` 对齐实例,不按 Domain 标准层名对齐。 + +## 结果统计 + +- `exact_match`: `136402` +- `mismatch`: `59` + +## 主要问题层 + +- `mismatch` | `P投錨注意障害物` | `48` +- `mismatch` | `L739` | `11` + +## 差异样例 + +- `mismatch` | tile=`11/1762/821` | source_layer=`L739` | fid=`10004352` | object=`平水境界` + original: line=['line:{"line_color":"rgba(7,7,7,1)","line_dasharray":[4,1],"line_width":1}'] + domain: line=['line:{"line_color":"rgba(7,7,7,1)","line_dasharray":[3,1,1,1,1,1],"line_width":1}', 'line:{"line_color":"rgba(7,7,7,1)","line_dasharray":[4,1],"line_width":1}'] +- `mismatch` | tile=`11/1762/821` | source_layer=`L739` | fid=`10004353` | object=`平水境界` + original: line=['line:{"line_color":"rgba(7,7,7,1)","line_dasharray":[4,1],"line_width":1}'] + domain: line=['line:{"line_color":"rgba(7,7,7,1)","line_dasharray":[3,1,1,1,1,1],"line_width":1}', 'line:{"line_color":"rgba(7,7,7,1)","line_dasharray":[4,1],"line_width":1}'] +- `mismatch` | tile=`11/1762/821` | source_layer=`P投錨注意障害物` | fid=`15001547` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1762/821` | source_layer=`P投錨注意障害物` | fid=`15001586` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1762/821` | source_layer=`P投錨注意障害物` | fid=`15001612` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1762/822` | source_layer=`P投錨注意障害物` | fid=`15002049` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1763/821` | source_layer=`L739` | fid=`10004353` | object=`平水境界` + original: line=['line:{"line_color":"rgba(7,7,7,1)","line_dasharray":[4,1],"line_width":1}'] + domain: line=['line:{"line_color":"rgba(7,7,7,1)","line_dasharray":[3,1,1,1,1,1],"line_width":1}', 'line:{"line_color":"rgba(7,7,7,1)","line_dasharray":[4,1],"line_width":1}'] +- `mismatch` | tile=`11/1763/821` | source_layer=`P投錨注意障害物` | fid=`15001417` | object=`険悪物` + original: fill=['fill:{"fill_pattern":"fill-daytime-420"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-420"}'] +- `mismatch` | tile=`11/1763/821` | source_layer=`P投錨注意障害物` | fid=`15001432` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1763/821` | source_layer=`P投錨注意障害物` | fid=`15001484` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1763/821` | source_layer=`P投錨注意障害物` | fid=`15001516` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1763/821` | source_layer=`P投錨注意障害物` | fid=`15001523` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1763/821` | source_layer=`P投錨注意障害物` | fid=`15001525` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1763/821` | source_layer=`P投錨注意障害物` | fid=`15001983` | object=`険悪物` + original: fill=['fill:{"fill_pattern":"fill-daytime-420"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-420"}'] +- `mismatch` | tile=`11/1763/821` | source_layer=`P投錨注意障害物` | fid=`15002047` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`L739` | fid=`10004354` | object=`平水境界` + original: line=['line:{"line_color":"rgba(7,7,7,1)","line_dasharray":[4,1],"line_width":1}'] + domain: line=['line:{"line_color":"rgba(7,7,7,1)","line_dasharray":[3,1,1,1,1,1],"line_width":1}', 'line:{"line_color":"rgba(7,7,7,1)","line_dasharray":[4,1],"line_width":1}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001551` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001581` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001590` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001593` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001610` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001616` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001632` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001634` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001640` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001647` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001657` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001660` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001662` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] +- `mismatch` | tile=`11/1764/820` | source_layer=`P投錨注意障害物` | fid=`15001673` | object=`魚礁` + original: fill=['fill:{"fill_pattern":"fill-daytime-428"}'] + domain: fill=['fill:{"fill_color":"rgba(0,0,0,0)"}', 'fill:{"fill_pattern":"fill-daytime-428"}'] diff --git a/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.json b/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.json new file mode 100644 index 0000000..22f494d --- /dev/null +++ b/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.json @@ -0,0 +1,703 @@ +{ + "original_feature_instances": 136461, + "engineering_feature_instances": 136461, + "result_count": 272922, + "status_counts": { + "missing_in_engineering": 136461, + "extra_in_engineering": 136461 + }, + "source_layer_issue_counts": [ + { + "status": "missing_in_engineering", + "source_layer": "P基本線ククリ", + "count": 56582 + }, + { + "status": "extra_in_engineering", + "source_layer": "baseline_outline", + "count": 56582 + }, + { + "status": "missing_in_engineering", + "source_layer": "P基本線", + "count": 30442 + }, + { + "status": "extra_in_engineering", + "source_layer": "baseline_area", + "count": 30442 + }, + { + "status": "missing_in_engineering", + "source_layer": "L等深線", + "count": 17750 + }, + { + "status": "extra_in_engineering", + "source_layer": "depth_contour", + "count": 17750 + }, + { + "status": "missing_in_engineering", + "source_layer": "L海底地形", + "count": 13763 + }, + { + "status": "extra_in_engineering", + "source_layer": "bathymetry_line", + "count": 13763 + }, + { + "status": "missing_in_engineering", + "source_layer": "P陸域", + "count": 4141 + }, + { + "status": "extra_in_engineering", + "source_layer": "land_area", + "count": 4141 + }, + { + "status": "missing_in_engineering", + "source_layer": "P穴", + "count": 3661 + }, + { + "status": "extra_in_engineering", + "source_layer": "hole_area", + "count": 3661 + }, + { + "status": "missing_in_engineering", + "source_layer": "L陸上構造物陸", + "count": 3641 + }, + { + "status": "extra_in_engineering", + "source_layer": "onshore_structure_line", + "count": 3641 + }, + { + "status": "missing_in_engineering", + "source_layer": "p底質", + "count": 1111 + }, + { + "status": "extra_in_engineering", + "source_layer": "seabed_text_point", + "count": 1111 + }, + { + "status": "missing_in_engineering", + "source_layer": "P危険界ククリ", + "count": 829 + }, + { + "status": "extra_in_engineering", + "source_layer": "hazard_boundary_outline", + "count": 829 + }, + { + "status": "missing_in_engineering", + "source_layer": "L基本線", + "count": 619 + }, + { + "status": "extra_in_engineering", + "source_layer": "baseline_line", + "count": 619 + }, + { + "status": "extra_in_engineering", + "source_layer": "navigation_marks", + "count": 574 + }, + { + "status": "missing_in_engineering", + "source_layer": "p航路標識群", + "count": 574 + }, + { + "status": "extra_in_engineering", + "source_layer": "place_label_sea", + "count": 466 + }, + { + "status": "missing_in_engineering", + "source_layer": "p地名", + "count": 466 + }, + { + "status": "missing_in_engineering", + "source_layer": "P漁具定置箇所", + "count": 461 + }, + { + "status": "extra_in_engineering", + "source_layer": "fixed_fishing_gear_area", + "count": 461 + }, + { + "status": "missing_in_engineering", + "source_layer": "P橋りょう等構造物", + "count": 423 + }, + { + "status": "extra_in_engineering", + "source_layer": "bridge_structure", + "count": 423 + }, + { + "status": "extra_in_engineering", + "source_layer": "place_label_land", + "count": 416 + }, + { + "status": "missing_in_engineering", + "source_layer": "p地名陸", + "count": 416 + } + ], + "mismatch_examples": [ + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000001|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000001|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000001", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000001|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000001|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000001", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000023|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000023|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000023", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000023|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000023|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000023", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000024|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000024|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000024", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000024|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000024|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000024", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000042|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000042|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000042", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000042|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000042|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000042", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000055|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000055|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000055", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000055|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000055|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000055", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000056|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000056|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000056", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000056|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000056|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000056", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000058|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000058|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000058", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000058|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000058|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000058", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000059|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000059|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000059", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000059|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000059|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000059", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000069|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000069|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000069", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000069|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000069|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000069", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000073|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000073|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000073", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000073|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000073|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000073", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000081|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000081|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000081", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000081|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000081|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000081", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000092|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000092|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000092", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000092|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000092|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000092", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000094|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000094|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000094", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000094|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000094|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000094", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000096|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000096|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000096", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000096|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000096|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000096", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:4000105|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:P基本線ククリ", + "object_id": "fid:4000105|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000105", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "P基本線ククリ", + "canonical_object_type": null, + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "engineering_components": {} + }, + { + "status": "extra_in_engineering", + "object_instance_id": "fid:4000105|src:P基本線ククリ|geom:LineString|z:0|x:0|y:0|layer:baseline_outline", + "object_id": "fid:4000105|src:P基本線ククリ|geom:LineString", + "fid_legacy": "4000105", + "tile": "0/0/0", + "tile_z": 0, + "tile_x": 0, + "tile_y": 0, + "source_layer": "baseline_outline", + "canonical_object_type": "P基本線ククリ", + "original_components": {}, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + } + } + ] +} \ No newline at end of file diff --git a/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.md b/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.md new file mode 100644 index 0000000..c08c97f --- /dev/null +++ b/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.md @@ -0,0 +1,138 @@ +# NavSea 原始版 vs 工程版渲染审计报告 + +## 范围 + +- 原始样式: `/mnt/sda1/www/newpec/style.patched.local.json` +- 工程样式: `/mnt/sda1/www/newpec/domain/style.domain-legacy-compatible-karatsu-10nm.json` +- 原始瓦片根目录: `/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles` +- 工程瓦片根目录: `/tmp/pbf-domain-karatsu-10nm-merged` +- 原始 feature 实例数: `136461` +- 工程 feature 实例数: `136461` +- 审计结果数: `272922` + +## 匹配口径 + +- 主键优先使用 legacy `fid`。 +- 没有 `fid` 的对象,回退到 `geometry + 稳定旧属性`。 +- 审计粒度保留 tile 实例,因为渲染具有 zoom 敏感性。 + +## 结果统计 + +- `missing_in_engineering`: `136461` +- `extra_in_engineering`: `136461` + +## 主要问题层 + +- `missing_in_engineering` | `P基本線ククリ` | `56582` +- `extra_in_engineering` | `baseline_outline` | `56582` +- `missing_in_engineering` | `P基本線` | `30442` +- `extra_in_engineering` | `baseline_area` | `30442` +- `missing_in_engineering` | `L等深線` | `17750` +- `extra_in_engineering` | `depth_contour` | `17750` +- `missing_in_engineering` | `L海底地形` | `13763` +- `extra_in_engineering` | `bathymetry_line` | `13763` +- `missing_in_engineering` | `P陸域` | `4141` +- `extra_in_engineering` | `land_area` | `4141` +- `missing_in_engineering` | `P穴` | `3661` +- `extra_in_engineering` | `hole_area` | `3661` +- `missing_in_engineering` | `L陸上構造物陸` | `3641` +- `extra_in_engineering` | `onshore_structure_line` | `3641` +- `missing_in_engineering` | `p底質` | `1111` +- `extra_in_engineering` | `seabed_text_point` | `1111` +- `missing_in_engineering` | `P危険界ククリ` | `829` +- `extra_in_engineering` | `hazard_boundary_outline` | `829` +- `missing_in_engineering` | `L基本線` | `619` +- `extra_in_engineering` | `baseline_line` | `619` + +## 差异样例 + +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000001` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000001` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000023` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000023` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000024` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000024` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000042` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000042` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000055` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000055` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000056` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000056` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000058` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000058` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000059` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000059` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000069` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000069` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000073` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000073` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000081` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000081` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000092` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000092` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000094` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000094` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000096` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000096` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `missing_in_engineering` | tile=`0/0/0` | source_layer=`P基本線ククリ` | fid=`4000105` | object=`n/a` + original: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + engineering: none +- `extra_in_engineering` | tile=`0/0/0` | source_layer=`baseline_outline` | fid=`4000105` | object=`P基本線ククリ` + original: none + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] diff --git a/NavSea_Original_vs_Engineering_Render_Audit_Full.json b/NavSea_Original_vs_Engineering_Render_Audit_Full.json new file mode 100644 index 0000000..2ebfeb5 --- /dev/null +++ b/NavSea_Original_vs_Engineering_Render_Audit_Full.json @@ -0,0 +1,10 @@ +{ + "original_feature_instances": 6434060, + "engineering_feature_instances": 6434060, + "result_count": 6434060, + "status_counts": { + "exact_match": 6434060 + }, + "source_layer_issue_counts": [], + "mismatch_examples": [] +} \ No newline at end of file diff --git a/NavSea_Original_vs_Engineering_Render_Audit_Full.md b/NavSea_Original_vs_Engineering_Render_Audit_Full.md new file mode 100644 index 0000000..d18c02c --- /dev/null +++ b/NavSea_Original_vs_Engineering_Render_Audit_Full.md @@ -0,0 +1,29 @@ +# NavSea 原始版 vs 工程版渲染审计报告 + +## 范围 + +- 原始样式: `/home/wwwroot/newpec/style.patched.local.json` +- 工程样式: `/home/wwwroot/newpec/navsea-engineering-full.json` +- 原始瓦片根目录: `/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles` +- 工程瓦片根目录: `/home/wwwroot/pbf-engineering-full` +- 原始 feature 实例数: `6434060` +- 工程 feature 实例数: `6434060` +- 审计结果数: `6434060` + +## 匹配口径 + +- 主键优先使用 legacy `fid`。 +- 没有 `fid` 的对象,回退到 `geometry + 稳定旧属性`。 +- 审计粒度保留 tile 实例,因为渲染具有 zoom 敏感性。 + +## 结果统计 + +- `exact_match`: `6434060` + +## 主要问题层 + +- 没有发现差异。 + +## 差异样例 + +- 没有差异样例。 diff --git a/NavSea_Semantic_Package_Overlay_Design.md b/NavSea_Semantic_Package_Overlay_Design.md new file mode 100644 index 0000000..17fc9af --- /dev/null +++ b/NavSea_Semantic_Package_Overlay_Design.md @@ -0,0 +1,347 @@ +# NavSea 语义分包与叠加渲染设计 + +## 目标 + +本设计说明 NavSea 如何将某一坐标区域内的海图数据按语义拆分成多个 `pbf` 包,并在客户端或 Resolver 侧叠加恢复出与当前整包渲染近似等价的最终视觉结果。 + +这份设计服务于三个目标: + +1. 在不损失海图细节的前提下重构 `pbf` 数据结构。 +2. 让安全相关数据与细节相关数据可以分开交付、缓存、下载和审计。 +3. 为后续离线包、Tile Resolver、按需加载和流量控制提供基础。 + +## 核心结论 + +可以将一个区域的 `pbf` 按语义拆分成多个包。 + +这些包在渲染时叠加后,可以恢复出与当前整包 `pbf` 基本一致的视觉结果。 + +但前提是: + +1. 各包的语义边界稳定。 +2. 样式明确知道每一层来自哪个包。 +3. 叠加顺序固定。 +4. 有专门的分包叠加一致性审计。 + +## 逻辑分层模型 + +当前建议的逻辑层仍采用 `NavSea_Chart_Domain_Model_v1.md` 中定义的三层模型: + +1. `safety_core` +2. `safety_extended` +3. `detail` + +并保留: + +4. `domain_pending` + +说明: + +- `safety_core` 是最低安全底线。 +- `safety_extended` 是重要但允许降级的数据层。 +- `detail` 是信息丰富但不构成最低安全底线的层。 +- `domain_pending` 是尚未完成业务语义重建的过渡层,不应直接成为正式 Chart Domain 的长期成员。 + +## 物理分包模型 + +建议 `v1` 采用“逻辑三层,物理两包”的结构: + +1. `safety.pbf` + 包含: + - `safety_core` + - `safety_extended` + +2. `detail.pbf` + 包含: + - `detail` + +在兼容阶段可允许: + +3. `compat_pending.pbf` + 仅用于兼容迁移期承载少量 `domain_pending` 层。 + +如果不单独出第三包,也可以在迁移期临时将少量 `domain_pending` 兼容层放入 `safety` 包,但必须有审计记录。 + +## 为什么不建议一开始拆成很多小包 + +虽然理论上可以拆成: + +- `hazard.pbf` +- `contour.pbf` +- `marks.pbf` +- `labels.pbf` +- `seabed.pbf` + +但 `v1` 不建议这样做。 + +原因: + +1. 客户端 source 数量会快速膨胀。 +2. 样式复杂度显著增加。 +3. Tile Resolver 逻辑会变重。 +4. 网络请求会被切碎。 +5. 审计维度会显著复杂化。 + +因此 `v1` 先采用两包结构最稳。 + +## 叠加渲染原则 + +语义分包后,最终渲染必须遵守以下原则。 + +### 原则 1:安全层不能被细节层替代 + +任意 `detail` feature 不得被视为 `safety_core` 的替代来源。 + +即使 `detail` 中恰好存在一个对象在视觉上看起来能表达某种危险,也不能把它作为安全底线的替代依据。 + +### 原则 2:Resolver 按包返回,不按 layer/feature 拼装 + +`v1` Resolver 必须按物理包分发,不在客户端做 feature 级或 layer 级重组。 + +也就是说: + +- 返回 `safety` 包 +- 返回 `detail` 包 + +而不是: + +- 从多个包中抽若干 layer +- 再动态重新打成新 tile + +### 原则 3:样式叠加顺序固定 + +客户端的样式层顺序必须固定,不能由请求时动态推断。 + +最基础的顺序建议是: + +1. 背景与底图 +2. `safety` 面层 +3. `detail` 面层 +4. `safety` 线层 +5. `detail` 线层 +6. `safety` 符号层 +7. `detail` 符号层 +8. `safety` 文字层 +9. `detail` 文字层 + +### 原则 4:分包后必须还能恢复旧视觉 + +当前阶段的首要目标不是做新视觉,而是: + +- 新结构 +- 旧视觉 + +所以“分包叠加结果”和“原始整包结果”必须可做等价审计。 + +## 推荐消费模式 + +### 模式 A:单 Style,多 Source 叠加 + +这是当前最推荐的模式。 + +样式中声明: + +- `domain_safety` +- `domain_detail` + +然后不同 layer 从不同 source 取数据。 + +优点: + +1. 最符合 MapLibre / Mapbox Style 常规工作方式。 +2. 不需要客户端自行拼瓦片。 +3. 便于渐进迁移旧样式。 +4. 最适合当前阶段的视觉等价验证。 + +### 模式 B:Resolver 选择性返回包 + +Resolver 按场景返回: + +- 只返回 `safety` +- 返回 `safety + detail` + +客户端仍按固定 source/固定 style 消费。 + +优点: + +1. 更适合离线/带宽优化。 +2. 可以基于业务场景做包级裁剪。 + +要求: + +- 样式必须在缺少 `detail` 时仍可安全退化。 +- 不允许缺少 `safety_core` 时依赖 `detail` 伪装补齐。 + +## 推荐目录结构 + +### 局部测试目录 + +```text +/home/wwwroot/pbf-domain-karatsu-10nm/ + ├── safety/{z}/{x}/{y}.pbf + ├── detail/{z}/{x}/{y}.pbf + ├── chart_domain_build_audit.json + └── chart_domain_build_audit.md +``` + +### 全国目录建议 + +```text +/home/wwwroot/pbf-domain-full/ + ├── safety/{z}/{x}/{y}.pbf + ├── detail/{z}/{x}/{y}.pbf + ├── build_audit.json + ├── build_audit.md + ├── overlay_audit.json + └── overlay_audit.md +``` + +## 样式组织建议 + +### 兼容阶段 + +优先使用: + +- 旧样式规则 +- 新 Domain 包 source + +也就是当前已经验证过的路径: + +- 保留旧 `paint` +- 保留旧 `layout` +- 保留旧 `filter` +- 仅替换 `source` 与 `source-layer` + +### 清理阶段 + +在视觉对齐后,再逐步: + +1. 去掉旧日文 `layer id` +2. 去掉旧字段依赖 +3. 收敛到纯标准语义 layer +4. 最终形成新的可读样式层命名 + +## 审计设计 + +分包以后,必须增加一套新的“叠加一致性审计”。 + +建议至少做三类审计。 + +### 1. 构建审计 + +检查: + +- 每个 feature 被分到了哪个包 +- 是否有 feature 被错误丢弃 +- `domain_pending` 数量和明细 +- 包内实际 layer 集合 + +当前已有样例: + +- `chart_domain_build_audit.json` +- `chart_domain_build_audit.md` + +### 2. 渲染等价审计 + +比较: + +- 原始版:原始样式 + 原始 `pbf` +- 分包版:兼容样式 + `safety/detail` 叠加结果 + +审计单位: + +- `fid` 优先 +- 无 `fid` 用 `geometry + 稳定旧属性` +- 保留 tile instance 粒度 + +注意: + +- 分包版不能按新标准 layer 名直接对比 +- 必须按 `source_layer_jp` 或 trace 回溯后的旧身份对齐 + +当前已经为此新建了 Domain 专用脚本方向: + +- `src/Domain/navsea_domain_render_audit.py` + +### 3. 包级可用性审计 + +验证以下两种消费结果: + +1. `safety` 单独加载 +2. `safety + detail` 叠加加载 + +目标: + +- `safety` 单独时,满足最低安全表达 +- `safety + detail` 时,尽可能恢复原始整包视觉 + +## 推荐审计结论口径 + +建议把审计结论分成三档: + +1. `safe_minimum_pass` + `safety` 单独可用于最低安全判断 + +2. `overlay_equivalent_pass` + `safety + detail` 叠加结果与原始版视觉等价 + +3. `pending_semantic_gap` + 存在尚未完成业务语义重建的层,仅靠兼容模式暂时保留 + +## 当前阶段的正确顺序 + +推荐按以下顺序推进,不要反过来: + +1. 重构 `pbf` 内部结构 +2. 用新结构恢复旧视觉 +3. 用 Domain 专用审计确认“叠加等价” +4. 再做分包消费策略和 Resolver 策略 +5. 最后才做新的 UI/新视觉/新风格 + +## 当前阶段的可接受实现 + +就当前工程而言,以下做法是合理的: + +1. 区域级生成 + 例如先做唐津 10 海里 + +2. 输出两包 + - `safety` + - `detail` + +3. 提供一个兼容样式 + 目标是“看起来和旧版一样” + +4. 提供 Domain 专用审计 + 不修改原有工程版审计体系 + +这意味着: + +- 旧体系继续可用 +- Domain 体系独立演进 +- 两条线彼此不污染 + +## 后续实施建议 + +建议下一阶段按以下顺序执行: + +1. 固化唐津 10 海里 Domain 审计结论 +2. 将唐津流程推广到九州区域 +3. 补齐 `domain_pending` 的正式业务语义 +4. 在全国范围生成 `safety/detail` 双包 +5. 增加 `safety-only` 与 `safety+detail` 双场景验收 + +## 总结 + +某个坐标区域的 `pbf` 完全可以按语义拆成多个包。 + +这些包叠加后,可以恢复到与当前整包渲染近似等价的状态。 + +这不是额外能力,而是 NavSea Domain 设计成立的核心验证点之一。 + +真正需要控制的,不是“能不能拆”,而是: + +1. 语义边界是否稳定 +2. 样式是否固定知道从哪个包取哪种对象 +3. `detail` 是否错误替代 `safety` +4. 是否存在分包叠加的一致性审计 diff --git a/NavSea_九州_Delivery_双用途图层分类_2026-04-05.md b/NavSea_九州_Delivery_双用途图层分类_2026-04-05.md new file mode 100644 index 0000000..e87bd41 --- /dev/null +++ b/NavSea_九州_Delivery_双用途图层分类_2026-04-05.md @@ -0,0 +1,266 @@ +# 九州 Delivery 图层双用途分类 + +## 目的 + +本文把当前 `kyushu delivery` 实际使用的图层,按两个业务方向重新整理: + +1. 航海用 +2. 钓鱼用 + +这里的“分类”不是按历史样式命名分,而是按使用目标分: + +- 航海用: + - 用于大范围危险早察觉 + - 用于碰撞风险检测 + - 用于航行实时检测 + - 用于航线设计 + - 原则上弱化过细水深细节,强化危险物、障碍物、净空、导助航信息 +- 钓鱼用: + - 用于看海底细节 + - 用于看鱼礁、穴、底质、海底起伏 + - 原则上强化海底信息与渔场相关信息 + +## 当前实际图层来源 + +本次整理基于当前 [`style.navsea-delivery-kyushu.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-kyushu.json) 中实际消费的 source-layer: + +- `baseline_area` +- `anchor_caution_hazard_area` +- `navigation_hazard_area` +- `fixed_fishing_gear_area` +- `anchorage_area` +- `facility_boundary_area` +- `submerged_reef_area` +- `bridge_structure` +- `onshore_structure_area` +- `land_area` +- `hole_area` +- `bathymetry_line` +- `depth_contour` +- `depth_contour_overview` +- `seabed_line` +- `baseline_line` +- `onshore_structure_line` +- `depth_zone_739` +- `depth_zone_741` +- `clearance_limit_line` +- `baseline_outline` +- `hazard_boundary_outline` +- `navigation_hazard_outline` +- `anchor_caution_hazard_outline` +- `anchorage_outline` +- `facility_boundary_outline` +- `clip_outline_754` +- `navigation_hazard_point` +- `anchorage_point` +- `anchor_caution_hazard_point` +- `navigation_marks` +- `facility_boundary_point` +- `pilot_station_point` +- `onshore_structure_point` +- `seabed_text_point` +- `clearance_limit_point` +- `place_label_sea` +- `place_label_land` + +## 一、航海用 + +## 定义 + +航海用图层的目标是: + +- 让危险尽早出现 +- 让障碍物易检测 +- 让通航辅助信息明确 +- 让碰撞、净空、航线设计所需信息优先 + +## A. 航海用核心层 + +这些层建议作为“航海用”的主显示层,优先级最高。 + +| 图层 | 作用 | 归类理由 | +| --- | --- | --- | +| `land_area` | 陆地区域 | 航行安全的绝对边界。 | +| `baseline_area` | 基础海陆/岸线容器 | 当前样式里承载海面、水域、浅滩、未测区等安全底图。 | +| `navigation_hazard_area` | 航行危险区域 | 直接通航危险。 | +| `navigation_hazard_outline` | 航行危险边界 | 让危险范围更早被看见。 | +| `navigation_hazard_point` | 航行危险点 | 暗礁、沉船、危险障碍点等碰撞检测核心对象。 | +| `anchor_caution_hazard_area` | 注意障碍区域 | 虽是“投锚注意”命名,但实际含鱼礁、障碍、险恶物等,应纳入危险感知。 | +| `anchor_caution_hazard_outline` | 注意障碍边界 | 让范围型障碍物更容易提早察觉。 | +| `anchor_caution_hazard_point` | 注意障碍点 | 对航线绕避也重要,不能只放在钓鱼用。 | +| `fixed_fishing_gear_area` | 定置渔具区 | 对航行规避很重要,是碰撞/缠绕风险层。 | +| `submerged_reef_area` | 潜堤/潜礁区 | 本质是危险地形。 | +| `navigation_marks` | 航标/灯标/浮标 | 实时航行检测、定位、航线设计的核心参考。 | +| `bridge_structure` | 桥梁等结构物 | 通航结构风险与通道判断核心。 | +| `clearance_limit_line` | 净空限制线 | 航线设计、通过性判断核心。 | +| `clearance_limit_point` | 净空限制点 | 直接承载净空值与限制提示。 | +| `facility_boundary_area` | 设施/边界区域 | 港区、设施边界、禁近范围对航行有约束。 | +| `facility_boundary_outline` | 设施/边界线 | 轮廓比填充更适合早察觉。 | +| `facility_boundary_point` | 设施符号点 | 港湾设施、边界点对避让和定位有用。 | +| `anchorage_area` | 锚地区域 | 航线设计、航泊决策要素。 | +| `anchorage_outline` | 锚地边界 | 区域边界比填充更重要。 | +| `anchorage_point` | 锚地符号点 | 图面识别有帮助。 | +| `pilot_station_point` | 引航站 | 航海服务信息。 | + +## B. 航海用辅助层 + +这些层应该保留,但视觉权重应低于危险层和航标层。 + +| 图层 | 作用 | 建议 | +| --- | --- | --- | +| `depth_contour_overview` | 概略等深线 | 保留整体深浅趋势,不必太密。 | +| `depth_contour` | 等深线 | 只保留关键层级或降低对比度。 | +| `bathymetry_line` | 海底辅助线 | 仅作地形参考,不应压过危险层。 | +| `depth_zone_739` | 水域边界线 | 可作背景辅助。 | +| `depth_zone_741` | 规则/边界线 | 可作背景辅助。 | +| `onshore_structure_area` | 岸边结构物面 | 近岸定位参考。 | +| `onshore_structure_line` | 岸边结构物线 | 近岸定位参考。 | +| `onshore_structure_point` | 陆标点 | 对近岸定位有帮助。 | +| `place_label_sea` | 海上地名 | 保留基础定位语义。 | +| `place_label_land` | 陆上地名 | 保留基础定位语义。 | + +## C. 航海用建议弱化或隐藏层 + +这些层不是不能存在,而是对“危险早察觉”不是第一优先。 + +| 图层 | 原因 | +| --- | --- | +| `depth-contour-labels` / `bathymetry-depth-labels` | 过密时会压住危险点、障碍点、航标。 | +| `bottom-material-labels` | 对通航安全不是第一优先。 | +| `hole_area` | 对航海是补充信息,不是主风险提示层。 | +| `seabed_line` | 更偏海底阅读,不是碰撞检测核心层。 | + +## 二、钓鱼用 + +## 定义 + +钓鱼用图层的目标是: + +- 让海底起伏更清楚 +- 让鱼礁、穴、底质、海底结构更容易被发现 +- 让选点时更容易判断地形与鱼群聚集可能性 + +## A. 钓鱼用核心层 + +这些层建议作为“钓鱼用”的主显示层,优先级最高。 + +| 图层 | 作用 | 归类理由 | +| --- | --- | --- | +| `depth_contour` | 等深线 | 看坡、脊、沟、坎的核心。 | +| `depth_contour_overview` | 概略等深线 | 看大地形趋势、找整体结构。 | +| `bathymetry_line` | 海底地形辅助线 | 对细看海底很有帮助。 | +| `bathymetry-depth-labels` | 水深数字 | 直接判断具体水深。 | +| `depth-contour-labels` | 等深线文字 | 帮助快速读线。 | +| `seabed_text_point` | 底质标注点 | 泥、沙、砾、壳等底质是钓点判断核心。 | +| `seabed_line` | 海底线 | 海底细节辅助。 | +| `submerged_reef_area` | 潜堤/潜礁区 | 渔场相关高价值信息。 | +| `anchor_caution_hazard_point` | 鱼礁/障碍/注意点 | 这里面实际包含鱼礁与障碍类点,是钓鱼用关键层。 | +| `anchor_caution_hazard_area` | 注意障碍区域 | 相关鱼礁/障碍区域也应被看清。 | +| `hole_area` | 穴/凹地区域 | 明确属于你提到的钓鱼用重点。 | +| `fixed_fishing_gear_area` | 渔具区 | 与渔业活动分布高度相关。 | + +## B. 钓鱼用辅助层 + +这些层应保留,用于定位和安全感知,但不应压过海底信息。 + +| 图层 | 作用 | 建议 | +| --- | --- | --- | +| `land_area` | 陆地背景 | 保留基本定位。 | +| `baseline_area` | 海面/岸线底图 | 保留基础背景。 | +| `navigation_marks` | 航标定位参考 | 便于回点、识别位置,但权重低于海底层。 | +| `navigation_hazard_point` | 危险点 | 保留安全底线提示。 | +| `navigation_hazard_area` | 危险区 | 保留安全底线提示。 | +| `facility_boundary_area` | 港区设施 | 近岸定位参考。 | +| `facility_boundary_point` | 设施点 | 近岸定位参考。 | +| `onshore_structure_point` | 陆标点 | 回点/定位参考。 | +| `place_label_sea` | 海上地名 | 位置参考。 | +| `place_label_land` | 陆上地名 | 位置参考。 | + +## C. 钓鱼用建议弱化层 + +| 图层 | 原因 | +| --- | --- | +| `clearance_limit_line` / `clearance_limit_point` | 对钓点选择不是核心。 | +| `pilot_station_point` | 对钓鱼不是重点。 | +| `anchorage_area` / `anchorage_outline` / `anchorage_point` | 可保留但不应抢视觉。 | +| `bridge_structure` | 只在局部近岸场景有帮助。 | + +## 三、按产品方向的最终建议 + +## 1. 航海用建议 + +如果目标是: + +- 危险碰撞检测 +- 航行实时检测 +- 航线设计 + +建议采用: + +- 强化: + - `navigation_hazard_*` + - `anchor_caution_hazard_*` + - `fixed_fishing_gear_area` + - `submerged_reef_area` + - `navigation_marks` + - `bridge_structure` + - `clearance_limit_*` + - `facility_boundary_*` +- 保留但降权: + - `depth_contour` + - `bathymetry_line` + - `seabed_text_point` + - `hole_area` + +一句话总结: + +- 航海用应该是“危险物优先、导助航优先、深度细节退后”。 + +## 2. 钓鱼用建议 + +如果目标是: + +- 找地形 +- 找鱼礁 +- 看底质 +- 看海底细节 + +建议采用: + +- 强化: + - `depth_contour` + - `depth_contour_overview` + - `bathymetry_line` + - `bathymetry-depth-labels` + - `depth-contour-labels` + - `seabed_text_point` + - `seabed_line` + - `submerged_reef_area` + - `anchor_caution_hazard_*` + - `hole_area` +- 保留但降权: + - `navigation_marks` + - `navigation_hazard_*` + - `facility_boundary_*` + - `clearance_limit_*` + +一句话总结: + +- 钓鱼用应该是“海底信息优先、鱼礁穴位优先、安全层保底但不抢主视觉”。 + +## 四、建议的后续实施方式 + +下一步如果要真正落产品,我建议不要继续只维护一套 style,而是拆成两个 profile: + +1. `delivery-navigation` + - 面向航海安全、碰撞检测、实时航行 +2. `delivery-fishing` + - 面向钓点、海底结构、鱼礁/穴/底质阅读 + +优先级建议: + +1. 先保持同一套 PBF +2. 只分两套 style +3. 先做视觉权重拆分,不急着拆数据 + +这样改动最小,但业务方向会清楚很多。 diff --git a/NavSea_九州_Delivery_对象属性分组_2026-04-07.md b/NavSea_九州_Delivery_对象属性分组_2026-04-07.md new file mode 100644 index 0000000..28c81cf --- /dev/null +++ b/NavSea_九州_Delivery_对象属性分组_2026-04-07.md @@ -0,0 +1,434 @@ +# 九州 Delivery 对象属性分组 + +## 目的 + +本文不再按“航海用 / 钓鱼用”分,而是按对象属性与业务语义相同的 group 重新整理当前 `kyushu delivery` 图层。 + +整理目标是: + +- 让后续 style 拆分时,先按对象类别看清当前图层结构 +- 明确每一组对象当前对应哪些 `source-layer` +- 明确每一组对象当前实际由哪些 render layer 在画 + +这里的“group”按业务对象语义来定,例如: + +- 等深线 +- 鱼礁 +- 灯塔 +- 港口灯 +- 渔网 +- 海上标识 +- 陆地设施 +- 桥梁 / 跨空线 +- 海底质 +- 海底危险物 + +## 基础说明 + +本次整理基于当前样式: + +- [`style.navsea-delivery-kyushu.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-kyushu.json) + +说明: + +- `source-layer` + - 指 delivery PBF 中的语义层 +- `render layer` + - 指样式里的具体绘制层 id +- 一个 group 可能对应多个 `source-layer` +- 一个 `source-layer` 也可能被拆成多个 render layer 表现 + +## 1. 等深线 + +## 含义 + +- 主要表达海底深浅变化与地形坡坎 +- 是读海底结构的主线索 + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `depth_contour` | +| source-layer | `depth_contour_overview` | +| source-layer | `bathymetry_line` | +| render layer | `depth-contours` | +| render layer | `depth-contours-major` | +| render layer | `depth-contour-labels` | +| render layer | `depth-contours-major-labels` | +| render layer | `bathymetry-support` | +| render layer | `bathymetry-depth-labels` | + +## 说明 + +- `depth_contour` + - 主等深线 +- `depth_contour_overview` + - 概略等深线 +- `bathymetry_line` + - 海底辅助线与水深数字承载线 + +## 2. 鱼礁 + +## 含义 + +- 鱼礁、人工礁、抛锚注意障碍中的鱼礁类对象 +- 对钓鱼和避碰都重要 + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `anchor_caution_hazard_area` | +| source-layer | `anchor_caution_hazard_outline` | +| source-layer | `anchor_caution_hazard_point` | +| source-layer | `submerged_reef_area` | +| render layer | `hazard-polygons` | +| render layer | `anchor-danger-outline` | +| render layer | `anchor-hazard-points` | +| render layer | `anchor-hazard-points-428` | +| render layer | `submerged-structures` | + +## 说明 + +- 当前“鱼礁”并不是单独一层 +- 主要散落在: + - `anchor_caution_hazard_*` + - `submerged_reef_area` +- 后续如果要单做钓鱼版,建议把鱼礁从 `anchor_caution_hazard_*` 里再细拆出来 + +## 3. 灯塔 + +## 含义 + +- 大型灯塔、沿岸灯塔、航海定位核心灯标 + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `navigation_marks` | +| render layer | `nav-marks-harbor-lighthouses` | +| render layer | `nav-marks-breakwater-lighthouses` | +| render layer | `nav-light-arc` | +| render layer | `nav-light-flare` | +| render layer | `nav-mark-labels` | +| render layer | `nav-light-abbr-labels` | + +## 说明 + +- 当前样式中,灯塔类都从 `navigation_marks` 分流出来 +- 弧光与 flare 仍是同一个 `source-layer` 上的附加表现 + +## 4. 港口灯 + +## 含义 + +- 港口灯、防波堤灯、近港入口灯标 +- 属于航海用的强引导对象 + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `navigation_marks` | +| render layer | `nav-marks-harbor-lighthouses` | +| render layer | `nav-marks-breakwater-lighthouses` | +| render layer | `nav-light-flare` | +| render layer | `nav-mark-labels` | +| render layer | `nav-light-abbr-labels` | + +## 说明 + +- “港口灯”目前不是单独 source-layer +- 依靠 `navigation_marks` 内部的 `display_code` / 语义分层来区分 + +## 5. 渔网 / 渔具 + +## 含义 + +- 定置渔具、渔网、渔场作业相关区域 +- 对航行规避与钓点判断都很重要 + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `fixed_fishing_gear_area` | +| render layer | `fishery-areas` | +| render layer | `fishery-areas-outline` | + +## 说明 + +- 这是当前最接近“渔网 / 渔具”独立 group 的一组 +- 后续如果要单做渔业专题层,可以直接从这一组开始 + +## 6. 海上标识 + +## 含义 + +- 浮标、灯浮标、灯标、AIS、一般航标与引导标识 +- 用于导助航、回点、通航识别 + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `navigation_marks` | +| render layer | `nav-marks-small-lights` | +| render layer | `nav-marks-light-beacons` | +| render layer | `nav-marks` | +| render layer | `nav-light-flare` | +| render layer | `nav-mark-labels` | +| render layer | `nav-light-abbr-labels` | + +## 说明 + +- 这是一个大 group +- 当前内部实际又包含: + - 小灯 + - 灯标 + - 浮标 + - 其他海上标识 +- 如后续要再细分,可从 `navigation_marks` 内继续拆: + - `display_code` + - `shape_class_code` + - `chart_symbol_code` + +## 7. 陆地设施 + +## 含义 + +- 陆上结构物 +- 港口/设施边界相关点面 +- 可用于近岸定位和设施识别 + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `facility_boundary_area` | +| source-layer | `facility_boundary_outline` | +| source-layer | `facility_boundary_point` | +| source-layer | `onshore_structure_area` | +| source-layer | `onshore_structure_line` | +| source-layer | `onshore_structure_point` | +| render layer | `facility-zones` | +| render layer | `facility-zone-outline` | +| render layer | `facility-points` | +| render layer | `land-structures-area` | +| render layer | `land-structures-line` | +| render layer | `landmark-points` | +| render layer | `landmark-point-fallback` | + +## 说明 + +- 这组里其实包含两类对象: + - 港口设施 / 边界设施 + - 一般陆上结构物 / 地标 +- 如果后续要更清楚,建议再拆成: + - 港口设施 + - 陆标设施 + +## 8. 桥梁 / 跨空线 + +## 含义 + +- 桥梁 +- 净空限制 +- 影响通过性判断的跨越结构 + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `bridge_structure` | +| source-layer | `clearance_limit_line` | +| source-layer | `clearance_limit_point` | +| render layer | `bridge-area` | +| render layer | `bridge-outline` | +| render layer | `height-limit-line` | +| render layer | `height-limit-points` | +| render layer | `height-limit-name-labels` | +| render layer | `height-limit-value-labels` | + +## 说明 + +- “桥梁”和“跨空线/净空线”当前是两组 source-layer +- 但从业务上可以放在同一个大 group + +## 9. 海底质 + +## 含义 + +- 泥、沙、砾、壳、岩等底质信息 +- 对钓鱼、底拖、地形理解很重要 + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `seabed_text_point` | +| source-layer | `seabed_line` | +| render layer | `bottom-material-labels` | +| render layer | `subsea-cables` | + +## 说明 + +- `seabed_text_point` + - 明确是底质文字层 +- `seabed_line` + - 当前命名较宽,样式里实际由 `subsea-cables` 在消费 +- 这一组后续建议再查清: + - `seabed_line` 到底是海底辅助线,还是混有其他线性海底对象 + +## 10. 海底危险物 + +## 含义 + +- 暗礁、沉船、露岩、洗岩、浅滩、危险障碍、潜堤等 +- 这是航行安全核心 group + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `navigation_hazard_area` | +| source-layer | `navigation_hazard_outline` | +| source-layer | `navigation_hazard_point` | +| source-layer | `anchor_caution_hazard_area` | +| source-layer | `anchor_caution_hazard_outline` | +| source-layer | `anchor_caution_hazard_point` | +| source-layer | `submerged_reef_area` | +| source-layer | `baseline_area` | +| render layer | `navigation-hazard-polygons` | +| render layer | `navigation-hazard-outline` | +| render layer | `hazard-points` | +| render layer | `hazard-polygons` | +| render layer | `anchor-danger-outline` | +| render layer | `anchor-hazard-points` | +| render layer | `anchor-hazard-points-428` | +| render layer | `submerged-structures` | +| render layer | `shoal-danger-area` | +| render layer | `unsurveyed-area` | + +## 说明 + +- 这是当前最复杂的一组 +- 里面混合了: + - 直接航行危险物 + - 抛锚注意危险物 + - 潜堤/潜礁 + - 浅滩/未测区域背景提示 +- 后续若做航海版,建议把这一组作为最高优先级 group + +## 11. 锚地 + +## 含义 + +- 锚地、锚泊区、锚泊相关符号 + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `anchorage_area` | +| source-layer | `anchorage_outline` | +| source-layer | `anchorage_point` | +| render layer | `anchorage-areas` | +| render layer | `anchorage-outline` | +| render layer | `anchorage-symbols` | + +## 12. 引航 / 航海服务 + +## 含义 + +- 引航站 +- 其他后续可加入的航海服务点 + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `pilot_station_point` | +| render layer | `pilot-station-points` | + +## 13. 陆海背景与海岸线 + +## 含义 + +- 海陆底图 +- 岸线、浅滩、河口、水域背景 +- 是所有其他 group 的底板 + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `baseline_area` | +| source-layer | `baseline_line` | +| source-layer | `baseline_outline` | +| source-layer | `land_area` | +| source-layer | `hole_area` | +| render layer | `sea-area-fill` | +| render layer | `tidal-flat` | +| render layer | `river-water` | +| render layer | `unsurveyed-area` | +| render layer | `shoal-danger-area` | +| render layer | `coast-structures-area` | +| render layer | `coast-structures-line` | +| render layer | `clip-outline` | +| render layer | `land-area` | +| render layer | `land-hole` | + +## 说明 + +- 这组不是“专题对象”,更像基础底板 +- 但在 style 组织上必须单列,因为很多危险层是叠在这组之上的 + +## 14. 地名与定位参考 + +## 含义 + +- 海上地名 +- 陆上地名 +- 用于读图与定位 + +## 当前对应层 + +| 类型 | 当前层 | +| --- | --- | +| source-layer | `place_label_sea` | +| source-layer | `place_label_land` | +| render layer | `place-labels-sea-en` | +| render layer | `place-labels-sea-ja` | +| render layer | `place-labels-land-en` | +| render layer | `place-labels-land-ja` | + +## 15. 当前最值得后续继续细拆的 group + +按后续 style / 产品价值排序,最值得再往下细拆的是这几组: + +1. 海底危险物 + - 需要拆清“航行危险物 / 抛锚注意危险物 / 鱼礁 / 潜堤 / 浅滩 / 未测区” +2. 海上标识 + - 需要拆清“灯塔 / 港口灯 / 灯标 / 灯浮标 / 一般浮标 / AIS” +3. 陆地设施 + - 需要拆清“港口设施 / 陆标设施 / 一般地标” +4. 海底质 + - 需要拆清“底质文字 / 海底辅助线 / 海底电缆或其他海底线” + +## 16. 推荐的后续落地方向 + +如果下一步要继续推进 delivery 版本组织,建议顺序是: + +1. 先保持同一套 PBF +2. 先把 style 内部按本文件的 group 重排 +3. 再决定哪些 group 要继续拆成单独 profile + +建议优先可见的 profile 方向: + +1. `navigation-core` + - 强化:海底危险物、海上标识、桥梁 / 跨空线、锚地、引航 +2. `fishing-detail` + - 强化:等深线、鱼礁、海底质、穴、海底结构 diff --git a/STEP_RECORD.md b/STEP_RECORD.md index c717174..287bfd2 100644 --- a/STEP_RECORD.md +++ b/STEP_RECORD.md @@ -1,6 +1,6 @@ # 项目步骤记录 -最后更新:`2026-04-02 12:03` +最后更新:`2026-04-08 19:32` 仓库:`/root/sourceserver/pbf` 远端:`ssh://git@nas:2222/tei/pbf.git` @@ -104,10 +104,260 @@ - 已完成 `20nm final` 全量重生并切到线上 - 当前整套 `20nm final` 都是当前 builder 生成的新版本,不再是只修单瓦片 +## 2026-04-03 canonical_object_type 去日文推进 + +### 1. 本轮代码侧已完成 + +- 在 [`navsea_tile_builder.py`](/root/sourceserver/pbf/navsea_tile_builder.py) 中把: + - `canonical_object_type` 的内部原值 + - 和最终 release 输出值 + 分开处理 +- 保留内部旧值给: + - DB render rule + - field value rule + - 现有 builder 语义推断 +- 最终输出到 delivery / final PBF 的 `canonical_object_type` 改为稳定 ASCII 值 +- 已同步改: + - [`src/pbf/style.navsea-delivery-karatsu-10nm.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-karatsu-10nm.json) + - [`src/pbf/style.navsea-delivery-karatsu-20nm-final.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-karatsu-20nm-final.json) + - [`src/pbf/style.navsea-delivery-kyushu.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-kyushu.json) +- 当前 style 中原先直接依赖的日文 `canonical_object_type` 过滤值,已切到对应 ASCII 值。 + +### 2. 10nm 临时副本结果 + +- 临时副本目录: + - `/tmp/pbf-delivery-karatsu-10nm-canonical-20260403` +- 当前结果: + - `canonical_object_type` 非 ASCII 复扫结果已经降到: + - `non_ascii_distinct = 0` +- 说明: + - 唐津 10 海里这条可信 backend baseline 上,`canonical_object_type` 去日文已经跑通到 0 残留。 + +### 3. 10nm 渲染审计结果 + +- 新报告: + - [`report/render_audit_10nm_canonical_type_2026-04-03.md`](/root/sourceserver/pbf/report/render_audit_10nm_canonical_type_2026-04-03.md) + - [`report/render_audit_10nm_canonical_type_2026-04-03.json`](/root/sourceserver/pbf/report/render_audit_10nm_canonical_type_2026-04-03.json) +- 结果统计与 2026-03-31 trusted rerun 一致: + - `exact_match = 121855` + - `mismatch = 12912` + - `missing_in_engineering = 5` +- 结论: + - 本轮 `canonical_object_type` 去日文没有引入新的 10nm backend render 回退。 + +### 4. 20nm 对象保真审计结果 + +- 新报告: + - [`report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_final_20nm.md`](/root/sourceserver/pbf/report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_final_20nm.md) + - [`report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_final_20nm.json`](/root/sourceserver/pbf/report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_final_20nm.json) +- 结果: + - `tiles compared = 154` + - `raw objects = 4165` + - `preserved = 4165` + - `missing / wrong_relayer / identifier_lost / identifier_mismatch = 0` +- 结论: + - 20nm final 在对象保真口径上没有因为本轮 `canonical_object_type` 清理出现对象级退化。 + +### 5. 当前未收完的部分 + +- 20nm 临时副本: + - `/tmp/pbf-delivery-karatsu-20nm-final-canonical-20260403` +- 已经完成过一轮旧映射 replay,也完成了对象保真审计 +- 但在映射表补第二批 / 第三批尾项后,20nm 全量 ASCII replay 还没有完整重新跑完并做最终非 ASCII 复扫 +- 因此当前真实状态是: + - `10nm backend trusted baseline` 已完成去日文和审计 + - `20nm object preservation` 已完成审计 + - `20nm canonical_object_type 全量去日文复扫` 仍差最后一步 replay + rescan + ## 当前未完成项 - 继续按同一张 compare 页回扫其他依赖 `class_code / display_code` 的细分类图标 - 继续做热点截图复核,确认没有新的样式回退 +- 完成 `/tmp/pbf-delivery-karatsu-20nm-final-canonical-20260403` 的全量 replay +- 对 20nm canonical 副本补做最终 `non_ascii canonical_object_type` 复扫 + +## 2026-04-04 全量 PBF 按最新逻辑重建启动 + +### 1. 本轮启动前确认 + +- 已按仓库续接要求复读: + - `STEP_RECORD.md` + - `PROJECT_HANDOFF_2026-03-31.md` + - `NavSea_Delivery_Preflight_Audit_Spec.md` + - `NavSea_Audit_Logic_And_Evolution_2026-04-01.md` +- 已确认当前远端仍是: + - `ssh://git@nas:2222/tei/pbf.git` +- 已确认当前 builder 里的“最新逻辑”包含: + - `navsea_tile_builder.py` 中 `RELEASE_CANONICAL_OBJECT_TYPE_MAP` + - delivery / final 输出会把 `canonical_object_type` 物化为最新 ASCII 发布值 + +### 2. 启动过程中发现的阻塞 + +- 直接用脚本默认参数启动会失败: + - `RuntimeError: navsea mapping registry is empty` +- 已核实数据库当前实际存在的规则 bundle 只有: + - `bundle_id = navsea-core` +- 因此本轮全量重建统一改为: + - `--bundle-id navsea-core` + +### 3. 当前已启动的重建会话 + +- 为避免 `reference_tile_root` 和输出目录互相清空,已先把现有瓦片集合复制到: + - `/tmp/pbf-refsets/karatsu10-delivery` + - `/tmp/pbf-refsets/karatsu10-engineering` + - `/tmp/pbf-refsets/karatsu20-delivery` + - `/tmp/pbf-refsets/karatsu20-final` + - `/tmp/pbf-refsets/kyushu-delivery` + - `/tmp/pbf-refsets/kyushu-engineering` +- 当前正在运行的 builder 会话: + - `karatsu10 delivery`: session `72703` + - `karatsu10 engineering`: session `33691` + - `karatsu20 delivery`: session `9519` + - `karatsu20 final`: session `97913` + - `kyushu delivery`: session `79176` + - `kyushu engineering`: session `88222` +- 统一使用: + - `--fid-key thisMyWorld@2026` + - `--bundle-id navsea-core` +- delivery / final 口径统一附带: + - `--release-minimal` +- engineering 口径统一附带: + - `--engineering` + +### 4. 本轮目标 + +- 把当前活跃的 builder 产物统一按最新逻辑重放: + - `/home/wwwroot/pbf-delivery-karatsu-10nm` + - `/home/wwwroot/pbf-engineering-karatsu-10nm` + - `/home/wwwroot/pbf-delivery-karatsu-20nm` + - `/home/wwwroot/pbf-delivery-karatsu-20nm-final` + - `/home/wwwroot/pbf-delivery-kyushu-reencoded` + - `/home/wwwroot/pbf-engineering-kyushu` + +### 5. 下一步 + +1. 持续轮询 6 个 builder 会话,确认没有新的运行时异常 +2. 待会话完成后复核各目录瓦片数是否回到原集合规模 +3. 如需要,再补做 `canonical_object_type` 非 ASCII 复扫与对象保真 / render 审计 + +## 2026-04-05 九州 compare 图标问题收口 + +### 1. 新确认的问题类型 + +- 九州 profile 中出现的“红 X 变鱼礁 / 航标 icon 不对”,本轮确认不属于前一轮唐津那种: + - `旧 PBF 缺 class_code / display_code` + - 导致样式退回兜底图标 +- 本轮在九州对应瓦片中核实到: + - `class_code` + - `display_code` + - `canonical_object_type` + - `chart_symbol_code` + 这些关键字段本身是存在的 +- 因此当前九州问题的真实根因是: + - `style.navsea-delivery-kyushu.json` 仍停留在较早的粗分类图标逻辑 + - 没有同步到 `karatsu 20nm final` 已经收好的精细图标分支 + +### 2. 危险物图标根因 + +- 旧原始样式对: + - `409` + - `420` + - `425` + - `428` + - `434` + 都是按 `分類番号` 分开画不同图标 +- 但九州 delivery 样式之前: + - `navigation_hazard_point` 只吃 `chart_icon_image` + - `anchor_caution_hazard_point` 里 `obstruction / hazard_mark / fish_reef` 又被统一压进 `symbol-daytime-428` +- 所以视觉上会出现: + - 红 X / 障碍物 / 鱼礁混成一类 icon + +### 3. 航标图标根因 + +- 九州 delivery 样式之前的 `navigation_marks` 图标分支太粗: + - `light_beacon` 固定画 `symbol-daytime-310` + - 普通 `nav-marks` 也没有按 `display_code` 细分浮标 / 灯标样式 +- 所以像 `312` 这类灯浮标、以及更细的 `311xxx / 312xxx / 323xxx / 325xxx` 都会回成粗图标 + +### 4. 已完成修正 + +- 已把 [`src/pbf/style.navsea-delivery-kyushu.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-kyushu.json) 同步到 `karatsu 20nm final` 的图标口径: + - `hazard-points` 改为优先按 `class_code` 精确分图标 + - `anchor-hazard-points-428` 改为优先按 `class_code` 精确分图标 + - `nav-light-flare` 改为和 `display_code` / `minor_light` 口径一致 + - `nav-marks-light-beacons` 改为按 `display_code` 细分 `311xxx` + - `nav-marks` 改为按 `display_code` 细分 `312/313/323/325/327/328` 等图标 + - 并补上 `lattice_buoy / pillar_buoy / can_buoy` 的 canonical fallback +- 已继续补上 `facility_boundary_point` 的设施点图标逻辑: + - 不再固定画 `symbol-daytime-520` + - 改为按 `class_code` 区分: + - `505 / 510 -> symbol-daytime-505` + - `520 -> symbol-daytime-520` + - `530 -> symbol-daytime-530` + - `540 -> symbol-daytime-540` + - `550 -> symbol-daytime-550` + +### 5. 已部署 + +- 已部署新的九州样式到: + - `/mnt/sda1/www/newpec/domain/style.navsea-delivery-kyushu.json` +- 已同步 bump compare 页版本并部署: + - HTML 版本:`compare-r22-20260405-0910` + - 九州 style 版本:`kyushu-style-r4-20260405-0910` + - HTML 路径:`/mnt/sda1/www/newpec/navsea-compare-karatsu-20nm.html` + +### 6. 继续补到的小灯图标问题 + +- 新发现九州还有一类 `minor_light` 小灯点位图标不对 +- 代表点位: + - `display_code = 30600000` + - delivery 中当前对象属性显示为: + - `canonical_object_type = minor_light` + - `chart_symbol_code = light_beacon` + - `chart_icon_image = symbol-daytime-310` +- 旧原始样式中: + - `30600000 -> symbol-daytime-303` +- 说明: + - 这类点位不只是 style 旧逻辑问题 + - 也暴露出 builder 对部分 `minor_light` / `light_beacon` 的图标推断偏粗 +- 当前先在九州 style 层做了旧版兼容兜底: + - `nav-marks-small-lights` 改为按 `display_code` 细分: + - `303xxx` + - `305xxx` + - `306xxx` + - `307xxx` + - `308xxx` + - `309xxx` + - 先恢复到原始样式的图标表现 + +### 7. builder 侧已继续收口 + +- 已在 [`navsea_tile_builder.py`](/root/sourceserver/pbf/navsea_tile_builder.py) 中继续修正 `navigation_marks` 的图标生成逻辑: + - 新增一组按旧 `display_code` 直接映射图标的 builder 内部表 + - 当前先覆盖: + - `303xxx` + - `305xxx` + - `306xxx` + - `307xxx` + - `308xxx` + - `309xxx` +- 已把原始 `canonical_object_type = 灯 (Lt)` 的语义判断单独识别为: + - `chart_symbol_code = minor_light` + 不再先落到 `light_beacon` +- 单瓦片验证结果已确认: + - `display_code = 30600000` + - 现在 builder 直接产出: + - `chart_symbol_code = minor_light` + - `chart_icon_image = symbol-daytime-303` + +### 8. 当前已重跑的 builder 会话 + +- 已重新启动: + - `kyushu delivery`: session `80537` + - `kyushu engineering`: session `73505` +- 目的: + - 让九州现网 compare 不只依赖 style 兜底 + - 同时把新的 builder 图标推断真正写回 delivery / engineering PBF ## 下一步 @@ -115,6 +365,11 @@ - 浮标不再被错误套圈 - `420` 不再回成眼睛图标 2. 继续清理其他依赖 `class_code / display_code` 的细分类图标问题 +3. 继续完成 20nm canonical 副本的全量 replay,并确认: + - `canonical_object_type` 非 ASCII 残留归零或收敛到明确尾项 +4. 如需上线这轮 canonical 去日文结果: + - 先决定是否同时重放 20nm final PBF + - 再决定是否同步部署 compare 用 style / 页面版本号 ## 快速续接提示 @@ -123,3 +378,394 @@ 1. 确认页面顶部版本仍然是 `compare-r18 / style-r14 / pbf-fullrefresh1` 2. 继续从博多港和中央航路这类热点回扫细分类图标 3. 优先检查仍依赖 `display_code / class_code` 的对象组 + +## 2026-04-05 九州 `at` 规则回扫 + +### 1. 对今天几类错位的统一判断 + +- 本轮重新对了原始 [`style.json`](/root/sourceserver/pbf/src/pbf/style.json) 后,已确认今天几类错位的共同根因是: + - 之前仍在用“归一语义字段优先”的方式补样式 + - 但原始 `at` 图层实际是“旧字段直驱” +- 本轮重新钉实的规则: + - `p航行危険障害物` / `p投錨注意障害物`:按 `分類番号` + - `p錨泊地等`:按 `分類番号` + - `p施設・境界線等` 点要素:按 `分類番号` + - `p航路標識群` 主图标:按 `表示用番号` + - `p航路標識群フレア`:按 `形状分類番号` + - `p陸上構造物`:按 `分類番号` 直接拼 `symbol-daytime-*` + +### 2. 本轮已修改的 delivery / style 逻辑 + +- 已修改 [`src/pbf/style.navsea-delivery-kyushu.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-kyushu.json): + - `anchorage-symbols` 改为优先按 `class_code` 直出 `719/720/721/724` + - `nav-light-flare` 改为优先按 `shape_class_code` 命中原始 flare 允许集合,仅在缺字段时退回旧兼容分支 + - `nav-marks-harbor-lighthouses` / `nav-marks-breakwater-lighthouses` / `nav-marks-small-lights` / `nav-marks-light-beacons` + - 过滤条件改为优先按 `display_code` 前缀分层 + - 仅在缺 `display_code` 时退回 `canonical_object_type` + - `nav-marks` 主层过滤同步改为排除这些 `display_code` 前缀,而不再只靠 `canonical_object_type` + - `facility-points` 保持按 `class_code` 分图标,并补上 `icon-ignore-placement` + - 补回 `pilot-station-points` + - `landmark-points` 改为优先按 `class_code` 直接拼 `symbol-daytime-*` + - `landmark-point-fallback` 只对缺 `class_code` 且不在已知旧图标类中的对象保留圆点兜底 + +### 3. 本轮已修改的 builder / 字段保留逻辑 + +- 已修改 [`navsea_tile_builder.py`](/root/sourceserver/pbf/navsea_tile_builder.py): + - `FINAL_RELEASE_PROPERTY_ALLOWLIST` 新增 `shape_class_code` + - `--release-minimal` 口径现在也会保留 `shape_class_code` +- 已修改 [`tasks/pbf/mappings/navsea_field_name_rules_v1.yaml`](/root/sourceserver/pbf/tasks/pbf/mappings/navsea_field_name_rules_v1.yaml): + - `形状分類番号 -> shape_class_code` 改为 `keep_in_delivery: true` +- 目的: + - 让 delivery PBF 重新具备支撑原始 `at` 规则的最小旧字段 + - 不再让 `航路標識群フレア` 只能靠 `display_code + canonical_object_type` 猜 + +### 4. 本轮已部署版本 + +- compare HTML 已 bump 并部署: + - `HTML: compare-r23-20260405-1533` + - 路径:`/mnt/sda1/www/newpec/navsea-compare-karatsu-20nm.html` +- 九州 style 已 bump 并部署: + - `Style: kyushu-style-r5-20260405-1533` + - 路径:`/mnt/sda1/www/newpec/domain/style.navsea-delivery-kyushu.json` + +### 5. 本轮已重新启动九州重建 + +- 使用仓库虚拟环境 `.venv/bin/python` + - 直接用系统 `python3` 会报: + - `ModuleNotFoundError: No module named 'mapbox_vector_tile'` +- 已重新启动: + - `kyushu delivery`: session `6078` + - `kyushu engineering`: session `63691` +- 当前目标: + - 把新的 `shape_class_code` 与 `at` 修正真正写回九州 delivery / engineering PBF + +### 6. 下一步 + +1. 等待九州两套 builder 完成 +2. 抽查热点瓦片,确认 delivery 内已出现 `shape_class_code` +3. 在固定 compare 页继续复查今天提到的几类同源错位点 + +## 2026-04-05 九州 delivery 双用途图层整理 + +### 1. 本轮新增整理文档 + +- 已新增: + - [`NavSea_九州_Delivery_双用途图层分类_2026-04-05.md`](/root/sourceserver/pbf/NavSea_九州_Delivery_双用途图层分类_2026-04-05.md) + +### 2. 本轮整理目标 + +- 不再只按旧样式/旧图层名字理解九州 delivery +- 改为按两个业务目标重新归类当前实际图层: + 1. 航海用 + 2. 钓鱼用 + +### 3. 本轮整理结论 + +- 航海用的核心方向已明确为: + - 危险物优先 + - 障碍物优先 + - 导助航优先 + - 净空/设施/锚地等通航约束优先 + - 水深细节退后 +- 钓鱼用的核心方向已明确为: + - 海底地形优先 + - 水深细节优先 + - 底质优先 + - 鱼礁 / 穴 / 海底结构优先 + - 安全层只保底不抢主视觉 + +### 4. 当前建议的实施方式 + +- 建议后续不要继续只维护一套 delivery style +- 而是同一套 PBF 下拆成两个 profile: + 1. `delivery-navigation` + 2. `delivery-fishing` +- 先拆 style,不急着拆数据 + +## 2026-04-07 九州 delivery 按对象属性分组整理 + +### 1. 本轮新增整理文档 + +- 已新增: + - [`NavSea_九州_Delivery_对象属性分组_2026-04-07.md`](/root/sourceserver/pbf/NavSea_九州_Delivery_对象属性分组_2026-04-07.md) + +### 2. 本轮整理目标 + +- 不再按“航海用 / 钓鱼用”分 +- 改为按对象属性相同的 group 整理当前九州 delivery +- 目标是给后续 style 重排、profile 拆分、专题层拆分打基础 + +### 3. 本轮已整理的主要 group + +- 等深线 +- 鱼礁 +- 灯塔 +- 港口灯 +- 渔网 / 渔具 +- 海上标识 +- 陆地设施 +- 桥梁 / 跨空线 +- 海底质 +- 海底危险物 +- 锚地 +- 引航 / 航海服务 +- 陆海背景与海岸线 +- 地名与定位参考 + +### 4. 本轮结论 + +- 当前最值得继续细拆的 group 已确认是: + 1. 海底危险物 + 2. 海上标识 + 3. 陆地设施 + 4. 海底质 +- 这四组最适合作为下一步 style 结构重排和多 profile 组织的主切口 + +## 2026-04-07 九州 delivery 前端图层分组消费配置 + +### 1. 本轮新增配置文件 + +- 已新增: + - [`src/pbf/layer-groups.navsea-delivery-kyushu.json`](/root/sourceserver/pbf/src/pbf/layer-groups.navsea-delivery-kyushu.json) + +### 2. 本轮配置目的 + +- 给前端一个可直接消费的图层分组配置 +- 不再让前端直接理解 style 内部的全部 render layer +- 让前端只面对: + - 基础底图 + - 可切换业务 group + - 航海 / 钓鱼 / 自定义预设 + +### 3. 当前配置内容 + +- 已包含: + - `base_groups` + - `groups` + - `presets` +- 当前主要业务 group 包括: + - 鱼礁/海底危险物 + - 海上标识 + - 锚地/引航 + - 港口与设施 + - 桥梁/净空 + - 等深线 + - 海底地形 + - 渔网/渔具 + - 海底质 + - 地名 + +### 4. 当前建议的前端消费方式 + +- 前端用 group 配置驱动 UI,不直接暴露底层 render layer +- 实际切换时,通过: + - `map.setLayoutProperty(layerId, "visibility", "visible" | "none")` +- 建议用户入口只暴露: + - 航海模式 + - 钓鱼模式 + - 自定义 + +### 5. 本轮 i18n 结构调整 + +- 已把 [`src/pbf/layer-groups.navsea-delivery-kyushu.json`](/root/sourceserver/pbf/src/pbf/layer-groups.navsea-delivery-kyushu.json) 从直接写死中文 `label` 的结构,调整为: + - `label_key` + - `description_key` + - `i18n` +- 当前 key 命名已统一成: + - `pbf.group.xxx` + - `pbf.preset.xxx` +- 这样前端可以: + - 先直接读同文件内的 `i18n` + - 后续再平滑迁移到统一翻译系统 + +### 6. 本轮前端配置字段扩展 + +- 已继续给 [`src/pbf/layer-groups.navsea-delivery-kyushu.json`](/root/sourceserver/pbf/src/pbf/layer-groups.navsea-delivery-kyushu.json) 增加: + - `sort_order` + - `icon_key` + - `feature_flag` +- 当前作用: + - `sort_order` + - 控制前端菜单展示顺序 + - `icon_key` + - 让前端图标系统不必写死在代码里 + - `feature_flag` + - 方便做灰度、AB、权限或版本开关控制 + +## 2026-04-08 全国 delivery 候选构建与严格审计启动 + +### 1. 当前目标 + +- 用户要求: + - 生成全国范围 delivery 版本 + - 严格审计 +- 本轮采取的口径: + - 先生成全国候选目录 + - 不直接覆盖现网旧目录 + - 先跑对象保真 + render-hit 两层严格审计 + - 审计过后再决定是否切正式目录 + +### 2. 当前确认的全国构建方式 + +- `navsea_tile_builder.py` 已确认支持: + - `--all-tiles` +- 当前全国原始源目录文件总量是: + - `/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles` + - 全量文件数:`79229` +- 当前旧全国目录状态: + - `/home/wwwroot/pbf`:`65148` + - `/home/wwwroot/pbf-engineering-full`:`65148` +- 说明: + - 旧全国 full 目录不是当前源集合的完整重放结果 + - 因此本轮不能直接把旧目录当作可交付全国版 + +### 3. 本轮全国候选输出目录 + +- delivery 候选: + - `/home/wwwroot/pbf-delivery-full-20260408` +- engineering 候选: + - `/home/wwwroot/pbf-engineering-full-20260408` + +### 4. 本轮已启动的全国构建会话 + +- 使用仓库虚拟环境: + - `.venv/bin/python` +- 已启动: + - 全国 delivery:session `8644` + - 全国 engineering:session `60378` +- 使用参数: + - `--all-tiles` + - `--fid-key thisMyWorld@2026` + - `--bundle-id navsea-core` + - delivery 附带:`--release-minimal` + - engineering 附带:`--engineering` + +### 5. 当前已观察到的风险信号 + +- builder 已确认拿到的全国 tile job 数: + - `79229` +- 但构建过程中已出现大量: + - `skipped z/x/y` +- 这说明: + - 全国源瓦片不等于全国 delivery 可写出瓦片 + - 严格审计第一层就必须先检查文件集合与对象保真 + - 很可能会暴露出: + - 数据库候选缺失 + - 某些原始瓦片无可输出 rows + - 全量覆盖不完整 + +### 6. 本轮严格审计计划 + +- 第一层: + - 文件集合 / 覆盖率检查 +- 第二层: + - 全国对象保真审计 +- 第三层: + - 全国 render-hit 审计 +- 当前说明: + - 现有审计脚本默认口径偏 10nm / 20nm / kyushu + - 本轮会在全国候选目录构建完成后,按全国路径重定向运行 + - 审计输出文档仍需单独整理成中文放行报告 + +### 7. 下一步 + +1. 等待全国 delivery / engineering 候选构建完成 +2. 先做全国文件集合对齐检查 +3. 运行全国对象保真审计 +4. 运行全国 render-hit 审计 +5. 输出中文严格审计报告并给出是否可交付结论 + +## 2026-04-08 delivery style sprite 统一 + +### 1. 本轮调整 + +- 按用户要求,把 delivery style 的 sprite 地址统一改为: + - `http://192.168.200.184/newpec/sprite/sprite?v=111` + +### 2. 当前已修改的仓库文件 + +- [`src/pbf/style.navsea-delivery-kyushu.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-kyushu.json) +- [`src/pbf/style.navsea-delivery-karatsu-20nm-final.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-karatsu-20nm-final.json) +- [`src/pbf/style.navsea-delivery-karatsu-10nm.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-karatsu-10nm.json) + +### 3. 当前说明 + +- 仓库内源文件已完成统一 +- 线上 `/mnt/sda1/www/newpec/domain/` 下的部署文件尚未在本轮同步 +- 后续如需页面立即生效,还需要再做一次部署同步 + +## 2026-04-08 全国 delivery style 草稿 + +### 1. 本轮新增文件 + +- 已新增: + - [`src/pbf/style.navsea-delivery-full.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-full.json) + +### 2. 本轮生成方式 + +- 以 [`src/pbf/style.navsea-delivery-kyushu.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-kyushu.json) 为底复制 +- 仅调整: + - `name -> NavSea Delivery Full` + - `tiles -> http://192.168.200.184/pbf-delivery-full-20260408/{z}/{x}/{y}.pbf` + +### 3. 当前说明 + +- 这是当前全国 delivery 候选 PBF 的配套 style 草稿 +- 当前尚未单独部署到线上公开路径 +- 当前也还没有配套的全国单屏 HTML / compare 页面 + +## 2026-04-08 全国 delivery style / HTML 部署 + +### 1. 本轮部署文件 + +- 已部署 style: + - `/mnt/sda1/www/newpec/domain/style.navsea-delivery-full.json` +- 已部署 HTML: + - `/mnt/sda1/www/newpec/navsea-final-delivery-full.html` + +### 2. 当前可访问 URL + +- style: + - `http://192.168.200.184/newpec/domain/style.navsea-delivery-full.json` +- 单页查看: + - `http://192.168.200.184/newpec/navsea-final-delivery-full.html` + +### 3. 当前说明 + +- 全国版 style 现已不只是仓库草稿,已同步到线上公开路径。 +- 当前 HTML 为单屏查看入口,不是 compare 页面。 + +## 2026-04-08 磁盘风险全量快照提交 + +### 1. 触发原因 + +- 用户反馈当前电脑硬盘可能存在问题 +- 为避免本地未提交代码与文档因磁盘异常丢失,本轮优先执行一次仓库内全量快照提交 + +### 2. 本轮执行前确认 + +- 已按仓库续接要求复读: + - `STEP_RECORD.md` + - `PROJECT_HANDOFF_2026-03-31.md` + - `NavSea_Delivery_Preflight_Audit_Spec.md` + - `NavSea_Audit_Logic_And_Evolution_2026-04-01.md` +- 已确认当前远端仍是: + - `ssh://git@nas:2222/tei/pbf.git` +- 已确认当前工作区包含大量: + - 已修改代码 + - 新增 Domain 原型文件 + - 新增审计报告 + - 新增页面与 style 草稿 + +### 3. 本轮处理原则 + +- 本轮目标是“先保全当前仓库进展” +- 因用户明确要求提交所有代码,本轮采用全量暂存与提交 +- 本轮提交不额外声称: + - 已完成新的全国审计 + - 已完成新的交付放行结论 + +### 4. 当前说明 + +- 提交完成后,仓库历史中应保留一份可回溯的本地快照 +- 若后续硬盘继续异常,优先再确认远端可推送与备份介质状态 diff --git a/navsea_mapping_registry.py b/navsea_mapping_registry.py index 5170457..957d398 100644 --- a/navsea_mapping_registry.py +++ b/navsea_mapping_registry.py @@ -131,6 +131,56 @@ def load_local_field_name_rules() -> dict[str, FieldNameRule]: return rules +def load_local_source_layer_rules() -> dict[str, dict[str, str]]: + mapping_path = Path(__file__).resolve().parent / "tasks" / "pbf" / "mappings" / "navsea_source_layer_rules_v1.yaml" + if not mapping_path.exists(): + return {} + + rules: dict[str, dict[str, str]] = {} + current_jp: str | None = None + current_std: str | None = None + for raw_line in mapping_path.read_text(encoding="utf-8").splitlines(): + line = raw_line.strip() + if not line or line.startswith("#") or line in {"ruleset: navsea_source_layer_rules_v1", "rules:"}: + continue + if line.startswith("- source_layer_jp:"): + if current_jp and current_std: + rules[current_jp] = { + "source_layer_std": current_std, + "source_layer_rule_id": f"SLR_LOCAL:{current_jp}", + } + current_jp = line.split(":", 1)[1].strip() + current_std = None + continue + if line.startswith("source_layer_std:") and current_jp: + current_std = line.split(":", 1)[1].strip() + + if current_jp and current_std: + rules[current_jp] = { + "source_layer_std": current_std, + "source_layer_rule_id": f"SLR_LOCAL:{current_jp}", + } + + manual_aliases = { + "P投錨注意障害物透明": "anchor_caution_hazard_area", + "P投錨注意障害物": "anchor_caution_hazard_area", + "P航行危険障害物": "navigation_hazard_area", + "P錨泊地等": "anchorage_area", + "P橋りょう等構造物": "bridge_structure", + "L701": "depth_zone_700", + "L738": "depth_zone_739", + } + for source_layer_jp, source_layer_std in manual_aliases.items(): + rules.setdefault( + source_layer_jp, + { + "source_layer_std": source_layer_std, + "source_layer_rule_id": f"SLR_LOCAL:{source_layer_jp}", + }, + ) + return rules + + class NavSeaMappingRegistry: def __init__( self, @@ -197,6 +247,7 @@ class NavSeaMappingRegistry: } for row in cur.fetchall() } + source_layer_rules.update(load_local_source_layer_rules()) cur.execute( """ diff --git a/navsea_render_audit.py b/navsea_render_audit.py index e529fab..83f4a18 100644 --- a/navsea_render_audit.py +++ b/navsea_render_audit.py @@ -31,6 +31,8 @@ from typing import Any import mapbox_vector_tile import pymysql +from navsea_tile_builder import NavSeaFidCodec + DEFAULT_ORIGINAL_STYLE_PATH = Path("/mnt/sda1/www/newpec/style.patched.local.json") DEFAULT_ENGINEERING_STYLE_PATH = Path("/mnt/sda1/www/newpec/navsea-engineering.json") @@ -52,6 +54,10 @@ ENGINEERING_TILE_ROOT = DEFAULT_ENGINEERING_TILE_ROOT REPORT_MD_PATH = DEFAULT_REPORT_MD_PATH REPORT_JSON_PATH = DEFAULT_REPORT_JSON_PATH AUDIT_NAME = DEFAULT_AUDIT_NAME +SKIP_DB_PERSIST = False +COMPARISON_LABEL = "工程版" +FID_CODEC: NavSeaFidCodec | None = None +MATCH_ON_FID_ONLY = False DERIVED_PROPERTY_PREFIXES = ( "canonical_", @@ -120,6 +126,27 @@ EXPRESSION_OPS = { "zoom", } +DEPTH_NUMERIC_SOURCE_LAYERS = { + "L海底地形", + "L概略等深線", + "L等深線", +} +CLEARANCE_NUMERIC_SOURCE_LAYERS = { + "p高さ制限", +} +SAFETY_ICON_SOURCE_LAYERS = { + "p航路標識群", + "p航路標識", + "P航路標識", + "p灯台", + "p灯浮標", + "p灯立標", + "p灯標", +} +SUPPORT_FILL_SOURCE_LAYERS = { + "P穴", +} + @dataclass(frozen=True) class DbConfig: @@ -141,6 +168,7 @@ class AuditFeature: geom_type: str object_id: str fid_legacy: str | None + native_feature_id: int | None properties: dict[str, Any] @@ -495,21 +523,59 @@ def geometry_hash(geometry: dict[str, Any]) -> str: return hash_text(canonical_json(geometry)) -def extract_legacy_fid(properties: dict[str, Any]) -> str | None: +def extract_legacy_fid(properties: dict[str, Any], native_feature_id: int | None = None) -> str | None: legacy = properties.get("fid_legacy_raw") if legacy not in (None, ""): - return str(legacy) + try: + return str(int(str(legacy))) + except ValueError: + return str(legacy) fid = properties.get("fid") if fid not in (None, ""): - return str(fid) + fid_text = str(fid).strip() + # Original tiles store legacy fid as decimal integers. Only treat + # an 8-char property fid as encrypted hex when it is not plain digits. + if fid_text.isdigit(): + return str(int(fid_text)) + if FID_CODEC is not None and len(fid_text) == 8: + try: + decoded = FID_CODEC.decrypt_number(int(fid_text, 16)) + return str(decoded) + except ValueError: + pass + try: + return str(int(fid_text)) + except ValueError: + return fid_text + if native_feature_id is not None: + if FID_CODEC is not None: + try: + decoded = FID_CODEC.decrypt_number(int(native_feature_id)) + return str(decoded) + except ValueError: + pass + try: + feature_id_int = int(native_feature_id) + if feature_id_int > 2147483647: + feature_id_int -= 4294967296 + return str(feature_id_int) + except ValueError: + return str(native_feature_id) return None -def object_identity(layer_name: str, geometry: dict[str, Any], properties: dict[str, Any]) -> tuple[str, str | None]: +def object_identity( + layer_name: str, + geometry: dict[str, Any], + properties: dict[str, Any], + native_feature_id: int | None = None, +) -> tuple[str, str | None]: geom_type = str(geometry.get("type", "")) legacy_source_layer = text_or_none(properties.get("source_layer_jp")) or layer_name - legacy_fid = extract_legacy_fid(properties) + legacy_fid = extract_legacy_fid(properties, native_feature_id) if legacy_fid: + if MATCH_ON_FID_ONLY: + return f"fid:{legacy_fid}|geom:{geom_type}", legacy_fid return f"fid:{legacy_fid}|src:{legacy_source_layer}|geom:{geom_type}", legacy_fid fallback_payload = { "source_layer": legacy_source_layer, @@ -521,6 +587,8 @@ def object_identity(layer_name: str, geometry: dict[str, Any], properties: dict[ def feature_instance_id(feature: AuditFeature) -> str: + if MATCH_ON_FID_ONLY: + return f"{feature.object_id}|z:{feature.tile_z}|x:{feature.tile_x}|y:{feature.tile_y}" return ( f"{feature.object_id}|z:{feature.tile_z}|x:{feature.tile_x}|" f"y:{feature.tile_y}|layer:{feature.layer_name}" @@ -538,7 +606,9 @@ def decode_tile_instances(dataset: str, tile_root: Path, style: dict[str, Any], for feature in payload.get("features", []): geometry = feature.get("geometry") or {} properties = dict(feature.get("properties") or {}) - object_id, legacy_fid = object_identity(layer_name, geometry, properties) + native_feature_id = feature.get("id") + native_feature_id = int(native_feature_id) if isinstance(native_feature_id, int) else None + object_id, legacy_fid = object_identity(layer_name, geometry, properties, native_feature_id) audit_feature = AuditFeature( dataset=dataset, tile_z=z, @@ -548,6 +618,7 @@ def decode_tile_instances(dataset: str, tile_root: Path, style: dict[str, Any], geom_type=str(geometry.get("type", "")), object_id=object_id, fid_legacy=legacy_fid, + native_feature_id=native_feature_id, properties=properties, ) instance_id = feature_instance_id(audit_feature) @@ -565,16 +636,39 @@ def summarize_observations(observations: list[RenderObservation]) -> dict[str, l return {key: sorted(values) for key, values in grouped.items()} +def summarize_observation_payloads(observations: list[RenderObservation]) -> dict[str, list[dict[str, Any]]]: + grouped: dict[str, list[dict[str, Any]]] = defaultdict(list) + for observation in observations: + grouped[observation.component_type].append(dict(observation.payload)) + return { + key: sorted(values, key=canonical_json) + for key, values in grouped.items() + } + + def normalize_component_map(component_map: dict[str, list[str]]) -> dict[str, tuple[str, ...]]: return {key: tuple(values) for key, values in sorted(component_map.items())} +def normalize_payload_map(payload_map: dict[str, list[dict[str, Any]]]) -> dict[str, tuple[dict[str, Any], ...]]: + return { + key: tuple(sorted(values, key=canonical_json)) + for key, values in sorted(payload_map.items()) + } + + def compare_instance( original: dict[str, Any] | None, engineering: dict[str, Any] | None, ) -> dict[str, Any]: if original is None: eng_feature = engineering["feature"] + engineering_components = normalize_component_map( + summarize_observations(engineering["observations"]) + ) + engineering_payloads = normalize_payload_map( + summarize_observation_payloads(engineering["observations"]) + ) return { "status": "extra_in_engineering", "object_instance_id": feature_instance_id(eng_feature), @@ -587,12 +681,18 @@ def compare_instance( "source_layer": eng_feature.layer_name, "canonical_object_type": text_or_none(eng_feature.properties.get("canonical_object_type")), "original_components": {}, - "engineering_components": normalize_component_map( - summarize_observations(engineering["observations"]) - ), + "engineering_components": engineering_components, + "original_payloads": {}, + "engineering_payloads": engineering_payloads, } if engineering is None: orig_feature = original["feature"] + original_components = normalize_component_map( + summarize_observations(original["observations"]) + ) + original_payloads = normalize_payload_map( + summarize_observation_payloads(original["observations"]) + ) return { "status": "missing_in_engineering", "object_instance_id": feature_instance_id(orig_feature), @@ -604,16 +704,18 @@ def compare_instance( "tile_y": orig_feature.tile_y, "source_layer": orig_feature.layer_name, "canonical_object_type": None, - "original_components": normalize_component_map( - summarize_observations(original["observations"]) - ), + "original_components": original_components, "engineering_components": {}, + "original_payloads": original_payloads, + "engineering_payloads": {}, } orig_feature = original["feature"] eng_feature = engineering["feature"] original_components = normalize_component_map(summarize_observations(original["observations"])) engineering_components = normalize_component_map(summarize_observations(engineering["observations"])) + original_payloads = normalize_payload_map(summarize_observation_payloads(original["observations"])) + engineering_payloads = normalize_payload_map(summarize_observation_payloads(engineering["observations"])) if original_components == engineering_components: status = "exact_match" @@ -637,6 +739,8 @@ def compare_instance( "canonical_object_type": text_or_none(eng_feature.properties.get("canonical_object_type")), "original_components": original_components, "engineering_components": engineering_components, + "original_payloads": original_payloads, + "engineering_payloads": engineering_payloads, } @@ -650,6 +754,101 @@ def format_component_map(component_map: dict[str, tuple[str, ...]] | dict[str, l return "; ".join(parts) +def has_component(component_map: dict[str, tuple[str, ...]] | dict[str, list[str]], component_type: str) -> bool: + values = component_map.get(component_type) + return bool(values) + + +def get_component_payloads( + payload_map: dict[str, tuple[dict[str, Any], ...]] | dict[str, list[dict[str, Any]]], + component_type: str, +) -> list[dict[str, Any]]: + values = payload_map.get(component_type) or () + return [dict(value) for value in values] + + +def payload_has_nontransparent_fill(payloads: list[dict[str, Any]]) -> bool: + for payload in payloads: + color = text_or_none(payload.get("fill_color")) + opacity = payload.get("fill_opacity") + if opacity == 0: + continue + if color in (None, "rgba(0,0,0,0)", "rgba(0, 0, 0, 0)"): + continue + return True + return False + + +def payload_has_transparent_fill(payloads: list[dict[str, Any]]) -> bool: + for payload in payloads: + color = text_or_none(payload.get("fill_color")) + opacity = payload.get("fill_opacity") + if opacity == 0: + return True + if color in ("rgba(0,0,0,0)", "rgba(0, 0, 0, 0)"): + return True + return False + + +def text_payloads_with_numeric_value(payloads: list[dict[str, Any]]) -> list[dict[str, Any]]: + numeric_payloads: list[dict[str, Any]] = [] + for payload in payloads: + text_value = text_or_none(payload.get("text_value")) + if text_value is None: + continue + if any(char.isdigit() for char in text_value): + numeric_payloads.append(payload) + return numeric_payloads + + +def classify_annotation_issue(item: dict[str, Any]) -> str | None: + original_components = item["original_components"] + engineering_components = item["engineering_components"] + original_has_text = has_component(original_components, "text") + engineering_has_text = has_component(engineering_components, "text") + original_has_icon = has_component(original_components, "icon") + engineering_has_icon = has_component(engineering_components, "icon") + + if original_has_text and not engineering_has_text: + return "text_missing_in_engineering" + if not original_has_text and engineering_has_text: + return "extra_text_in_engineering" + if original_has_icon and not engineering_has_icon: + return "icon_missing_in_engineering" + if not original_has_icon and engineering_has_icon: + return "extra_icon_in_engineering" + return None + + +def classify_style_semantic_issue(item: dict[str, Any]) -> str | None: + source_layer = item["source_layer"] or "unknown" + original_payloads = item.get("original_payloads", {}) + engineering_payloads = item.get("engineering_payloads", {}) + + original_fill_payloads = get_component_payloads(original_payloads, "fill") + engineering_fill_payloads = get_component_payloads(engineering_payloads, "fill") + original_text_payloads = get_component_payloads(original_payloads, "text") + engineering_text_payloads = get_component_payloads(engineering_payloads, "text") + original_icon_payloads = get_component_payloads(original_payloads, "icon") + engineering_icon_payloads = get_component_payloads(engineering_payloads, "icon") + + if source_layer in SUPPORT_FILL_SOURCE_LAYERS: + if payload_has_transparent_fill(original_fill_payloads) and payload_has_nontransparent_fill(engineering_fill_payloads): + return "support_layer_strengthened_fill" + + original_numeric_texts = text_payloads_with_numeric_value(original_text_payloads) + engineering_numeric_texts = text_payloads_with_numeric_value(engineering_text_payloads) + + if source_layer in DEPTH_NUMERIC_SOURCE_LAYERS and original_numeric_texts and not engineering_numeric_texts: + return "depth_numeric_missing" + if source_layer in CLEARANCE_NUMERIC_SOURCE_LAYERS and original_numeric_texts and not engineering_numeric_texts: + return "clearance_numeric_missing" + if source_layer in SAFETY_ICON_SOURCE_LAYERS and original_icon_payloads and not engineering_icon_payloads: + return "safety_icon_missing" + + return None + + def write_reports( *, original_count: int, @@ -658,6 +857,10 @@ def write_reports( status_counter: Counter[str], source_layer_counter: Counter[tuple[str, str]], mismatch_examples: list[dict[str, Any]], + annotation_issue_counter: Counter[tuple[str, str]], + annotation_issue_examples: list[dict[str, Any]], + style_semantic_issue_counter: Counter[tuple[str, str]], + style_semantic_issue_examples: list[dict[str, Any]], ) -> None: payload = { "original_feature_instances": original_count, @@ -668,21 +871,31 @@ def write_reports( {"status": status, "source_layer": source_layer, "count": count} for (status, source_layer), count in source_layer_counter.most_common(30) ], + "annotation_issue_counts": [ + {"issue": issue, "source_layer": source_layer, "count": count} + for (issue, source_layer), count in annotation_issue_counter.most_common(30) + ], + "style_semantic_issue_counts": [ + {"issue": issue, "source_layer": source_layer, "count": count} + for (issue, source_layer), count in style_semantic_issue_counter.most_common(30) + ], "mismatch_examples": mismatch_examples, + "annotation_issue_examples": annotation_issue_examples, + "style_semantic_issue_examples": style_semantic_issue_examples, } REPORT_JSON_PATH.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8") lines = [ - "# NavSea 原始版 vs 工程版渲染审计报告", + f"# NavSea 原始版 vs {COMPARISON_LABEL}渲染审计报告", "", "## 范围", "", f"- 原始样式: `{ORIGINAL_STYLE_PATH}`", - f"- 工程样式: `{ENGINEERING_STYLE_PATH}`", + f"- {COMPARISON_LABEL}样式: `{ENGINEERING_STYLE_PATH}`", f"- 原始瓦片根目录: `{ORIGINAL_TILE_ROOT}`", - f"- 工程瓦片根目录: `{ENGINEERING_TILE_ROOT}`", + f"- {COMPARISON_LABEL}瓦片根目录: `{ENGINEERING_TILE_ROOT}`", f"- 原始 feature 实例数: `{original_count}`", - f"- 工程 feature 实例数: `{engineering_count}`", + f"- {COMPARISON_LABEL} feature 实例数: `{engineering_count}`", f"- 审计结果数: `{result_count}`", "", "## 匹配口径", @@ -708,6 +921,28 @@ def write_reports( for (status, source_layer), count in source_layer_counter.most_common(20): lines.append(f"- `{status}` | `{source_layer}` | `{count}`") + lines.extend([ + "", + "## 标注专项问题", + "", + ]) + if not annotation_issue_counter: + lines.append("- 没有发现标注专项问题。") + else: + for (issue, source_layer), count in annotation_issue_counter.most_common(20): + lines.append(f"- `{issue}` | `{source_layer}` | `{count}`") + + lines.extend([ + "", + "## Style 语义专项问题", + "", + ]) + if not style_semantic_issue_counter: + lines.append("- 没有发现 style 语义专项问题。") + else: + for (issue, source_layer), count in style_semantic_issue_counter.most_common(20): + lines.append(f"- `{issue}` | `{source_layer}` | `{count}`") + lines.extend([ "", "## 差异样例", @@ -724,6 +959,38 @@ def write_reports( lines.append(f" original: {format_component_map(item['original_components'])}") lines.append(f" engineering: {format_component_map(item['engineering_components'])}") + lines.extend([ + "", + "## 标注问题样例", + "", + ]) + if not annotation_issue_examples: + lines.append("- 没有标注问题样例。") + else: + for item in annotation_issue_examples: + lines.append( + f"- `{item['annotation_issue']}` | tile=`{item['tile']}` | source_layer=`{item['source_layer']}` | " + f"fid=`{item['fid_legacy']}` | object=`{item['canonical_object_type'] or 'n/a'}`" + ) + lines.append(f" original: {format_component_map(item['original_components'])}") + lines.append(f" engineering: {format_component_map(item['engineering_components'])}") + + lines.extend([ + "", + "## Style 语义问题样例", + "", + ]) + if not style_semantic_issue_examples: + lines.append("- 没有 style 语义问题样例。") + else: + for item in style_semantic_issue_examples: + lines.append( + f"- `{item['style_semantic_issue']}` | tile=`{item['tile']}` | source_layer=`{item['source_layer']}` | " + f"fid=`{item['fid_legacy']}` | object=`{item['canonical_object_type'] or 'n/a'}`" + ) + lines.append(f" original: {format_component_map(item['original_components'])}") + lines.append(f" engineering: {format_component_map(item['engineering_components'])}") + REPORT_MD_PATH.write_text("\n".join(lines) + "\n", encoding="utf-8") @@ -865,12 +1132,16 @@ def persist_audit_run( def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser(description="Audit original vs engineering render outputs.") parser.add_argument("--audit-name", default=DEFAULT_AUDIT_NAME) + parser.add_argument("--comparison-label", default="工程版") + parser.add_argument("--fid-key") + parser.add_argument("--match-on-fid-only", action="store_true") parser.add_argument("--original-style", type=Path, default=DEFAULT_ORIGINAL_STYLE_PATH) parser.add_argument("--engineering-style", type=Path, default=DEFAULT_ENGINEERING_STYLE_PATH) parser.add_argument("--original-tile-root", type=Path, default=DEFAULT_ORIGINAL_TILE_ROOT) parser.add_argument("--engineering-tile-root", type=Path, default=DEFAULT_ENGINEERING_TILE_ROOT) parser.add_argument("--report-md", type=Path, default=DEFAULT_REPORT_MD_PATH) parser.add_argument("--report-json", type=Path, default=DEFAULT_REPORT_JSON_PATH) + parser.add_argument("--skip-db-persist", action="store_true") return parser.parse_args() @@ -882,15 +1153,23 @@ def main() -> None: global ENGINEERING_TILE_ROOT global REPORT_MD_PATH global REPORT_JSON_PATH + global SKIP_DB_PERSIST + global COMPARISON_LABEL + global FID_CODEC + global MATCH_ON_FID_ONLY args = parse_args() AUDIT_NAME = args.audit_name + COMPARISON_LABEL = args.comparison_label + FID_CODEC = NavSeaFidCodec(args.fid_key.encode("utf-8")) if args.fid_key else None + MATCH_ON_FID_ONLY = args.match_on_fid_only ORIGINAL_STYLE_PATH = args.original_style ENGINEERING_STYLE_PATH = args.engineering_style ORIGINAL_TILE_ROOT = args.original_tile_root ENGINEERING_TILE_ROOT = args.engineering_tile_root REPORT_MD_PATH = args.report_md REPORT_JSON_PATH = args.report_json + SKIP_DB_PERSIST = args.skip_db_persist original_style = load_style(ORIGINAL_STYLE_PATH) engineering_style = load_style(ENGINEERING_STYLE_PATH) @@ -902,70 +1181,142 @@ def main() -> None: status_counter: Counter[str] = Counter() source_layer_counter: Counter[tuple[str, str]] = Counter() mismatch_examples: list[dict[str, Any]] = [] + annotation_issue_counter: Counter[tuple[str, str]] = Counter() + annotation_issue_examples: list[dict[str, Any]] = [] + style_semantic_issue_counter: Counter[tuple[str, str]] = Counter() + style_semantic_issue_examples: list[dict[str, Any]] = [] - with db_connect() as conn: - with conn.cursor() as cur: - ensure_audit_tables(cur) - cur.execute("DELETE FROM navsea_render_audit_result") - cur.execute("DELETE FROM navsea_render_audit_run") - conn.commit() + if SKIP_DB_PERSIST: + for engineering_tile in engineering_tiles: + rel = engineering_tile.relative_to(ENGINEERING_TILE_ROOT) + original_tile = ORIGINAL_TILE_ROOT / rel + if not original_tile.exists(): + continue - rows: list[tuple[Any, ...]] = [] - for engineering_tile in engineering_tiles: - rel = engineering_tile.relative_to(ENGINEERING_TILE_ROOT) - original_tile = ORIGINAL_TILE_ROOT / rel - if not original_tile.exists(): - continue - - original_instances = decode_tile_instances("original", ORIGINAL_TILE_ROOT, original_style, original_tile) - engineering_instances = decode_tile_instances( - "engineering", ENGINEERING_TILE_ROOT, engineering_style, engineering_tile - ) - original_count += len(original_instances) - engineering_count += len(engineering_instances) - - all_instance_ids = sorted(set(original_instances) | set(engineering_instances)) - for instance_id in all_instance_ids: - item = compare_instance(original_instances.get(instance_id), engineering_instances.get(instance_id)) - result_count += 1 - status_counter[item["status"]] += 1 - if item["status"] != "exact_match": - source_layer_counter[(item["status"], item["source_layer"] or "unknown")] += 1 - if len(mismatch_examples) < MAX_EXAMPLES: - mismatch_examples.append(item) - - rows.append( - ( - AUDIT_NAME, - hash_text(item["object_instance_id"]), - item["object_instance_id"], - item["object_id"], - item["fid_legacy"], - item["tile_z"], - item["tile_x"], - item["tile_y"], - item["source_layer"], - item["canonical_object_type"], - item["status"], - json.dumps(item["original_components"], ensure_ascii=False), - json.dumps(item["engineering_components"], ensure_ascii=False), - ) - ) - if len(rows) >= DB_BATCH_SIZE: - insert_result_batch(cur, rows) - conn.commit() - rows.clear() - - insert_result_batch(cur, rows) - persist_audit_run( - cur, - original_count=original_count, - engineering_count=engineering_count, - result_count=result_count, - status_counter=status_counter, - source_layer_counter=source_layer_counter, + original_instances = decode_tile_instances("original", ORIGINAL_TILE_ROOT, original_style, original_tile) + engineering_instances = decode_tile_instances( + "engineering", ENGINEERING_TILE_ROOT, engineering_style, engineering_tile ) - conn.commit() + original_count += len(original_instances) + engineering_count += len(engineering_instances) + + all_instance_ids = sorted(set(original_instances) | set(engineering_instances)) + for instance_id in all_instance_ids: + item = compare_instance(original_instances.get(instance_id), engineering_instances.get(instance_id)) + result_count += 1 + status_counter[item["status"]] += 1 + if item["status"] != "exact_match": + source_layer_counter[(item["status"], item["source_layer"] or "unknown")] += 1 + if len(mismatch_examples) < MAX_EXAMPLES: + mismatch_examples.append(item) + annotation_issue = classify_annotation_issue(item) + if annotation_issue: + source_layer = item["source_layer"] or "unknown" + annotation_issue_counter[(annotation_issue, source_layer)] += 1 + if len(annotation_issue_examples) < MAX_EXAMPLES: + annotation_issue_examples.append( + { + **item, + "annotation_issue": annotation_issue, + } + ) + style_semantic_issue = classify_style_semantic_issue(item) + if style_semantic_issue: + source_layer = item["source_layer"] or "unknown" + style_semantic_issue_counter[(style_semantic_issue, source_layer)] += 1 + if len(style_semantic_issue_examples) < MAX_EXAMPLES: + style_semantic_issue_examples.append( + { + **item, + "style_semantic_issue": style_semantic_issue, + } + ) + else: + with db_connect() as conn: + with conn.cursor() as cur: + ensure_audit_tables(cur) + cur.execute("TRUNCATE TABLE navsea_render_audit_result") + cur.execute("TRUNCATE TABLE navsea_render_audit_run") + conn.commit() + + rows: list[tuple[Any, ...]] = [] + for engineering_tile in engineering_tiles: + rel = engineering_tile.relative_to(ENGINEERING_TILE_ROOT) + original_tile = ORIGINAL_TILE_ROOT / rel + if not original_tile.exists(): + continue + + original_instances = decode_tile_instances("original", ORIGINAL_TILE_ROOT, original_style, original_tile) + engineering_instances = decode_tile_instances( + "engineering", ENGINEERING_TILE_ROOT, engineering_style, engineering_tile + ) + original_count += len(original_instances) + engineering_count += len(engineering_instances) + + all_instance_ids = sorted(set(original_instances) | set(engineering_instances)) + for instance_id in all_instance_ids: + item = compare_instance(original_instances.get(instance_id), engineering_instances.get(instance_id)) + result_count += 1 + status_counter[item["status"]] += 1 + if item["status"] != "exact_match": + source_layer_counter[(item["status"], item["source_layer"] or "unknown")] += 1 + if len(mismatch_examples) < MAX_EXAMPLES: + mismatch_examples.append(item) + annotation_issue = classify_annotation_issue(item) + if annotation_issue: + source_layer = item["source_layer"] or "unknown" + annotation_issue_counter[(annotation_issue, source_layer)] += 1 + if len(annotation_issue_examples) < MAX_EXAMPLES: + annotation_issue_examples.append( + { + **item, + "annotation_issue": annotation_issue, + } + ) + style_semantic_issue = classify_style_semantic_issue(item) + if style_semantic_issue: + source_layer = item["source_layer"] or "unknown" + style_semantic_issue_counter[(style_semantic_issue, source_layer)] += 1 + if len(style_semantic_issue_examples) < MAX_EXAMPLES: + style_semantic_issue_examples.append( + { + **item, + "style_semantic_issue": style_semantic_issue, + } + ) + + rows.append( + ( + AUDIT_NAME, + hash_text(item["object_instance_id"]), + item["object_instance_id"], + item["object_id"], + item["fid_legacy"], + item["tile_z"], + item["tile_x"], + item["tile_y"], + item["source_layer"], + item["canonical_object_type"], + item["status"], + json.dumps(item["original_components"], ensure_ascii=False), + json.dumps(item["engineering_components"], ensure_ascii=False), + ) + ) + if len(rows) >= DB_BATCH_SIZE: + insert_result_batch(cur, rows) + conn.commit() + rows.clear() + + insert_result_batch(cur, rows) + persist_audit_run( + cur, + original_count=original_count, + engineering_count=engineering_count, + result_count=result_count, + status_counter=status_counter, + source_layer_counter=source_layer_counter, + ) + conn.commit() write_reports( original_count=original_count, @@ -974,6 +1325,10 @@ def main() -> None: status_counter=status_counter, source_layer_counter=source_layer_counter, mismatch_examples=mismatch_examples, + annotation_issue_counter=annotation_issue_counter, + annotation_issue_examples=annotation_issue_examples, + style_semantic_issue_counter=style_semantic_issue_counter, + style_semantic_issue_examples=style_semantic_issue_examples, ) print( json.dumps( diff --git a/navsea_tile_builder.py b/navsea_tile_builder.py index 0af38ef..be81bc9 100644 --- a/navsea_tile_builder.py +++ b/navsea_tile_builder.py @@ -52,6 +52,35 @@ LIGHT_COLOR_REMARK_MAP = { "A": "amber", } +NAVIGATION_MARK_DISPLAY_ICON_MAP = { + "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", +} + FINAL_RELEASE_PROPERTY_ALLOWLIST = frozenset( { "canonical_object_type", @@ -75,16 +104,119 @@ FINAL_RELEASE_PROPERTY_ALLOWLIST = frozenset( "light_sector_mode", "name_ja", "place_name_en", + "shape_class_code", } ) +RELEASE_CANONICAL_OBJECT_TYPE_MAP = { + "港湾灯台": "harbor_lighthouse", + "防波堤灯台": "breakwater_lighthouse", + "沿岸灯台 (15M over)": "coastal_lighthouse_over_15m", + "灯 (Lt)": "minor_light", + "灯標": "light_beacon", + "浮標 (やぐら型)": "lattice_buoy", + "円柱型浮標": "pillar_buoy", + "円筒型浮標": "can_buoy", + "船体露出沈船": "wreck_hull_exposed", + "危険全沈没船": "dangerous_fully_submerged_wreck", + "測定済みの沈船": "surveyed_wreck", + "魚礁": "fish_reef", + "錨泊地": "anchorage", + "海上地名": "sea_place_name", + "陆上地名": "land_place_name", + "底質": "seabed_material", + "等深线": "depth_contour", + "未分类对象": "unclassified_object", + "P基本線ククリ": "baseline_outline", + "P穴": "seabed_hole", + "p地名": "sea_place_name", + "p地名陸": "land_place_name", + "潜提": "submerged_reef", + "税関": "customs_office", + "河川域": "river_area", + "湖沼域": "lake_area", + "陸上水域": "inland_water_area", + "干潮帯": "tidal_flat", + "未測海域": "unsurveyed_area", + "浅所危険界": "shoal_danger_area", + "防波堤": "breakwater", + "浮施設・桟橋": "floating_facility_pier", + "撤去跡": "removed_structure_remains", + "煙突": "chimney", + "塔、やぐら、風車": "tower_yagura_windmill", + "海事関係署": "maritime_office", + "漁業協同組合": "fishing_cooperative", + "山頂": "mountain_top", + "その他 (記念碑等)": "other_landmark_monument", + "9000m以深": "over_9000m", + "等深線": "depth_contour_line", + "L海底地形": "bathymetry_line", + "P陸域": "land_area", + "道路": "road", + "P危険界ククリ": "hazard_boundary_outline", + "区画漁業": "demarcated_fishery", + "橋 (水門)": "bridge_water_gate", + "一本線で表わす桟橋": "pier_single_line", + "暗岩": "sunken_rock", + "概略等深線": "overview_depth_contour", + "険悪物": "dangerous_object", + "ビル": "building", + "漁港": "fishing_port", + "海底線 (電信電話)": "subsea_cable_telecom", + "一本線で表わす海上バース": "offshore_berth_single_line", + "P投錨注意障害物ククリ": "anchor_caution_hazard_outline", + "p投錨注意障害物": "anchor_caution_hazard_point", + "タンク": "tank", + "立標": "beacon", + "洗岩": "awash_rock", + "海底線 (電力)": "subsea_power_cable", + "灯浮標 (やぐら型)": "light_buoy_lattice", + "橋梁灯": "bridge_light", + "円錐型浮標": "conical_buoy", + "ポンツーン、パイル、杭": "pontoon_pile_posts", + "一本線で表わす潜提": "submerged_reef_single_line", + "一本線で表わす撤去跡": "removed_structure_single_line", + "海底輸送管 (水)": "subsea_water_pipeline", + "架空線、送電線": "overhead_transmission_line", + "海草": "seagrass", + "シーバース灯": "sea_berth_light", + "平水境界": "shoreline_boundary", + "港則法による境界": "port_regulation_boundary", + "p高さ制限": "clearance_limit_point", + "ドルフィン": "mooring_dolphin", + "P施設・境界線等ククリ": "facility_boundary_outline", + "全沈没船 (危険なし)": "fully_submerged_wreck_non_dangerous", + "マリーナ": "marina", + "ケーソン仮置き場": "caisson_storage_yard", + "サンドウェーブ": "sand_wave", + "一般港湾 (港則法区域、重要港湾)": "general_port_regulated_major", + "海底設置物、放水口、取水口": "seabed_installation_outfall_intake", + "定置漁業": "fixed_fishery", + "孤立危険物": "isolated_danger", + "P錨泊地等ククリ": "anchorage_outline", + "p錨泊地等": "anchorage_point", + "障害物": "obstruction", + "導灯": "leading_light", + "指向灯/照射灯": "directional_light", + "検疫錨地": "quarantine_anchorage", + "P754ククリ": "special_outline_754", + "養殖場": "aquaculture_area", + "海の駅": "sea_station", + "塔、やぐら、測台": "tower_yagura_survey_platform", + "P航行危険障害物ククリ": "navigation_hazard_outline", + "土砂捨て場": "spoil_ground", + "錨泊禁止区域": "anchorage_prohibited_area", + "漁網": "fishing_net", +} + def normalize_release_canonical_object_type(source_layer: str, canonical_object_type: str) -> str: + object_type = text_or_none(canonical_object_type) or "" if source_layer == "p高さ制限": return "clearance_limit_point" if source_layer == "L高さ制限": return "clearance_limit_line" - return canonical_object_type + return RELEASE_CANONICAL_OBJECT_TYPE_MAP.get(object_type, object_type) @dataclass(frozen=True) @@ -534,11 +666,12 @@ class NavSeaTileBuilder: properties["source_layer_rule_id"] = source_layer_rule_id properties["feature_id"] = row["feature_id"] - canonical_object_type = normalize_release_canonical_object_type( + raw_canonical_object_type = text_or_none(row["canonical_object_type"]) or "" + release_canonical_object_type = normalize_release_canonical_object_type( source_layer_jp, - text_or_none(row["canonical_object_type"]) or "", + raw_canonical_object_type, ) - properties["canonical_object_type"] = canonical_object_type + properties["canonical_object_type"] = raw_canonical_object_type properties["canonical_family"] = row["canonical_family"] properties["semantic_key"] = row["semantic_key"] properties["detection_key"] = row["detection_key"] @@ -547,19 +680,20 @@ class NavSeaTileBuilder: properties=properties, source_layer=source_layer_jp, output_layer=output_layer, - canonical_object_type=canonical_object_type, + canonical_object_type=raw_canonical_object_type, canonical_family=text_or_none(row["canonical_family"]) or "", geom_type=str(source_feature.get("geometry", {}).get("type", "")), feature_id=int(row["feature_id"]), tile=job, ) properties.update(chart_properties) + properties["canonical_object_type"] = release_canonical_object_type if self.engineering_mode: properties["trace_status"] = trace_status properties, field_name_unresolved = self.standardize_output_properties( properties=properties, source_layer=source_layer_jp, - canonical_object_type=canonical_object_type, + canonical_object_type=release_canonical_object_type, canonical_family=text_or_none(row["canonical_family"]) or "", geom_type=str(source_feature.get("geometry", {}).get("type", "")), feature_id=int(row["feature_id"]), @@ -786,6 +920,7 @@ class NavSeaTileBuilder: chart_symbol_code=text_or_none(chart.get("chart_symbol_code")) or "", light_color_code=text_or_none(chart.get("light_color_code")) or "", hazard_class=text_or_none(chart.get("hazard_class")) or "", + display_code=text_or_none(properties.get("表示用番号")) or text_or_none(properties.get("display_code")) or "", ) if chart_icon_image: chart.setdefault("chart_icon_image", chart_icon_image) @@ -895,7 +1030,7 @@ class NavSeaTileBuilder: if not self.strip_legacy_japanese_delivery: normalized[key] = value - if self.release_minimal and rule.field_name_std in {"class_code", "display_code"}: + if self.release_minimal and rule.field_name_std in {"class_code", "display_code", "shape_class_code"}: normalized[rule.field_name_std] = value if rule.keep_in_delivery: normalized[rule.field_name_std] = value @@ -1112,6 +1247,8 @@ class NavSeaTileBuilder: return "navigation_light", "lighthouse" if "導灯" in object_type: return "navigation_light", "leading_light" + if object_type == "灯 (Lt)": + return "navigation_light", "minor_light" if "灯" in object_type or "灯標" in object_type or "灯柱" in object_type: return "navigation_light", "light_beacon" if "浮標" in object_type: @@ -1375,8 +1512,13 @@ class NavSeaTileBuilder: chart_symbol_code: str, light_color_code: str, hazard_class: str, + display_code: str, ) -> str | None: if source_layer == "p航路標識群": + if display_code: + mapped = NAVIGATION_MARK_DISPLAY_ICON_MAP.get(display_code) + if mapped: + return mapped if chart_symbol_code == "leading_light": return "symbol-daytime-300" if chart_symbol_code == "lighthouse": diff --git a/report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_delivery_20nm.json b/report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_delivery_20nm.json new file mode 100644 index 0000000..023f685 --- /dev/null +++ b/report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_delivery_20nm.json @@ -0,0 +1,658 @@ +{ + "target_name": "delivery_20nm", + "raw_root": "/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles", + "target_root": "/home/wwwroot/pbf-delivery-karatsu-20nm", + "totals": { + "tiles_compared": 154, + "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, + "identifier_lost": 1426 + }, + "p施設・境界線等->facility_boundary_point": { + "raw_objects": 171, + "identifier_lost": 171 + }, + "p航行危険障害物->navigation_hazard_point": { + "raw_objects": 664, + "identifier_lost": 664 + }, + "p航路標識群->navigation_marks": { + "raw_objects": 1885, + "identifier_lost": 1885 + } + }, + "top_class_issues": [ + { + "class_key": "p投錨注意障害物:428", + "raw_objects": 702, + "preserved": 0, + "missing_object": 0, + "wrong_relayer": 0, + "identifier_lost": 702, + "identifier_mismatch": 0 + }, + { + "class_key": "p航行危険障害物:404", + "raw_objects": 413, + "preserved": 0, + "missing_object": 0, + "wrong_relayer": 0, + "identifier_lost": 413, + "identifier_mismatch": 0 + }, + { + "class_key": "p投錨注意障害物:420", + "raw_objects": 355, + "preserved": 0, + "missing_object": 0, + "wrong_relayer": 0, + "identifier_lost": 355, + "identifier_mismatch": 0 + }, + { + "class_key": "p投錨注意障害物:425", + "raw_objects": 255, + "preserved": 0, + "missing_object": 0, + "wrong_relayer": 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", + "raw_objects": 128, + "preserved": 0, + "missing_object": 0, + "wrong_relayer": 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", + "raw_objects": 40, + "preserved": 0, + "missing_object": 0, + "wrong_relayer": 0, + "identifier_lost": 40, + "identifier_mismatch": 0 + }, + { + "class_key": "p航路標識群:31135102", + "raw_objects": 37, + "preserved": 0, + "missing_object": 0, + "wrong_relayer": 0, + "identifier_lost": 37, + "identifier_mismatch": 0 + } + ], + "issue_examples": { + "identifier_lost": [ + { + "tile": [ + 10, + 880, + 409 + ], + "fid": 12007768, + "name": "若宮灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30000004", + "candidates": [ + { + "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": [ + 10, + 880, + 409 + ], + "fid": 12007824, + "name": "壱岐長島灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 409 + ], + "fid": 12007921, + "name": "手長島灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 409 + ], + "fid": 12007971, + "name": "壱岐大瀬灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 410 + ], + "fid": 12007773, + "name": "二神島灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30000007", + "candidates": [ + { + "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": [ + 10, + 880, + 410 + ], + "fid": 12007805, + "name": "的山大島曲り鼻灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 410 + ], + "fid": 12007823, + "name": "海豚鼻灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 410 + ], + "fid": 12007824, + "name": "壱岐長島灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 410 + ], + "fid": 12007836, + "name": "大碆鼻灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 410 + ], + "fid": 12007880, + "name": "壱岐郷ノ瀬灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 410 + ], + "fid": 12007885, + "name": "馬ノ頭鼻灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 410 + ], + "fid": 12007886, + "name": "崎瀬鼻灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 410 + ], + "fid": 12007938, + "name": "的山大島長崎鼻灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 411 + ], + "fid": 12007795, + "name": "青砂埼灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 411 + ], + "fid": 12007835, + "name": "生月長瀬鼻灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 411 + ], + "fid": 12007897, + "name": "平戸牛ケ首灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100005", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 411 + ], + "fid": 12007919, + "name": "津崎鼻灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 411 + ], + "fid": 12007939, + "name": "肥前横島灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 411 + ], + "fid": 12007940, + "name": "南風埼灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + }, + { + "tile": [ + 10, + 880, + 411 + ], + "fid": 12007941, + "name": "下枯木島灯台", + "raw_layer": "p航路標識群", + "delivery_layer": "navigation_marks", + "raw_match_field": "表示用番号", + "raw_match_value": "30100004", + "candidates": [ + { + "delivery_match_field": "display_code", + "delivery_match_value": null, + "canonical_object_type": "港湾灯台", + "chart_symbol_code": "lighthouse", + "chart_icon_image": "symbol-daytime-301" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_delivery_20nm.md b/report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_delivery_20nm.md new file mode 100644 index 0000000..4f02df4 --- /dev/null +++ b/report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_delivery_20nm.md @@ -0,0 +1,99 @@ +# Object Preservation Audit: delivery_20nm + +- raw root: `/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles` +- target root: `/home/wwwroot/pbf-delivery-karatsu-20nm` + +## Totals + +- tiles compared: `154` +- raw objects: `4165` +- preserved: `0` +- missing object: `0` +- wrong relayer: `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` +- 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` + +- raw objects: `664` +- preserved: `0` +- missing object: `0` +- wrong relayer: `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` 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: `identifier_lost` + +- {"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_canonical_type_2026-04-03/object_preservation_final_20nm.json b/report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_final_20nm.json new file mode 100644 index 0000000..ae25761 --- /dev/null +++ b/report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_final_20nm.json @@ -0,0 +1,215 @@ +{ + "target_name": "final_20nm", + "raw_root": "/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles", + "target_root": "/tmp/pbf-delivery-karatsu-20nm-final-canonical-20260403", + "totals": { + "tiles_compared": 154, + "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": [ + { + "class_key": "p投錨注意障害物:428", + "raw_objects": 702, + "preserved": 702, + "missing_object": 0, + "wrong_relayer": 0, + "identifier_lost": 0, + "identifier_mismatch": 0 + }, + { + "class_key": "p航行危険障害物:404", + "raw_objects": 413, + "preserved": 413, + "missing_object": 0, + "wrong_relayer": 0, + "identifier_lost": 0, + "identifier_mismatch": 0 + }, + { + "class_key": "p投錨注意障害物:420", + "raw_objects": 355, + "preserved": 355, + "missing_object": 0, + "wrong_relayer": 0, + "identifier_lost": 0, + "identifier_mismatch": 0 + }, + { + "class_key": "p投錨注意障害物:425", + "raw_objects": 255, + "preserved": 255, + "missing_object": 0, + "wrong_relayer": 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", + "raw_objects": 128, + "preserved": 128, + "missing_object": 0, + "wrong_relayer": 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", + "raw_objects": 40, + "preserved": 40, + "missing_object": 0, + "wrong_relayer": 0, + "identifier_lost": 0, + "identifier_mismatch": 0 + }, + { + "class_key": "p航路標識群:31135102", + "raw_objects": 37, + "preserved": 37, + "missing_object": 0, + "wrong_relayer": 0, + "identifier_lost": 0, + "identifier_mismatch": 0 + } + ], + "issue_examples": {} +} \ No newline at end of file diff --git a/report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_final_20nm.md b/report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_final_20nm.md new file mode 100644 index 0000000..c8b0dfe --- /dev/null +++ b/report/object_preservation_20nm_canonical_type_2026-04-03/object_preservation_final_20nm.md @@ -0,0 +1,76 @@ +# Object Preservation Audit: final_20nm + +- raw root: `/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles` +- target root: `/tmp/pbf-delivery-karatsu-20nm-final-canonical-20260403` + +## Totals + +- tiles compared: `154` +- raw objects: `4165` +- preserved: `4165` +- missing object: `0` +- wrong relayer: `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` +- 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` + +- raw objects: `664` +- preserved: `664` +- missing object: `0` +- wrong relayer: `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` 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/render_audit_10nm_canonical_type_2026-04-03.json b/report/render_audit_10nm_canonical_type_2026-04-03.json new file mode 100644 index 0000000..4bfcafb --- /dev/null +++ b/report/render_audit_10nm_canonical_type_2026-04-03.json @@ -0,0 +1,2378 @@ +{ + "original_feature_instances": 134772, + "engineering_feature_instances": 134772, + "result_count": 134772, + "status_counts": { + "exact_match": 121855, + "mismatch": 12912, + "missing_in_engineering": 5 + }, + "source_layer_issue_counts": [ + { + "status": "mismatch", + "source_layer": "P基本線ククリ", + "count": 7873 + }, + { + "status": "mismatch", + "source_layer": "P基本線", + "count": 2876 + }, + { + "status": "mismatch", + "source_layer": "L基本線", + "count": 619 + }, + { + "status": "mismatch", + "source_layer": "p航路標識群", + "count": 574 + }, + { + "status": "mismatch", + "source_layer": "p投錨注意障害物", + "count": 374 + }, + { + "status": "mismatch", + "source_layer": "p航行危険障害物", + "count": 296 + }, + { + "status": "mismatch", + "source_layer": "L海底線", + "count": 100 + }, + { + "status": "mismatch", + "source_layer": "P陸上構造物陸", + "count": 98 + }, + { + "status": "mismatch", + "source_layer": "P潜堤", + "count": 36 + }, + { + "status": "mismatch", + "source_layer": "p施設・境界線等", + "count": 13 + }, + { + "status": "mismatch", + "source_layer": "L高さ制限", + "count": 12 + }, + { + "status": "mismatch", + "source_layer": "L739", + "count": 11 + }, + { + "status": "mismatch", + "source_layer": "L741", + "count": 11 + }, + { + "status": "mismatch", + "source_layer": "P施設・境界線等", + "count": 8 + }, + { + "status": "missing_in_engineering", + "source_layer": "p陸上構造物", + "count": 5 + }, + { + "status": "mismatch", + "source_layer": "P漁具定置箇所", + "count": 4 + }, + { + "status": "mismatch", + "source_layer": "P投錨注意障害物", + "count": 4 + }, + { + "status": "mismatch", + "source_layer": "P航行危険障害物ククリ", + "count": 1 + }, + { + "status": "mismatch", + "source_layer": "P航行危険障害物", + "count": 1 + }, + { + "status": "mismatch", + "source_layer": "p錨泊地等", + "count": 1 + } + ], + "annotation_issue_counts": [ + { + "issue": "icon_missing_in_engineering", + "source_layer": "p陸上構造物", + "count": 5 + } + ], + "style_semantic_issue_counts": [], + "mismatch_examples": [ + { + "status": "mismatch", + "object_instance_id": "fid:12007793|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12007793|geom:Point", + "fid_legacy": "12007793", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(3) W 13s 55m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"鷹島灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl(3) W 13s 55m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"鷹島灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl(3) W 13s 55m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "鷹島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl(3) W 13s 55m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "鷹島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:12007820|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12007820|geom:Point", + "fid_legacy": "12007820", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 6s 56m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"烏帽子島灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 6s 56m 12M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"烏帽子島灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 6s 56m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "烏帽子島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 6s 56m 12M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "烏帽子島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:12007821|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12007821|geom:Point", + "fid_legacy": "12007821", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 5s 21m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"波戸岬灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 5s 21m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"波戸岬灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 5s 21m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "波戸岬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 5s 21m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "波戸岬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:12007822|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12007822|geom:Point", + "fid_legacy": "12007822", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 80m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"肥前向島灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 80m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"肥前向島灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 80m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "肥前向島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 3s 80m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "肥前向島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:12007862|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12007862|geom:Point", + "fid_legacy": "12007862", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 71m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"加唐島灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 71m 7M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"加唐島灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 71m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "加唐島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 3s 71m 7M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "加唐島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:12007878|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12007878|geom:Point", + "fid_legacy": "12007878", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 36m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"女瀬鼻灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 36m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"女瀬鼻灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 36m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "女瀬鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 3s 36m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "女瀬鼻灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:12007879|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12007879|geom:Point", + "fid_legacy": "12007879", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 11m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"肥前宮埼灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 4s 11m 3M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"肥前宮埼灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 4s 11m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "肥前宮埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 4s 11m 3M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "肥前宮埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:12007892|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12007892|geom:Point", + "fid_legacy": "12007892", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 13m 4M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"神集島港宮埼灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 13m 4M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"神集島港宮埼灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Iso W 6s 13m 4M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "神集島港宮埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Iso W 6s 13m 4M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "神集島港宮埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:12007914|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12007914|geom:Point", + "fid_legacy": "12007914", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 10s 12m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"呼子平瀬灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 10s 12m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"呼子平瀬灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Iso W 10s 12m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "呼子平瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Iso W 10s 12m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "呼子平瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:12007915|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12007915|geom:Point", + "fid_legacy": "12007915", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 31m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"肥前立石埼灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 31m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"肥前立石埼灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Iso W 6s 31m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "肥前立石埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Iso W 6s 31m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "肥前立石埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:12007916|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12007916|geom:Point", + "fid_legacy": "12007916", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 30m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"肥前馬渡島灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 6s 30m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"肥前馬渡島灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Iso W 6s 30m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "肥前馬渡島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Iso W 6s 30m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "肥前馬渡島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:12007917|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12007917|geom:Point", + "fid_legacy": "12007917", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 10s 26m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"値賀埼灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Iso W 10s 26m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"値賀埼灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Iso W 10s 26m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "値賀埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Iso W 10s 26m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "値賀埼灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:12007918|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12007918|geom:Point", + "fid_legacy": "12007918", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 15m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"貝瀬灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 15m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"貝瀬灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 15m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "貝瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 3s 15m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "貝瀬灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:12008013|geom:Point|z:10|x:881|y:410", + "object_id": "fid:12008013|geom:Point", + "fid_legacy": "12008013", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "p航路標識群", + "canonical_object_type": "harbor_lighthouse", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"arc-daytime-m3\"}", + "icon:{\"icon_image\":\"light-daytime-3\"}", + "icon:{\"icon_image\":\"symbol-daytime-301\"}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 11m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"臼島灯台\"}" + ] + }, + "engineering_components": { + "icon": [ + "icon:{\"icon_image\":\"light-daytime-3\",\"icon_size\":1.0}", + "icon:{\"icon_image\":\"symbol-daytime-301\",\"icon_size\":1.08}" + ], + "text": [ + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"Fl W 3s 11m 5M\"}", + "text:{\"text_anchor\":\"left\",\"text_color\":\"rgba(0,0,0,1)\",\"text_size\":10,\"text_value\":\"臼島灯台\"}" + ] + }, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#S航路標識群#arc", + "icon_image": "arc-daytime-m3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#S3#S航路標識群フレア", + "icon_image": "light-daytime-3", + "icon_size": null + }, + { + "layer_id": "#b#d2#d5#d10#at#S3#S航路標識群", + "icon_image": "symbol-daytime-301", + "icon_size": null + } + ], + "text": [ + { + "layer_id": "#b#d2#d5#d10#LA#C航路標識点灯略記", + "text_value": "Fl W 3s 11m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "#b#d2#d5#d10#LN#C航路標識点名称", + "text_value": "臼島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + }, + "engineering_payloads": { + "icon": [ + { + "layer_id": "nav-light-flare", + "icon_image": "light-daytime-3", + "icon_size": 1.0 + }, + { + "layer_id": "nav-marks-harbor-lighthouses", + "icon_image": "symbol-daytime-301", + "icon_size": 1.08 + } + ], + "text": [ + { + "layer_id": "nav-light-abbr-labels", + "text_value": "Fl W 3s 11m 5M", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + }, + { + "layer_id": "nav-mark-labels", + "text_value": "臼島灯台", + "text_color": "rgba(0,0,0,1)", + "text_anchor": "left", + "text_size": 10 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:3119091|geom:Polygon|z:10|x:881|y:410", + "object_id": "fid:3119091|geom:Polygon", + "fid_legacy": "3119091", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P潜堤", + "canonical_object_type": "submerged_reef", + "original_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(129,195,226,1)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-175\"}" + ] + }, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"#7d7f95\",\"fill_opacity\":0.45,\"fill_outline_color\":\"#55586f\"}" + ] + }, + "original_payloads": { + "fill": [ + { + "layer_id": "#b#d2#d5#d10#at#P潜堤塗", + "fill_color": "rgba(129,195,226,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + }, + { + "layer_id": "#b#d2#d5#d10#P潜堤網", + "fill_color": null, + "fill_pattern": "fill-daytime-175", + "fill_outline_color": null, + "fill_opacity": null + } + ] + }, + "engineering_payloads": { + "fill": [ + { + "layer_id": "submerged-structures", + "fill_color": "#7d7f95", + "fill_pattern": null, + "fill_outline_color": "#55586f", + "fill_opacity": 0.45 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:3127392|geom:Polygon|z:10|x:881|y:410", + "object_id": "fid:3127392|geom:Polygon", + "fid_legacy": "3127392", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P潜堤", + "canonical_object_type": "submerged_reef", + "original_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(129,195,226,1)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-175\"}" + ] + }, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"#7d7f95\",\"fill_opacity\":0.45,\"fill_outline_color\":\"#55586f\"}" + ] + }, + "original_payloads": { + "fill": [ + { + "layer_id": "#b#d2#d5#d10#at#P潜堤塗", + "fill_color": "rgba(129,195,226,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + }, + { + "layer_id": "#b#d2#d5#d10#P潜堤網", + "fill_color": null, + "fill_pattern": "fill-daytime-175", + "fill_outline_color": null, + "fill_opacity": null + } + ] + }, + "engineering_payloads": { + "fill": [ + { + "layer_id": "submerged-structures", + "fill_color": "#7d7f95", + "fill_pattern": null, + "fill_outline_color": "#55586f", + "fill_opacity": 0.45 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:3133512|geom:Polygon|z:10|x:881|y:410", + "object_id": "fid:3133512|geom:Polygon", + "fid_legacy": "3133512", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P潜堤", + "canonical_object_type": "submerged_reef", + "original_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(129,195,226,1)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-175\"}" + ] + }, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"#7d7f95\",\"fill_opacity\":0.45,\"fill_outline_color\":\"#55586f\"}" + ] + }, + "original_payloads": { + "fill": [ + { + "layer_id": "#b#d2#d5#d10#at#P潜堤塗", + "fill_color": "rgba(129,195,226,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + }, + { + "layer_id": "#b#d2#d5#d10#P潜堤網", + "fill_color": null, + "fill_pattern": "fill-daytime-175", + "fill_outline_color": null, + "fill_opacity": null + } + ] + }, + "engineering_payloads": { + "fill": [ + { + "layer_id": "submerged-structures", + "fill_color": "#7d7f95", + "fill_pattern": null, + "fill_outline_color": "#55586f", + "fill_opacity": 0.45 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:3137152|geom:Polygon|z:10|x:881|y:410", + "object_id": "fid:3137152|geom:Polygon", + "fid_legacy": "3137152", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P潜堤", + "canonical_object_type": "submerged_reef", + "original_components": { + "fill": [ + "fill:{\"fill_color\":\"rgba(129,195,226,1)\"}", + "fill:{\"fill_pattern\":\"fill-daytime-175\"}" + ] + }, + "engineering_components": { + "fill": [ + "fill:{\"fill_color\":\"#7d7f95\",\"fill_opacity\":0.45,\"fill_outline_color\":\"#55586f\"}" + ] + }, + "original_payloads": { + "fill": [ + { + "layer_id": "#b#d2#d5#d10#at#P潜堤塗", + "fill_color": "rgba(129,195,226,1)", + "fill_pattern": null, + "fill_outline_color": null, + "fill_opacity": null + }, + { + "layer_id": "#b#d2#d5#d10#P潜堤網", + "fill_color": null, + "fill_pattern": "fill-daytime-175", + "fill_outline_color": null, + "fill_opacity": null + } + ] + }, + "engineering_payloads": { + "fill": [ + { + "layer_id": "submerged-structures", + "fill_color": "#7d7f95", + "fill_pattern": null, + "fill_outline_color": "#55586f", + "fill_opacity": 0.45 + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4053953|geom:LineString|z:10|x:881|y:410", + "object_id": "fid:4053953|geom:LineString", + "fid_legacy": "4053953", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P基本線ククリ", + "canonical_object_type": "baseline_outline", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4053954|geom:LineString|z:10|x:881|y:410", + "object_id": "fid:4053954|geom:LineString", + "fid_legacy": "4053954", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P基本線ククリ", + "canonical_object_type": "baseline_outline", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4053959|geom:LineString|z:10|x:881|y:410", + "object_id": "fid:4053959|geom:LineString", + "fid_legacy": "4053959", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P基本線ククリ", + "canonical_object_type": "baseline_outline", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4053961|geom:LineString|z:10|x:881|y:410", + "object_id": "fid:4053961|geom:LineString", + "fid_legacy": "4053961", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P基本線ククリ", + "canonical_object_type": "baseline_outline", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4053982|geom:LineString|z:10|x:881|y:410", + "object_id": "fid:4053982|geom:LineString", + "fid_legacy": "4053982", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P基本線ククリ", + "canonical_object_type": "baseline_outline", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4053983|geom:LineString|z:10|x:881|y:410", + "object_id": "fid:4053983|geom:LineString", + "fid_legacy": "4053983", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P基本線ククリ", + "canonical_object_type": "baseline_outline", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4053984|geom:LineString|z:10|x:881|y:410", + "object_id": "fid:4053984|geom:LineString", + "fid_legacy": "4053984", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P基本線ククリ", + "canonical_object_type": "baseline_outline", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4053985|geom:LineString|z:10|x:881|y:410", + "object_id": "fid:4053985|geom:LineString", + "fid_legacy": "4053985", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P基本線ククリ", + "canonical_object_type": "baseline_outline", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4053986|geom:LineString|z:10|x:881|y:410", + "object_id": "fid:4053986|geom:LineString", + "fid_legacy": "4053986", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P基本線ククリ", + "canonical_object_type": "baseline_outline", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4053987|geom:LineString|z:10|x:881|y:410", + "object_id": "fid:4053987|geom:LineString", + "fid_legacy": "4053987", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P基本線ククリ", + "canonical_object_type": "baseline_outline", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4053988|geom:LineString|z:10|x:881|y:410", + "object_id": "fid:4053988|geom:LineString", + "fid_legacy": "4053988", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P基本線ククリ", + "canonical_object_type": "baseline_outline", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + }, + { + "status": "mismatch", + "object_instance_id": "fid:4053989|geom:LineString|z:10|x:881|y:410", + "object_id": "fid:4053989|geom:LineString", + "fid_legacy": "4053989", + "tile": "10/881/410", + "tile_z": 10, + "tile_x": 881, + "tile_y": 410, + "source_layer": "P基本線ククリ", + "canonical_object_type": "baseline_outline", + "original_components": { + "line": [ + "line:{\"line_color\":\"rgba(136,152,139,1)\",\"line_width\":1}" + ] + }, + "engineering_components": { + "line": [ + "line:{\"line_color\":\"rgba(95,106,95,1)\",\"line_width\":2}" + ] + }, + "original_payloads": { + "line": [ + { + "layer_id": "#b#d2#d5#d10#P基本線ククリ", + "line_color": "rgba(136,152,139,1)", + "line_width": 1, + "line_dasharray": null, + "line_pattern": null + } + ] + }, + "engineering_payloads": { + "line": [ + { + "layer_id": "clip-outline", + "line_color": "rgba(95,106,95,1)", + "line_width": 2, + "line_dasharray": null, + "line_pattern": null + } + ] + } + } + ], + "annotation_issue_examples": [ + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011135|geom:Point|z:11|x:1762|y:822", + "object_id": "fid:6011135|geom:Point", + "fid_legacy": "6011135", + "tile": "11/1762/822", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 822, + "source_layer": "p陸上構造物", + "canonical_object_type": "customs_office", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011150|geom:Point|z:11|x:1762|y:823", + "object_id": "fid:6011150|geom:Point", + "fid_legacy": "6011150", + "tile": "11/1762/823", + "tile_z": 11, + "tile_x": 1762, + "tile_y": 823, + "source_layer": "p陸上構造物", + "canonical_object_type": "customs_office", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011136|geom:Point|z:11|x:1763|y:821", + "object_id": "fid:6011136|geom:Point", + "fid_legacy": "6011136", + "tile": "11/1763/821", + "tile_z": 11, + "tile_x": 1763, + "tile_y": 821, + "source_layer": "p陸上構造物", + "canonical_object_type": "customs_office", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011135|geom:Point|z:12|x:3524|y:1645", + "object_id": "fid:6011135|geom:Point", + "fid_legacy": "6011135", + "tile": "12/3524/1645", + "tile_z": 12, + "tile_x": 3524, + "tile_y": 1645, + "source_layer": "p陸上構造物", + "canonical_object_type": "customs_office", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + }, + { + "status": "missing_in_engineering", + "object_instance_id": "fid:6011136|geom:Point|z:12|x:3526|y:1643", + "object_id": "fid:6011136|geom:Point", + "fid_legacy": "6011136", + "tile": "12/3526/1643", + "tile_z": 12, + "tile_x": 3526, + "tile_y": 1643, + "source_layer": "p陸上構造物", + "canonical_object_type": "customs_office", + "original_components": { + "icon": [ + "icon:{\"icon_image\":\"symbol-daytime-662\"}" + ] + }, + "engineering_components": {}, + "original_payloads": { + "icon": [ + { + "layer_id": "#b#d2#d5#d10#at#S陸上構造物", + "icon_image": "symbol-daytime-662", + "icon_size": null + } + ] + }, + "engineering_payloads": {}, + "annotation_issue": "icon_missing_in_engineering" + } + ], + "style_semantic_issue_examples": [] +} \ No newline at end of file diff --git a/report/render_audit_10nm_canonical_type_2026-04-03.md b/report/render_audit_10nm_canonical_type_2026-04-03.md new file mode 100644 index 0000000..9a138aa --- /dev/null +++ b/report/render_audit_10nm_canonical_type_2026-04-03.md @@ -0,0 +1,169 @@ +# NavSea 原始版 vs original-vs-delivery-10nm-canonical-ascii-2026-04-03渲染审计报告 + +## 范围 + +- 原始样式: `/mnt/sda1/www/newpec/style.patched.local.json` +- original-vs-delivery-10nm-canonical-ascii-2026-04-03样式: `/root/sourceserver/pbf/src/pbf/style.navsea-delivery-karatsu-10nm.json` +- 原始瓦片根目录: `/home/wwwroot/newpec/exported_auto/tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles` +- original-vs-delivery-10nm-canonical-ascii-2026-04-03瓦片根目录: `/tmp/pbf-delivery-karatsu-10nm-canonical-20260403` +- 原始 feature 实例数: `134772` +- original-vs-delivery-10nm-canonical-ascii-2026-04-03 feature 实例数: `134772` +- 审计结果数: `134772` + +## 匹配口径 + +- 主键优先使用 legacy `fid`。 +- 没有 `fid` 的对象,回退到 `geometry + 稳定旧属性`。 +- 审计粒度保留 tile 实例,因为渲染具有 zoom 敏感性。 + +## 结果统计 + +- `exact_match`: `121855` +- `mismatch`: `12912` +- `missing_in_engineering`: `5` + +## 主要问题层 + +- `mismatch` | `P基本線ククリ` | `7873` +- `mismatch` | `P基本線` | `2876` +- `mismatch` | `L基本線` | `619` +- `mismatch` | `p航路標識群` | `574` +- `mismatch` | `p投錨注意障害物` | `374` +- `mismatch` | `p航行危険障害物` | `296` +- `mismatch` | `L海底線` | `100` +- `mismatch` | `P陸上構造物陸` | `98` +- `mismatch` | `P潜堤` | `36` +- `mismatch` | `p施設・境界線等` | `13` +- `mismatch` | `L高さ制限` | `12` +- `mismatch` | `L739` | `11` +- `mismatch` | `L741` | `11` +- `mismatch` | `P施設・境界線等` | `8` +- `missing_in_engineering` | `p陸上構造物` | `5` +- `mismatch` | `P漁具定置箇所` | `4` +- `mismatch` | `P投錨注意障害物` | `4` +- `mismatch` | `P航行危険障害物ククリ` | `1` +- `mismatch` | `P航行危険障害物` | `1` +- `mismatch` | `p錨泊地等` | `1` + +## 标注专项问题 + +- `icon_missing_in_engineering` | `p陸上構造物` | `5` + +## Style 语义专项问题 + +- 没有发现 style 语义专项问题。 + +## 差异样例 + +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12007793` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(3) W 13s 55m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"鷹島灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl(3) W 13s 55m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"鷹島灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12007820` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 6s 56m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"烏帽子島灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 6s 56m 12M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"烏帽子島灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12007821` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 5s 21m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"波戸岬灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 5s 21m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"波戸岬灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12007822` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 80m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"肥前向島灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 80m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"肥前向島灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12007862` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 71m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"加唐島灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 71m 7M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"加唐島灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12007878` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 36m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"女瀬鼻灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 36m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"女瀬鼻灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12007879` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 11m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"肥前宮埼灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 4s 11m 3M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"肥前宮埼灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12007892` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 13m 4M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"神集島港宮埼灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 13m 4M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"神集島港宮埼灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12007914` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 10s 12m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"呼子平瀬灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 10s 12m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"呼子平瀬灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12007915` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 31m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"肥前立石埼灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 31m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"肥前立石埼灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12007916` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 30m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"肥前馬渡島灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 6s 30m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"肥前馬渡島灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12007917` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 10s 26m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"値賀埼灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Iso W 10s 26m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"値賀埼灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12007918` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 15m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"貝瀬灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 15m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"貝瀬灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`p航路標識群` | fid=`12008013` | object=`harbor_lighthouse` + original: icon=['icon:{"icon_image":"arc-daytime-m3"}', 'icon:{"icon_image":"light-daytime-3"}', 'icon:{"icon_image":"symbol-daytime-301"}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 11m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"臼島灯台"}'] + engineering: icon=['icon:{"icon_image":"light-daytime-3","icon_size":1.0}', 'icon:{"icon_image":"symbol-daytime-301","icon_size":1.08}']; text=['text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"Fl W 3s 11m 5M"}', 'text:{"text_anchor":"left","text_color":"rgba(0,0,0,1)","text_size":10,"text_value":"臼島灯台"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P潜堤` | fid=`3119091` | object=`submerged_reef` + original: fill=['fill:{"fill_color":"rgba(129,195,226,1)"}', 'fill:{"fill_pattern":"fill-daytime-175"}'] + engineering: fill=['fill:{"fill_color":"#7d7f95","fill_opacity":0.45,"fill_outline_color":"#55586f"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P潜堤` | fid=`3127392` | object=`submerged_reef` + original: fill=['fill:{"fill_color":"rgba(129,195,226,1)"}', 'fill:{"fill_pattern":"fill-daytime-175"}'] + engineering: fill=['fill:{"fill_color":"#7d7f95","fill_opacity":0.45,"fill_outline_color":"#55586f"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P潜堤` | fid=`3133512` | object=`submerged_reef` + original: fill=['fill:{"fill_color":"rgba(129,195,226,1)"}', 'fill:{"fill_pattern":"fill-daytime-175"}'] + engineering: fill=['fill:{"fill_color":"#7d7f95","fill_opacity":0.45,"fill_outline_color":"#55586f"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P潜堤` | fid=`3137152` | object=`submerged_reef` + original: fill=['fill:{"fill_color":"rgba(129,195,226,1)"}', 'fill:{"fill_pattern":"fill-daytime-175"}'] + engineering: fill=['fill:{"fill_color":"#7d7f95","fill_opacity":0.45,"fill_outline_color":"#55586f"}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P基本線ククリ` | fid=`4053953` | object=`baseline_outline` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P基本線ククリ` | fid=`4053954` | object=`baseline_outline` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P基本線ククリ` | fid=`4053959` | object=`baseline_outline` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P基本線ククリ` | fid=`4053961` | object=`baseline_outline` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P基本線ククリ` | fid=`4053982` | object=`baseline_outline` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P基本線ククリ` | fid=`4053983` | object=`baseline_outline` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P基本線ククリ` | fid=`4053984` | object=`baseline_outline` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P基本線ククリ` | fid=`4053985` | object=`baseline_outline` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P基本線ククリ` | fid=`4053986` | object=`baseline_outline` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P基本線ククリ` | fid=`4053987` | object=`baseline_outline` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P基本線ククリ` | fid=`4053988` | object=`baseline_outline` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] +- `mismatch` | tile=`10/881/410` | source_layer=`P基本線ククリ` | fid=`4053989` | object=`baseline_outline` + original: line=['line:{"line_color":"rgba(136,152,139,1)","line_width":1}'] + engineering: line=['line:{"line_color":"rgba(95,106,95,1)","line_width":2}'] + +## 标注问题样例 + +- `icon_missing_in_engineering` | tile=`11/1762/822` | source_layer=`p陸上構造物` | fid=`6011135` | object=`customs_office` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1762/823` | source_layer=`p陸上構造物` | fid=`6011150` | object=`customs_office` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`11/1763/821` | source_layer=`p陸上構造物` | fid=`6011136` | object=`customs_office` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3524/1645` | source_layer=`p陸上構造物` | fid=`6011135` | object=`customs_office` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none +- `icon_missing_in_engineering` | tile=`12/3526/1643` | source_layer=`p陸上構造物` | fid=`6011136` | object=`customs_office` + original: icon=['icon:{"icon_image":"symbol-daytime-662"}'] + engineering: none + +## Style 语义问题样例 + +- 没有 style 语义问题样例。 diff --git a/report/strict_audit_20nm_buoy_323_check/compare_diff.png b/report/strict_audit_20nm_buoy_323_check/compare_diff.png new file mode 100644 index 0000000..4beb6d5 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check/compare_diff.png differ diff --git a/report/strict_audit_20nm_buoy_323_check/compare_full.png b/report/strict_audit_20nm_buoy_323_check/compare_full.png new file mode 100644 index 0000000..63eacd3 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check/compare_full.png differ diff --git a/report/strict_audit_20nm_buoy_323_check/compare_left.png b/report/strict_audit_20nm_buoy_323_check/compare_left.png new file mode 100644 index 0000000..7643486 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check/compare_left.png differ diff --git a/report/strict_audit_20nm_buoy_323_check/compare_right.png b/report/strict_audit_20nm_buoy_323_check/compare_right.png new file mode 100644 index 0000000..58d1d95 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check/compare_right.png differ diff --git a/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_central_passage_marks_diff.png b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_central_passage_marks_diff.png new file mode 100644 index 0000000..ae83b7d Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_central_passage_marks_diff.png differ diff --git a/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_central_passage_marks_left.png b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_central_passage_marks_left.png new file mode 100644 index 0000000..8f5c10b Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_central_passage_marks_left.png differ diff --git a/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_central_passage_marks_right.png b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_central_passage_marks_right.png new file mode 100644 index 0000000..a4cd71b Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_central_passage_marks_right.png differ diff --git a/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_diff.png b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_diff.png new file mode 100644 index 0000000..0d6e0fa Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_diff.png differ diff --git a/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_left.png b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_left.png new file mode 100644 index 0000000..b200090 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_left.png differ diff --git a/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_right.png b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_right.png new file mode 100644 index 0000000..e4d187a Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_right.png differ diff --git a/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_diff.png b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_diff.png new file mode 100644 index 0000000..d415a79 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_diff.png differ diff --git a/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_left.png b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_left.png new file mode 100644 index 0000000..c3bfc3a Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_left.png differ diff --git a/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_right.png b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_right.png new file mode 100644 index 0000000..8f307b3 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_right.png differ diff --git a/report/strict_audit_20nm_buoy_323_check/strict_audit_summary.json b/report/strict_audit_20nm_buoy_323_check/strict_audit_summary.json new file mode 100644 index 0000000..e5b2d8f --- /dev/null +++ b/report/strict_audit_20nm_buoy_323_check/strict_audit_summary.json @@ -0,0 +1,325 @@ +{ + "compare_url": "http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html?profile=karatsu20&audit=1¢er=130.40497,33.609376&zoom=14.5", + "compare_version": "compare-r16-20260401-1734", + "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": 251184, + "changed_ratio": 0.981187, + "mean_abs_rgb": [ + 30.7791, + 22.7321, + 27.3325 + ], + "rms_rgb": [ + 52.04, + 39.851, + 46.4777 + ], + "diff_bbox": [ + 0, + 0, + 640, + 400 + ], + "full_crop_left": [ + 0, + 150, + 640, + 550 + ], + "full_crop_right": [ + 640, + 150, + 1280, + 550 + ], + "hotspots": [ + { + "image_width": 269, + "image_height": 128, + "total_pixels": 34432, + "changed_pixels": 34432, + "changed_ratio": 1.0, + "mean_abs_rgb": [ + 31.4511, + 17.2178, + 18.6738 + ], + "rms_rgb": [ + 41.962, + 19.7977, + 19.9779 + ], + "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_buoy_323_check/hotspots/hakata_route_outline_facility_left.png", + "right_image": "report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_right.png", + "diff_image": "report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_diff.png" + }, + { + "image_width": 243, + "image_height": 160, + "total_pixels": 38880, + "changed_pixels": 38878, + "changed_ratio": 0.999949, + "mean_abs_rgb": [ + 24.4828, + 19.6489, + 28.357 + ], + "rms_rgb": [ + 38.4158, + 29.7144, + 48.6724 + ], + "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_buoy_323_check/hotspots/hakata_inner_harbor_facilities_left.png", + "right_image": "report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_right.png", + "diff_image": "report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_diff.png" + }, + { + "image_width": 256, + "image_height": 104, + "total_pixels": 26624, + "changed_pixels": 26606, + "changed_ratio": 0.999324, + "mean_abs_rgb": [ + 43.8613, + 21.4592, + 21.164 + ], + "rms_rgb": [ + 50.4813, + 23.4693, + 22.5465 + ], + "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_buoy_323_check/hotspots/hakata_central_passage_marks_left.png", + "right_image": "report/strict_audit_20nm_buoy_323_check/hotspots/hakata_central_passage_marks_right.png", + "diff_image": "report/strict_audit_20nm_buoy_323_check/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_buoy_323_check/strict_audit_summary.md b/report/strict_audit_20nm_buoy_323_check/strict_audit_summary.md new file mode 100644 index 0000000..edffa85 --- /dev/null +++ b/report/strict_audit_20nm_buoy_323_check/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&audit=1¢er=130.40497,33.609376&zoom=14.5` +- Compare version: `compare-r16-20260401-1734` +- Backend render audit: `/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.r7.json` + +## Visual Audit + +- changed pixels: `251184` / `256000` +- changed ratio: `0.981187` +- mean abs rgb: `[30.7791, 22.7321, 27.3325]` +- rms rgb: `[52.04, 39.851, 46.4777]` +- left crop: `[0, 150, 640, 550]` +- right crop: `[640, 150, 1280, 550]` + +Artifacts: + +- `report/strict_audit_20nm_buoy_323_check/compare_full.png` +- `report/strict_audit_20nm_buoy_323_check/compare_left.png` +- `report/strict_audit_20nm_buoy_323_check/compare_right.png` +- `report/strict_audit_20nm_buoy_323_check/compare_diff.png` + +## Hotspot AOI Audit + +### 博多港航路边界与设施点区 + +- id: `hakata_route_outline_facility` +- notes: `校验紫色航路虚线是否存在,以及 class 505/520/530/550 设施点是否不再被画成通用图标。` +- backend focus: `['P航路ククリ', 'p施設・境界線等', 'route_outline', 'facility_boundary_point']` +- changed pixels: `34432` / `34432` +- changed ratio: `1.0` +- mean abs rgb: `[31.4511, 17.2178, 18.6738]` +- pane box norm: `[0.2, 0.2, 0.62, 0.52]` +- pane box pixels: `[128, 80, 397, 208]` +- left image: `report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_left.png` +- right image: `report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_right.png` +- diff image: `report/strict_audit_20nm_buoy_323_check/hotspots/hakata_route_outline_facility_diff.png` + +### 博多港内港设施区 + +- id: `hakata_inner_harbor_facilities` +- notes: `校验港湾、渔港、海之驿、码头设施点是否保留细分类图标。` +- backend focus: `['p施設・境界線等', 'facility_boundary_point', 'class_code']` +- changed pixels: `38878` / `38880` +- changed ratio: `0.999949` +- mean abs rgb: `[24.4828, 19.6489, 28.357]` +- pane box norm: `[0.48, 0.36, 0.86, 0.76]` +- pane box pixels: `[307, 144, 550, 304]` +- left image: `report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_left.png` +- right image: `report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_right.png` +- diff image: `report/strict_audit_20nm_buoy_323_check/hotspots/hakata_inner_harbor_facilities_diff.png` + +### 博多港中央航路灯标区 + +- id: `hakata_central_passage_marks` +- notes: `校验 31135x 灯标、红绿小灯和航路文字是否仍然可见。` +- backend focus: `['p航路標識群', 'navigation_marks', 'display_code']` +- changed pixels: `26606` / `26624` +- changed ratio: `0.999324` +- mean abs rgb: `[43.8613, 21.4592, 21.164]` +- pane box norm: `[0.02, 0.1, 0.42, 0.36]` +- pane box pixels: `[13, 40, 269, 144]` +- left image: `report/strict_audit_20nm_buoy_323_check/hotspots/hakata_central_passage_marks_left.png` +- right image: `report/strict_audit_20nm_buoy_323_check/hotspots/hakata_central_passage_marks_right.png` +- diff image: `report/strict_audit_20nm_buoy_323_check/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_buoy_323_check_z128/compare_diff.png b/report/strict_audit_20nm_buoy_323_check_z128/compare_diff.png new file mode 100644 index 0000000..433859a Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check_z128/compare_diff.png differ diff --git a/report/strict_audit_20nm_buoy_323_check_z128/compare_full.png b/report/strict_audit_20nm_buoy_323_check_z128/compare_full.png new file mode 100644 index 0000000..b5e93ad Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check_z128/compare_full.png differ diff --git a/report/strict_audit_20nm_buoy_323_check_z128/compare_left.png b/report/strict_audit_20nm_buoy_323_check_z128/compare_left.png new file mode 100644 index 0000000..6a20c24 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check_z128/compare_left.png differ diff --git a/report/strict_audit_20nm_buoy_323_check_z128/compare_right.png b/report/strict_audit_20nm_buoy_323_check_z128/compare_right.png new file mode 100644 index 0000000..435f182 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check_z128/compare_right.png differ diff --git a/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_diff.png b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_diff.png new file mode 100644 index 0000000..e27260f Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_diff.png differ diff --git a/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_left.png b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_left.png new file mode 100644 index 0000000..086e5fe Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_left.png differ diff --git a/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_right.png b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_right.png new file mode 100644 index 0000000..e647599 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_right.png differ diff --git a/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_diff.png b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_diff.png new file mode 100644 index 0000000..cd33211 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_diff.png differ diff --git a/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_left.png b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_left.png new file mode 100644 index 0000000..8e7f817 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_left.png differ diff --git a/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_right.png b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_right.png new file mode 100644 index 0000000..f13c62c Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_right.png differ diff --git a/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_diff.png b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_diff.png new file mode 100644 index 0000000..ae36cf8 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_diff.png differ diff --git a/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_left.png b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_left.png new file mode 100644 index 0000000..61d928d Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_left.png differ diff --git a/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_right.png b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_right.png new file mode 100644 index 0000000..849e6b5 Binary files /dev/null and b/report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_right.png differ diff --git a/report/strict_audit_20nm_buoy_323_check_z128/strict_audit_summary.json b/report/strict_audit_20nm_buoy_323_check_z128/strict_audit_summary.json new file mode 100644 index 0000000..f2f94ac --- /dev/null +++ b/report/strict_audit_20nm_buoy_323_check_z128/strict_audit_summary.json @@ -0,0 +1,325 @@ +{ + "compare_url": "http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html?profile=karatsu20&audit=1¢er=130.40497,33.609376&zoom=12.8", + "compare_version": "compare-r16-20260401-1734", + "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": 197665, + "changed_ratio": 0.772129, + "mean_abs_rgb": [ + 32.0086, + 32.0453, + 50.0954 + ], + "rms_rgb": [ + 55.5445, + 52.4228, + 72.7955 + ], + "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": 37267, + "changed_ratio": 0.958513, + "mean_abs_rgb": [ + 40.574, + 41.1383, + 79.1228 + ], + "rms_rgb": [ + 53.4675, + 52.2038, + 91.1668 + ], + "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_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_left.png", + "right_image": "report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_right.png", + "diff_image": "report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_diff.png" + }, + { + "image_width": 256, + "image_height": 104, + "total_pixels": 26624, + "changed_pixels": 13996, + "changed_ratio": 0.525691, + "mean_abs_rgb": [ + 11.0422, + 11.6527, + 12.9096 + ], + "rms_rgb": [ + 25.3171, + 28.1219, + 30.9885 + ], + "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_buoy_323_check_z128/hotspots/hakata_central_passage_marks_left.png", + "right_image": "report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_right.png", + "diff_image": "report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_diff.png" + }, + { + "image_width": 269, + "image_height": 128, + "total_pixels": 34432, + "changed_pixels": 17320, + "changed_ratio": 0.50302, + "mean_abs_rgb": [ + 21.0853, + 21.8568, + 35.9215 + ], + "rms_rgb": [ + 37.9176, + 39.6058, + 61.1491 + ], + "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_buoy_323_check_z128/hotspots/hakata_route_outline_facility_left.png", + "right_image": "report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_right.png", + "diff_image": "report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_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_buoy_323_check_z128/strict_audit_summary.md b/report/strict_audit_20nm_buoy_323_check_z128/strict_audit_summary.md new file mode 100644 index 0000000..a2b926c --- /dev/null +++ b/report/strict_audit_20nm_buoy_323_check_z128/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&audit=1¢er=130.40497,33.609376&zoom=12.8` +- Compare version: `compare-r16-20260401-1734` +- Backend render audit: `/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.r7.json` + +## Visual Audit + +- changed pixels: `197665` / `256000` +- changed ratio: `0.772129` +- mean abs rgb: `[32.0086, 32.0453, 50.0954]` +- rms rgb: `[55.5445, 52.4228, 72.7955]` +- left crop: `[0, 150, 640, 550]` +- right crop: `[640, 150, 1280, 550]` + +Artifacts: + +- `report/strict_audit_20nm_buoy_323_check_z128/compare_full.png` +- `report/strict_audit_20nm_buoy_323_check_z128/compare_left.png` +- `report/strict_audit_20nm_buoy_323_check_z128/compare_right.png` +- `report/strict_audit_20nm_buoy_323_check_z128/compare_diff.png` + +## Hotspot AOI Audit + +### 博多港内港设施区 + +- id: `hakata_inner_harbor_facilities` +- notes: `校验港湾、渔港、海之驿、码头设施点是否保留细分类图标。` +- backend focus: `['p施設・境界線等', 'facility_boundary_point', 'class_code']` +- changed pixels: `37267` / `38880` +- changed ratio: `0.958513` +- mean abs rgb: `[40.574, 41.1383, 79.1228]` +- pane box norm: `[0.48, 0.36, 0.86, 0.76]` +- pane box pixels: `[307, 144, 550, 304]` +- left image: `report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_left.png` +- right image: `report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_right.png` +- diff image: `report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_inner_harbor_facilities_diff.png` + +### 博多港中央航路灯标区 + +- id: `hakata_central_passage_marks` +- notes: `校验 31135x 灯标、红绿小灯和航路文字是否仍然可见。` +- backend focus: `['p航路標識群', 'navigation_marks', 'display_code']` +- changed pixels: `13996` / `26624` +- changed ratio: `0.525691` +- mean abs rgb: `[11.0422, 11.6527, 12.9096]` +- pane box norm: `[0.02, 0.1, 0.42, 0.36]` +- pane box pixels: `[13, 40, 269, 144]` +- left image: `report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_left.png` +- right image: `report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_right.png` +- diff image: `report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_central_passage_marks_diff.png` + +### 博多港航路边界与设施点区 + +- id: `hakata_route_outline_facility` +- notes: `校验紫色航路虚线是否存在,以及 class 505/520/530/550 设施点是否不再被画成通用图标。` +- backend focus: `['P航路ククリ', 'p施設・境界線等', 'route_outline', 'facility_boundary_point']` +- changed pixels: `17320` / `34432` +- changed ratio: `0.50302` +- mean abs rgb: `[21.0853, 21.8568, 35.9215]` +- pane box norm: `[0.2, 0.2, 0.62, 0.52]` +- pane box pixels: `[128, 80, 397, 208]` +- left image: `report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_left.png` +- right image: `report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_right.png` +- diff image: `report/strict_audit_20nm_buoy_323_check_z128/hotspots/hakata_route_outline_facility_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_clearance_check/compare_diff.png b/report/strict_audit_20nm_clearance_check/compare_diff.png new file mode 100644 index 0000000..a7097c0 Binary files /dev/null and b/report/strict_audit_20nm_clearance_check/compare_diff.png differ diff --git a/report/strict_audit_20nm_clearance_check/compare_full.png b/report/strict_audit_20nm_clearance_check/compare_full.png new file mode 100644 index 0000000..143114f Binary files /dev/null and b/report/strict_audit_20nm_clearance_check/compare_full.png differ diff --git a/report/strict_audit_20nm_clearance_check/compare_left.png b/report/strict_audit_20nm_clearance_check/compare_left.png new file mode 100644 index 0000000..d11d482 Binary files /dev/null and b/report/strict_audit_20nm_clearance_check/compare_left.png differ diff --git a/report/strict_audit_20nm_clearance_check/compare_right.png b/report/strict_audit_20nm_clearance_check/compare_right.png new file mode 100644 index 0000000..94e1525 Binary files /dev/null and b/report/strict_audit_20nm_clearance_check/compare_right.png differ diff --git a/report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_diff.png b/report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_diff.png new file mode 100644 index 0000000..e9e9296 Binary files /dev/null and b/report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_diff.png differ diff --git a/report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_left.png b/report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_left.png new file mode 100644 index 0000000..30845f8 Binary files /dev/null and b/report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_left.png differ diff --git a/report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_right.png b/report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_right.png new file mode 100644 index 0000000..c00b8ac Binary files /dev/null and b/report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_right.png differ diff --git a/report/strict_audit_20nm_clearance_check/hotspots/hakata_inner_harbor_facilities_diff.png b/report/strict_audit_20nm_clearance_check/hotspots/hakata_inner_harbor_facilities_diff.png new file mode 100644 index 0000000..e0a3f86 Binary files /dev/null and b/report/strict_audit_20nm_clearance_check/hotspots/hakata_inner_harbor_facilities_diff.png differ diff --git a/report/strict_audit_20nm_clearance_check/hotspots/hakata_inner_harbor_facilities_left.png b/report/strict_audit_20nm_clearance_check/hotspots/hakata_inner_harbor_facilities_left.png new file mode 100644 index 0000000..6d64767 Binary files /dev/null and b/report/strict_audit_20nm_clearance_check/hotspots/hakata_inner_harbor_facilities_left.png differ diff --git a/report/strict_audit_20nm_clearance_check/hotspots/hakata_inner_harbor_facilities_right.png b/report/strict_audit_20nm_clearance_check/hotspots/hakata_inner_harbor_facilities_right.png new file mode 100644 index 0000000..8c89001 Binary files /dev/null and b/report/strict_audit_20nm_clearance_check/hotspots/hakata_inner_harbor_facilities_right.png differ diff --git a/report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_diff.png b/report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_diff.png new file mode 100644 index 0000000..c26f52e Binary files /dev/null and b/report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_diff.png differ diff --git a/report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_left.png b/report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_left.png new file mode 100644 index 0000000..9018700 Binary files /dev/null and b/report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_left.png differ diff --git a/report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_right.png b/report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_right.png new file mode 100644 index 0000000..09ca4f0 Binary files /dev/null and b/report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_right.png differ diff --git a/report/strict_audit_20nm_clearance_check/strict_audit_summary.json b/report/strict_audit_20nm_clearance_check/strict_audit_summary.json new file mode 100644 index 0000000..3944673 --- /dev/null +++ b/report/strict_audit_20nm_clearance_check/strict_audit_summary.json @@ -0,0 +1,325 @@ +{ + "compare_url": "http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html?profile=karatsu20&audit=1¢er=130.3838,33.6000&zoom=14.5", + "compare_version": "compare-r16-20260401-1734", + "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": 176671, + "changed_ratio": 0.690121, + "mean_abs_rgb": [ + 25.0472, + 26.5545, + 52.8248 + ], + "rms_rgb": [ + 46.9905, + 45.1309, + 74.3183 + ], + "diff_bbox": [ + 0, + 0, + 640, + 400 + ], + "full_crop_left": [ + 0, + 150, + 640, + 550 + ], + "full_crop_right": [ + 640, + 150, + 1280, + 550 + ], + "hotspots": [ + { + "image_width": 256, + "image_height": 104, + "total_pixels": 26624, + "changed_pixels": 16200, + "changed_ratio": 0.608474, + "mean_abs_rgb": [ + 14.2061, + 15.8463, + 28.4755 + ], + "rms_rgb": [ + 27.1713, + 29.8138, + 50.1278 + ], + "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_clearance_check/hotspots/hakata_central_passage_marks_left.png", + "right_image": "report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_right.png", + "diff_image": "report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_diff.png" + }, + { + "image_width": 243, + "image_height": 160, + "total_pixels": 38880, + "changed_pixels": 22576, + "changed_ratio": 0.580658, + "mean_abs_rgb": [ + 19.8046, + 22.5103, + 51.1398 + ], + "rms_rgb": [ + 30.5385, + 34.7866, + 73.2864 + ], + "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_clearance_check/hotspots/hakata_inner_harbor_facilities_left.png", + "right_image": "report/strict_audit_20nm_clearance_check/hotspots/hakata_inner_harbor_facilities_right.png", + "diff_image": "report/strict_audit_20nm_clearance_check/hotspots/hakata_inner_harbor_facilities_diff.png" + }, + { + "image_width": 269, + "image_height": 128, + "total_pixels": 34432, + "changed_pixels": 9073, + "changed_ratio": 0.263505, + "mean_abs_rgb": [ + 8.4599, + 10.4334, + 20.0573 + ], + "rms_rgb": [ + 20.5973, + 24.881, + 45.1404 + ], + "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_clearance_check/hotspots/hakata_route_outline_facility_left.png", + "right_image": "report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_right.png", + "diff_image": "report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_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_clearance_check/strict_audit_summary.md b/report/strict_audit_20nm_clearance_check/strict_audit_summary.md new file mode 100644 index 0000000..993d819 --- /dev/null +++ b/report/strict_audit_20nm_clearance_check/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&audit=1¢er=130.3838,33.6000&zoom=14.5` +- Compare version: `compare-r16-20260401-1734` +- Backend render audit: `/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.r7.json` + +## Visual Audit + +- changed pixels: `176671` / `256000` +- changed ratio: `0.690121` +- mean abs rgb: `[25.0472, 26.5545, 52.8248]` +- rms rgb: `[46.9905, 45.1309, 74.3183]` +- left crop: `[0, 150, 640, 550]` +- right crop: `[640, 150, 1280, 550]` + +Artifacts: + +- `report/strict_audit_20nm_clearance_check/compare_full.png` +- `report/strict_audit_20nm_clearance_check/compare_left.png` +- `report/strict_audit_20nm_clearance_check/compare_right.png` +- `report/strict_audit_20nm_clearance_check/compare_diff.png` + +## Hotspot AOI Audit + +### 博多港中央航路灯标区 + +- id: `hakata_central_passage_marks` +- notes: `校验 31135x 灯标、红绿小灯和航路文字是否仍然可见。` +- backend focus: `['p航路標識群', 'navigation_marks', 'display_code']` +- changed pixels: `16200` / `26624` +- changed ratio: `0.608474` +- mean abs rgb: `[14.2061, 15.8463, 28.4755]` +- pane box norm: `[0.02, 0.1, 0.42, 0.36]` +- pane box pixels: `[13, 40, 269, 144]` +- left image: `report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_left.png` +- right image: `report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_right.png` +- diff image: `report/strict_audit_20nm_clearance_check/hotspots/hakata_central_passage_marks_diff.png` + +### 博多港内港设施区 + +- id: `hakata_inner_harbor_facilities` +- notes: `校验港湾、渔港、海之驿、码头设施点是否保留细分类图标。` +- backend focus: `['p施設・境界線等', 'facility_boundary_point', 'class_code']` +- changed pixels: `22576` / `38880` +- changed ratio: `0.580658` +- mean abs rgb: `[19.8046, 22.5103, 51.1398]` +- pane box norm: `[0.48, 0.36, 0.86, 0.76]` +- pane box pixels: `[307, 144, 550, 304]` +- left image: `report/strict_audit_20nm_clearance_check/hotspots/hakata_inner_harbor_facilities_left.png` +- right image: `report/strict_audit_20nm_clearance_check/hotspots/hakata_inner_harbor_facilities_right.png` +- diff image: `report/strict_audit_20nm_clearance_check/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: `9073` / `34432` +- changed ratio: `0.263505` +- mean abs rgb: `[8.4599, 10.4334, 20.0573]` +- pane box norm: `[0.2, 0.2, 0.62, 0.52]` +- pane box pixels: `[128, 80, 397, 208]` +- left image: `report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_left.png` +- right image: `report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_right.png` +- diff image: `report/strict_audit_20nm_clearance_check/hotspots/hakata_route_outline_facility_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_marks_zoom13/compare_diff.png b/report/strict_audit_20nm_hakata_marks_zoom13/compare_diff.png new file mode 100644 index 0000000..6462ae7 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13/compare_diff.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13/compare_full.png b/report/strict_audit_20nm_hakata_marks_zoom13/compare_full.png new file mode 100644 index 0000000..a635933 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13/compare_full.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13/compare_left.png b/report/strict_audit_20nm_hakata_marks_zoom13/compare_left.png new file mode 100644 index 0000000..062d2d7 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13/compare_left.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13/compare_right.png b/report/strict_audit_20nm_hakata_marks_zoom13/compare_right.png new file mode 100644 index 0000000..9a9aeba Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13/compare_right.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_central_passage_marks_diff.png b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_central_passage_marks_diff.png new file mode 100644 index 0000000..f250580 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_central_passage_marks_diff.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_central_passage_marks_left.png b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_central_passage_marks_left.png new file mode 100644 index 0000000..ed053e7 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_central_passage_marks_left.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_central_passage_marks_right.png b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_central_passage_marks_right.png new file mode 100644 index 0000000..0b40423 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_central_passage_marks_right.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_inner_harbor_facilities_diff.png b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_inner_harbor_facilities_diff.png new file mode 100644 index 0000000..6b01d94 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_inner_harbor_facilities_diff.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_inner_harbor_facilities_left.png b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_inner_harbor_facilities_left.png new file mode 100644 index 0000000..576d4a9 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_inner_harbor_facilities_left.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_inner_harbor_facilities_right.png b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_inner_harbor_facilities_right.png new file mode 100644 index 0000000..b4058fe Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_inner_harbor_facilities_right.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_route_outline_facility_diff.png b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_route_outline_facility_diff.png new file mode 100644 index 0000000..9952ec7 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_route_outline_facility_diff.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_route_outline_facility_left.png b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_route_outline_facility_left.png new file mode 100644 index 0000000..35c11b4 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_route_outline_facility_left.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_route_outline_facility_right.png b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_route_outline_facility_right.png new file mode 100644 index 0000000..63dd74b Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_route_outline_facility_right.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13/strict_audit_summary.json b/report/strict_audit_20nm_hakata_marks_zoom13/strict_audit_summary.json new file mode 100644 index 0000000..596c0bc --- /dev/null +++ b/report/strict_audit_20nm_hakata_marks_zoom13/strict_audit_summary.json @@ -0,0 +1,325 @@ +{ + "compare_url": "http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html?profile=karatsu20&audit=1¢er=130.352,33.6385&zoom=13.2", + "compare_version": "compare-r16-20260401-1734", + "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": 109965, + "changed_ratio": 0.429551, + "mean_abs_rgb": [ + 16.1941, + 15.6908, + 19.9201 + ], + "rms_rgb": [ + 42.8799, + 40.407, + 44.4388 + ], + "diff_bbox": [ + 0, + 0, + 640, + 400 + ], + "full_crop_left": [ + 0, + 150, + 640, + 550 + ], + "full_crop_right": [ + 640, + 150, + 1280, + 550 + ], + "hotspots": [ + { + "image_width": 256, + "image_height": 104, + "total_pixels": 26624, + "changed_pixels": 15470, + "changed_ratio": 0.581055, + "mean_abs_rgb": [ + 12.2803, + 11.4791, + 21.5548 + ], + "rms_rgb": [ + 22.0725, + 21.4186, + 37.6166 + ], + "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_marks_zoom13/hotspots/hakata_central_passage_marks_left.png", + "right_image": "report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_central_passage_marks_right.png", + "diff_image": "report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_central_passage_marks_diff.png" + }, + { + "image_width": 269, + "image_height": 128, + "total_pixels": 34432, + "changed_pixels": 17210, + "changed_ratio": 0.499826, + "mean_abs_rgb": [ + 17.0247, + 17.9334, + 33.5461 + ], + "rms_rgb": [ + 30.4005, + 33.2417, + 56.9663 + ], + "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_marks_zoom13/hotspots/hakata_route_outline_facility_left.png", + "right_image": "report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_route_outline_facility_right.png", + "diff_image": "report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_route_outline_facility_diff.png" + }, + { + "image_width": 243, + "image_height": 160, + "total_pixels": 38880, + "changed_pixels": 15174, + "changed_ratio": 0.390278, + "mean_abs_rgb": [ + 11.916, + 12.6021, + 18.7611 + ], + "rms_rgb": [ + 25.4782, + 29.7997, + 40.0854 + ], + "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_marks_zoom13/hotspots/hakata_inner_harbor_facilities_left.png", + "right_image": "report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_inner_harbor_facilities_right.png", + "diff_image": "report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_inner_harbor_facilities_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_marks_zoom13/strict_audit_summary.md b/report/strict_audit_20nm_hakata_marks_zoom13/strict_audit_summary.md new file mode 100644 index 0000000..53ce9c2 --- /dev/null +++ b/report/strict_audit_20nm_hakata_marks_zoom13/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&audit=1¢er=130.352,33.6385&zoom=13.2` +- Compare version: `compare-r16-20260401-1734` +- Backend render audit: `/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.r7.json` + +## Visual Audit + +- changed pixels: `109965` / `256000` +- changed ratio: `0.429551` +- mean abs rgb: `[16.1941, 15.6908, 19.9201]` +- rms rgb: `[42.8799, 40.407, 44.4388]` +- left crop: `[0, 150, 640, 550]` +- right crop: `[640, 150, 1280, 550]` + +Artifacts: + +- `report/strict_audit_20nm_hakata_marks_zoom13/compare_full.png` +- `report/strict_audit_20nm_hakata_marks_zoom13/compare_left.png` +- `report/strict_audit_20nm_hakata_marks_zoom13/compare_right.png` +- `report/strict_audit_20nm_hakata_marks_zoom13/compare_diff.png` + +## Hotspot AOI Audit + +### 博多港中央航路灯标区 + +- id: `hakata_central_passage_marks` +- notes: `校验 31135x 灯标、红绿小灯和航路文字是否仍然可见。` +- backend focus: `['p航路標識群', 'navigation_marks', 'display_code']` +- changed pixels: `15470` / `26624` +- changed ratio: `0.581055` +- mean abs rgb: `[12.2803, 11.4791, 21.5548]` +- 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_marks_zoom13/hotspots/hakata_central_passage_marks_left.png` +- right image: `report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_central_passage_marks_right.png` +- diff image: `report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_central_passage_marks_diff.png` + +### 博多港航路边界与设施点区 + +- id: `hakata_route_outline_facility` +- notes: `校验紫色航路虚线是否存在,以及 class 505/520/530/550 设施点是否不再被画成通用图标。` +- backend focus: `['P航路ククリ', 'p施設・境界線等', 'route_outline', 'facility_boundary_point']` +- changed pixels: `17210` / `34432` +- changed ratio: `0.499826` +- mean abs rgb: `[17.0247, 17.9334, 33.5461]` +- 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_marks_zoom13/hotspots/hakata_route_outline_facility_left.png` +- right image: `report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_route_outline_facility_right.png` +- diff image: `report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_route_outline_facility_diff.png` + +### 博多港内港设施区 + +- id: `hakata_inner_harbor_facilities` +- notes: `校验港湾、渔港、海之驿、码头设施点是否保留细分类图标。` +- backend focus: `['p施設・境界線等', 'facility_boundary_point', 'class_code']` +- changed pixels: `15174` / `38880` +- changed ratio: `0.390278` +- mean abs rgb: `[11.916, 12.6021, 18.7611]` +- 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_marks_zoom13/hotspots/hakata_inner_harbor_facilities_left.png` +- right image: `report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_inner_harbor_facilities_right.png` +- diff image: `report/strict_audit_20nm_hakata_marks_zoom13/hotspots/hakata_inner_harbor_facilities_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_marks_zoom13_r12/compare_diff.png b/report/strict_audit_20nm_hakata_marks_zoom13_r12/compare_diff.png new file mode 100644 index 0000000..75bfe9e Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13_r12/compare_diff.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13_r12/compare_full.png b/report/strict_audit_20nm_hakata_marks_zoom13_r12/compare_full.png new file mode 100644 index 0000000..19e8294 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13_r12/compare_full.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13_r12/compare_left.png b/report/strict_audit_20nm_hakata_marks_zoom13_r12/compare_left.png new file mode 100644 index 0000000..062d2d7 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13_r12/compare_left.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13_r12/compare_right.png b/report/strict_audit_20nm_hakata_marks_zoom13_r12/compare_right.png new file mode 100644 index 0000000..1117b02 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13_r12/compare_right.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_central_passage_marks_diff.png b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_central_passage_marks_diff.png new file mode 100644 index 0000000..f250580 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_central_passage_marks_diff.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_central_passage_marks_left.png b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_central_passage_marks_left.png new file mode 100644 index 0000000..ed053e7 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_central_passage_marks_left.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_central_passage_marks_right.png b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_central_passage_marks_right.png new file mode 100644 index 0000000..0b40423 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_central_passage_marks_right.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_inner_harbor_facilities_diff.png b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_inner_harbor_facilities_diff.png new file mode 100644 index 0000000..6b01d94 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_inner_harbor_facilities_diff.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_inner_harbor_facilities_left.png b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_inner_harbor_facilities_left.png new file mode 100644 index 0000000..576d4a9 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_inner_harbor_facilities_left.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_inner_harbor_facilities_right.png b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_inner_harbor_facilities_right.png new file mode 100644 index 0000000..b4058fe Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_inner_harbor_facilities_right.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_route_outline_facility_diff.png b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_route_outline_facility_diff.png new file mode 100644 index 0000000..9952ec7 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_route_outline_facility_diff.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_route_outline_facility_left.png b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_route_outline_facility_left.png new file mode 100644 index 0000000..35c11b4 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_route_outline_facility_left.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_route_outline_facility_right.png b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_route_outline_facility_right.png new file mode 100644 index 0000000..63dd74b Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom13_r12/hotspots/hakata_route_outline_facility_right.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom14/compare_diff.png b/report/strict_audit_20nm_hakata_marks_zoom14/compare_diff.png new file mode 100644 index 0000000..dcbfd3d Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom14/compare_diff.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom14/compare_full.png b/report/strict_audit_20nm_hakata_marks_zoom14/compare_full.png new file mode 100644 index 0000000..61cdd92 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom14/compare_full.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom14/compare_left.png b/report/strict_audit_20nm_hakata_marks_zoom14/compare_left.png new file mode 100644 index 0000000..059b75b Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom14/compare_left.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom14/compare_right.png b/report/strict_audit_20nm_hakata_marks_zoom14/compare_right.png new file mode 100644 index 0000000..96e76f4 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom14/compare_right.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_central_passage_marks_diff.png b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_central_passage_marks_diff.png new file mode 100644 index 0000000..0354fdd Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_central_passage_marks_diff.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_central_passage_marks_left.png b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_central_passage_marks_left.png new file mode 100644 index 0000000..1c3bb73 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_central_passage_marks_left.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_central_passage_marks_right.png b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_central_passage_marks_right.png new file mode 100644 index 0000000..8419507 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_central_passage_marks_right.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_inner_harbor_facilities_diff.png b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_inner_harbor_facilities_diff.png new file mode 100644 index 0000000..f4a3122 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_inner_harbor_facilities_diff.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_inner_harbor_facilities_left.png b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_inner_harbor_facilities_left.png new file mode 100644 index 0000000..f85cc0a Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_inner_harbor_facilities_left.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_inner_harbor_facilities_right.png b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_inner_harbor_facilities_right.png new file mode 100644 index 0000000..3d3ab8c Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_inner_harbor_facilities_right.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_route_outline_facility_diff.png b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_route_outline_facility_diff.png new file mode 100644 index 0000000..2f61ce0 Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_route_outline_facility_diff.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_route_outline_facility_left.png b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_route_outline_facility_left.png new file mode 100644 index 0000000..4ab47ec Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_route_outline_facility_left.png differ diff --git a/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_route_outline_facility_right.png b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_route_outline_facility_right.png new file mode 100644 index 0000000..2fb96fc Binary files /dev/null and b/report/strict_audit_20nm_hakata_marks_zoom14/hotspots/hakata_route_outline_facility_right.png differ diff --git a/report/strict_audit_20nm_hakata_r10/compare_diff.png b/report/strict_audit_20nm_hakata_r10/compare_diff.png new file mode 100644 index 0000000..fcb1727 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r10/compare_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r10/compare_full.png b/report/strict_audit_20nm_hakata_r10/compare_full.png new file mode 100644 index 0000000..a6cb4ce Binary files /dev/null and b/report/strict_audit_20nm_hakata_r10/compare_full.png differ diff --git a/report/strict_audit_20nm_hakata_r10/compare_left.png b/report/strict_audit_20nm_hakata_r10/compare_left.png new file mode 100644 index 0000000..8a2c154 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r10/compare_left.png differ diff --git a/report/strict_audit_20nm_hakata_r10/compare_right.png b/report/strict_audit_20nm_hakata_r10/compare_right.png new file mode 100644 index 0000000..632c989 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r10/compare_right.png differ diff --git a/report/strict_audit_20nm_hakata_r10/hotspots/hakata_central_passage_marks_diff.png b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_central_passage_marks_diff.png new file mode 100644 index 0000000..8d58d56 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_central_passage_marks_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r10/hotspots/hakata_central_passage_marks_left.png b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_central_passage_marks_left.png new file mode 100644 index 0000000..3b71e0d Binary files /dev/null and b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_central_passage_marks_left.png differ diff --git a/report/strict_audit_20nm_hakata_r10/hotspots/hakata_central_passage_marks_right.png b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_central_passage_marks_right.png new file mode 100644 index 0000000..7a0520c Binary files /dev/null and b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_central_passage_marks_right.png differ diff --git a/report/strict_audit_20nm_hakata_r10/hotspots/hakata_inner_harbor_facilities_diff.png b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_inner_harbor_facilities_diff.png new file mode 100644 index 0000000..5710355 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_inner_harbor_facilities_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r10/hotspots/hakata_inner_harbor_facilities_left.png b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_inner_harbor_facilities_left.png new file mode 100644 index 0000000..e628b0b Binary files /dev/null and b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_inner_harbor_facilities_left.png differ diff --git a/report/strict_audit_20nm_hakata_r10/hotspots/hakata_inner_harbor_facilities_right.png b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_inner_harbor_facilities_right.png new file mode 100644 index 0000000..754cef4 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_inner_harbor_facilities_right.png differ diff --git a/report/strict_audit_20nm_hakata_r10/hotspots/hakata_route_outline_facility_diff.png b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_route_outline_facility_diff.png new file mode 100644 index 0000000..b5fe9c4 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_route_outline_facility_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r10/hotspots/hakata_route_outline_facility_left.png b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_route_outline_facility_left.png new file mode 100644 index 0000000..a615cc9 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_route_outline_facility_left.png differ diff --git a/report/strict_audit_20nm_hakata_r10/hotspots/hakata_route_outline_facility_right.png b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_route_outline_facility_right.png new file mode 100644 index 0000000..b1e3c7a Binary files /dev/null and b/report/strict_audit_20nm_hakata_r10/hotspots/hakata_route_outline_facility_right.png differ diff --git a/report/strict_audit_20nm_hakata_r10/strict_audit_summary.json b/report/strict_audit_20nm_hakata_r10/strict_audit_summary.json new file mode 100644 index 0000000..3407e34 --- /dev/null +++ b/report/strict_audit_20nm_hakata_r10/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": 205046, + "changed_ratio": 0.800961, + "mean_abs_rgb": [ + 35.4022, + 30.6562, + 37.4255 + ], + "rms_rgb": [ + 63.5214, + 59.0088, + 61.944 + ], + "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": 36639, + "changed_ratio": 0.942361, + "mean_abs_rgb": [ + 56.6596, + 49.0425, + 59.2729 + ], + "rms_rgb": [ + 81.0649, + 76.8494, + 82.4494 + ], + "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_r10/hotspots/hakata_inner_harbor_facilities_left.png", + "right_image": "report/strict_audit_20nm_hakata_r10/hotspots/hakata_inner_harbor_facilities_right.png", + "diff_image": "report/strict_audit_20nm_hakata_r10/hotspots/hakata_inner_harbor_facilities_diff.png" + }, + { + "image_width": 269, + "image_height": 128, + "total_pixels": 34432, + "changed_pixels": 27335, + "changed_ratio": 0.793884, + "mean_abs_rgb": [ + 26.3041, + 26.9503, + 39.6168 + ], + "rms_rgb": [ + 47.5471, + 47.864, + 59.4608 + ], + "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_r10/hotspots/hakata_route_outline_facility_left.png", + "right_image": "report/strict_audit_20nm_hakata_r10/hotspots/hakata_route_outline_facility_right.png", + "diff_image": "report/strict_audit_20nm_hakata_r10/hotspots/hakata_route_outline_facility_diff.png" + }, + { + "image_width": 256, + "image_height": 104, + "total_pixels": 26624, + "changed_pixels": 20936, + "changed_ratio": 0.786358, + "mean_abs_rgb": [ + 28.3906, + 26.5104, + 30.451 + ], + "rms_rgb": [ + 54.2047, + 52.0623, + 54.2764 + ], + "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_r10/hotspots/hakata_central_passage_marks_left.png", + "right_image": "report/strict_audit_20nm_hakata_r10/hotspots/hakata_central_passage_marks_right.png", + "diff_image": "report/strict_audit_20nm_hakata_r10/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_r10/strict_audit_summary.md b/report/strict_audit_20nm_hakata_r10/strict_audit_summary.md new file mode 100644 index 0000000..74d15ec --- /dev/null +++ b/report/strict_audit_20nm_hakata_r10/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: `205046` / `256000` +- changed ratio: `0.800961` +- mean abs rgb: `[35.4022, 30.6562, 37.4255]` +- rms rgb: `[63.5214, 59.0088, 61.944]` +- left crop: `[0, 150, 640, 550]` +- right crop: `[640, 150, 1280, 550]` + +Artifacts: + +- `report/strict_audit_20nm_hakata_r10/compare_full.png` +- `report/strict_audit_20nm_hakata_r10/compare_left.png` +- `report/strict_audit_20nm_hakata_r10/compare_right.png` +- `report/strict_audit_20nm_hakata_r10/compare_diff.png` + +## Hotspot AOI Audit + +### 博多港内港设施区 + +- id: `hakata_inner_harbor_facilities` +- notes: `校验港湾、渔港、海之驿、码头设施点是否保留细分类图标。` +- backend focus: `['p施設・境界線等', 'facility_boundary_point', 'class_code']` +- changed pixels: `36639` / `38880` +- changed ratio: `0.942361` +- mean abs rgb: `[56.6596, 49.0425, 59.2729]` +- 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_r10/hotspots/hakata_inner_harbor_facilities_left.png` +- right image: `report/strict_audit_20nm_hakata_r10/hotspots/hakata_inner_harbor_facilities_right.png` +- diff image: `report/strict_audit_20nm_hakata_r10/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: `27335` / `34432` +- changed ratio: `0.793884` +- mean abs rgb: `[26.3041, 26.9503, 39.6168]` +- 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_r10/hotspots/hakata_route_outline_facility_left.png` +- right image: `report/strict_audit_20nm_hakata_r10/hotspots/hakata_route_outline_facility_right.png` +- diff image: `report/strict_audit_20nm_hakata_r10/hotspots/hakata_route_outline_facility_diff.png` + +### 博多港中央航路灯标区 + +- id: `hakata_central_passage_marks` +- notes: `校验 31135x 灯标、红绿小灯和航路文字是否仍然可见。` +- backend focus: `['p航路標識群', 'navigation_marks', 'display_code']` +- changed pixels: `20936` / `26624` +- changed ratio: `0.786358` +- mean abs rgb: `[28.3906, 26.5104, 30.451]` +- 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_r10/hotspots/hakata_central_passage_marks_left.png` +- right image: `report/strict_audit_20nm_hakata_r10/hotspots/hakata_central_passage_marks_right.png` +- diff image: `report/strict_audit_20nm_hakata_r10/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_r11/compare_diff.png b/report/strict_audit_20nm_hakata_r11/compare_diff.png new file mode 100644 index 0000000..f31353e Binary files /dev/null and b/report/strict_audit_20nm_hakata_r11/compare_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r11/compare_full.png b/report/strict_audit_20nm_hakata_r11/compare_full.png new file mode 100644 index 0000000..043fa6f Binary files /dev/null and b/report/strict_audit_20nm_hakata_r11/compare_full.png differ diff --git a/report/strict_audit_20nm_hakata_r11/compare_left.png b/report/strict_audit_20nm_hakata_r11/compare_left.png new file mode 100644 index 0000000..8a2c154 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r11/compare_left.png differ diff --git a/report/strict_audit_20nm_hakata_r11/compare_right.png b/report/strict_audit_20nm_hakata_r11/compare_right.png new file mode 100644 index 0000000..50c40e4 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r11/compare_right.png differ diff --git a/report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_diff.png b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_diff.png new file mode 100644 index 0000000..5381340 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_left.png b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_left.png new file mode 100644 index 0000000..3b71e0d Binary files /dev/null and b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_left.png differ diff --git a/report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_right.png b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_right.png new file mode 100644 index 0000000..8be7a2d Binary files /dev/null and b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_central_passage_marks_right.png differ diff --git a/report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_diff.png b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_diff.png new file mode 100644 index 0000000..50e1224 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_left.png b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_left.png new file mode 100644 index 0000000..e628b0b Binary files /dev/null and b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_left.png differ diff --git a/report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_right.png b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_right.png new file mode 100644 index 0000000..4d6270e Binary files /dev/null and b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_inner_harbor_facilities_right.png differ diff --git a/report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_diff.png b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_diff.png new file mode 100644 index 0000000..d0d21a6 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_left.png b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_left.png new file mode 100644 index 0000000..a615cc9 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_left.png differ diff --git a/report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_right.png b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_right.png new file mode 100644 index 0000000..a7717be Binary files /dev/null and b/report/strict_audit_20nm_hakata_r11/hotspots/hakata_route_outline_facility_right.png differ diff --git a/report/strict_audit_20nm_hakata_r12/compare_diff.png b/report/strict_audit_20nm_hakata_r12/compare_diff.png new file mode 100644 index 0000000..9e18bf5 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r12/compare_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r12/compare_full.png b/report/strict_audit_20nm_hakata_r12/compare_full.png new file mode 100644 index 0000000..fdd7d6c Binary files /dev/null and b/report/strict_audit_20nm_hakata_r12/compare_full.png differ diff --git a/report/strict_audit_20nm_hakata_r12/compare_left.png b/report/strict_audit_20nm_hakata_r12/compare_left.png new file mode 100644 index 0000000..34f1d73 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r12/compare_left.png differ diff --git a/report/strict_audit_20nm_hakata_r12/compare_right.png b/report/strict_audit_20nm_hakata_r12/compare_right.png new file mode 100644 index 0000000..8860670 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r12/compare_right.png differ diff --git a/report/strict_audit_20nm_hakata_r12/hotspots/hakata_central_passage_marks_diff.png b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_central_passage_marks_diff.png new file mode 100644 index 0000000..011b3b5 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_central_passage_marks_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r12/hotspots/hakata_central_passage_marks_left.png b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_central_passage_marks_left.png new file mode 100644 index 0000000..9f14649 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_central_passage_marks_left.png differ diff --git a/report/strict_audit_20nm_hakata_r12/hotspots/hakata_central_passage_marks_right.png b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_central_passage_marks_right.png new file mode 100644 index 0000000..cd928ae Binary files /dev/null and b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_central_passage_marks_right.png differ diff --git a/report/strict_audit_20nm_hakata_r12/hotspots/hakata_inner_harbor_facilities_diff.png b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_inner_harbor_facilities_diff.png new file mode 100644 index 0000000..61e156a Binary files /dev/null and b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_inner_harbor_facilities_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r12/hotspots/hakata_inner_harbor_facilities_left.png b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_inner_harbor_facilities_left.png new file mode 100644 index 0000000..e628b0b Binary files /dev/null and b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_inner_harbor_facilities_left.png differ diff --git a/report/strict_audit_20nm_hakata_r12/hotspots/hakata_inner_harbor_facilities_right.png b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_inner_harbor_facilities_right.png new file mode 100644 index 0000000..c961be8 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_inner_harbor_facilities_right.png differ diff --git a/report/strict_audit_20nm_hakata_r12/hotspots/hakata_route_outline_facility_diff.png b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_route_outline_facility_diff.png new file mode 100644 index 0000000..f8671f9 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_route_outline_facility_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r12/hotspots/hakata_route_outline_facility_left.png b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_route_outline_facility_left.png new file mode 100644 index 0000000..967ae91 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_route_outline_facility_left.png differ diff --git a/report/strict_audit_20nm_hakata_r12/hotspots/hakata_route_outline_facility_right.png b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_route_outline_facility_right.png new file mode 100644 index 0000000..6d99699 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r12/hotspots/hakata_route_outline_facility_right.png differ diff --git a/report/strict_audit_20nm_hakata_r9/compare_diff.png b/report/strict_audit_20nm_hakata_r9/compare_diff.png new file mode 100644 index 0000000..6c64530 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r9/compare_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r9/compare_full.png b/report/strict_audit_20nm_hakata_r9/compare_full.png new file mode 100644 index 0000000..782b9b4 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r9/compare_full.png differ diff --git a/report/strict_audit_20nm_hakata_r9/compare_left.png b/report/strict_audit_20nm_hakata_r9/compare_left.png new file mode 100644 index 0000000..8a2c154 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r9/compare_left.png differ diff --git a/report/strict_audit_20nm_hakata_r9/compare_right.png b/report/strict_audit_20nm_hakata_r9/compare_right.png new file mode 100644 index 0000000..09d6010 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r9/compare_right.png differ diff --git a/report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_diff.png b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_diff.png new file mode 100644 index 0000000..5381340 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_left.png b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_left.png new file mode 100644 index 0000000..3b71e0d Binary files /dev/null and b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_left.png differ diff --git a/report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_right.png b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_right.png new file mode 100644 index 0000000..8be7a2d Binary files /dev/null and b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_central_passage_marks_right.png differ diff --git a/report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_diff.png b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_diff.png new file mode 100644 index 0000000..50e1224 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_left.png b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_left.png new file mode 100644 index 0000000..e628b0b Binary files /dev/null and b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_left.png differ diff --git a/report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_right.png b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_right.png new file mode 100644 index 0000000..4d6270e Binary files /dev/null and b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_inner_harbor_facilities_right.png differ diff --git a/report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_diff.png b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_diff.png new file mode 100644 index 0000000..d0d21a6 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_diff.png differ diff --git a/report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_left.png b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_left.png new file mode 100644 index 0000000..a615cc9 Binary files /dev/null and b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_left.png differ diff --git a/report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_right.png b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_right.png new file mode 100644 index 0000000..a7717be Binary files /dev/null and b/report/strict_audit_20nm_hakata_r9/hotspots/hakata_route_outline_facility_right.png differ diff --git a/report/strict_audit_final_20nm/compare_diff.png b/report/strict_audit_final_20nm/compare_diff.png new file mode 100644 index 0000000..91804c2 Binary files /dev/null and b/report/strict_audit_final_20nm/compare_diff.png differ diff --git a/report/strict_audit_final_20nm/compare_full.png b/report/strict_audit_final_20nm/compare_full.png new file mode 100644 index 0000000..d73d24f Binary files /dev/null and b/report/strict_audit_final_20nm/compare_full.png differ diff --git a/report/strict_audit_final_20nm/compare_left.png b/report/strict_audit_final_20nm/compare_left.png new file mode 100644 index 0000000..3b95644 Binary files /dev/null and b/report/strict_audit_final_20nm/compare_left.png differ diff --git a/report/strict_audit_final_20nm/compare_right.png b/report/strict_audit_final_20nm/compare_right.png new file mode 100644 index 0000000..2ce43e9 Binary files /dev/null and b/report/strict_audit_final_20nm/compare_right.png differ diff --git a/report/strict_audit_final_20nm/hotspots/east_breakwater_marks_diff.png b/report/strict_audit_final_20nm/hotspots/east_breakwater_marks_diff.png new file mode 100644 index 0000000..256099e Binary files /dev/null and b/report/strict_audit_final_20nm/hotspots/east_breakwater_marks_diff.png differ diff --git a/report/strict_audit_final_20nm/hotspots/east_breakwater_marks_left.png b/report/strict_audit_final_20nm/hotspots/east_breakwater_marks_left.png new file mode 100644 index 0000000..599b170 Binary files /dev/null and b/report/strict_audit_final_20nm/hotspots/east_breakwater_marks_left.png differ diff --git a/report/strict_audit_final_20nm/hotspots/east_breakwater_marks_right.png b/report/strict_audit_final_20nm/hotspots/east_breakwater_marks_right.png new file mode 100644 index 0000000..dba17b7 Binary files /dev/null and b/report/strict_audit_final_20nm/hotspots/east_breakwater_marks_right.png differ diff --git a/report/strict_audit_final_20nm/hotspots/takashima_inner_nearshore_hazards_diff.png b/report/strict_audit_final_20nm/hotspots/takashima_inner_nearshore_hazards_diff.png new file mode 100644 index 0000000..ac8cea4 Binary files /dev/null and b/report/strict_audit_final_20nm/hotspots/takashima_inner_nearshore_hazards_diff.png differ diff --git a/report/strict_audit_final_20nm/hotspots/takashima_inner_nearshore_hazards_left.png b/report/strict_audit_final_20nm/hotspots/takashima_inner_nearshore_hazards_left.png new file mode 100644 index 0000000..f179145 Binary files /dev/null and b/report/strict_audit_final_20nm/hotspots/takashima_inner_nearshore_hazards_left.png differ diff --git a/report/strict_audit_final_20nm/hotspots/takashima_inner_nearshore_hazards_right.png b/report/strict_audit_final_20nm/hotspots/takashima_inner_nearshore_hazards_right.png new file mode 100644 index 0000000..440acb5 Binary files /dev/null and b/report/strict_audit_final_20nm/hotspots/takashima_inner_nearshore_hazards_right.png differ diff --git a/report/strict_audit_final_20nm/hotspots/takashima_main_harbor_marks_diff.png b/report/strict_audit_final_20nm/hotspots/takashima_main_harbor_marks_diff.png new file mode 100644 index 0000000..6a6d505 Binary files /dev/null and b/report/strict_audit_final_20nm/hotspots/takashima_main_harbor_marks_diff.png differ diff --git a/report/strict_audit_final_20nm/hotspots/takashima_main_harbor_marks_left.png b/report/strict_audit_final_20nm/hotspots/takashima_main_harbor_marks_left.png new file mode 100644 index 0000000..56c2eb0 Binary files /dev/null and b/report/strict_audit_final_20nm/hotspots/takashima_main_harbor_marks_left.png differ diff --git a/report/strict_audit_final_20nm/hotspots/takashima_main_harbor_marks_right.png b/report/strict_audit_final_20nm/hotspots/takashima_main_harbor_marks_right.png new file mode 100644 index 0000000..13d44f3 Binary files /dev/null and b/report/strict_audit_final_20nm/hotspots/takashima_main_harbor_marks_right.png differ diff --git a/report/strict_audit_final_20nm_r4/compare_diff.png b/report/strict_audit_final_20nm_r4/compare_diff.png new file mode 100644 index 0000000..0101891 Binary files /dev/null and b/report/strict_audit_final_20nm_r4/compare_diff.png differ diff --git a/report/strict_audit_final_20nm_r4/compare_full.png b/report/strict_audit_final_20nm_r4/compare_full.png new file mode 100644 index 0000000..8009a88 Binary files /dev/null and b/report/strict_audit_final_20nm_r4/compare_full.png differ diff --git a/report/strict_audit_final_20nm_r4/compare_left.png b/report/strict_audit_final_20nm_r4/compare_left.png new file mode 100644 index 0000000..ca234f2 Binary files /dev/null and b/report/strict_audit_final_20nm_r4/compare_left.png differ diff --git a/report/strict_audit_final_20nm_r4/compare_right.png b/report/strict_audit_final_20nm_r4/compare_right.png new file mode 100644 index 0000000..5ef60a2 Binary files /dev/null and b/report/strict_audit_final_20nm_r4/compare_right.png differ diff --git a/report/strict_audit_final_20nm_r4/hotspots/east_breakwater_marks_diff.png b/report/strict_audit_final_20nm_r4/hotspots/east_breakwater_marks_diff.png new file mode 100644 index 0000000..6f5dfb0 Binary files /dev/null and b/report/strict_audit_final_20nm_r4/hotspots/east_breakwater_marks_diff.png differ diff --git a/report/strict_audit_final_20nm_r4/hotspots/east_breakwater_marks_left.png b/report/strict_audit_final_20nm_r4/hotspots/east_breakwater_marks_left.png new file mode 100644 index 0000000..4907f2d Binary files /dev/null and b/report/strict_audit_final_20nm_r4/hotspots/east_breakwater_marks_left.png differ diff --git a/report/strict_audit_final_20nm_r4/hotspots/east_breakwater_marks_right.png b/report/strict_audit_final_20nm_r4/hotspots/east_breakwater_marks_right.png new file mode 100644 index 0000000..36e3bc4 Binary files /dev/null and b/report/strict_audit_final_20nm_r4/hotspots/east_breakwater_marks_right.png differ diff --git a/report/strict_audit_final_20nm_r4/hotspots/takashima_inner_nearshore_hazards_diff.png b/report/strict_audit_final_20nm_r4/hotspots/takashima_inner_nearshore_hazards_diff.png new file mode 100644 index 0000000..b4b5344 Binary files /dev/null and b/report/strict_audit_final_20nm_r4/hotspots/takashima_inner_nearshore_hazards_diff.png differ diff --git a/report/strict_audit_final_20nm_r4/hotspots/takashima_inner_nearshore_hazards_left.png b/report/strict_audit_final_20nm_r4/hotspots/takashima_inner_nearshore_hazards_left.png new file mode 100644 index 0000000..f179145 Binary files /dev/null and b/report/strict_audit_final_20nm_r4/hotspots/takashima_inner_nearshore_hazards_left.png differ diff --git a/report/strict_audit_final_20nm_r4/hotspots/takashima_inner_nearshore_hazards_right.png b/report/strict_audit_final_20nm_r4/hotspots/takashima_inner_nearshore_hazards_right.png new file mode 100644 index 0000000..d4dcd5d Binary files /dev/null and b/report/strict_audit_final_20nm_r4/hotspots/takashima_inner_nearshore_hazards_right.png differ diff --git a/report/strict_audit_final_20nm_r4/hotspots/takashima_main_harbor_marks_diff.png b/report/strict_audit_final_20nm_r4/hotspots/takashima_main_harbor_marks_diff.png new file mode 100644 index 0000000..0c6af5c Binary files /dev/null and b/report/strict_audit_final_20nm_r4/hotspots/takashima_main_harbor_marks_diff.png differ diff --git a/report/strict_audit_final_20nm_r4/hotspots/takashima_main_harbor_marks_left.png b/report/strict_audit_final_20nm_r4/hotspots/takashima_main_harbor_marks_left.png new file mode 100644 index 0000000..a0eeb00 Binary files /dev/null and b/report/strict_audit_final_20nm_r4/hotspots/takashima_main_harbor_marks_left.png differ diff --git a/report/strict_audit_final_20nm_r4/hotspots/takashima_main_harbor_marks_right.png b/report/strict_audit_final_20nm_r4/hotspots/takashima_main_harbor_marks_right.png new file mode 100644 index 0000000..51c7c27 Binary files /dev/null and b/report/strict_audit_final_20nm_r4/hotspots/takashima_main_harbor_marks_right.png differ diff --git a/report/strict_audit_final_20nm_r5/compare_diff.png b/report/strict_audit_final_20nm_r5/compare_diff.png new file mode 100644 index 0000000..0101891 Binary files /dev/null and b/report/strict_audit_final_20nm_r5/compare_diff.png differ diff --git a/report/strict_audit_final_20nm_r5/compare_full.png b/report/strict_audit_final_20nm_r5/compare_full.png new file mode 100644 index 0000000..dc3e951 Binary files /dev/null and b/report/strict_audit_final_20nm_r5/compare_full.png differ diff --git a/report/strict_audit_final_20nm_r5/compare_left.png b/report/strict_audit_final_20nm_r5/compare_left.png new file mode 100644 index 0000000..ca234f2 Binary files /dev/null and b/report/strict_audit_final_20nm_r5/compare_left.png differ diff --git a/report/strict_audit_final_20nm_r5/compare_right.png b/report/strict_audit_final_20nm_r5/compare_right.png new file mode 100644 index 0000000..5ef60a2 Binary files /dev/null and b/report/strict_audit_final_20nm_r5/compare_right.png differ diff --git a/report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_diff.png b/report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_diff.png new file mode 100644 index 0000000..6f5dfb0 Binary files /dev/null and b/report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_diff.png differ diff --git a/report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_left.png b/report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_left.png new file mode 100644 index 0000000..4907f2d Binary files /dev/null and b/report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_left.png differ diff --git a/report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_right.png b/report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_right.png new file mode 100644 index 0000000..36e3bc4 Binary files /dev/null and b/report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_right.png differ diff --git a/report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_diff.png b/report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_diff.png new file mode 100644 index 0000000..b4b5344 Binary files /dev/null and b/report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_diff.png differ diff --git a/report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_left.png b/report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_left.png new file mode 100644 index 0000000..f179145 Binary files /dev/null and b/report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_left.png differ diff --git a/report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_right.png b/report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_right.png new file mode 100644 index 0000000..d4dcd5d Binary files /dev/null and b/report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_right.png differ diff --git a/report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_diff.png b/report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_diff.png new file mode 100644 index 0000000..0c6af5c Binary files /dev/null and b/report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_diff.png differ diff --git a/report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_left.png b/report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_left.png new file mode 100644 index 0000000..a0eeb00 Binary files /dev/null and b/report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_left.png differ diff --git a/report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_right.png b/report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_right.png new file mode 100644 index 0000000..51c7c27 Binary files /dev/null and b/report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_right.png differ diff --git a/report/strict_audit_final_20nm_r5/strict_audit_summary.json b/report/strict_audit_final_20nm_r5/strict_audit_summary.json new file mode 100644 index 0000000..9076fa6 --- /dev/null +++ b/report/strict_audit_final_20nm_r5/strict_audit_summary.json @@ -0,0 +1,323 @@ +{ + "compare_url": "http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html", + "compare_version": "compare-r14-20260401-1523", + "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": 234722, + "changed_ratio": 0.916883, + "mean_abs_rgb": [ + 32.4853, + 31.6172, + 51.0769 + ], + "rms_rgb": [ + 56.1542, + 51.3272, + 69.6673 + ], + "diff_bbox": [ + 0, + 0, + 640, + 400 + ], + "full_crop_left": [ + 0, + 150, + 640, + 550 + ], + "full_crop_right": [ + 640, + 150, + 1280, + 550 + ], + "hotspots": [ + { + "image_width": 109, + "image_height": 64, + "total_pixels": 6976, + "changed_pixels": 6974, + "changed_ratio": 0.999713, + "mean_abs_rgb": [ + 111.1264, + 94.1901, + 85.8125 + ], + "rms_rgb": [ + 148.771, + 125.2909, + 112.8771 + ], + "diff_bbox": [ + 0, + 0, + 109, + 64 + ], + "id": "east_breakwater_marks", + "label": "东侧防波堤灯台区", + "notes": "防波堤灯台和港口标记区。优先验证远一点的灯台/航标是否也能稳定打出来。", + "backend_focus": [ + "p航路標識群", + "safety_icon_missing" + ], + "pane_box_norm": [ + 0.83, + 0.0, + 1.0, + 0.16 + ], + "pane_box_pixels": [ + 531, + 0, + 640, + 64 + ], + "left_image": "report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_left.png", + "right_image": "report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_right.png", + "diff_image": "report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_diff.png" + }, + { + "image_width": 147, + "image_height": 80, + "total_pixels": 11760, + "changed_pixels": 9410, + "changed_ratio": 0.80017, + "mean_abs_rgb": [ + 23.2099, + 21.248, + 26.5393 + ], + "rms_rgb": [ + 47.0367, + 43.8919, + 48.7282 + ], + "diff_bbox": [ + 0, + 0, + 147, + 80 + ], + "id": "takashima_main_harbor_marks", + "label": "高岛主港航标区", + "notes": "主港口灯塔、红绿标识、近岸障碍标记。优先验证灯塔、小灯、红绿标识是否真正恢复。", + "backend_focus": [ + "p航路標識群", + "safety_icon_missing", + "text_missing_in_engineering" + ], + "pane_box_norm": [ + 0.34, + 0.05, + 0.57, + 0.25 + ], + "pane_box_pixels": [ + 218, + 20, + 365, + 100 + ], + "left_image": "report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_left.png", + "right_image": "report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_right.png", + "diff_image": "report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_diff.png" + }, + { + "image_width": 115, + "image_height": 68, + "total_pixels": 7820, + "changed_pixels": 5564, + "changed_ratio": 0.711509, + "mean_abs_rgb": [ + 20.363, + 20.8864, + 23.9097 + ], + "rms_rgb": [ + 34.4925, + 37.2038, + 41.2721 + ], + "diff_bbox": [ + 0, + 0, + 115, + 68 + ], + "id": "takashima_inner_nearshore_hazards", + "label": "高岛近岸碍航与鱼礁区", + "notes": "近岸鱼礁、碍航点、灯塔与小灯混合区。优先验证鱼礁和碍航物是否还在。", + "backend_focus": [ + "p投錨注意障害物", + "p航行危険障害物", + "p航路標識群" + ], + "pane_box_norm": [ + 0.44, + 0.14, + 0.62, + 0.31 + ], + "pane_box_pixels": [ + 282, + 56, + 397, + 124 + ], + "left_image": "report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_left.png", + "right_image": "report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_right.png", + "diff_image": "report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_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_final_20nm_r5/strict_audit_summary.md b/report/strict_audit_final_20nm_r5/strict_audit_summary.md new file mode 100644 index 0000000..d24908e --- /dev/null +++ b/report/strict_audit_final_20nm_r5/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` +- Compare version: `compare-r14-20260401-1523` +- Backend render audit: `/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.r7.json` + +## Visual Audit + +- changed pixels: `234722` / `256000` +- changed ratio: `0.916883` +- mean abs rgb: `[32.4853, 31.6172, 51.0769]` +- rms rgb: `[56.1542, 51.3272, 69.6673]` +- left crop: `[0, 150, 640, 550]` +- right crop: `[640, 150, 1280, 550]` + +Artifacts: + +- `report/strict_audit_final_20nm_r5/compare_full.png` +- `report/strict_audit_final_20nm_r5/compare_left.png` +- `report/strict_audit_final_20nm_r5/compare_right.png` +- `report/strict_audit_final_20nm_r5/compare_diff.png` + +## Hotspot AOI Audit + +### 东侧防波堤灯台区 + +- id: `east_breakwater_marks` +- notes: `防波堤灯台和港口标记区。优先验证远一点的灯台/航标是否也能稳定打出来。` +- backend focus: `['p航路標識群', 'safety_icon_missing']` +- changed pixels: `6974` / `6976` +- changed ratio: `0.999713` +- mean abs rgb: `[111.1264, 94.1901, 85.8125]` +- pane box norm: `[0.83, 0.0, 1.0, 0.16]` +- pane box pixels: `[531, 0, 640, 64]` +- left image: `report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_left.png` +- right image: `report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_right.png` +- diff image: `report/strict_audit_final_20nm_r5/hotspots/east_breakwater_marks_diff.png` + +### 高岛主港航标区 + +- id: `takashima_main_harbor_marks` +- notes: `主港口灯塔、红绿标识、近岸障碍标记。优先验证灯塔、小灯、红绿标识是否真正恢复。` +- backend focus: `['p航路標識群', 'safety_icon_missing', 'text_missing_in_engineering']` +- changed pixels: `9410` / `11760` +- changed ratio: `0.80017` +- mean abs rgb: `[23.2099, 21.248, 26.5393]` +- pane box norm: `[0.34, 0.05, 0.57, 0.25]` +- pane box pixels: `[218, 20, 365, 100]` +- left image: `report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_left.png` +- right image: `report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_right.png` +- diff image: `report/strict_audit_final_20nm_r5/hotspots/takashima_main_harbor_marks_diff.png` + +### 高岛近岸碍航与鱼礁区 + +- id: `takashima_inner_nearshore_hazards` +- notes: `近岸鱼礁、碍航点、灯塔与小灯混合区。优先验证鱼礁和碍航物是否还在。` +- backend focus: `['p投錨注意障害物', 'p航行危険障害物', 'p航路標識群']` +- changed pixels: `5564` / `7820` +- changed ratio: `0.711509` +- mean abs rgb: `[20.363, 20.8864, 23.9097]` +- pane box norm: `[0.44, 0.14, 0.62, 0.31]` +- pane box pixels: `[282, 56, 397, 124]` +- left image: `report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_left.png` +- right image: `report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_right.png` +- diff image: `report/strict_audit_final_20nm_r5/hotspots/takashima_inner_nearshore_hazards_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/Domain/__init__.py b/src/Domain/__init__.py new file mode 100644 index 0000000..21494c2 --- /dev/null +++ b/src/Domain/__init__.py @@ -0,0 +1,7 @@ +"""NavSea Chart Domain prototype modules. + +This package is intentionally isolated from the current production builder. +It exists to prototype the next-generation Chart Domain output structure +without changing the current engineering/delivery PBF generation pipeline. +""" + diff --git a/src/Domain/build_chart_domain_tiles.py b/src/Domain/build_chart_domain_tiles.py new file mode 100644 index 0000000..53a1044 --- /dev/null +++ b/src/Domain/build_chart_domain_tiles.py @@ -0,0 +1,336 @@ +#!/usr/bin/env python3 +"""Generate isolated NavSea Chart Domain prototype PBF packages. + +This builder is intentionally separate from the current production builders. +It reads an existing engineering-style PBF root, re-groups layers by the new +Chart Domain model, and writes prototype packages without touching the current +engineering/delivery product line. + +Current output model: + +- safety package: safety_core + safety_extended +- detail package: detail + +Layers marked as domain_pending are not emitted to final packages. They are +instead recorded in the audit report so we can refine semantics before any +production switch-over. +""" + +from __future__ import annotations + +import argparse +import json +from collections import Counter, defaultdict +from dataclasses import dataclass +from pathlib import Path +from typing import Any + +import mapbox_vector_tile + +from chart_domain_model import ( + DETAIL, + DOMAIN_PENDING, + PHYSICAL_PACK_BY_DOMAIN, + SAFETY_CORE, + SAFETY_EXTENDED, + get_layer_domain_spec, + normalize_layer_std, +) + + +@dataclass(frozen=True) +class TileResult: + safety_written: bool + detail_written: bool + feature_count: int + pending_count: int + + +def text_or_none(value: Any) -> str | None: + if value is None: + return None + text = str(value).strip() + return text or None + + +class ChartDomainTileBuilder: + def __init__( + self, + input_root: Path, + output_root: Path, + *, + include_pending_in_safety: bool = False, + ) -> None: + self.input_root = input_root + self.output_root = output_root + self.include_pending_in_safety = include_pending_in_safety + self.safety_root = output_root / "safety" + self.detail_root = output_root / "detail" + self.audit_json_path = output_root / "chart_domain_build_audit.json" + self.audit_md_path = output_root / "chart_domain_build_audit.md" + + self.feature_count = 0 + self.renderable_count = 0 + self.pending_count = 0 + self.unmapped_source_count = 0 + self.domain_counter: Counter[str] = Counter() + self.layer_counter: Counter[str] = Counter() + self.pending_layer_counter: Counter[str] = Counter() + self.pending_examples: list[dict[str, Any]] = [] + + def build(self) -> None: + self.output_root.mkdir(parents=True, exist_ok=True) + self.clear_existing_tiles() + tile_paths = sorted(self.input_root.glob("*/*/*.pbf")) + + safety_written = 0 + detail_written = 0 + for tile_path in tile_paths: + result = self.process_tile(tile_path) + self.feature_count += result.feature_count + self.pending_count += result.pending_count + if result.safety_written: + safety_written += 1 + if result.detail_written: + detail_written += 1 + + self.write_audit_report( + tile_count=len(tile_paths), + safety_written=safety_written, + detail_written=detail_written, + ) + + def clear_existing_tiles(self) -> None: + for pack_root in (self.safety_root, self.detail_root): + for path in pack_root.glob("*/*/*.pbf"): + path.unlink() + + def process_tile(self, tile_path: Path) -> TileResult: + rel = tile_path.relative_to(self.input_root) + z = int(rel.parts[0]) + x = int(rel.parts[1]) + y = int(tile_path.stem) + + decoded = mapbox_vector_tile.decode(tile_path.read_bytes()) + pack_layers: dict[str, dict[str, list[dict[str, Any]]]] = { + "safety": defaultdict(list), + "detail": defaultdict(list), + } + pack_extents: dict[str, dict[str, int]] = { + "safety": {}, + "detail": {}, + } + + tile_feature_count = 0 + tile_pending_count = 0 + + for input_layer_name, payload in decoded.items(): + extent = int(payload.get("extent") or 4096) + for feature in payload.get("features", []): + tile_feature_count += 1 + properties = dict(feature.get("properties") or {}) + + source_layer_jp = text_or_none(properties.get("source_layer_jp")) or input_layer_name + raw_source_layer_std = text_or_none(properties.get("source_layer_std")) or input_layer_name + source_layer_std = normalize_layer_std(raw_source_layer_std, source_layer_jp) + spec = get_layer_domain_spec(source_layer_std) + + self.domain_counter[spec.chart_domain] += 1 + self.layer_counter[source_layer_std] += 1 + + output_properties = dict(properties) + output_properties["source_layer_jp"] = source_layer_jp + output_properties["source_layer_std"] = source_layer_std + output_properties["chart_domain"] = spec.chart_domain + output_properties["offline_pack"] = spec.offline_pack + output_properties["resolver_priority"] = spec.resolver_priority + output_properties["domain_status"] = spec.domain_status + output_properties["chart_domain_semantic_zh"] = spec.chinese_semantic + + pack_name = PHYSICAL_PACK_BY_DOMAIN.get(spec.chart_domain) + if spec.chart_domain == DOMAIN_PENDING and self.include_pending_in_safety: + pack_name = "safety" + + if pack_name is None: + tile_pending_count += 1 + self.pending_layer_counter[source_layer_std] += 1 + if len(self.pending_examples) < 30: + self.pending_examples.append( + { + "tile": f"{z}/{x}/{y}", + "input_layer": input_layer_name, + "source_layer_jp": source_layer_jp, + "source_layer_std": source_layer_std, + "canonical_object_type": output_properties.get("canonical_object_type"), + "fid": output_properties.get("fid"), + "reason": spec.notes or "domain_pending layer is excluded from final packages", + } + ) + continue + + output_feature = { + "geometry": feature["geometry"], + "properties": output_properties, + } + if feature.get("id") is not None: + output_feature["id"] = feature["id"] + + pack_layers[pack_name][source_layer_std].append(output_feature) + pack_extents[pack_name].setdefault(source_layer_std, extent) + self.renderable_count += 1 + + safety_written = self.write_pack_tile( + pack_name="safety", + rel=rel, + layers=pack_layers["safety"], + extents=pack_extents["safety"], + ) + detail_written = self.write_pack_tile( + pack_name="detail", + rel=rel, + layers=pack_layers["detail"], + extents=pack_extents["detail"], + ) + + return TileResult( + safety_written=safety_written, + detail_written=detail_written, + feature_count=tile_feature_count, + pending_count=tile_pending_count, + ) + + def write_pack_tile( + self, + *, + pack_name: str, + rel: Path, + layers: dict[str, list[dict[str, Any]]], + extents: dict[str, int], + ) -> bool: + if not layers: + return False + + encoded_layers = [] + per_layer_options: dict[str, dict[str, int]] = {} + for layer_name, features in sorted(layers.items()): + if not features: + continue + encoded_layers.append({"name": layer_name, "features": features}) + per_layer_options[layer_name] = {"extents": extents[layer_name]} + + if not encoded_layers: + return False + + pack_root = self.safety_root if pack_name == "safety" else self.detail_root + output_path = pack_root / rel + output_path.parent.mkdir(parents=True, exist_ok=True) + output_path.write_bytes( + mapbox_vector_tile.encode(encoded_layers, per_layer_options=per_layer_options) + ) + return True + + def write_audit_report(self, *, tile_count: int, safety_written: int, detail_written: int) -> None: + payload = { + "input_root": str(self.input_root), + "output_root": str(self.output_root), + "include_pending_in_safety": self.include_pending_in_safety, + "tile_count": tile_count, + "safety_written_tiles": safety_written, + "detail_written_tiles": detail_written, + "feature_count": self.feature_count, + "renderable_feature_count": self.renderable_count, + "pending_feature_count": self.pending_count, + "domain_counts": dict(self.domain_counter), + "layer_counts": dict(self.layer_counter.most_common()), + "pending_layer_counts": dict(self.pending_layer_counter.most_common()), + "pending_examples": self.pending_examples, + } + self.audit_json_path.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8") + + lines = [ + "# NavSea Chart Domain Build Audit", + "", + f"- input_root: `{self.input_root}`", + f"- output_root: `{self.output_root}`", + f"- include_pending_in_safety: `{self.include_pending_in_safety}`", + f"- tile_count: `{tile_count}`", + f"- safety_written_tiles: `{safety_written}`", + f"- detail_written_tiles: `{detail_written}`", + f"- feature_count: `{self.feature_count}`", + f"- renderable_feature_count: `{self.renderable_count}`", + f"- pending_feature_count: `{self.pending_count}`", + "", + "## Domain Counts", + "", + ] + for name, count in self.domain_counter.most_common(): + lines.append(f"- `{name}`: `{count}`") + + lines.extend(["", "## Pending Layers", ""]) + if not self.pending_layer_counter: + lines.append("- none") + else: + for layer_name, count in self.pending_layer_counter.most_common(): + lines.append(f"- `{layer_name}`: `{count}`") + + lines.extend(["", "## Pending Examples", ""]) + if not self.pending_examples: + lines.append("- none") + else: + for item in self.pending_examples[:20]: + lines.append( + f"- tile=`{item['tile']}` input=`{item['input_layer']}` std=`{item['source_layer_std']}` " + f"object=`{item.get('canonical_object_type') or 'n/a'}` fid=`{item.get('fid')}`" + ) + lines.append(f" reason: {item['reason']}") + + self.audit_md_path.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description="Build isolated NavSea Chart Domain PBF packages.") + parser.add_argument( + "--input-root", + type=Path, + default=Path("/home/wwwroot/pbf-engineering-karatsu-10nm"), + help="Input engineering PBF root to transform.", + ) + parser.add_argument( + "--output-root", + type=Path, + default=Path("/home/wwwroot/pbf-domain-karatsu-10nm"), + help="Output root for chart domain prototype packages.", + ) + parser.add_argument( + "--include-pending-in-safety", + action="store_true", + help="Compatibility mode: emit domain_pending layers into the safety package instead of excluding them.", + ) + return parser.parse_args() + + +def main() -> None: + args = parse_args() + builder = ChartDomainTileBuilder( + input_root=args.input_root, + output_root=args.output_root, + include_pending_in_safety=args.include_pending_in_safety, + ) + builder.build() + print( + json.dumps( + { + "input_root": str(args.input_root), + "output_root": str(args.output_root), + "include_pending_in_safety": args.include_pending_in_safety, + "audit_json": str(builder.audit_json_path), + "audit_md": str(builder.audit_md_path), + }, + ensure_ascii=False, + indent=2, + ) + ) + + +if __name__ == "__main__": + main() diff --git a/src/Domain/build_legacy_compatible_domain_style.py b/src/Domain/build_legacy_compatible_domain_style.py new file mode 100644 index 0000000..59f37df --- /dev/null +++ b/src/Domain/build_legacy_compatible_domain_style.py @@ -0,0 +1,156 @@ +"""Generate a legacy-compatible style that consumes the Domain PBF packages. + +This script preserves the current production rendering rules as much as +possible by transforming the original legacy style: + +- keep the original layer ordering, paint, layout, filters, sprite, glyphs +- remap each legacy Japanese `source-layer` to the standardized Domain layer +- route each style layer to the physical Domain package source: + - `domain_safety` + - `domain_detail` + +The goal of this script is *not* to redesign the map. It exists to validate +that the redefined Domain PBF structure can still reproduce the legacy visual +appearance with minimal rendering loss. +""" + +from __future__ import annotations + +import argparse +import copy +import json +from pathlib import Path + +from chart_domain_model import ( + DETAIL, + SAFETY_CORE, + SAFETY_EXTENDED, + get_layer_domain_spec, +) +from style_layer_naming import make_style_layer_id, parse_source_layer_rules, remap_style_layer + + +def domain_source_name(chart_domain: str) -> str: + if chart_domain in (SAFETY_CORE, SAFETY_EXTENDED): + return "domain_safety" + if chart_domain == DETAIL: + return "domain_detail" + # Pending layers are intentionally pointed to safety. If the target layer + # does not exist in the tile, MapLibre will simply render nothing. + return "domain_safety" + + +def transform_style( + legacy_style: dict, + jp_to_std: dict[str, str], + safety_tiles_url: str, + detail_tiles_url: str, +) -> tuple[dict, dict[str, int]]: + style = copy.deepcopy(legacy_style) + style["name"] = "NavSea Domain Legacy Compatible Karatsu 10nm" + + legacy_sources = style.get("sources", {}) + style["sources"] = { + "domain_safety": { + "type": "vector", + "minzoom": 0, + "maxzoom": 12, + "tiles": [safety_tiles_url], + "attribution": "© NavSea Domain", + }, + "domain_detail": { + "type": "vector", + "minzoom": 0, + "maxzoom": 12, + "tiles": [detail_tiles_url], + "attribution": "© NavSea Domain", + }, + "mapple": legacy_sources.get("mapple", {}), + "shipfinder": legacy_sources.get("shipfinder", {}), + } + + counts = { + "remapped_layers": 0, + "pending_layers": 0, + "unchanged_layers": 0, + } + + used_ids: set[str] = set() + source_role_counts: dict[tuple[str, str], int] = {} + generic_role_counts: dict[tuple[str, str], int] = {} + + for layer in style.get("layers", []): + source_layer_std, remapped = remap_style_layer(layer, jp_to_std) + if not remapped: + layer["id"] = make_style_layer_id( + layer=layer, + source_layer_std=None, + used_ids=used_ids, + source_role_counts=source_role_counts, + generic_role_counts=generic_role_counts, + ) + counts["unchanged_layers"] += 1 + continue + + spec = get_layer_domain_spec(source_layer_std) + layer["source"] = domain_source_name(spec.chart_domain) + layer["id"] = make_style_layer_id( + layer=layer, + source_layer_std=source_layer_std, + used_ids=used_ids, + source_role_counts=source_role_counts, + generic_role_counts=generic_role_counts, + ) + counts["remapped_layers"] += 1 + if spec.domain_status != "active": + counts["pending_layers"] += 1 + + return style, counts + + +def main() -> None: + parser = argparse.ArgumentParser(description="Build a legacy-compatible style for Domain PBFs.") + parser.add_argument( + "--legacy-style", + default="/mnt/sda1/www/newpec/style.patched.local.json", + help="Path to the original legacy style JSON.", + ) + parser.add_argument( + "--source-layer-rules", + default="/root/sourceserver/pbf/tasks/pbf/mappings/navsea_source_layer_rules_v1.yaml", + help="Path to source-layer mapping rules.", + ) + parser.add_argument( + "--output", + default="/root/sourceserver/pbf/src/Domain/style.domain-legacy-compatible-karatsu-10nm.json", + help="Output style path.", + ) + parser.add_argument( + "--safety-tiles-url", + default="http://192.168.200.184/pbf-domain-karatsu-10nm/safety/{z}/{x}/{y}.pbf", + help="Domain safety package tiles URL template.", + ) + parser.add_argument( + "--detail-tiles-url", + default="http://192.168.200.184/pbf-domain-karatsu-10nm/detail/{z}/{x}/{y}.pbf", + help="Domain detail package tiles URL template.", + ) + args = parser.parse_args() + + legacy_style = json.loads(Path(args.legacy_style).read_text(encoding="utf-8")) + jp_to_std = parse_source_layer_rules(Path(args.source_layer_rules)) + style, counts = transform_style( + legacy_style=legacy_style, + jp_to_std=jp_to_std, + safety_tiles_url=args.safety_tiles_url, + detail_tiles_url=args.detail_tiles_url, + ) + + output_path = Path(args.output) + output_path.parent.mkdir(parents=True, exist_ok=True) + output_path.write_text(json.dumps(style, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + print(json.dumps({"output": str(output_path), **counts}, ensure_ascii=False)) + + +if __name__ == "__main__": + main() diff --git a/src/Domain/chart_domain_model.py b/src/Domain/chart_domain_model.py new file mode 100644 index 0000000..e9460e6 --- /dev/null +++ b/src/Domain/chart_domain_model.py @@ -0,0 +1,249 @@ +"""Chart Domain model definitions for the isolated NavSea domain prototype. + +The model in this module is based on NavSea_Chart_Domain_Model_v1.md. +It groups standardized layers into: + +- safety_core +- safety_extended +- detail +- domain_pending + +This file deliberately does not mutate the current production mapping system. +It provides a standalone semantic model for the new experimental PBF flow. +""" + +from __future__ import annotations + +from dataclasses import dataclass + + +@dataclass(frozen=True) +class LayerDomainSpec: + layer_std: str + chart_domain: str + offline_pack: str + resolver_priority: int + chinese_semantic: str + domain_status: str = "active" + notes: str = "" + + +DOMAIN_PENDING = "domain_pending" +SAFETY_CORE = "safety_core" +SAFETY_EXTENDED = "safety_extended" +DETAIL = "detail" + +PHYSICAL_PACK_BY_DOMAIN = { + SAFETY_CORE: "safety", + SAFETY_EXTENDED: "safety", + DETAIL: "detail", + DOMAIN_PENDING: None, +} + +# Prototype-only aliases for source layers that still appear in current +# engineering PBFs without a populated source_layer_std property. +# This keeps the new Domain prototype isolated from the production mapping +# registry while allowing the v1 model to be exercised end-to-end. +SOURCE_LAYER_STD_ALIASES = { + "P投錨注意障害物": "anchor_caution_hazard_area", + "P航行危険障害物": "navigation_hazard_area", + "P錨泊地等": "anchorage_area", + "p施設・境界線等": "facility_boundary_point", +} + + +LAYER_DOMAIN_SPECS: dict[str, LayerDomainSpec] = { + "navigation_hazard_area": LayerDomainSpec( + "navigation_hazard_area", SAFETY_CORE, "safety", 10, "航行危险障害物面" + ), + "navigation_hazard_outline": LayerDomainSpec( + "navigation_hazard_outline", SAFETY_CORE, "safety", 10, "航行危险障害物边界" + ), + "navigation_hazard_point": LayerDomainSpec( + "navigation_hazard_point", SAFETY_CORE, "safety", 10, "航行危险障害物点" + ), + "anchor_caution_hazard_area": LayerDomainSpec( + "anchor_caution_hazard_area", SAFETY_EXTENDED, "safety", 20, "抛锚注意障害物面" + ), + "anchor_caution_hazard_outline": LayerDomainSpec( + "anchor_caution_hazard_outline", SAFETY_EXTENDED, "safety", 20, "抛锚注意障害物边界" + ), + "anchor_caution_hazard_point": LayerDomainSpec( + "anchor_caution_hazard_point", SAFETY_EXTENDED, "safety", 20, "抛锚注意障害物点" + ), + "depth_contour": LayerDomainSpec( + "depth_contour", SAFETY_CORE, "base", 10, "等深线" + ), + "depth_contour_overview": LayerDomainSpec( + "depth_contour_overview", SAFETY_CORE, "base", 10, "概略等深线" + ), + "navigation_marks": LayerDomainSpec( + "navigation_marks", SAFETY_CORE, "base", 10, "航标/灯标/浮标点" + ), + "land_area": LayerDomainSpec( + "land_area", SAFETY_CORE, "base", 10, "陆地区域", notes="Primary land/sea discriminator." + ), + "submerged_reef_area": LayerDomainSpec( + "submerged_reef_area", SAFETY_CORE, "safety", 10, "潜堤/潜礁区域" + ), + "hazard_boundary_line": LayerDomainSpec( + "hazard_boundary_line", SAFETY_CORE, "safety", 10, "危险界线" + ), + "hazard_boundary_outline": LayerDomainSpec( + "hazard_boundary_outline", SAFETY_CORE, "safety", 10, "危险界边界" + ), + "anchorage_area": LayerDomainSpec( + "anchorage_area", SAFETY_EXTENDED, "safety", 20, "锚地/锚泊地区域" + ), + "anchorage_outline": LayerDomainSpec( + "anchorage_outline", SAFETY_EXTENDED, "safety", 20, "锚地边界" + ), + "anchorage_point": LayerDomainSpec( + "anchorage_point", SAFETY_EXTENDED, "safety", 20, "锚地符号点" + ), + "clearance_limit_line": LayerDomainSpec( + "clearance_limit_line", SAFETY_EXTENDED, "safety", 20, "高度/净空限制线" + ), + "clearance_limit_point": LayerDomainSpec( + "clearance_limit_point", SAFETY_EXTENDED, "safety", 20, "高度限制点标注" + ), + "bridge_structure": LayerDomainSpec( + "bridge_structure", SAFETY_EXTENDED, "safety", 20, "桥梁等结构物面" + ), + "onshore_structure_area": LayerDomainSpec( + "onshore_structure_area", SAFETY_EXTENDED, "safety", 20, "陆上结构物面" + ), + "onshore_structure_line": LayerDomainSpec( + "onshore_structure_line", SAFETY_EXTENDED, "safety", 20, "陆上结构物线" + ), + "onshore_structure_point": LayerDomainSpec( + "onshore_structure_point", SAFETY_EXTENDED, "safety", 20, "陆上结构物点" + ), + "baseline_area": LayerDomainSpec( + "baseline_area", SAFETY_EXTENDED, "safety", 20, "基本线相关面", notes="Container-like semantic; may need refinement." + ), + "baseline_line": LayerDomainSpec( + "baseline_line", SAFETY_EXTENDED, "safety", 20, "基本线线层", notes="Container-like semantic; may need refinement." + ), + "baseline_outline": LayerDomainSpec( + "baseline_outline", SAFETY_EXTENDED, "safety", 20, "基本线边界", notes="Container-like semantic; may need refinement." + ), + "route_area": LayerDomainSpec( + "route_area", SAFETY_EXTENDED, "safety", 20, "航路区域" + ), + "route_outline": LayerDomainSpec( + "route_outline", SAFETY_EXTENDED, "safety", 20, "航路边界" + ), + "route_axis_line": LayerDomainSpec( + "route_axis_line", SAFETY_EXTENDED, "safety", 20, "航路线/航路轴线" + ), + "route_boundary_point": LayerDomainSpec( + "route_boundary_point", SAFETY_EXTENDED, "safety", 20, "航路边界标注点" + ), + "leading_line_outline": LayerDomainSpec( + "leading_line_outline", SAFETY_EXTENDED, "safety", 20, "导标/引导线边界" + ), + "pilot_station_point": LayerDomainSpec( + "pilot_station_point", SAFETY_EXTENDED, "safety", 20, "引航站点" + ), + "fixed_fishing_gear_area": LayerDomainSpec( + "fixed_fishing_gear_area", SAFETY_CORE, "safety", 10, "定置渔具区域" + ), + "place_label_sea": LayerDomainSpec( + "place_label_sea", DETAIL, "detail", 30, "海上地名标注" + ), + "place_label_land": LayerDomainSpec( + "place_label_land", DETAIL, "detail", 30, "陆上地名标注" + ), + "seabed_text_point": LayerDomainSpec( + "seabed_text_point", DETAIL, "detail", 30, "底质标注点" + ), + "facility_boundary_area": LayerDomainSpec( + "facility_boundary_area", DETAIL, "detail", 30, "设施/边界相关区域", notes="Broad semantic; may need refinement." + ), + "facility_boundary_outline": LayerDomainSpec( + "facility_boundary_outline", DETAIL, "detail", 30, "设施/边界边线", notes="Broad semantic; may need refinement." + ), + "facility_boundary_area_transparent": LayerDomainSpec( + "facility_boundary_area_transparent", DETAIL, "detail", 30, "透明设施/边界区域" + ), + "facility_boundary_point": LayerDomainSpec( + "facility_boundary_point", DETAIL, "detail", 30, "设施/边界符号点" + ), + "hole_area": LayerDomainSpec( + "hole_area", DETAIL, "detail", 30, "穴/凹地区域" + ), + "bathymetry_line": LayerDomainSpec( + "bathymetry_line", DETAIL, "detail", 30, "海底地形支撑线", notes="Support line, not a final business semantic." + ), + "seabed_line": LayerDomainSpec( + "seabed_line", DETAIL, "detail", 30, "海底线" + ), + "depth_zone_700": LayerDomainSpec( + "depth_zone_700", DOMAIN_PENDING, "pending", 99, "深度分带编码层 700", domain_status="pending" + ), + "depth_zone_702": LayerDomainSpec( + "depth_zone_702", DOMAIN_PENDING, "pending", 99, "深度分带编码层 702", domain_status="pending" + ), + "depth_zone_725": LayerDomainSpec( + "depth_zone_725", DOMAIN_PENDING, "pending", 99, "深度分带编码层 725", domain_status="pending" + ), + "depth_zone_739": LayerDomainSpec( + "depth_zone_739", DOMAIN_PENDING, "pending", 99, "深度分带编码层 739", domain_status="pending" + ), + "depth_zone_740": LayerDomainSpec( + "depth_zone_740", DOMAIN_PENDING, "pending", 99, "深度分带编码层 740", domain_status="pending" + ), + "depth_zone_741": LayerDomainSpec( + "depth_zone_741", DOMAIN_PENDING, "pending", 99, "深度分带编码层 741", domain_status="pending" + ), + "depth_zone_748": LayerDomainSpec( + "depth_zone_748", DOMAIN_PENDING, "pending", 99, "深度分带编码层 748", domain_status="pending" + ), + "depth_zone_749": LayerDomainSpec( + "depth_zone_749", DOMAIN_PENDING, "pending", 99, "深度分带编码层 749", domain_status="pending" + ), + "clip_outline_721": LayerDomainSpec( + "clip_outline_721", DOMAIN_PENDING, "pending", 99, "编码型边界层 721", domain_status="pending" + ), + "clip_outline_730": LayerDomainSpec( + "clip_outline_730", DOMAIN_PENDING, "pending", 99, "编码型边界层 730", domain_status="pending" + ), + "clip_outline_754": LayerDomainSpec( + "clip_outline_754", DOMAIN_PENDING, "pending", 99, "编码型边界层 754", domain_status="pending" + ), +} + + +def get_layer_domain_spec(layer_std: str) -> LayerDomainSpec: + """Return the declared spec for a standardized layer. + + Unrecognized layers are intentionally treated as pending so the prototype + never silently assigns them to a production domain. + """ + + spec = LAYER_DOMAIN_SPECS.get(layer_std) + if spec is not None: + return spec + return LayerDomainSpec( + layer_std=layer_std, + chart_domain=DOMAIN_PENDING, + offline_pack="pending", + resolver_priority=99, + chinese_semantic=f"未注册标准层 {layer_std}", + domain_status="pending", + notes="No explicit Chart Domain mapping exists yet.", + ) + + +def normalize_layer_std(source_layer_std: str, source_layer_jp: str) -> str: + """Return the prototype-standardized layer name. + + In the current engineering PBF line, a few legacy layers still do not + carry source_layer_std. The new Domain prototype must normalize them + locally without mutating the production mapping chain. + """ + + if source_layer_std and source_layer_std != source_layer_jp: + return source_layer_std + return SOURCE_LAYER_STD_ALIASES.get(source_layer_jp, source_layer_std or source_layer_jp) diff --git a/src/Domain/navsea-compare-legacy-delivery-karatsu-10nm.html b/src/Domain/navsea-compare-legacy-delivery-karatsu-10nm.html new file mode 100644 index 0000000..65ed20e --- /dev/null +++ b/src/Domain/navsea-compare-legacy-delivery-karatsu-10nm.html @@ -0,0 +1,602 @@ + + + + + + NavSea Original vs New Build Karatsu 10nm + + + + +
+
+
NavSea 原始版 vs 新版构建 · 唐津 10 海里
+
左边固定加载原始样式 style.patched.local.json。右边可在 deliveryengineering 之间切换,当前使用的是兼容样式,以便直接对比现有瓦片输出。
+
+
+ + + + +
+
+ +
+ 右侧图层 + + +
+
+ +
+
+
+ 左侧 + 原始样式 · style.patched.local.json +
+
+
+
+
+ 右侧 + delivery 兼容样式 +
+
+
+
+ + + +
等待加载样式…
+ + + + + diff --git a/src/Domain/navsea-compare-legacy-domain.html b/src/Domain/navsea-compare-legacy-domain.html new file mode 100644 index 0000000..99c7f38 --- /dev/null +++ b/src/Domain/navsea-compare-legacy-domain.html @@ -0,0 +1,291 @@ + + + + + + NavSea Legacy vs Domain + + + + +
+
+
NavSea Legacy vs Domain
+
左边固定加载原始样式 style.patched.local.json。右边固定加载 Domain 试验样式 style.domain-karatsu-10nm.json,它消费新的 safety/detail 双包 `pbf`,用于观察语义分层后的表达。
+
+
+ +
+
+ +
+
+
+ 左侧 + 原始样式 · style.patched.local.json +
+
+
+
+
+ 右侧 + Domain 样式 · safety/detail 双包 +
+
+
+
+ +
等待加载样式…
+ + + + + diff --git a/src/Domain/navsea-domain-compatible.html b/src/Domain/navsea-domain-compatible.html new file mode 100644 index 0000000..644c97e --- /dev/null +++ b/src/Domain/navsea-domain-compatible.html @@ -0,0 +1,266 @@ + + + + + + NavSea Domain Compatible + + + + +
+
+
NavSea Domain Compatible
+
单页体验唐津 10 海里的 Chart Domain 兼容样式。当前样式目标是使用新的 Domain `pbf` 结构,尽量复现旧视觉表达。
+
+
+ +
+
+ +
+
+ Domain 单图 + style.domain-legacy-compatible-karatsu-10nm.json +
+
+ +
等待加载样式…
+
+ + + + + diff --git a/src/Domain/navsea-domain-land-sea.html b/src/Domain/navsea-domain-land-sea.html new file mode 100644 index 0000000..d3869ee --- /dev/null +++ b/src/Domain/navsea-domain-land-sea.html @@ -0,0 +1,136 @@ + + + + + + NavSea Domain Land Sea + + + + +
+
+
NavSea Domain Land / Sea View
+
唐津 10 海里 Chart Domain 实验页。这里把 `land_area` 作为陆海二分主判定层:`land_area` 内是陆地,外部背景默认视为海域。
+
+ +
+ +
+
+ 陆海分离单图 + 使用 `land_area` + 海域背景快速区分陆地与海洋 +
+ +
+
等待加载样式…
+
+ + + + + diff --git a/src/Domain/navsea_domain_render_audit.py b/src/Domain/navsea_domain_render_audit.py new file mode 100644 index 0000000..8e9d0f6 --- /dev/null +++ b/src/Domain/navsea_domain_render_audit.py @@ -0,0 +1,249 @@ +#!/usr/bin/env python3 +"""Run a Domain-aware render audit for legacy-vs-domain-compatible styles. + +This script intentionally does not modify or replace the existing +`navsea_render_audit.py` flow. It exists as a separate audit line for the +new Domain PBF experiment. + +Why a separate audit is required: +- the legacy audit uses tile-instance identity that includes the raw + `source-layer` name +- the Domain PBF line intentionally renames layers into standardized + semantic names +- therefore the legacy audit will report false positives such as + `missing_in_engineering` + `extra_in_engineering` even when the rendered + result is visually identical + +This Domain-aware audit keeps the original render-observation comparison +logic, but changes the tile-instance identity to use the legacy/original +layer identity (`source_layer_jp` when present). This allows: + +- original source layer `P基本線ククリ` +- Domain standardized layer `baseline_outline` + +to be matched as the same rendered object instance when they share the same +legacy lineage. +""" + +from __future__ import annotations + +import argparse +import importlib.util +import json +import sys +from collections import Counter +from pathlib import Path +from typing import Any + + +BASE_AUDIT_PATH = Path("/root/sourceserver/pbf/navsea_render_audit.py") +DEFAULT_ORIGINAL_STYLE_PATH = Path("/mnt/sda1/www/newpec/style.patched.local.json") +DEFAULT_DOMAIN_STYLE_PATH = Path("/mnt/sda1/www/newpec/domain/style.domain-legacy-compatible-karatsu-10nm.json") +DEFAULT_ORIGINAL_TILE_ROOT = Path( + "/home/wwwroot/newpec/exported_auto/" + "tile.mapple-on.jp__newpec-mvt-20260106__z___x___y_.pbf/tiles" +) +DEFAULT_DOMAIN_TILE_ROOT = Path("/tmp/pbf-domain-karatsu-10nm-merged") +DEFAULT_REPORT_MD_PATH = Path("/root/sourceserver/pbf/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.md") +DEFAULT_REPORT_JSON_PATH = Path("/root/sourceserver/pbf/NavSea_Original_vs_Domain_Compatible_Render_Audit_Karatsu_10nm.json") +DEFAULT_AUDIT_NAME = "navsea_original_vs_domain_compatible_karatsu_10nm" +MAX_EXAMPLES = 30 + + +def load_base_module(): + spec = importlib.util.spec_from_file_location("navsea_render_audit_base", BASE_AUDIT_PATH) + if spec is None or spec.loader is None: + raise RuntimeError(f"Unable to load base audit module: {BASE_AUDIT_PATH}") + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description="Audit original vs Domain-compatible render outputs.") + parser.add_argument("--audit-name", default=DEFAULT_AUDIT_NAME) + parser.add_argument("--original-style", type=Path, default=DEFAULT_ORIGINAL_STYLE_PATH) + parser.add_argument("--domain-style", type=Path, default=DEFAULT_DOMAIN_STYLE_PATH) + parser.add_argument("--original-tile-root", type=Path, default=DEFAULT_ORIGINAL_TILE_ROOT) + parser.add_argument("--domain-tile-root", type=Path, default=DEFAULT_DOMAIN_TILE_ROOT) + parser.add_argument("--report-md", type=Path, default=DEFAULT_REPORT_MD_PATH) + parser.add_argument("--report-json", type=Path, default=DEFAULT_REPORT_JSON_PATH) + return parser.parse_args() + + +def domain_aware_instance_id(feature: Any) -> str: + legacy_layer = feature.properties.get("source_layer_jp") or feature.layer_name + return ( + f"{feature.object_id}|z:{feature.tile_z}|x:{feature.tile_x}|" + f"y:{feature.tile_y}|layer:{legacy_layer}" + ) + + +def format_component_map(component_map: dict[str, tuple[str, ...]] | dict[str, list[str]]) -> str: + if not component_map: + return "none" + parts = [] + for key in sorted(component_map): + values = component_map[key] + parts.append(f"{key}={list(values)}") + return "; ".join(parts) + + +def write_reports( + *, + original_style_path: Path, + domain_style_path: Path, + original_tile_root: Path, + domain_tile_root: Path, + report_md_path: Path, + report_json_path: Path, + original_count: int, + domain_count: int, + result_count: int, + status_counter: Counter[str], + source_layer_counter: Counter[tuple[str, str]], + mismatch_examples: list[dict[str, Any]], +) -> None: + payload = { + "original_feature_instances": original_count, + "domain_feature_instances": domain_count, + "result_count": result_count, + "status_counts": dict(status_counter), + "source_layer_issue_counts": [ + {"status": status, "source_layer": source_layer, "count": count} + for (status, source_layer), count in source_layer_counter.most_common(30) + ], + "mismatch_examples": mismatch_examples, + } + report_json_path.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8") + + lines = [ + "# NavSea 原始版 vs Domain 兼容版渲染审计报告", + "", + "## 范围", + "", + f"- 原始样式: `{original_style_path}`", + f"- Domain 样式: `{domain_style_path}`", + f"- 原始瓦片根目录: `{original_tile_root}`", + f"- Domain 瓦片根目录: `{domain_tile_root}`", + f"- 原始 feature 实例数: `{original_count}`", + f"- Domain feature 实例数: `{domain_count}`", + f"- 审计结果数: `{result_count}`", + "", + "## Domain 口径说明", + "", + "- 主键优先使用 legacy `fid`。", + "- 没有 `fid` 的对象,回退到 `geometry + 稳定旧属性`。", + "- 审计粒度保留 tile 实例,因为渲染具有 zoom 敏感性。", + "- 与旧审计不同,本脚本按 `source_layer_jp` 对齐实例,不按 Domain 标准层名对齐。", + "", + "## 结果统计", + "", + ] + for status, count in status_counter.most_common(): + lines.append(f"- `{status}`: `{count}`") + + lines.extend(["", "## 主要问题层", ""]) + if not source_layer_counter: + lines.append("- 没有发现差异。") + else: + for (status, source_layer), count in source_layer_counter.most_common(20): + lines.append(f"- `{status}` | `{source_layer}` | `{count}`") + + lines.extend(["", "## 差异样例", ""]) + if not mismatch_examples: + lines.append("- 没有差异样例。") + else: + for item in mismatch_examples: + lines.append( + f"- `{item['status']}` | tile=`{item['tile']}` | source_layer=`{item['source_layer']}` | " + f"fid=`{item['fid_legacy']}` | object=`{item['canonical_object_type'] or 'n/a'}`" + ) + lines.append(f" original: {format_component_map(item['original_components'])}") + lines.append(f" domain: {format_component_map(item['domain_components'])}") + + report_md_path.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +def main() -> None: + args = parse_args() + base = load_base_module() + + base.feature_instance_id = domain_aware_instance_id + + original_style = base.load_style(args.original_style) + domain_style = base.load_style(args.domain_style) + domain_tiles = base.iter_tile_paths(args.domain_tile_root) + + original_count = 0 + domain_count = 0 + result_count = 0 + status_counter: Counter[str] = Counter() + source_layer_counter: Counter[tuple[str, str]] = Counter() + mismatch_examples: list[dict[str, Any]] = [] + + for domain_tile in domain_tiles: + rel = domain_tile.relative_to(args.domain_tile_root) + original_tile = args.original_tile_root / rel + if not original_tile.exists(): + continue + + original_instances = base.decode_tile_instances("original", args.original_tile_root, original_style, original_tile) + domain_instances = base.decode_tile_instances("domain", args.domain_tile_root, domain_style, domain_tile) + original_count += len(original_instances) + domain_count += len(domain_instances) + + all_instance_ids = sorted(set(original_instances) | set(domain_instances)) + for instance_id in all_instance_ids: + item = base.compare_instance(original_instances.get(instance_id), domain_instances.get(instance_id)) + result_count += 1 + status_counter[item["status"]] += 1 + if item["status"] != "exact_match": + source_layer_counter[(item["status"], item["source_layer"] or "unknown")] += 1 + if len(mismatch_examples) < MAX_EXAMPLES: + mismatch_examples.append( + { + "status": item["status"], + "tile": item["tile"], + "source_layer": item["source_layer"], + "fid_legacy": item["fid_legacy"], + "canonical_object_type": item["canonical_object_type"], + "original_components": item["original_components"], + "domain_components": item["engineering_components"], + } + ) + + write_reports( + original_style_path=args.original_style, + domain_style_path=args.domain_style, + original_tile_root=args.original_tile_root, + domain_tile_root=args.domain_tile_root, + report_md_path=args.report_md, + report_json_path=args.report_json, + original_count=original_count, + domain_count=domain_count, + result_count=result_count, + status_counter=status_counter, + source_layer_counter=source_layer_counter, + mismatch_examples=mismatch_examples, + ) + + print( + json.dumps( + { + "original_feature_instances": original_count, + "domain_feature_instances": domain_count, + "results": result_count, + "report_md": str(args.report_md), + "report_json": str(args.report_json), + "audit_name": args.audit_name, + }, + ensure_ascii=False, + indent=2, + ) + ) + + +if __name__ == "__main__": + main() diff --git a/src/Domain/navsea_mbtiles_validator.py b/src/Domain/navsea_mbtiles_validator.py new file mode 100644 index 0000000..f1f385c --- /dev/null +++ b/src/Domain/navsea_mbtiles_validator.py @@ -0,0 +1,269 @@ +"""Validate NavSea MBTiles files against Packaging Spec v1. + +This validator is intentionally standalone and does not affect existing +production tile generation or import flows. It can be used from CLI and from +other Python modules. + +Current scope follows: +- tasks/pbf/MbTiles/navsea_mbtiles_validator_task_zh.md +- tasks/pbf/MbTiles/navsea_mbtiles_packaging_spec_task_zh.md +""" + +from __future__ import annotations + +import argparse +import json +import sqlite3 +from dataclasses import asdict, dataclass +from pathlib import Path + + +ALLOWED_FORMATS = {"pbf", "mvt", "png", "jpg", "jpeg", "webp"} +ALLOWED_PACKAGE_TYPES = {"base", "cache", "update"} +REQUIRED_METADATA = [ + "format", + "minzoom", + "maxzoom", + "bounds", + "navsea_package_type", + "navsea_package_id", + "navsea_source_family", + "navsea_schema_version", +] +RECOMMENDED_METADATA = [ + "name", + "description", + "navsea_generated_at", + "navsea_tile_count", +] + + +@dataclass +class ValidationIssue: + level: str + code: str + message: str + + +@dataclass +class ValidationResult: + valid: bool + issues: list[ValidationIssue] + path: str + + +def load_metadata(conn: sqlite3.Connection) -> dict[str, str]: + cur = conn.execute("SELECT name, value FROM metadata") + return {str(name): str(value) for name, value in cur.fetchall()} + + +def table_exists(conn: sqlite3.Connection, table: str) -> bool: + cur = conn.execute( + "SELECT 1 FROM sqlite_master WHERE type='table' AND name=? LIMIT 1", + (table,), + ) + return cur.fetchone() is not None + + +def column_names(conn: sqlite3.Connection, table: str) -> set[str]: + cur = conn.execute(f"PRAGMA table_info({table})") + return {str(row[1]) for row in cur.fetchall()} + + +def validate_mbtiles(path: str) -> ValidationResult: + issues: list[ValidationIssue] = [] + db_path = Path(path) + + if not db_path.exists(): + return ValidationResult( + valid=False, + issues=[ValidationIssue("error", "file_missing", f"file not found: {db_path}")], + path=str(db_path), + ) + + conn = sqlite3.connect(db_path) + try: + if not table_exists(conn, "metadata"): + issues.append(ValidationIssue("error", "missing_table", "missing table: metadata")) + if not table_exists(conn, "tiles"): + issues.append(ValidationIssue("error", "missing_table", "missing table: tiles")) + + if table_exists(conn, "tiles"): + cols = column_names(conn, "tiles") + for col in ("zoom_level", "tile_column", "tile_row", "tile_data"): + if col not in cols: + issues.append(ValidationIssue("error", "missing_column", f"tiles missing column: {col}")) + + metadata: dict[str, str] = {} + if table_exists(conn, "metadata"): + metadata = load_metadata(conn) + for key in REQUIRED_METADATA: + if key not in metadata or metadata[key] == "": + issues.append(ValidationIssue("error", "missing_metadata", f"missing metadata: {key}")) + + fmt = metadata.get("format") + if fmt and fmt not in ALLOWED_FORMATS: + issues.append(ValidationIssue("error", "invalid_format", f"invalid format: {fmt}")) + + ptype = metadata.get("navsea_package_type") + if ptype and ptype not in ALLOWED_PACKAGE_TYPES: + issues.append( + ValidationIssue("error", "invalid_package_type", f"invalid navsea_package_type: {ptype}") + ) + + minzoom = metadata.get("minzoom") + maxzoom = metadata.get("maxzoom") + try: + if minzoom is not None and maxzoom is not None and int(minzoom) > int(maxzoom): + issues.append(ValidationIssue("error", "invalid_zoom_range", "minzoom > maxzoom")) + except ValueError: + issues.append(ValidationIssue("error", "invalid_zoom_value", "minzoom/maxzoom must be integers")) + + bounds = metadata.get("bounds") + if bounds: + try: + parts = [float(x) for x in bounds.split(",")] + if len(parts) != 4: + raise ValueError("bounds must contain 4 numbers") + except Exception: + issues.append(ValidationIssue("error", "invalid_bounds", f"invalid bounds: {bounds}")) + + for key in RECOMMENDED_METADATA: + if key not in metadata or metadata[key] == "": + issues.append(ValidationIssue("warning", "missing_metadata", f"missing metadata: {key}")) + + if table_exists(conn, "tiles"): + cur = conn.execute("SELECT COUNT(*) FROM tiles WHERE tile_data IS NULL OR length(tile_data)=0") + empty_tiles = int(cur.fetchone()[0]) + if empty_tiles > 0: + issues.append(ValidationIssue("error", "empty_tile_data", f"empty tile_data rows: {empty_tiles}")) + + cur = conn.execute( + """ + SELECT COUNT(*) FROM ( + SELECT zoom_level, tile_column, tile_row, COUNT(*) AS c + FROM tiles + GROUP BY zoom_level, tile_column, tile_row + HAVING c > 1 + ) + """ + ) + duplicates = int(cur.fetchone()[0]) + if duplicates > 0: + issues.append(ValidationIssue("error", "duplicate_tile_key", f"duplicate tile keys: {duplicates}")) + + cur = conn.execute("SELECT COUNT(*) FROM tiles WHERE tile_row < 0") + bad_rows = int(cur.fetchone()[0]) + if bad_rows > 0: + issues.append(ValidationIssue("error", "invalid_tile_row", f"negative tile_row rows: {bad_rows}")) + + cur = conn.execute("SELECT COUNT(*) FROM tiles") + actual_tile_count = int(cur.fetchone()[0]) + + ptype = metadata.get("navsea_package_type") + if ptype == "base": + if metadata.get("navsea_cache_mutable", "").lower() == "true": + issues.append( + ValidationIssue("error", "base_mutable_forbidden", "base package must not be marked mutable") + ) + if not metadata.get("navsea_source_family"): + issues.append( + ValidationIssue("error", "missing_metadata", "base package requires navsea_source_family") + ) + elif ptype == "cache": + if metadata.get("navsea_cache_mutable", "").lower() != "true": + issues.append( + ValidationIssue("error", "cache_mutable_required", "cache package requires navsea_cache_mutable=true") + ) + elif ptype == "update": + if not metadata.get("navsea_update_version"): + issues.append( + ValidationIssue("error", "update_version_required", "update package requires navsea_update_version") + ) + + expected_tile_count = metadata.get("navsea_tile_count") + if expected_tile_count: + try: + if int(expected_tile_count) != actual_tile_count: + issues.append( + ValidationIssue( + "warning", + "tile_count_mismatch", + f"navsea_tile_count={expected_tile_count}, actual={actual_tile_count}", + ) + ) + except ValueError: + issues.append( + ValidationIssue("warning", "invalid_tile_count_metadata", f"invalid navsea_tile_count: {expected_tile_count}") + ) + + finally: + conn.close() + + valid = not any(issue.level == "error" for issue in issues) + return ValidationResult(valid=valid, issues=issues, path=str(db_path)) + + +def format_cli(result: ValidationResult) -> str: + lines = [f"VALID={str(result.valid).lower()} path={result.path}"] + for issue in result.issues: + level = "ERROR" if issue.level == "error" else "WARN " + lines.append(f"[{level}] {issue.code}: {issue.message}") + if len(result.issues) == 0: + lines.append("[OK ] no issues") + return "\n".join(lines) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description="Validate NavSea MBTiles against Packaging Spec v1.") + parser.add_argument("path", help="Path to .mbtiles file") + parser.add_argument("--report-json", help="Optional JSON report output path") + parser.add_argument("--report-md", help="Optional Markdown report output path") + return parser.parse_args() + + +def write_reports(result: ValidationResult, report_json: str | None, report_md: str | None) -> None: + if report_json: + p = Path(report_json) + p.parent.mkdir(parents=True, exist_ok=True) + p.write_text( + json.dumps( + { + "valid": result.valid, + "path": result.path, + "issues": [asdict(issue) for issue in result.issues], + }, + ensure_ascii=False, + indent=2, + ), + encoding="utf-8", + ) + if report_md: + p = Path(report_md) + p.parent.mkdir(parents=True, exist_ok=True) + lines = [ + "# NavSea MBTiles Validation Report", + "", + f"- path: `{result.path}`", + f"- valid: `{str(result.valid).lower()}`", + f"- issue_count: `{len(result.issues)}`", + "", + ] + if not result.issues: + lines.append("- No issues found.") + else: + for issue in result.issues: + lines.append(f"- `{issue.level}` `{issue.code}`: {issue.message}") + p.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +def main() -> None: + args = parse_args() + result = validate_mbtiles(args.path) + write_reports(result, args.report_json, args.report_md) + print(format_cli(result)) + raise SystemExit(0 if result.valid else 1) + + +if __name__ == "__main__": + main() diff --git a/src/Domain/package_domain_mbtiles.py b/src/Domain/package_domain_mbtiles.py new file mode 100644 index 0000000..a4fb04e --- /dev/null +++ b/src/Domain/package_domain_mbtiles.py @@ -0,0 +1,275 @@ +"""Package Domain tiles into an MBTiles container without touching production flows. + +This script is intentionally isolated under src/Domain. It is used to: + +1. Read an existing Domain pack tile tree in XYZ layout. +2. Optionally filter layers by Chart Domain semantic group. +3. Write a standards-compliant MBTiles file following + tasks/pbf/MbTiles/navsea_mbtiles_packaging_spec_task_zh.md. + +Current primary use case: +- Package Karatsu 10nm `safety_core` content from the Domain `safety` pack + into a standalone `base` MBTiles file. +""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import math +import sqlite3 +from dataclasses import dataclass +from datetime import datetime, timezone +from pathlib import Path +from typing import Iterable + +import mapbox_vector_tile + +from chart_domain_model import LAYER_DOMAIN_SPECS, SAFETY_CORE + + +@dataclass(frozen=True) +class TileRecord: + z: int + x: int + y_xyz: int + data: bytes + + +def xyz_to_tms_row(z: int, y_xyz: int) -> int: + return (1 << z) - 1 - y_xyz + + +def tile_lon(x: int, z: int) -> float: + return x / (2**z) * 360.0 - 180.0 + + +def tile_lat(y: int, z: int) -> float: + n = math.pi - (2.0 * math.pi * y) / (2**z) + return math.degrees(math.atan(math.sinh(n))) + + +def tile_bounds_xyz(z: int, x: int, y: int) -> tuple[float, float, float, float]: + min_lon = tile_lon(x, z) + max_lon = tile_lon(x + 1, z) + max_lat = tile_lat(y, z) + min_lat = tile_lat(y + 1, z) + return min_lon, min_lat, max_lon, max_lat + + +def filter_tile_to_safety_core(tile_bytes: bytes) -> bytes | None: + decoded = mapbox_vector_tile.decode(tile_bytes) + encoded_layers = [] + per_layer_options: dict[str, dict[str, int]] = {} + + for layer_name, layer_payload in sorted(decoded.items()): + spec = LAYER_DOMAIN_SPECS.get(layer_name) + if spec is None or spec.chart_domain != SAFETY_CORE: + continue + features = layer_payload.get("features", []) + if not features: + continue + encoded_layers.append({"name": layer_name, "features": features}) + extent = layer_payload.get("extent") or layer_payload.get("extents") or 4096 + per_layer_options[layer_name] = {"extents": int(extent)} + + if not encoded_layers: + return None + + return mapbox_vector_tile.encode(encoded_layers, per_layer_options=per_layer_options) + + +def iter_filtered_tiles(input_root: Path) -> Iterable[TileRecord]: + for path in sorted(input_root.rglob("*.pbf")): + try: + z = int(path.parts[-3]) + x = int(path.parts[-2]) + y_xyz = int(path.stem) + except ValueError: + continue + filtered = filter_tile_to_safety_core(path.read_bytes()) + if filtered is None: + continue + yield TileRecord(z=z, x=x, y_xyz=y_xyz, data=filtered) + + +def ensure_schema(conn: sqlite3.Connection) -> None: + conn.executescript( + """ + CREATE TABLE IF NOT EXISTS metadata (name TEXT, value TEXT); + CREATE TABLE IF NOT EXISTS tiles ( + zoom_level INTEGER, + tile_column INTEGER, + tile_row INTEGER, + tile_data BLOB + ); + CREATE UNIQUE INDEX IF NOT EXISTS tile_index + ON tiles (zoom_level, tile_column, tile_row); + """ + ) + + +def insert_metadata(conn: sqlite3.Connection, metadata: dict[str, str]) -> None: + conn.executemany( + "INSERT INTO metadata(name, value) VALUES(?, ?)", + list(metadata.items()), + ) + + +def build_mbtiles(*, input_root: Path, output_mbtiles: Path, region_id: str) -> dict[str, object]: + if output_mbtiles.exists(): + output_mbtiles.unlink() + output_mbtiles.parent.mkdir(parents=True, exist_ok=True) + + conn = sqlite3.connect(output_mbtiles) + ensure_schema(conn) + + minzoom: int | None = None + maxzoom: int | None = None + bounds: tuple[float, float, float, float] | None = None + high_zoom_bounds: tuple[float, float, float, float] | None = None + tile_count = 0 + hasher = hashlib.sha256() + + for rec in iter_filtered_tiles(input_root): + conn.execute( + "INSERT INTO tiles(zoom_level, tile_column, tile_row, tile_data) VALUES(?, ?, ?, ?)", + (rec.z, rec.x, xyz_to_tms_row(rec.z, rec.y_xyz), sqlite3.Binary(rec.data)), + ) + tile_count += 1 + minzoom = rec.z if minzoom is None else min(minzoom, rec.z) + prev_maxzoom = maxzoom + maxzoom = rec.z if maxzoom is None else max(maxzoom, rec.z) + + b = tile_bounds_xyz(rec.z, rec.x, rec.y_xyz) + if bounds is None: + bounds = b + else: + bounds = ( + min(bounds[0], b[0]), + min(bounds[1], b[1]), + max(bounds[2], b[2]), + max(bounds[3], b[3]), + ) + + if prev_maxzoom is None or rec.z > prev_maxzoom: + high_zoom_bounds = b + elif rec.z == prev_maxzoom: + if high_zoom_bounds is None: + high_zoom_bounds = b + else: + high_zoom_bounds = ( + min(high_zoom_bounds[0], b[0]), + min(high_zoom_bounds[1], b[1]), + max(high_zoom_bounds[2], b[2]), + max(high_zoom_bounds[3], b[3]), + ) + + hasher.update(f"{rec.z}/{rec.x}/{rec.y_xyz}\n".encode("utf-8")) + hasher.update(rec.data) + + if tile_count == 0 or minzoom is None or maxzoom is None or bounds is None: + conn.close() + raise RuntimeError(f"No safety_core tiles found under {input_root}") + + generated_at = datetime.now(timezone.utc).replace(microsecond=0).isoformat().replace("+00:00", "Z") + timestamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ") + package_id = f"navsea.base.{region_id}.safety-core.{timestamp}.{hasher.hexdigest()[:8]}" + effective_bounds = high_zoom_bounds or bounds + center = f"{(effective_bounds[0]+effective_bounds[2])/2:.6f},{(effective_bounds[1]+effective_bounds[3])/2:.6f},{maxzoom}" + metadata = { + "format": "pbf", + "minzoom": str(minzoom), + "maxzoom": str(maxzoom), + "bounds": ",".join(f"{v:.6f}" for v in effective_bounds), + "center": center, + "scheme": "tms", + "navsea_package_type": "base", + "navsea_package_id": package_id, + "navsea_source_family": "navsea.chart.domain.safety-core", + "navsea_schema_version": "1", + "name": f"NavSea {region_id} safety_core base", + "description": f"NavSea Domain safety_core MBTiles package for {region_id}", + "type": "overlay", + "version": "domain-v1", + "navsea_region_id": region_id, + "navsea_generated_at": generated_at, + "navsea_priority_hint": "10", + "navsea_tile_count": str(tile_count), + "navsea_data_hash": hasher.hexdigest(), + "navsea_projection": "webmercator", + "navsea_base_edition": "domain-v1", + "navsea_coverage_tier": "harbor-detail", + "navsea_is_fallback": "true", + } + insert_metadata(conn, metadata) + conn.commit() + conn.close() + + return { + "input_root": str(input_root), + "output_mbtiles": str(output_mbtiles), + "tile_count": tile_count, + "minzoom": minzoom, + "maxzoom": maxzoom, + "bounds": metadata["bounds"], + "package_id": package_id, + "data_hash": metadata["navsea_data_hash"], + "metadata": metadata, + } + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description="Package Domain safety_core tiles into MBTiles.") + parser.add_argument("--input-root", required=True, help="Domain safety pack root in XYZ tile layout.") + parser.add_argument("--output-mbtiles", required=True, help="Output MBTiles file path.") + parser.add_argument("--region-id", required=True, help="Region identifier, e.g. karatsu-10nm.") + parser.add_argument("--report-json", help="Optional output JSON report path.") + parser.add_argument("--report-md", help="Optional output Markdown report path.") + return parser.parse_args() + + +def write_reports(result: dict[str, object], report_json: Path | None, report_md: Path | None) -> None: + if report_json is not None: + report_json.parent.mkdir(parents=True, exist_ok=True) + report_json.write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding="utf-8") + if report_md is not None: + report_md.parent.mkdir(parents=True, exist_ok=True) + lines = [ + "# NavSea Domain MBTiles Packaging Report", + "", + f"- input_root: `{result['input_root']}`", + f"- output_mbtiles: `{result['output_mbtiles']}`", + f"- tile_count: `{result['tile_count']}`", + f"- minzoom: `{result['minzoom']}`", + f"- maxzoom: `{result['maxzoom']}`", + f"- bounds: `{result['bounds']}`", + f"- package_id: `{result['package_id']}`", + f"- data_hash: `{result['data_hash']}`", + "", + "## Metadata", + "", + ] + for key, value in result["metadata"].items(): + lines.append(f"- `{key}` = `{value}`") + report_md.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +def main() -> None: + args = parse_args() + result = build_mbtiles( + input_root=Path(args.input_root), + output_mbtiles=Path(args.output_mbtiles), + region_id=args.region_id, + ) + write_reports( + result, + Path(args.report_json) if args.report_json else None, + Path(args.report_md) if args.report_md else None, + ) + print(json.dumps(result, ensure_ascii=False, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/src/Domain/recode_style_layer_names.py b/src/Domain/recode_style_layer_names.py new file mode 100644 index 0000000..e3ecf9b --- /dev/null +++ b/src/Domain/recode_style_layer_names.py @@ -0,0 +1,54 @@ +from __future__ import annotations + +import argparse +import json +from pathlib import Path + +from style_layer_naming import make_style_layer_id, parse_source_layer_rules, remap_style_layer + + +def recode_style(path: Path, jp_to_std: dict[str, str]) -> dict[str, int]: + style = json.loads(path.read_text(encoding="utf-8")) + counts = {"rewritten_ids": 0, "rewritten_source_layers": 0} + used_ids: set[str] = set() + source_role_counts: dict[tuple[str, str], int] = {} + generic_role_counts: dict[tuple[str, str], int] = {} + + for layer in style.get("layers", []): + source_layer_std, remapped = remap_style_layer(layer, jp_to_std) + if remapped: + counts["rewritten_source_layers"] += 1 + new_id = make_style_layer_id( + layer=layer, + source_layer_std=source_layer_std, + used_ids=used_ids, + source_role_counts=source_role_counts, + generic_role_counts=generic_role_counts, + ) + if layer.get("id") != new_id: + layer["id"] = new_id + counts["rewritten_ids"] += 1 + + path.write_text(json.dumps(style, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + return counts + + +def main() -> None: + parser = argparse.ArgumentParser(description="Recode style layer ids and source-layers into NavSea standard names.") + parser.add_argument("styles", nargs="+", help="Style JSON files to rewrite.") + parser.add_argument( + "--source-layer-rules", + default="/root/sourceserver/pbf/tasks/pbf/mappings/navsea_source_layer_rules_v1.yaml", + help="Path to source-layer mapping rules.", + ) + args = parser.parse_args() + + jp_to_std = parse_source_layer_rules(Path(args.source_layer_rules)) + for style_path in args.styles: + path = Path(style_path) + counts = recode_style(path, jp_to_std) + print(json.dumps({"style": str(path), **counts}, ensure_ascii=False)) + + +if __name__ == "__main__": + main() diff --git a/src/Domain/style.compare-engineering-karatsu-10nm.json b/src/Domain/style.compare-engineering-karatsu-10nm.json new file mode 100644 index 0000000..4846ba6 --- /dev/null +++ b/src/Domain/style.compare-engineering-karatsu-10nm.json @@ -0,0 +1,5652 @@ +{ + "version": 8, + "name": "NavSea Karatsu 10nm Compatible", + "sprite": "http://192.168.200.184/newpec/sprite/sprite?v=111", + "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": "© 昭文社" + }, + "shipfinder": { + "type": "geojson", + "data": { + "type": "FeatureCollection", + "features": [] + } + }, + "navsea_engineering": { + "type": "vector", + "minzoom": 0, + "maxzoom": 12, + "tiles": [ + "http://192.168.200.184/pbf-engineering-karatsu-10nm/{z}/{x}/{y}.pbf" + ], + "attribution": "NavSea semantic vector tiles" + } + }, + "layers": [ + { + "id": "land_area__fill", + "source": "navsea_engineering", + "source-layer": "land_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 210, + 200, + 128, + 1 + ] + } + }, + { + "id": "onshore_structure_area__fill", + "source": "navsea_engineering", + "source-layer": "onshore_structure_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 147, + 116, + 39, + 1 + ] + } + }, + { + "id": "onshore_structure_line__line", + "source": "navsea_engineering", + "source-layer": "onshore_structure_line", + "type": "line", + "paint": { + "line-width": 2, + "line-color": [ + "rgba", + 147, + 116, + 39, + 1 + ] + } + }, + { + "id": "place_label_land__text", + "source": "navsea_engineering", + "source-layer": "place_label_land", + "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": "place_label_land__text__02", + "source": "navsea_engineering", + "source-layer": "place_label_land", + "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": "background__background", + "type": "background", + "paint": { + "background-color": [ + "rgba", + 255, + 255, + 255, + 1 + ] + } + }, + { + "id": "mapple__raster", + "type": "raster", + "source": "mapple" + }, + { + "id": "baseline_area__fill", + "source": "navsea_engineering", + "source-layer": "baseline_area", + "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": "baseline_area__fill__02", + "source": "navsea_engineering", + "source-layer": "baseline_area", + "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": "baseline_area__fill__03", + "source": "navsea_engineering", + "source-layer": "baseline_area", + "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": "baseline_area__fill__04", + "source": "navsea_engineering", + "source-layer": "baseline_area", + "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": "submerged_reef_area__fill", + "source": "navsea_engineering", + "source-layer": "submerged_reef_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 129, + 195, + 226, + 1 + ] + } + }, + { + "id": "submerged_reef_area__fill__02", + "source": "navsea_engineering", + "source-layer": "submerged_reef_area", + "type": "fill", + "paint": { + "fill-pattern": "fill-daytime-175" + } + }, + { + "id": "bathymetry_line__line", + "source": "navsea_engineering", + "source-layer": "bathymetry_line", + "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": "depth_contour__line", + "source": "navsea_engineering", + "source-layer": "depth_contour", + "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": "depth_contour_overview__line", + "source": "navsea_engineering", + "source-layer": "depth_contour_overview", + "type": "line", + "layout": { + "visibility": "visible" + }, + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 1, + "line-dasharray": [ + "literal", + [ + 12, + 4 + ] + ] + } + }, + { + "id": "depth_contour__line__02", + "source": "navsea_engineering", + "source-layer": "depth_contour", + "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": "depth_contour_overview__line__02", + "source": "navsea_engineering", + "source-layer": "depth_contour_overview", + "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": "depth_contour_overview__line__03", + "source": "navsea_engineering", + "source-layer": "depth_contour_overview", + "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": "depth_contour__line__03", + "source": "navsea_engineering", + "source-layer": "depth_contour", + "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": "depth_contour_overview__line__04", + "source": "navsea_engineering", + "source-layer": "depth_contour_overview", + "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": "depth_contour_overview__line__05", + "source": "navsea_engineering", + "source-layer": "depth_contour_overview", + "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": "depth_contour__line__04", + "source": "navsea_engineering", + "source-layer": "depth_contour", + "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": "depth_contour_overview__line__06", + "source": "navsea_engineering", + "source-layer": "depth_contour_overview", + "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": "depth_contour_overview__line__07", + "source": "navsea_engineering", + "source-layer": "depth_contour_overview", + "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": "fixed_fishing_gear_area__fill", + "source": "navsea_engineering", + "source-layer": "fixed_fishing_gear_area", + "type": "fill", + "paint": { + "fill-pattern": [ + "match", + [ + "get", + "分類番号" + ], + 900, + "fill-daytime-900", + 910, + "fill-daytime-910", + 920, + "fill-daytime-401", + "" + ] + } + }, + { + "id": "fixed_fishing_gear_area__line", + "source": "navsea_engineering", + "source-layer": "fixed_fishing_gear_area", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 198, + 77, + 187, + 1 + ], + "line-width": 1 + } + }, + { + "id": "anchor_caution_hazard_area__fill", + "source": "navsea_engineering", + "source-layer": "anchor_caution_hazard_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 0, + 0, + 0, + 0 + ] + } + }, + { + "id": "anchor_caution_hazard_area__fill__02", + "source": "navsea_engineering", + "source-layer": "anchor_caution_hazard_area", + "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": "navigation_hazard_area__fill", + "source": "navsea_engineering", + "source-layer": "navigation_hazard_area", + "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": "anchorage_area__fill", + "source": "navsea_engineering", + "source-layer": "anchorage_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 0, + 0, + 0, + 0 + ] + } + }, + { + "id": "route_area__fill", + "source": "navsea_engineering", + "source-layer": "route_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 0, + 0, + 0, + 0 + ] + } + }, + { + "id": "facility_boundary_area_transparent__fill", + "source": "navsea_engineering", + "source-layer": "facility_boundary_area_transparent", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 0, + 0, + 0, + 0 + ] + } + }, + { + "id": "facility_boundary_area__fill", + "source": "navsea_engineering", + "source-layer": "facility_boundary_area", + "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": "anchor_caution_hazard_outline__line", + "source": "navsea_engineering", + "source-layer": "anchor_caution_hazard_outline", + "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": "navigation_hazard_outline__line", + "source": "navsea_engineering", + "source-layer": "navigation_hazard_outline", + "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": "depth_zone_700__line", + "source": "navsea_engineering", + "source-layer": "depth_zone_700", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 198, + 77, + 187, + 1 + ], + "line-width": 2, + "line-dasharray": [ + "literal", + [ + 3, + 2 + ] + ] + } + }, + { + "id": "depth_zone_700__line__02", + "source": "navsea_engineering", + "source-layer": "depth_zone_700", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 1, + "line-dasharray": [ + "literal", + [ + 10, + 2 + ] + ] + } + }, + { + "id": "depth_zone_702__line", + "source": "navsea_engineering", + "source-layer": "depth_zone_702", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 198, + 77, + 187, + 1 + ], + "line-width": 1 + } + }, + { + "id": "depth_zone_725__line", + "source": "navsea_engineering", + "source-layer": "depth_zone_725", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 198, + 77, + 187, + 1 + ], + "line-width": 2, + "line-dasharray": [ + "literal", + [ + 2, + 1 + ] + ] + } + }, + { + "id": "depth_zone_739__line", + "source": "navsea_engineering", + "source-layer": "depth_zone_739", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 7, + 7, + 7, + 1 + ], + "line-width": 1, + "line-dasharray": [ + "literal", + [ + 4, + 1 + ] + ] + } + }, + { + "id": "depth_zone_740__line", + "source": "navsea_engineering", + "source-layer": "depth_zone_740", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 1, + "line-dasharray": [ + "literal", + [ + 3, + 2 + ] + ] + } + }, + { + "id": "route_outline__line", + "source": "navsea_engineering", + "source-layer": "route_outline", + "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": "route_axis_line__line", + "source": "navsea_engineering", + "source-layer": "route_axis_line", + "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": "anchorage_outline__line", + "source": "navsea_engineering", + "source-layer": "anchorage_outline", + "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": "clip_outline_721__line", + "source": "navsea_engineering", + "source-layer": "clip_outline_721", + "type": "line", + "paint": { + "line-pattern": "line-daytime-721", + "line-width": 8 + } + }, + { + "id": "facility_boundary_outline__line", + "source": "navsea_engineering", + "source-layer": "facility_boundary_outline", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": [ + "match", + [ + "get", + "分類番号" + ], + 798, + 3, + 1 + ] + } + }, + { + "id": "leading_line_outline__line", + "source": "navsea_engineering", + "source-layer": "leading_line_outline", + "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": "clip_outline_754__line", + "source": "navsea_engineering", + "source-layer": "clip_outline_754", + "type": "line", + "paint": { + "line-pattern": "line-daytime-754", + "line-width": 8 + } + }, + { + "id": "depth_zone_741__line", + "source": "navsea_engineering", + "source-layer": "depth_zone_741", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 2, + "line-dasharray": [ + "literal", + [ + 3, + 1 + ] + ] + } + }, + { + "id": "clip_outline_730__line", + "source": "navsea_engineering", + "source-layer": "clip_outline_730", + "type": "line", + "paint": { + "line-pattern": "line-daytime-730", + "line-width": 64 + } + }, + { + "id": "depth_zone_749__line", + "source": "navsea_engineering", + "source-layer": "depth_zone_749", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 1, + "line-dasharray": [ + "literal", + [ + 2, + 1 + ] + ] + } + }, + { + "id": "depth_zone_748__line", + "source": "navsea_engineering", + "source-layer": "depth_zone_748", + "type": "line", + "paint": { + "line-pattern": "line-daytime-748", + "line-width": 64 + } + }, + { + "id": "depth_zone_739__line__02", + "source": "navsea_engineering", + "source-layer": "depth_zone_739", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 7, + 7, + 7, + 1 + ], + "line-width": 1, + "line-dasharray": [ + "literal", + [ + 3, + 1, + 1, + 1, + 1, + 1 + ] + ] + } + }, + { + "id": "seabed_line__line", + "source": "navsea_engineering", + "source-layer": "seabed_line", + "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": "clearance_limit_line__line", + "source": "navsea_engineering", + "source-layer": "clearance_limit_line", + "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": "bridge_structure__fill", + "source": "navsea_engineering", + "source-layer": "bridge_structure", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 0, + 0, + 0, + 0 + ] + } + }, + { + "id": "bridge_structure__line", + "source": "navsea_engineering", + "source-layer": "bridge_structure", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 95, + 106, + 95, + 1 + ], + "line-width": 2 + } + }, + { + "id": "baseline_outline__line", + "source": "navsea_engineering", + "source-layer": "baseline_outline", + "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": "hazard_boundary_outline__line", + "source": "navsea_engineering", + "source-layer": "hazard_boundary_outline", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 95, + 106, + 95, + 1 + ], + "line-width": 3, + "line-dasharray": [ + "literal", + [ + 3, + 2 + ] + ] + } + }, + { + "id": "baseline_line__line", + "source": "navsea_engineering", + "source-layer": "baseline_line", + "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": "hazard_boundary_line__line", + "source": "navsea_engineering", + "source-layer": "hazard_boundary_line", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 95, + 106, + 95, + 1 + ], + "line-width": 3, + "line-dasharray": [ + "literal", + [ + 3, + 2 + ] + ] + } + }, + { + "id": "navigation_hazard_point__symbol", + "source": "navsea_engineering", + "source-layer": "navigation_hazard_point", + "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": "anchor_caution_hazard_point__symbol", + "source": "navsea_engineering", + "source-layer": "anchor_caution_hazard_point", + "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": "route_boundary_point__symbol", + "source": "navsea_engineering", + "source-layer": "route_boundary_point", + "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": "anchorage_point__symbol", + "source": "navsea_engineering", + "source-layer": "anchorage_point", + "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": "seabed_text_point__text", + "source": "navsea_engineering", + "source-layer": "seabed_text_point", + "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": "facility_boundary_point__symbol", + "source": "navsea_engineering", + "source-layer": "facility_boundary_point", + "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": "pilot_station_point__symbol", + "source": "navsea_engineering", + "source-layer": "pilot_station_point", + "type": "symbol", + "layout": { + "icon-allow-overlap": true, + "icon-image": "symbol-daytime-500" + } + }, + { + "id": "onshore_structure_point__symbol", + "source": "navsea_engineering", + "source-layer": "onshore_structure_point", + "type": "symbol", + "layout": { + "icon-allow-overlap": true, + "icon-image": [ + "concat", + "symbol-daytime-", + [ + "get", + "分類番号" + ] + ] + } + }, + { + "id": "navigation_marks__arc", + "source": "navsea_engineering", + "source-layer": "navigation_marks", + "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": "navigation_marks__flare", + "source": "navsea_engineering", + "source-layer": "navigation_marks", + "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": "navigation_marks__symbol", + "source": "navsea_engineering", + "source-layer": "navigation_marks", + "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": "bathymetry_line__text", + "minzoom": 11, + "source": "navsea_engineering", + "source-layer": "bathymetry_line", + "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": "depth_contour_overview__text", + "minzoom": 11, + "source": "navsea_engineering", + "source-layer": "depth_contour_overview", + "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": "depth_contour__text", + "minzoom": 11, + "source": "navsea_engineering", + "source-layer": "depth_contour", + "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": "navigation_marks__label", + "source": "navsea_engineering", + "source-layer": "navigation_marks", + "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": "navigation_marks__label_subtext", + "source": "navsea_engineering", + "source-layer": "navigation_marks", + "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": "dummy__symbol", + "source": "navsea_engineering", + "source-layer": "dummy", + "type": "symbol", + "layout": { + "visibility": "none" + } + }, + { + "id": "place_label_sea__text", + "source": "navsea_engineering", + "source-layer": "place_label_sea", + "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": "place_label_sea__text__02", + "source": "navsea_engineering", + "source-layer": "place_label_sea", + "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": "clearance_limit_point__label", + "source": "navsea_engineering", + "source-layer": "clearance_limit_point", + "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": "clearance_limit_point__text", + "source": "navsea_engineering", + "source-layer": "clearance_limit_point", + "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": "hole_area__fill", + "source": "navsea_engineering", + "source-layer": "hole_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 0, + 0, + 0, + 0 + ] + } + }, + { + "id": "shipfinder__symbol", + "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": "shipfinder__symbol__02", + "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": "shipfinder__symbol__03", + "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 + } + } + ] +} diff --git a/src/Domain/style.domain-karatsu-10nm.json b/src/Domain/style.domain-karatsu-10nm.json new file mode 100644 index 0000000..aaa4976 --- /dev/null +++ b/src/Domain/style.domain-karatsu-10nm.json @@ -0,0 +1,521 @@ +{ + "version": 8, + "name": "NavSea Chart Domain Karatsu 10nm", + "sprite": "https://tile.mapple-on.jp/newpec-symbols-20251001/sprite", + "glyphs": "https://tile.mapple-on.jp/glyphs/{fontstack}/{range}.pbf", + "sources": { + "mapple": { + "type": "raster", + "minzoom": 0, + "maxzoom": 16, + "tileSize": 256, + "tiles": [ + "https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png" + ], + "attribution": "© 昭文社" + }, + "domain_safety": { + "type": "vector", + "minzoom": 0, + "maxzoom": 12, + "tiles": [ + "http://192.168.200.184/pbf-domain-karatsu-10nm/safety/{z}/{x}/{y}.pbf" + ], + "attribution": "© NavSea Domain" + }, + "domain_detail": { + "type": "vector", + "minzoom": 0, + "maxzoom": 12, + "tiles": [ + "http://192.168.200.184/pbf-domain-karatsu-10nm/detail/{z}/{x}/{y}.pbf" + ], + "attribution": "© NavSea Domain" + } + }, + "layers": [ + { + "id": "background", + "type": "background", + "paint": { + "background-color": "#cfe4ea" + } + }, + { + "id": "base-raster", + "type": "raster", + "source": "mapple", + "minzoom": 0, + "maxzoom": 16, + "paint": { + "raster-opacity": 0.55, + "raster-saturation": -0.2, + "raster-contrast": -0.08 + } + }, + { + "id": "land-area", + "type": "fill", + "source": "domain_safety", + "source-layer": "land_area", + "paint": { + "fill-color": "#d7c39e", + "fill-opacity": 0.88 + } + }, + { + "id": "onshore-structure-area", + "type": "fill", + "source": "domain_safety", + "source-layer": "onshore_structure_area", + "paint": { + "fill-color": "#8ba38a", + "fill-opacity": 0.32 + } + }, + { + "id": "fixed-fishing-gear-area", + "type": "fill", + "source": "domain_safety", + "source-layer": "fixed_fishing_gear_area", + "paint": { + "fill-color": "#e36ad6", + "fill-opacity": 0.12, + "fill-outline-color": "#cf48c4" + } + }, + { + "id": "anchor-caution-area", + "type": "fill", + "source": "domain_safety", + "source-layer": "anchor_caution_hazard_area", + "paint": { + "fill-color": "#d86cc8", + "fill-opacity": 0.08, + "fill-outline-color": "#c94ebb" + } + }, + { + "id": "bathymetry-line", + "type": "line", + "source": "domain_detail", + "source-layer": "bathymetry_line", + "paint": { + "line-color": "#b6ccd1", + "line-width": 1, + "line-opacity": 0.8 + } + }, + { + "id": "seabed-line", + "type": "line", + "source": "domain_detail", + "source-layer": "seabed_line", + "paint": { + "line-color": "#6b6b6b", + "line-width": 1, + "line-dasharray": [ + 4, + 2 + ], + "line-opacity": 0.75 + } + }, + { + "id": "baseline-line", + "type": "line", + "source": "domain_safety", + "source-layer": "baseline_line", + "paint": { + "line-color": "#7f5531", + "line-width": 1.6, + "line-opacity": 0.88 + } + }, + { + "id": "baseline-outline", + "type": "line", + "source": "domain_safety", + "source-layer": "baseline_outline", + "paint": { + "line-color": "#7f5531", + "line-width": 1, + "line-dasharray": [ + 3, + 2 + ], + "line-opacity": 0.9 + } + }, + { + "id": "onshore-structure-line", + "type": "line", + "source": "domain_safety", + "source-layer": "onshore_structure_line", + "paint": { + "line-color": "#617e60", + "line-width": 1.4 + } + }, + { + "id": "bridge-structure-line", + "type": "line", + "source": "domain_safety", + "source-layer": "bridge_structure", + "paint": { + "line-color": "#616161", + "line-width": 2 + } + }, + { + "id": "clearance-limit-line", + "type": "line", + "source": "domain_safety", + "source-layer": "clearance_limit_line", + "paint": { + "line-color": "#c33d3d", + "line-width": 1.4, + "line-dasharray": [ + 2, + 2 + ] + } + }, + { + "id": "hazard-boundary-outline", + "type": "line", + "source": "domain_safety", + "source-layer": "hazard_boundary_outline", + "paint": { + "line-color": "#a35dbf", + "line-width": 1.3, + "line-dasharray": [ + 2, + 2 + ] + } + }, + { + "id": "anchor-caution-outline", + "type": "line", + "source": "domain_safety", + "source-layer": "anchor_caution_hazard_outline", + "paint": { + "line-color": "#d04cc1", + "line-width": 1.4, + "line-dasharray": [ + 3, + 2 + ] + } + }, + { + "id": "depth-contour", + "type": "line", + "source": "domain_safety", + "source-layer": "depth_contour", + "paint": { + "line-color": "#7ed8ae", + "line-width": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 7, + 0.8, + 12, + 1.3 + ], + "line-opacity": 0.95 + } + }, + { + "id": "depth-contour-labels", + "type": "symbol", + "source": "domain_safety", + "source-layer": "depth_contour", + "minzoom": 10, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 140, + "text-field": [ + "coalesce", + [ + "get", + "chart_label_text" + ], + [ + "to-string", + [ + "get", + "least_depth_m" + ] + ] + ], + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 11 + }, + "paint": { + "text-color": "#0f171a", + "text-halo-color": "#f0f8fa", + "text-halo-width": 1.2 + } + }, + { + "id": "navigation-marks-symbol", + "type": "symbol", + "source": "domain_safety", + "source-layer": "navigation_marks", + "minzoom": 7, + "layout": { + "icon-image": [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "symbol-daytime-301" + ], + "icon-size": 0.95, + "icon-allow-overlap": true + } + }, + { + "id": "navigation-marks-label", + "type": "symbol", + "source": "domain_safety", + "source-layer": "navigation_marks", + "minzoom": 10, + "layout": { + "text-field": [ + "get", + "chart_label_text" + ], + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 13, + "text-offset": [ + 0.9, + 0.1 + ], + "text-anchor": "left" + }, + "paint": { + "text-color": "#111111", + "text-halo-color": "#ffffff", + "text-halo-width": 1.4 + } + }, + { + "id": "navigation-marks-subtext", + "type": "symbol", + "source": "domain_safety", + "source-layer": "navigation_marks", + "minzoom": 11, + "layout": { + "text-field": [ + "get", + "chart_label_subtext" + ], + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 11, + "text-offset": [ + 1, + 1.25 + ], + "text-anchor": "left" + }, + "paint": { + "text-color": [ + "coalesce", + [ + "get", + "chart_text_color" + ], + "#2a2a2a" + ], + "text-halo-color": "#ffffff", + "text-halo-width": 1.2 + } + }, + { + "id": "anchor-caution-symbol", + "type": "symbol", + "source": "domain_safety", + "source-layer": "anchor_caution_hazard_point", + "minzoom": 9, + "layout": { + "icon-image": [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "symbol-daytime-428" + ], + "icon-size": 0.92, + "icon-allow-overlap": true + } + }, + { + "id": "navigation-hazard-symbol", + "type": "symbol", + "source": "domain_safety", + "source-layer": "navigation_hazard_point", + "minzoom": 9, + "layout": { + "icon-image": [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "symbol-daytime-421" + ], + "icon-size": 0.92, + "icon-allow-overlap": true + } + }, + { + "id": "facility-boundary-symbol", + "type": "symbol", + "source": "domain_detail", + "source-layer": "facility_boundary_point", + "minzoom": 11, + "layout": { + "icon-image": [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "symbol-daytime-428" + ], + "icon-size": 0.82, + "icon-allow-overlap": true + } + }, + { + "id": "onshore-structure-symbol", + "type": "symbol", + "source": "domain_safety", + "source-layer": "onshore_structure_point", + "minzoom": 11, + "layout": { + "icon-image": [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "symbol-daytime-428" + ], + "icon-size": 0.82, + "icon-allow-overlap": true + } + }, + { + "id": "clearance-limit-label", + "type": "symbol", + "source": "domain_safety", + "source-layer": "clearance_limit_point", + "minzoom": 11, + "layout": { + "text-field": [ + "coalesce", + [ + "get", + "chart_label_text" + ], + [ + "get", + "名称" + ] + ], + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 12 + }, + "paint": { + "text-color": "#c33d3d", + "text-halo-color": "#ffffff", + "text-halo-width": 1.2 + } + }, + { + "id": "seabed-text", + "type": "symbol", + "source": "domain_detail", + "source-layer": "seabed_text_point", + "minzoom": 11, + "layout": { + "text-field": [ + "get", + "chart_label_text" + ], + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 12 + }, + "paint": { + "text-color": "#000000", + "text-halo-color": "#ffffff", + "text-halo-width": 1.1 + } + }, + { + "id": "place-labels-sea", + "type": "symbol", + "source": "domain_detail", + "source-layer": "place_label_sea", + "minzoom": 10, + "layout": { + "text-field": [ + "get", + "chart_label_text" + ], + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 13 + }, + "paint": { + "text-color": "#111111", + "text-halo-color": "#ffffff", + "text-halo-width": 1.4 + } + }, + { + "id": "place-labels-land", + "type": "symbol", + "source": "domain_detail", + "source-layer": "place_label_land", + "minzoom": 10, + "layout": { + "text-field": [ + "get", + "chart_label_text" + ], + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 13 + }, + "paint": { + "text-color": "#3d2b18", + "text-halo-color": "#ffffff", + "text-halo-width": 1.4 + } + } + ] +} diff --git a/src/Domain/style.domain-legacy-compatible-karatsu-10nm.json b/src/Domain/style.domain-legacy-compatible-karatsu-10nm.json new file mode 100644 index 0000000..f3e0f1c --- /dev/null +++ b/src/Domain/style.domain-legacy-compatible-karatsu-10nm.json @@ -0,0 +1,5598 @@ +{ + "version": 8, + "name": "NavSea Domain Legacy Compatible Karatsu 10nm", + "sprite": "https://tile.mapple-on.jp/newpec-symbols-20251001/sprite", + "glyphs": "https://tile.mapple-on.jp/glyphs/{fontstack}/{range}.pbf", + "sources": { + "domain_safety": { + "type": "vector", + "minzoom": 0, + "maxzoom": 12, + "tiles": [ + "http://192.168.200.184/pbf-domain-karatsu-10nm/safety/{z}/{x}/{y}.pbf" + ], + "attribution": "© NavSea Domain" + }, + "domain_detail": { + "type": "vector", + "minzoom": 0, + "maxzoom": 12, + "tiles": [ + "http://192.168.200.184/pbf-domain-karatsu-10nm/detail/{z}/{x}/{y}.pbf" + ], + "attribution": "© NavSea Domain" + }, + "mapple": { + "type": "raster", + "minzoom": 0, + "maxzoom": 16, + "tileSize": 256, + "tiles": [ + "https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png" + ], + "attribution": "© 昭文社" + }, + "shipfinder": { + "type": "geojson", + "data": { + "type": "FeatureCollection", + "features": [] + } + } + }, + "layers": [ + { + "id": "land_area__fill", + "source": "domain_safety", + "source-layer": "land_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 210, + 200, + 128, + 1 + ] + } + }, + { + "id": "onshore_structure_area__fill", + "source": "domain_safety", + "source-layer": "onshore_structure_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 147, + 116, + 39, + 1 + ] + } + }, + { + "id": "onshore_structure_line__line", + "source": "domain_safety", + "source-layer": "onshore_structure_line", + "type": "line", + "paint": { + "line-width": 2, + "line-color": [ + "rgba", + 147, + 116, + 39, + 1 + ] + } + }, + { + "id": "place_label_land__text", + "source": "domain_detail", + "source-layer": "place_label_land", + "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": "place_label_land__text__02", + "source": "domain_detail", + "source-layer": "place_label_land", + "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": "background__background", + "type": "background", + "paint": { + "background-color": [ + "rgba", + 255, + 255, + 255, + 1 + ] + } + }, + { + "id": "mapple__raster", + "type": "raster", + "source": "mapple" + }, + { + "id": "baseline_area__fill", + "source": "domain_safety", + "source-layer": "baseline_area", + "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": "baseline_area__fill__02", + "source": "domain_safety", + "source-layer": "baseline_area", + "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": "baseline_area__fill__03", + "source": "domain_safety", + "source-layer": "baseline_area", + "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": "baseline_area__fill__04", + "source": "domain_safety", + "source-layer": "baseline_area", + "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": "submerged_reef_area__fill", + "source": "domain_safety", + "source-layer": "submerged_reef_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 129, + 195, + 226, + 1 + ] + } + }, + { + "id": "submerged_reef_area__fill__02", + "source": "domain_safety", + "source-layer": "submerged_reef_area", + "type": "fill", + "paint": { + "fill-pattern": "fill-daytime-175" + } + }, + { + "id": "bathymetry_line__line", + "source": "domain_detail", + "source-layer": "bathymetry_line", + "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": "depth_contour__line", + "source": "domain_safety", + "source-layer": "depth_contour", + "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": "depth_contour_overview__line", + "source": "domain_safety", + "source-layer": "depth_contour_overview", + "type": "line", + "layout": { + "visibility": "visible" + }, + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 1, + "line-dasharray": [ + 12, + 4 + ] + } + }, + { + "id": "depth_contour__line__02", + "source": "domain_safety", + "source-layer": "depth_contour", + "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": "depth_contour_overview__line__02", + "source": "domain_safety", + "source-layer": "depth_contour_overview", + "type": "line", + "layout": { + "visibility": "none" + }, + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 1, + "line-dasharray": [ + 12, + 3 + ] + }, + "filter": [ + "!=", + [ + "get", + "高さ/深度(m)" + ], + 2 + ] + }, + { + "id": "depth_contour_overview__line__03", + "source": "domain_safety", + "source-layer": "depth_contour_overview", + "type": "line", + "layout": { + "visibility": "none" + }, + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 3, + "line-dasharray": [ + 4, + 1 + ] + }, + "filter": [ + "==", + [ + "get", + "高さ/深度(m)" + ], + 2 + ] + }, + { + "id": "depth_contour__line__03", + "source": "domain_safety", + "source-layer": "depth_contour", + "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": "depth_contour_overview__line__04", + "source": "domain_safety", + "source-layer": "depth_contour_overview", + "type": "line", + "layout": { + "visibility": "none" + }, + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 1, + "line-dasharray": [ + 12, + 3 + ] + }, + "filter": [ + "!=", + [ + "get", + "高さ/深度(m)" + ], + 5 + ] + }, + { + "id": "depth_contour_overview__line__05", + "source": "domain_safety", + "source-layer": "depth_contour_overview", + "type": "line", + "layout": { + "visibility": "none" + }, + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 3, + "line-dasharray": [ + 4, + 1 + ] + }, + "filter": [ + "==", + [ + "get", + "高さ/深度(m)" + ], + 5 + ] + }, + { + "id": "depth_contour__line__04", + "source": "domain_safety", + "source-layer": "depth_contour", + "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": "depth_contour_overview__line__06", + "source": "domain_safety", + "source-layer": "depth_contour_overview", + "type": "line", + "layout": { + "visibility": "none" + }, + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 1, + "line-dasharray": [ + 12, + 3 + ] + }, + "filter": [ + "!=", + [ + "get", + "高さ/深度(m)" + ], + 10 + ] + }, + { + "id": "depth_contour_overview__line__07", + "source": "domain_safety", + "source-layer": "depth_contour_overview", + "type": "line", + "layout": { + "visibility": "none" + }, + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 3, + "line-dasharray": [ + 4, + 1 + ] + }, + "filter": [ + "==", + [ + "get", + "高さ/深度(m)" + ], + 10 + ] + }, + { + "id": "fixed_fishing_gear_area__fill", + "source": "domain_safety", + "source-layer": "fixed_fishing_gear_area", + "type": "fill", + "paint": { + "fill-pattern": [ + "match", + [ + "get", + "分類番号" + ], + 900, + "fill-daytime-900", + 910, + "fill-daytime-910", + 920, + "fill-daytime-401", + "" + ] + } + }, + { + "id": "fixed_fishing_gear_area__line", + "source": "domain_safety", + "source-layer": "fixed_fishing_gear_area", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 198, + 77, + 187, + 1 + ], + "line-width": 1 + } + }, + { + "id": "anchor_caution_hazard_area__fill", + "source": "domain_safety", + "source-layer": "anchor_caution_hazard_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 0, + 0, + 0, + 0 + ] + } + }, + { + "id": "anchor_caution_hazard_area__fill__02", + "source": "domain_safety", + "source-layer": "anchor_caution_hazard_area", + "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": "navigation_hazard_area__fill", + "source": "domain_safety", + "source-layer": "navigation_hazard_area", + "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": "anchorage_area__fill", + "source": "domain_safety", + "source-layer": "anchorage_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 0, + 0, + 0, + 0 + ] + } + }, + { + "id": "route_area__fill", + "source": "domain_safety", + "source-layer": "route_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 0, + 0, + 0, + 0 + ] + } + }, + { + "id": "facility_boundary_area_transparent__fill", + "source": "domain_detail", + "source-layer": "facility_boundary_area_transparent", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 0, + 0, + 0, + 0 + ] + } + }, + { + "id": "facility_boundary_area__fill", + "source": "domain_detail", + "source-layer": "facility_boundary_area", + "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": "anchor_caution_hazard_outline__line", + "source": "domain_safety", + "source-layer": "anchor_caution_hazard_outline", + "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": "navigation_hazard_outline__line", + "source": "domain_safety", + "source-layer": "navigation_hazard_outline", + "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": "depth_zone_700__line", + "source": "domain_safety", + "source-layer": "depth_zone_700", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 198, + 77, + 187, + 1 + ], + "line-width": 2, + "line-dasharray": [ + 3, + 2 + ] + } + }, + { + "id": "depth_zone_700__line__02", + "source": "domain_safety", + "source-layer": "depth_zone_700", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 1, + "line-dasharray": [ + 10, + 2 + ] + } + }, + { + "id": "depth_zone_702__line", + "source": "domain_safety", + "source-layer": "depth_zone_702", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 198, + 77, + 187, + 1 + ], + "line-width": 1 + } + }, + { + "id": "depth_zone_725__line", + "source": "domain_safety", + "source-layer": "depth_zone_725", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 198, + 77, + 187, + 1 + ], + "line-width": 2, + "line-dasharray": [ + 2, + 1 + ] + } + }, + { + "id": "depth_zone_739__line", + "source": "domain_safety", + "source-layer": "depth_zone_739", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 7, + 7, + 7, + 1 + ], + "line-width": 1, + "line-dasharray": [ + 4, + 1 + ] + } + }, + { + "id": "depth_zone_740__line", + "source": "domain_safety", + "source-layer": "depth_zone_740", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 1, + "line-dasharray": [ + 3, + 2 + ] + } + }, + { + "id": "route_outline__line", + "source": "domain_safety", + "source-layer": "route_outline", + "type": "line", + "paint": { + "line-color": [ + "match", + [ + "get", + "分類番号" + ], + 742, + [ + "rgba", + 198, + 77, + 187, + 1 + ], + [ + "rgba", + 171, + 192, + 177, + 1 + ] + ], + "line-width": 2, + "line-dasharray": [ + 3, + 1 + ] + } + }, + { + "id": "route_axis_line__line", + "source": "domain_safety", + "source-layer": "route_axis_line", + "type": "line", + "paint": { + "line-color": [ + "match", + [ + "get", + "分類番号" + ], + 742, + [ + "rgba", + 198, + 77, + 187, + 1 + ], + [ + "rgba", + 171, + 192, + 177, + 1 + ] + ], + "line-width": 2, + "line-dasharray": [ + 3, + 1 + ] + } + }, + { + "id": "anchorage_outline__line", + "source": "domain_safety", + "source-layer": "anchorage_outline", + "type": "line", + "paint": { + "line-color": [ + "match", + [ + "get", + "分類番号" + ], + 720, + [ + "rgba", + 212, + 177, + 221, + 1 + ], + [ + "rgba", + 198, + 77, + 187, + 1 + ] + ], + "line-width": 2, + "line-dasharray": [ + 2, + 1 + ] + } + }, + { + "id": "clip_outline_721__line", + "source": "domain_safety", + "source-layer": "clip_outline_721", + "type": "line", + "paint": { + "line-pattern": "line-daytime-721", + "line-width": 8 + } + }, + { + "id": "facility_boundary_outline__line", + "source": "domain_detail", + "source-layer": "facility_boundary_outline", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": [ + "match", + [ + "get", + "分類番号" + ], + 798, + 3, + 1 + ] + } + }, + { + "id": "leading_line_outline__line", + "source": "domain_safety", + "source-layer": "leading_line_outline", + "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": [ + 5, + 2, + 3, + 2 + ] + } + }, + { + "id": "clip_outline_754__line", + "source": "domain_safety", + "source-layer": "clip_outline_754", + "type": "line", + "paint": { + "line-pattern": "line-daytime-754", + "line-width": 8 + } + }, + { + "id": "depth_zone_741__line", + "source": "domain_safety", + "source-layer": "depth_zone_741", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 2, + "line-dasharray": [ + 3, + 1 + ] + } + }, + { + "id": "clip_outline_730__line", + "source": "domain_safety", + "source-layer": "clip_outline_730", + "type": "line", + "paint": { + "line-pattern": "line-daytime-730", + "line-width": 64 + } + }, + { + "id": "depth_zone_749__line", + "source": "domain_safety", + "source-layer": "depth_zone_749", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 136, + 152, + 139, + 1 + ], + "line-width": 1, + "line-dasharray": [ + 2, + 1 + ] + } + }, + { + "id": "depth_zone_748__line", + "source": "domain_safety", + "source-layer": "depth_zone_748", + "type": "line", + "paint": { + "line-pattern": "line-daytime-748", + "line-width": 64 + } + }, + { + "id": "depth_zone_739__line__02", + "source": "domain_safety", + "source-layer": "depth_zone_739", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 7, + 7, + 7, + 1 + ], + "line-width": 1, + "line-dasharray": [ + 3, + 1, + 1, + 1, + 1, + 1 + ] + } + }, + { + "id": "seabed_line__line", + "source": "domain_detail", + "source-layer": "seabed_line", + "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": "clearance_limit_line__line", + "source": "domain_safety", + "source-layer": "clearance_limit_line", + "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": "bridge_structure__fill", + "source": "domain_safety", + "source-layer": "bridge_structure", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 0, + 0, + 0, + 0 + ] + } + }, + { + "id": "bridge_structure__line", + "source": "domain_safety", + "source-layer": "bridge_structure", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 95, + 106, + 95, + 1 + ], + "line-width": 2 + } + }, + { + "id": "baseline_outline__line", + "source": "domain_safety", + "source-layer": "baseline_outline", + "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": "hazard_boundary_outline__line", + "source": "domain_safety", + "source-layer": "hazard_boundary_outline", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 95, + 106, + 95, + 1 + ], + "line-width": 3, + "line-dasharray": [ + 3, + 2 + ] + } + }, + { + "id": "baseline_line__line", + "source": "domain_safety", + "source-layer": "baseline_line", + "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": "hazard_boundary_line__line", + "source": "domain_safety", + "source-layer": "hazard_boundary_line", + "type": "line", + "paint": { + "line-color": [ + "rgba", + 95, + 106, + 95, + 1 + ], + "line-width": 3, + "line-dasharray": [ + 3, + 2 + ] + } + }, + { + "id": "navigation_hazard_point__symbol", + "source": "domain_safety", + "source-layer": "navigation_hazard_point", + "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": "anchor_caution_hazard_point__symbol", + "source": "domain_safety", + "source-layer": "anchor_caution_hazard_point", + "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": "route_boundary_point__symbol", + "source": "domain_safety", + "source-layer": "route_boundary_point", + "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": "anchorage_point__symbol", + "source": "domain_safety", + "source-layer": "anchorage_point", + "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": "seabed_text_point__text", + "source": "domain_detail", + "source-layer": "seabed_text_point", + "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": "facility_boundary_point__symbol", + "source": "domain_detail", + "source-layer": "facility_boundary_point", + "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": "pilot_station_point__symbol", + "source": "domain_safety", + "source-layer": "pilot_station_point", + "type": "symbol", + "layout": { + "icon-allow-overlap": true, + "icon-image": "symbol-daytime-500" + } + }, + { + "id": "onshore_structure_point__symbol", + "source": "domain_safety", + "source-layer": "onshore_structure_point", + "type": "symbol", + "layout": { + "icon-allow-overlap": true, + "icon-image": [ + "concat", + "symbol-daytime-", + [ + "get", + "分類番号" + ] + ] + } + }, + { + "id": "navigation_marks__arc", + "source": "domain_safety", + "source-layer": "navigation_marks", + "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": "navigation_marks__flare", + "source": "domain_safety", + "source-layer": "navigation_marks", + "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": "navigation_marks__symbol", + "source": "domain_safety", + "source-layer": "navigation_marks", + "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": "bathymetry_line__text", + "minzoom": 11, + "source": "domain_detail", + "source-layer": "bathymetry_line", + "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": "depth_contour_overview__text", + "minzoom": 11, + "source": "domain_safety", + "source-layer": "depth_contour_overview", + "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": "depth_contour__text", + "minzoom": 11, + "source": "domain_safety", + "source-layer": "depth_contour", + "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": "navigation_marks__label", + "source": "domain_safety", + "source-layer": "navigation_marks", + "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": "navigation_marks__label_subtext", + "source": "domain_safety", + "source-layer": "navigation_marks", + "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": "dummy__symbol", + "source": "domain_safety", + "source-layer": "dummy", + "type": "symbol", + "layout": { + "visibility": "none" + } + }, + { + "id": "place_label_sea__text", + "source": "domain_detail", + "source-layer": "place_label_sea", + "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": "place_label_sea__text__02", + "source": "domain_detail", + "source-layer": "place_label_sea", + "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": "clearance_limit_point__label", + "source": "domain_safety", + "source-layer": "clearance_limit_point", + "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": "clearance_limit_point__text", + "source": "domain_safety", + "source-layer": "clearance_limit_point", + "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": "hole_area__fill", + "source": "domain_detail", + "source-layer": "hole_area", + "type": "fill", + "paint": { + "fill-color": [ + "rgba", + 0, + 0, + 0, + 0 + ] + } + }, + { + "id": "shipfinder__symbol", + "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": "shipfinder__symbol__02", + "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": "shipfinder__symbol__03", + "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 + } + } + ] +} diff --git a/src/Domain/style_layer_naming.py b/src/Domain/style_layer_naming.py new file mode 100644 index 0000000..4dfdbb2 --- /dev/null +++ b/src/Domain/style_layer_naming.py @@ -0,0 +1,119 @@ +from __future__ import annotations + +import re +from pathlib import Path + +from chart_domain_model import get_layer_domain_spec, normalize_layer_std + + +MANUAL_JP_ALIASES = { + "P投錨注意障害物透明": "anchor_caution_hazard_area", + "P投錨注意障害物": "anchor_caution_hazard_area", + "P航行危険障害物": "navigation_hazard_area", + "P錨泊地等": "anchorage_area", + "P橋りょう等構造物": "bridge_structure", + "L701": "depth_zone_700", + "L738": "depth_zone_739", +} + + +def parse_source_layer_rules(path: Path) -> dict[str, str]: + mapping: dict[str, str] = {} + current_jp: str | None = None + for raw_line in path.read_text(encoding="utf-8").splitlines(): + line = raw_line.strip() + if line.startswith("- source_layer_jp:"): + current_jp = line.split(":", 1)[1].strip() + elif line.startswith("source_layer_std:") and current_jp: + mapping[current_jp] = line.split(":", 1)[1].strip() + current_jp = None + return mapping + + +def resolve_source_layer_std(source_layer: str, jp_to_std: dict[str, str]) -> str: + mapped = jp_to_std.get(source_layer, MANUAL_JP_ALIASES.get(source_layer, source_layer)) + return normalize_layer_std(mapped, source_layer) + + +def infer_layer_role(layer: dict) -> str: + layer_type = str(layer.get("type") or "layer") + legacy_id = str(layer.get("id") or "") + layout = layer.get("layout") or {} + + if layer_type == "background": + return "background" + if layer_type == "raster": + return "raster" + + if "arc" in legacy_id: + return "arc" + if "flare" in legacy_id or "フレア" in legacy_id: + return "flare" + + has_icon = "icon-image" in layout + text_field = layout.get("text-field") + text_field_repr = str(text_field) + if text_field is not None: + if "chart_label_subtext" in text_field_repr or "灯略記" in legacy_id or "abbr" in legacy_id: + return "label_subtext" + if "chart_label_text" in text_field_repr or "名称" in legacy_id or "地名" in legacy_id: + return "label" + return "text" + if has_icon: + return "symbol" + return layer_type + + +def make_style_layer_id( + *, + layer: dict, + source_layer_std: str | None, + used_ids: set[str], + source_role_counts: dict[tuple[str, str], int], + generic_role_counts: dict[tuple[str, str], int], +) -> str: + role = infer_layer_role(layer) + if source_layer_std: + key = (source_layer_std, role) + source_role_counts[key] = source_role_counts.get(key, 0) + 1 + seq = source_role_counts[key] + candidate = f"{source_layer_std}__{role}" + else: + source_name = str(layer.get("source") or layer.get("type") or "layer") + source_name = re.sub(r"[^a-z0-9]+", "_", source_name.lower()).strip("_") or "layer" + key = (source_name, role) + generic_role_counts[key] = generic_role_counts.get(key, 0) + 1 + seq = generic_role_counts[key] + candidate = f"{source_name}__{role}" + + if seq > 1: + candidate = f"{candidate}__{seq:02d}" + + while candidate in used_ids: + seq += 1 + candidate = f"{candidate}__{seq:02d}" + + used_ids.add(candidate) + return candidate + + +def remap_style_layer(layer: dict, jp_to_std: dict[str, str]) -> tuple[str | None, bool]: + source_layer = layer.get("source-layer") + if not source_layer: + return None, False + + source_name = str(layer.get("source") or "") + if source_name not in { + "newpec", + "navsea", + "navsea_delivery", + "navsea_engineering", + "domain_safety", + "domain_detail", + }: + return None, False + + source_layer_std = resolve_source_layer_std(str(source_layer), jp_to_std) + get_layer_domain_spec(source_layer_std) + layer["source-layer"] = source_layer_std + return source_layer_std, True diff --git a/src/pbf/layer-groups.navsea-delivery-kyushu.json b/src/pbf/layer-groups.navsea-delivery-kyushu.json new file mode 100644 index 0000000..5924410 --- /dev/null +++ b/src/pbf/layer-groups.navsea-delivery-kyushu.json @@ -0,0 +1,313 @@ +{ + "schema_version": "v1", + "target_style": "style.navsea-delivery-kyushu.json", + "target_profile": "kyushu", + "notes": [ + "本文件用于前端图层分组消费,不直接替代 style。", + "前端应优先通过 setLayoutProperty(layerId, 'visibility', ...) 控制显示隐藏。", + "base_groups 默认不建议暴露给普通用户关闭。" + ], + "base_groups": [ + { + "id": "base_map", + "label_key": "pbf.group.base_map", + "icon_key": "pbf.icon.base_map", + "feature_flag": "pbf.layer_group.base_map", + "sort_order": 0, + "user_toggleable": false, + "default_visible": true, + "layer_ids": [ + "sea-area-fill", + "tidal-flat", + "river-water", + "land-area", + "land-hole", + "coast-structures-area", + "coast-structures-line", + "clip-outline" + ] + } + ], + "groups": [ + { + "id": "safety_hazards", + "label_key": "pbf.group.safety_hazards", + "icon_key": "pbf.icon.safety_hazards", + "feature_flag": "pbf.layer_group.safety_hazards", + "sort_order": 10, + "user_toggleable": true, + "default_visible": true, + "layer_ids": [ + "navigation-hazard-polygons", + "navigation-hazard-outline", + "hazard-points", + "hazard-polygons", + "anchor-danger-outline", + "anchor-hazard-points", + "anchor-hazard-points-428", + "submerged-structures", + "shoal-danger-area", + "unsurveyed-area", + "danger-outline" + ] + }, + { + "id": "navigation_marks", + "label_key": "pbf.group.navigation_marks", + "icon_key": "pbf.icon.navigation_marks", + "feature_flag": "pbf.layer_group.navigation_marks", + "sort_order": 20, + "user_toggleable": true, + "default_visible": true, + "layer_ids": [ + "nav-light-flare", + "nav-light-arc", + "nav-marks-harbor-lighthouses", + "nav-marks-breakwater-lighthouses", + "nav-marks-small-lights", + "nav-marks-light-beacons", + "nav-marks", + "nav-mark-labels", + "nav-light-abbr-labels" + ] + }, + { + "id": "anchorage_services", + "label_key": "pbf.group.anchorage_services", + "icon_key": "pbf.icon.anchorage_services", + "feature_flag": "pbf.layer_group.anchorage_services", + "sort_order": 30, + "user_toggleable": true, + "default_visible": true, + "layer_ids": [ + "anchorage-areas", + "anchorage-outline", + "anchorage-symbols", + "pilot-station-points" + ] + }, + { + "id": "port_facilities", + "label_key": "pbf.group.port_facilities", + "icon_key": "pbf.icon.port_facilities", + "feature_flag": "pbf.layer_group.port_facilities", + "sort_order": 40, + "user_toggleable": true, + "default_visible": true, + "layer_ids": [ + "facility-zones", + "facility-zone-outline", + "facility-points", + "land-structures-area", + "land-structures-line", + "landmark-points", + "landmark-point-fallback" + ] + }, + { + "id": "bridge_clearance", + "label_key": "pbf.group.bridge_clearance", + "icon_key": "pbf.icon.bridge_clearance", + "feature_flag": "pbf.layer_group.bridge_clearance", + "sort_order": 50, + "user_toggleable": true, + "default_visible": true, + "layer_ids": [ + "bridge-area", + "bridge-outline", + "height-limit-line", + "height-limit-points", + "height-limit-name-labels", + "height-limit-value-labels" + ] + }, + { + "id": "depth_contours", + "label_key": "pbf.group.depth_contours", + "icon_key": "pbf.icon.depth_contours", + "feature_flag": "pbf.layer_group.depth_contours", + "sort_order": 60, + "user_toggleable": true, + "default_visible": true, + "layer_ids": [ + "depth-contours", + "depth-contours-major", + "depth-contour-labels", + "depth-contours-major-labels" + ] + }, + { + "id": "bathymetry_detail", + "label_key": "pbf.group.bathymetry_detail", + "icon_key": "pbf.icon.bathymetry_detail", + "feature_flag": "pbf.layer_group.bathymetry_detail", + "sort_order": 70, + "user_toggleable": true, + "default_visible": false, + "layer_ids": [ + "bathymetry-support", + "bathymetry-depth-labels", + "water-boundary", + "regulatory-boundary", + "special-pattern-line-754" + ] + }, + { + "id": "fishery_gear", + "label_key": "pbf.group.fishery_gear", + "icon_key": "pbf.icon.fishery_gear", + "feature_flag": "pbf.layer_group.fishery_gear", + "sort_order": 80, + "user_toggleable": true, + "default_visible": true, + "layer_ids": [ + "fishery-areas", + "fishery-areas-outline" + ] + }, + { + "id": "seabed_material", + "label_key": "pbf.group.seabed_material", + "icon_key": "pbf.icon.seabed_material", + "feature_flag": "pbf.layer_group.seabed_material", + "sort_order": 90, + "user_toggleable": true, + "default_visible": false, + "layer_ids": [ + "bottom-material-labels", + "subsea-cables" + ] + }, + { + "id": "place_labels", + "label_key": "pbf.group.place_labels", + "icon_key": "pbf.icon.place_labels", + "feature_flag": "pbf.layer_group.place_labels", + "sort_order": 100, + "user_toggleable": true, + "default_visible": true, + "layer_ids": [ + "place-labels-sea-en", + "place-labels-sea-ja", + "place-labels-land-en", + "place-labels-land-ja" + ] + } + ], + "presets": [ + { + "id": "navigation", + "label_key": "pbf.preset.navigation", + "description_key": "pbf.preset.navigation.description", + "icon_key": "pbf.icon.preset.navigation", + "feature_flag": "pbf.preset.navigation", + "sort_order": 10, + "visible_group_ids": [ + "base_map", + "safety_hazards", + "navigation_marks", + "anchorage_services", + "port_facilities", + "bridge_clearance", + "depth_contours", + "fishery_gear", + "place_labels" + ] + }, + { + "id": "fishing", + "label_key": "pbf.preset.fishing", + "description_key": "pbf.preset.fishing.description", + "icon_key": "pbf.icon.preset.fishing", + "feature_flag": "pbf.preset.fishing", + "sort_order": 20, + "visible_group_ids": [ + "base_map", + "safety_hazards", + "navigation_marks", + "depth_contours", + "bathymetry_detail", + "fishery_gear", + "seabed_material", + "place_labels" + ] + }, + { + "id": "custom", + "label_key": "pbf.preset.custom", + "description_key": "pbf.preset.custom.description", + "icon_key": "pbf.icon.preset.custom", + "feature_flag": "pbf.preset.custom", + "sort_order": 30, + "visible_group_ids": [] + } + ], + "i18n": { + "zh-CN": { + "pbf.group.base_map": "基础底图", + "pbf.group.safety_hazards": "鱼礁/海底危险物", + "pbf.group.navigation_marks": "海上标识", + "pbf.group.anchorage_services": "锚地/引航", + "pbf.group.port_facilities": "港口与设施", + "pbf.group.bridge_clearance": "桥梁/净空", + "pbf.group.depth_contours": "等深线", + "pbf.group.bathymetry_detail": "海底地形", + "pbf.group.fishery_gear": "渔网/渔具", + "pbf.group.seabed_material": "海底质", + "pbf.group.place_labels": "地名", + "pbf.icon.base_map": "map", + "pbf.icon.safety_hazards": "hazard", + "pbf.icon.navigation_marks": "buoy", + "pbf.icon.anchorage_services": "anchor", + "pbf.icon.port_facilities": "harbor", + "pbf.icon.bridge_clearance": "bridge", + "pbf.icon.depth_contours": "contour", + "pbf.icon.bathymetry_detail": "bathymetry", + "pbf.icon.fishery_gear": "net", + "pbf.icon.seabed_material": "seabed", + "pbf.icon.place_labels": "label", + "pbf.preset.navigation": "航海模式", + "pbf.preset.navigation.description": "危险物、海上标识、锚地、净空、设施优先,海底细节降权。", + "pbf.icon.preset.navigation": "compass", + "pbf.preset.fishing": "钓鱼模式", + "pbf.preset.fishing.description": "等深线、海底地形、底质、鱼礁优先,保留必要安全信息。", + "pbf.icon.preset.fishing": "fish", + "pbf.preset.custom": "自定义", + "pbf.preset.custom.description": "以前端当前用户选择为准,不强制覆盖。", + "pbf.icon.preset.custom": "sliders" + }, + "en-US": { + "pbf.group.base_map": "Base Map", + "pbf.group.safety_hazards": "Reefs / Seabed Hazards", + "pbf.group.navigation_marks": "Marine Marks", + "pbf.group.anchorage_services": "Anchorage / Pilot", + "pbf.group.port_facilities": "Ports / Facilities", + "pbf.group.bridge_clearance": "Bridges / Clearance", + "pbf.group.depth_contours": "Depth Contours", + "pbf.group.bathymetry_detail": "Bathymetry", + "pbf.group.fishery_gear": "Fishing Gear", + "pbf.group.seabed_material": "Seabed Material", + "pbf.group.place_labels": "Place Labels", + "pbf.icon.base_map": "map", + "pbf.icon.safety_hazards": "hazard", + "pbf.icon.navigation_marks": "buoy", + "pbf.icon.anchorage_services": "anchor", + "pbf.icon.port_facilities": "harbor", + "pbf.icon.bridge_clearance": "bridge", + "pbf.icon.depth_contours": "contour", + "pbf.icon.bathymetry_detail": "bathymetry", + "pbf.icon.fishery_gear": "net", + "pbf.icon.seabed_material": "seabed", + "pbf.icon.place_labels": "label", + "pbf.preset.navigation": "Navigation Mode", + "pbf.preset.navigation.description": "Prioritize hazards, marine marks, anchorage, clearance, and facilities while de-emphasizing fine seabed detail.", + "pbf.icon.preset.navigation": "compass", + "pbf.preset.fishing": "Fishing Mode", + "pbf.preset.fishing.description": "Prioritize contours, bathymetry, seabed material, and reefs while retaining essential safety information.", + "pbf.icon.preset.fishing": "fish", + "pbf.preset.custom": "Custom", + "pbf.preset.custom.description": "Use the current user-selected visibility without forcing a preset.", + "pbf.icon.preset.custom": "sliders" + } + } +} diff --git a/src/pbf/navsea-compare-karatsu-20nm.html b/src/pbf/navsea-compare-karatsu-20nm.html index 95c3238..1871580 100644 --- a/src/pbf/navsea-compare-karatsu-20nm.html +++ b/src/pbf/navsea-compare-karatsu-20nm.html @@ -323,7 +323,7 @@ + + + diff --git a/src/pbf/navsea-final-delivery-karatsu-10nm.html b/src/pbf/navsea-final-delivery-karatsu-10nm.html new file mode 100644 index 0000000..7bc4888 --- /dev/null +++ b/src/pbf/navsea-final-delivery-karatsu-10nm.html @@ -0,0 +1,384 @@ + + + + + + NavSea Final Delivery Karatsu 10nm + + + + +
+
+
NavSea 最终版 Delivery · 唐津 10 海里
+
当前页面固定加载最终交付样式 style.navsea-delivery-karatsu-10nm.json。点击任意对象可查看对象属性和点击经纬度,适合最终验收和问题定位。
+
+
+ +
+
+ +
+
+ 最终版 + Delivery PBF · Reencoded FID +
+
+
+ + + +
等待加载样式…
+ + + + + diff --git a/src/pbf/navsea-final-delivery-kyushu.html b/src/pbf/navsea-final-delivery-kyushu.html new file mode 100644 index 0000000..034337c --- /dev/null +++ b/src/pbf/navsea-final-delivery-kyushu.html @@ -0,0 +1,313 @@ + + + + + + NavSea Final Delivery Kyushu + + + + +
+
+
NavSea 最终版 Delivery · 九州
+
当前页面固定加载九州 delivery 样式 style.navsea-delivery-kyushu.json。点击任意对象可查看对象属性和点击经纬度。
+
+
+ +
+
+ +
+
+ 九州最终版 + Delivery PBF · Reencoded FID +
+
+
+ + + +
等待加载样式…
+ + + + + diff --git a/src/pbf/style.navsea-compatible.json b/src/pbf/style.navsea-compatible.json index c4bf620..876f962 100644 --- a/src/pbf/style.navsea-compatible.json +++ b/src/pbf/style.navsea-compatible.json @@ -21,7 +21,7 @@ "tiles": [ "https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png" ], - "attribution": "© 昭文社" + "attribution": "国土院" }, "shipfinder": { "type": "geojson", diff --git a/src/pbf/style.navsea-delivery-full.json b/src/pbf/style.navsea-delivery-full.json new file mode 100644 index 0000000..bfbbaf4 --- /dev/null +++ b/src/pbf/style.navsea-delivery-full.json @@ -0,0 +1,2967 @@ +{ + "version": 8, + "name": "NavSea Delivery Full", + "sprite": "http://192.168.200.184/newpec/sprite/sprite?v=111", + "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": "© 昭文社" + }, + "navsea_delivery": { + "type": "vector", + "minzoom": 0, + "maxzoom": 12, + "tiles": [ + "http://192.168.200.184/pbf-delivery-full-20260408/{z}/{x}/{y}.pbf" + ], + "attribution": "NavSea semantic vector tiles" + } + }, + "layers": [ + { + "id": "background", + "type": "background", + "paint": { + "background-color": "#f5f1e6" + } + }, + { + "id": "base-raster", + "type": "raster", + "source": "mapple", + "paint": { + "raster-opacity": 0.3, + "raster-saturation": -0.2, + "raster-contrast": 0.05 + } + }, + { + "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", + "fill-daytime-910", + "fish_reef_area", + "fill-daytime-910", + "fill-daytime-910" + ] + } + }, + { + "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-contours-major", + "type": "line", + "source": "navsea_delivery", + "source-layer": "depth_contour_overview", + "paint": { + "line-color": "rgba(136,152,139,1)", + "line-width": 1, + "line-dasharray": [ + 12, + 4 + ] + } + }, + { + "id": "depth-contours-major-labels", + "type": "symbol", + "source": "navsea_delivery", + "source-layer": "depth_contour_overview", + "minzoom": 11, + "layout": { + "symbol-placement": "line", + "symbol-spacing": 200, + "text-allow-overlap": true, + "text-field": [ + "match", + [ + "get", + "least_depth_m" + ], + 2, + "2", + 5, + "5", + 10, + "10", + 20, + "20", + "" + ], + "text-font": [ + "NotoSansCJK-Regular" + ], + "text-size": 10, + "text-rotation-alignment": "viewport" + }, + "filter": [ + "has", + "least_depth_m" + ], + "paint": { + "text-color": "rgba(7,7,7,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": "line-daytime-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": [ + "case", + [ + "has", + "class_code" + ], + [ + "match", + [ + "get", + "class_code" + ], + 401, + "symbol-daytime-401", + 402, + "symbol-daytime-401", + 403, + "symbol-daytime-401", + 404, + "symbol-daytime-404", + 405, + "symbol-daytime-405", + 409, + "symbol-daytime-409", + 410, + "symbol-daytime-410", + 412, + "symbol-daytime-412", + 413, + "symbol-daytime-413", + 415, + "symbol-daytime-413", + 420, + "symbol-daytime-420", + 421, + "symbol-daytime-421", + 422, + "symbol-daytime-422", + 424, + "symbol-daytime-424", + 425, + "symbol-daytime-425", + 427, + "symbol-daytime-427", + 428, + "symbol-daytime-428", + 429, + "symbol-daytime-429", + 431, + "symbol-daytime-431", + 432, + "symbol-daytime-432", + 433, + "symbol-daytime-433", + 434, + "symbol-daytime-434", + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "" + ] + ], + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "" + ] + ] + } + }, + { + "id": "anchorage-symbols", + "type": "symbol", + "source": "navsea_delivery", + "source-layer": "anchorage_point", + "layout": { + "icon-allow-overlap": true, + "icon-ignore-placement": true, + "icon-image": [ + "case", + [ + "has", + "class_code" + ], + [ + "match", + [ + "get", + "class_code" + ], + 719, + "symbol-daytime-719", + 720, + "symbol-daytime-720", + 721, + "symbol-daytime-721", + 722, + "symbol-daytime-721", + 723, + "symbol-daytime-721", + 724, + "symbol-daytime-724", + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "" + ] + ], + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "" + ] + ] + } + }, + { + "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", + "chart_icon_image" + ], + "" + ] + }, + "filter": [ + "all", + [ + "!", + [ + "has", + "class_code" + ] + ], + [ + "!=", + [ + "get", + "chart_symbol_code" + ], + "obstruction" + ], + [ + "!=", + [ + "get", + "chart_symbol_code" + ], + "hazard_mark" + ], + [ + "!=", + [ + "get", + "chart_symbol_code" + ], + "fish_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": [ + "case", + [ + "has", + "class_code" + ], + [ + "match", + [ + "get", + "class_code" + ], + 401, + "symbol-daytime-401", + 402, + "symbol-daytime-401", + 403, + "symbol-daytime-401", + 404, + "symbol-daytime-404", + 405, + "symbol-daytime-405", + 409, + "symbol-daytime-409", + 410, + "symbol-daytime-410", + 412, + "symbol-daytime-412", + 413, + "symbol-daytime-413", + 415, + "symbol-daytime-413", + 420, + "symbol-daytime-420", + 421, + "symbol-daytime-421", + 422, + "symbol-daytime-422", + 424, + "symbol-daytime-424", + 425, + "symbol-daytime-425", + 427, + "symbol-daytime-427", + 428, + "symbol-daytime-428", + 429, + "symbol-daytime-429", + 431, + "symbol-daytime-431", + 432, + "symbol-daytime-432", + 433, + "symbol-daytime-433", + 434, + "symbol-daytime-434", + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "symbol-daytime-428" + ] + ], + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "symbol-daytime-428" + ] + ] + } + }, + { + "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", + "light-daytime-1", + "red", + "light-daytime-2", + "yellow", + "light-daytime-3", + "white", + "light-daytime-3", + "amber", + "light-daytime-3", + "orange", + "light-daytime-3", + "light-daytime-3" + ] + }, + "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": "none", + "icon-allow-overlap": true, + "icon-rotation-alignment": "map", + "icon-image": [ + "case", + [ + "all", + [ + "==", + [ + "get", + "canonical_object_type" + ], + "coastal_lighthouse_over_15m" + ], + [ + "==", + [ + "get", + "light_sector_mode" + ], + "sector" + ] + ], + "arc-daytime-04027289", + [ + "match", + [ + "get", + "light_color_code" + ], + "green", + "arc-daytime-m1", + "red", + "arc-daytime-m2", + "arc-daytime-m3" + ] + ] + }, + "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": "symbol-daytime-301" + }, + "filter": [ + "any", + [ + "all", + [ + "has", + "display_code" + ], + [ + "==", + [ + "slice", + [ + "get", + "display_code" + ], + 0, + 3 + ], + "301" + ] + ], + [ + "all", + [ + "!", + [ + "has", + "display_code" + ] + ], + [ + "==", + [ + "get", + "canonical_object_type" + ], + "harbor_lighthouse" + ] + ] + ] + }, + { + "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": "symbol-daytime-302" + }, + "filter": [ + "any", + [ + "all", + [ + "has", + "display_code" + ], + [ + "==", + [ + "slice", + [ + "get", + "display_code" + ], + 0, + 3 + ], + "302" + ] + ], + [ + "all", + [ + "!", + [ + "has", + "display_code" + ] + ], + [ + "==", + [ + "get", + "canonical_object_type" + ], + "breakwater_lighthouse" + ] + ] + ] + }, + { + "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", + "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", + "symbol-daytime-303" + ], + "symbol-daytime-303" + ] + }, + "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", + "symbol-daytime-310", + "31100004", + "symbol-daytime-310", + "31135001", + "symbol-daytime-310", + "31135102", + "symbol-daytime-310", + "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", + "symbol-daytime-310" + ], + "symbol-daytime-310" + ] + }, + "filter": [ + "any", + [ + "all", + [ + "has", + "display_code" + ], + [ + "==", + [ + "slice", + [ + "get", + "display_code" + ], + 0, + 3 + ], + "311" + ] + ], + [ + "all", + [ + "!", + [ + "has", + "display_code" + ] + ], + [ + "==", + [ + "get", + "canonical_object_type" + ], + "light_beacon" + ] + ] + ] + }, + { + "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", + "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", + "31336300", + "symbol-daytime-313362", + "32300000", + "symbol-daytime-323", + "32300001", + "symbol-daytime-323", + "32300002", + "symbol-daytime-323", + "32300003", + "symbol-daytime-323", + "32300004", + "symbol-daytime-323", + "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", + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "" + ] + ], + [ + "==", + [ + "get", + "canonical_object_type" + ], + "coastal_lighthouse_over_15m" + ], + "symbol-daytime-300", + [ + "==", + [ + "get", + "canonical_object_type" + ], + "harbor_lighthouse" + ], + "symbol-daytime-301", + [ + "==", + [ + "get", + "canonical_object_type" + ], + "breakwater_lighthouse" + ], + "symbol-daytime-302", + [ + "==", + [ + "get", + "canonical_object_type" + ], + "minor_light" + ], + "symbol-daytime-303", + [ + "==", + [ + "get", + "canonical_object_type" + ], + "lattice_buoy" + ], + "symbol-daytime-327", + [ + "==", + [ + "get", + "canonical_object_type" + ], + "pillar_buoy" + ], + "symbol-daytime-323", + [ + "==", + [ + "get", + "canonical_object_type" + ], + "can_buoy" + ], + "symbol-daytime-325", + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "" + ] + ] + }, + "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" + ], + "harbor_lighthouse" + ], + [ + "!=", + [ + "get", + "canonical_object_type" + ], + "breakwater_lighthouse" + ], + [ + "!=", + [ + "get", + "canonical_object_type" + ], + "minor_light" + ], + [ + "!=", + [ + "get", + "canonical_object_type" + ], + "light_beacon" + ] + ] + }, + { + "id": "facility-points", + "type": "symbol", + "source": "navsea_delivery", + "source-layer": "facility_boundary_point", + "layout": { + "icon-allow-overlap": true, + "icon-ignore-placement": true, + "icon-image": [ + "case", + [ + "has", + "class_code" + ], + [ + "match", + [ + "get", + "class_code" + ], + 505, + "symbol-daytime-505", + 510, + "symbol-daytime-505", + 520, + "symbol-daytime-520", + 530, + "symbol-daytime-530", + 540, + "symbol-daytime-540", + 550, + "symbol-daytime-550", + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "symbol-daytime-520" + ] + ], + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "symbol-daytime-520" + ] + ] + } + }, + { + "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": "symbol-daytime-500" + } + }, + { + "id": "landmark-points", + "type": "symbol", + "source": "navsea_delivery", + "source-layer": "onshore_structure_point", + "layout": { + "icon-allow-overlap": true, + "icon-ignore-placement": true, + "icon-image": [ + "case", + [ + "has", + "class_code" + ], + [ + "concat", + "symbol-daytime-", + [ + "to-string", + [ + "get", + "class_code" + ] + ] + ], + [ + "match", + [ + "get", + "canonical_object_type" + ], + "chimney", + "symbol-daytime-640", + "tower_yagura_windmill", + "symbol-daytime-650", + "maritime_office", + "symbol-daytime-660", + "fishing_cooperative", + "symbol-daytime-661", + "mountain_top", + "symbol-daytime-681", + "other_landmark_monument", + "symbol-daytime-698", + "" + ] + ] + }, + "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" + ] + } + ] +} diff --git a/src/pbf/style.navsea-delivery-karatsu-10nm.json b/src/pbf/style.navsea-delivery-karatsu-10nm.json index 29a9d3d..36d7ed3 100644 --- a/src/pbf/style.navsea-delivery-karatsu-10nm.json +++ b/src/pbf/style.navsea-delivery-karatsu-10nm.json @@ -1,7 +1,7 @@ { "version": 8, "name": "NavSea Delivery Karatsu 10nm", - "sprite": "https://tile.mapple-on.jp/newpec-symbols-20251001/sprite", + "sprite": "http://192.168.200.184/newpec/sprite/sprite?v=111", "glyphs": "http://192.168.200.184/newpec/fonts/{fontstack}/{range}.pbf", "sources": { "mapple": { @@ -79,7 +79,7 @@ "depth_zone_6000-7000m", "depth_zone_7000-8000m", "depth_zone_8000-9000m", - "depth_zone_9000m以深", + "depth_zone_over_9000m", "water_area" ], true, @@ -115,7 +115,7 @@ "6000-7000m", "7000-8000m", "8000-9000m", - "9000m以深" + "over_9000m" ], true, false @@ -174,15 +174,15 @@ "rgba(139,118,255,1)", "8000-9000m", "rgba(150,100,255,1)", - "9000m以深", + "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", @@ -236,7 +236,7 @@ "rgba(139,118,255,1)", "depth_zone_8000-9000m", "rgba(150,100,255,1)", - "depth_zone_9000m以深", + "depth_zone_over_9000m", "rgba(160,100,255,1)", "water_area", "rgba(129,195,226,1)", @@ -266,7 +266,7 @@ "get", "canonical_object_type" ], - "干潮帯" + "tidal_flat" ] ], "paint": { @@ -295,9 +295,9 @@ "canonical_object_type" ], [ - "河川域", - "湖沼域", - "陸上水域" + "river_area", + "lake_area", + "inland_water_area" ], true, false @@ -328,7 +328,7 @@ "get", "canonical_object_type" ], - "未測海域" + "unsurveyed_area" ] ], "paint": { @@ -357,7 +357,7 @@ "get", "canonical_object_type" ], - "浅所危険界" + "shoal_danger_area" ] ], "paint": { @@ -387,9 +387,9 @@ "canonical_object_type" ], [ - "防波堤", - "浮施設・桟橋", - "撤去跡" + "breakwater", + "floating_facility_pier", + "removed_structure_remains" ], true, false @@ -1362,7 +1362,7 @@ "get", "canonical_object_type" ], - "沿岸灯台 (15M over)" + "coastal_lighthouse_over_15m" ], [ "!=", @@ -1394,7 +1394,7 @@ "get", "canonical_object_type" ], - "沿岸灯台 (15M over)" + "coastal_lighthouse_over_15m" ], [ "==", @@ -1453,7 +1453,7 @@ "get", "canonical_object_type" ], - "港湾灯台" + "harbor_lighthouse" ] }, { @@ -1473,7 +1473,7 @@ "get", "canonical_object_type" ], - "防波堤灯台" + "breakwater_lighthouse" ] }, { @@ -1493,7 +1493,7 @@ "get", "canonical_object_type" ], - "灯 (Lt)" + "minor_light" ] }, { @@ -1513,7 +1513,7 @@ "get", "canonical_object_type" ], - "灯標" + "light_beacon" ] }, { @@ -1533,7 +1533,7 @@ "get", "canonical_object_type" ], - "沿岸灯台 (15M over)" + "coastal_lighthouse_over_15m" ], "symbol-daytime-300", [ @@ -1542,7 +1542,7 @@ "get", "canonical_object_type" ], - "港湾灯台" + "harbor_lighthouse" ], "symbol-daytime-301", [ @@ -1551,7 +1551,7 @@ "get", "canonical_object_type" ], - "防波堤灯台" + "breakwater_lighthouse" ], "symbol-daytime-302", [ @@ -1560,7 +1560,7 @@ "get", "canonical_object_type" ], - "灯 (Lt)" + "minor_light" ], "symbol-daytime-303", [ @@ -1581,7 +1581,7 @@ "get", "canonical_object_type" ], - "港湾灯台" + "harbor_lighthouse" ], [ "!=", @@ -1589,7 +1589,7 @@ "get", "canonical_object_type" ], - "防波堤灯台" + "breakwater_lighthouse" ], [ "!=", @@ -1597,7 +1597,7 @@ "get", "canonical_object_type" ], - "灯 (Lt)" + "minor_light" ], [ "!=", @@ -1605,7 +1605,7 @@ "get", "canonical_object_type" ], - "灯標" + "light_beacon" ] ] }, @@ -1632,17 +1632,17 @@ "get", "canonical_object_type" ], - "煙突", + "chimney", "symbol-daytime-640", - "塔、やぐら、風車", + "tower_yagura_windmill", "symbol-daytime-650", - "海事関係署", + "maritime_office", "symbol-daytime-660", - "漁業協同組合", + "fishing_cooperative", "symbol-daytime-661", - "山頂", + "mountain_top", "symbol-daytime-681", - "その他 (記念碑等)", + "other_landmark_monument", "symbol-daytime-698", "" ] @@ -1653,17 +1653,17 @@ "get", "canonical_object_type" ], - "煙突", + "chimney", true, - "塔、やぐら、風車", + "tower_yagura_windmill", true, - "海事関係署", + "maritime_office", true, - "漁業協同組合", + "fishing_cooperative", true, - "山頂", + "mountain_top", true, - "その他 (記念碑等)", + "other_landmark_monument", true, false ] @@ -1679,17 +1679,17 @@ "get", "canonical_object_type" ], - "煙突", + "chimney", false, - "塔、やぐら、風車", + "tower_yagura_windmill", false, - "海事関係署", + "maritime_office", false, - "漁業協同組合", + "fishing_cooperative", false, - "山頂", + "mountain_top", false, - "その他 (記念碑等)", + "other_landmark_monument", false, true ], diff --git a/src/pbf/style.navsea-delivery-karatsu-20nm-final.json b/src/pbf/style.navsea-delivery-karatsu-20nm-final.json index e3f8a5e..c8cfdec 100644 --- a/src/pbf/style.navsea-delivery-karatsu-20nm-final.json +++ b/src/pbf/style.navsea-delivery-karatsu-20nm-final.json @@ -1,7 +1,7 @@ { "version": 8, "name": "NavSea Delivery Karatsu 20nm Final", - "sprite": "https://tile.mapple-on.jp/newpec-symbols-20251001/sprite", + "sprite": "http://192.168.200.184/newpec/sprite/sprite?v=111", "glyphs": "http://192.168.200.184/newpec/fonts/{fontstack}/{range}.pbf", "sources": { "mapple": { @@ -82,7 +82,7 @@ "depth_zone_6000-7000m", "depth_zone_7000-8000m", "depth_zone_8000-9000m", - "depth_zone_9000m以深", + "depth_zone_over_9000m", "water_area" ], true, @@ -118,7 +118,7 @@ "6000-7000m", "7000-8000m", "8000-9000m", - "9000m以深" + "over_9000m" ], true, false @@ -177,15 +177,15 @@ "rgba(139,118,255,1)", "8000-9000m", "rgba(150,100,255,1)", - "9000m以深", + "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", @@ -239,7 +239,7 @@ "rgba(139,118,255,1)", "depth_zone_8000-9000m", "rgba(150,100,255,1)", - "depth_zone_9000m以深", + "depth_zone_over_9000m", "rgba(160,100,255,1)", "water_area", "rgba(129,195,226,1)", @@ -269,7 +269,7 @@ "get", "canonical_object_type" ], - "干潮帯" + "tidal_flat" ] ], "paint": { @@ -298,9 +298,9 @@ "canonical_object_type" ], [ - "河川域", - "湖沼域", - "陸上水域" + "river_area", + "lake_area", + "inland_water_area" ], true, false @@ -331,7 +331,7 @@ "get", "canonical_object_type" ], - "未測海域" + "unsurveyed_area" ] ], "paint": { @@ -360,7 +360,7 @@ "get", "canonical_object_type" ], - "浅所危険界" + "shoal_danger_area" ] ], "paint": { @@ -390,9 +390,9 @@ "canonical_object_type" ], [ - "防波堤", - "浮施設・桟橋", - "撤去跡" + "breakwater", + "floating_facility_pier", + "removed_structure_remains" ], true, false @@ -1561,7 +1561,7 @@ "get", "canonical_object_type" ], - "灯 (Lt)" + "minor_light" ] ] ] @@ -1585,7 +1585,7 @@ "get", "canonical_object_type" ], - "沿岸灯台 (15M over)" + "coastal_lighthouse_over_15m" ], [ "==", @@ -1643,7 +1643,7 @@ "get", "canonical_object_type" ], - "港湾灯台" + "harbor_lighthouse" ] }, { @@ -1662,7 +1662,7 @@ "get", "canonical_object_type" ], - "防波堤灯台" + "breakwater_lighthouse" ] }, { @@ -1681,7 +1681,7 @@ "get", "canonical_object_type" ], - "灯 (Lt)" + "minor_light" ] }, { @@ -1747,7 +1747,7 @@ "get", "canonical_object_type" ], - "灯標" + "light_beacon" ] }, { @@ -1865,7 +1865,7 @@ "get", "canonical_object_type" ], - "沿岸灯台 (15M over)" + "coastal_lighthouse_over_15m" ], "symbol-daytime-300", [ @@ -1874,7 +1874,7 @@ "get", "canonical_object_type" ], - "港湾灯台" + "harbor_lighthouse" ], "symbol-daytime-301", [ @@ -1883,7 +1883,7 @@ "get", "canonical_object_type" ], - "防波堤灯台" + "breakwater_lighthouse" ], "symbol-daytime-302", [ @@ -1892,7 +1892,7 @@ "get", "canonical_object_type" ], - "灯 (Lt)" + "minor_light" ], "symbol-daytime-303", [ @@ -1901,7 +1901,7 @@ "get", "canonical_object_type" ], - "浮標 (やぐら型)" + "lattice_buoy" ], "symbol-daytime-327", [ @@ -1910,7 +1910,7 @@ "get", "canonical_object_type" ], - "円柱型浮標" + "pillar_buoy" ], "symbol-daytime-323", [ @@ -1919,7 +1919,7 @@ "get", "canonical_object_type" ], - "円筒型浮標" + "can_buoy" ], "symbol-daytime-325", [ @@ -1940,7 +1940,7 @@ "get", "canonical_object_type" ], - "港湾灯台" + "harbor_lighthouse" ], [ "!=", @@ -1948,7 +1948,7 @@ "get", "canonical_object_type" ], - "防波堤灯台" + "breakwater_lighthouse" ], [ "!=", @@ -1956,7 +1956,7 @@ "get", "canonical_object_type" ], - "灯 (Lt)" + "minor_light" ], [ "!=", @@ -1964,7 +1964,7 @@ "get", "canonical_object_type" ], - "灯標" + "light_beacon" ] ] }, @@ -2028,17 +2028,17 @@ "get", "canonical_object_type" ], - "煙突", + "chimney", "symbol-daytime-640", - "塔、やぐら、風車", + "tower_yagura_windmill", "symbol-daytime-650", - "海事関係署", + "maritime_office", "symbol-daytime-660", - "漁業協同組合", + "fishing_cooperative", "symbol-daytime-661", - "山頂", + "mountain_top", "symbol-daytime-681", - "その他 (記念碑等)", + "other_landmark_monument", "symbol-daytime-698", "" ] @@ -2049,17 +2049,17 @@ "get", "canonical_object_type" ], - "煙突", + "chimney", true, - "塔、やぐら、風車", + "tower_yagura_windmill", true, - "海事関係署", + "maritime_office", true, - "漁業協同組合", + "fishing_cooperative", true, - "山頂", + "mountain_top", true, - "その他 (記念碑等)", + "other_landmark_monument", true, false ] @@ -2075,17 +2075,17 @@ "get", "canonical_object_type" ], - "煙突", + "chimney", false, - "塔、やぐら、風車", + "tower_yagura_windmill", false, - "海事関係署", + "maritime_office", false, - "漁業協同組合", + "fishing_cooperative", false, - "山頂", + "mountain_top", false, - "その他 (記念碑等)", + "other_landmark_monument", false, true ], diff --git a/src/pbf/style.navsea-delivery-kyushu.json b/src/pbf/style.navsea-delivery-kyushu.json index 7a5afbc..943fc82 100644 --- a/src/pbf/style.navsea-delivery-kyushu.json +++ b/src/pbf/style.navsea-delivery-kyushu.json @@ -1,7 +1,7 @@ { "version": 8, "name": "NavSea Delivery Kyushu", - "sprite": "https://tile.mapple-on.jp/newpec-symbols-20251001/sprite", + "sprite": "http://192.168.200.184/newpec/sprite/sprite?v=111", "glyphs": "http://192.168.200.184/newpec/fonts/{fontstack}/{range}.pbf", "sources": { "mapple": { @@ -79,7 +79,7 @@ "depth_zone_6000-7000m", "depth_zone_7000-8000m", "depth_zone_8000-9000m", - "depth_zone_9000m以深", + "depth_zone_over_9000m", "water_area" ], true, @@ -115,7 +115,7 @@ "6000-7000m", "7000-8000m", "8000-9000m", - "9000m以深" + "over_9000m" ], true, false @@ -174,15 +174,15 @@ "rgba(139,118,255,1)", "8000-9000m", "rgba(150,100,255,1)", - "9000m以深", + "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", @@ -236,7 +236,7 @@ "rgba(139,118,255,1)", "depth_zone_8000-9000m", "rgba(150,100,255,1)", - "depth_zone_9000m以深", + "depth_zone_over_9000m", "rgba(160,100,255,1)", "water_area", "rgba(129,195,226,1)", @@ -266,7 +266,7 @@ "get", "canonical_object_type" ], - "干潮帯" + "tidal_flat" ] ], "paint": { @@ -295,9 +295,9 @@ "canonical_object_type" ], [ - "河川域", - "湖沼域", - "陸上水域" + "river_area", + "lake_area", + "inland_water_area" ], true, false @@ -328,7 +328,7 @@ "get", "canonical_object_type" ], - "未測海域" + "unsurveyed_area" ] ], "paint": { @@ -357,7 +357,7 @@ "get", "canonical_object_type" ], - "浅所危険界" + "shoal_danger_area" ] ], "paint": { @@ -387,9 +387,9 @@ "canonical_object_type" ], [ - "防波堤", - "浮施設・桟橋", - "撤去跡" + "breakwater", + "floating_facility_pier", + "removed_structure_remains" ], true, false @@ -1220,12 +1220,78 @@ "icon-allow-overlap": true, "icon-ignore-placement": true, "icon-image": [ - "coalesce", + "case", [ - "get", - "chart_icon_image" + "has", + "class_code" ], - "" + [ + "match", + [ + "get", + "class_code" + ], + 401, + "symbol-daytime-401", + 402, + "symbol-daytime-401", + 403, + "symbol-daytime-401", + 404, + "symbol-daytime-404", + 405, + "symbol-daytime-405", + 409, + "symbol-daytime-409", + 410, + "symbol-daytime-410", + 412, + "symbol-daytime-412", + 413, + "symbol-daytime-413", + 415, + "symbol-daytime-413", + 420, + "symbol-daytime-420", + 421, + "symbol-daytime-421", + 422, + "symbol-daytime-422", + 424, + "symbol-daytime-424", + 425, + "symbol-daytime-425", + 427, + "symbol-daytime-427", + 428, + "symbol-daytime-428", + 429, + "symbol-daytime-429", + 431, + "symbol-daytime-431", + 432, + "symbol-daytime-432", + 433, + "symbol-daytime-433", + 434, + "symbol-daytime-434", + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "" + ] + ], + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "" + ] ] } }, @@ -1236,13 +1302,48 @@ "source-layer": "anchorage_point", "layout": { "icon-allow-overlap": true, + "icon-ignore-placement": true, "icon-image": [ - "coalesce", + "case", [ - "get", - "chart_icon_image" + "has", + "class_code" ], - "" + [ + "match", + [ + "get", + "class_code" + ], + 719, + "symbol-daytime-719", + 720, + "symbol-daytime-720", + 721, + "symbol-daytime-721", + 722, + "symbol-daytime-721", + 723, + "symbol-daytime-721", + 724, + "symbol-daytime-724", + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "" + ] + ], + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "" + ] ] } }, @@ -1254,7 +1355,6 @@ "layout": { "icon-allow-overlap": true, "icon-ignore-placement": true, - "icon-size": 1.05, "icon-image": [ "coalesce", [ @@ -1266,6 +1366,13 @@ }, "filter": [ "all", + [ + "!", + [ + "has", + "class_code" + ] + ], [ "!=", [ @@ -1300,23 +1407,81 @@ "layout": { "icon-allow-overlap": true, "icon-ignore-placement": true, - "icon-size": 1.08, - "icon-image": "symbol-daytime-428" - }, - "filter": [ - "match", - [ - "get", - "chart_symbol_code" - ], - "obstruction", - true, - "hazard_mark", - true, - "fish_reef", - true, - false - ] + "icon-image": [ + "case", + [ + "has", + "class_code" + ], + [ + "match", + [ + "get", + "class_code" + ], + 401, + "symbol-daytime-401", + 402, + "symbol-daytime-401", + 403, + "symbol-daytime-401", + 404, + "symbol-daytime-404", + 405, + "symbol-daytime-405", + 409, + "symbol-daytime-409", + 410, + "symbol-daytime-410", + 412, + "symbol-daytime-412", + 413, + "symbol-daytime-413", + 415, + "symbol-daytime-413", + 420, + "symbol-daytime-420", + 421, + "symbol-daytime-421", + 422, + "symbol-daytime-422", + 424, + "symbol-daytime-424", + 425, + "symbol-daytime-425", + 427, + "symbol-daytime-427", + 428, + "symbol-daytime-428", + 429, + "symbol-daytime-429", + 431, + "symbol-daytime-431", + 432, + "symbol-daytime-432", + 433, + "symbol-daytime-433", + 434, + "symbol-daytime-434", + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "symbol-daytime-428" + ] + ], + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "symbol-daytime-428" + ] + ] + } }, { "id": "nav-light-flare", @@ -1357,20 +1522,114 @@ [ "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" ], - "沿岸灯台 (15M over)" - ], - [ - "!=", - [ - "get", - "light_sector_mode" - ], - "sector" + "minor_light" ] ] ] @@ -1394,7 +1653,7 @@ "get", "canonical_object_type" ], - "沿岸灯台 (15M over)" + "coastal_lighthouse_over_15m" ], [ "==", @@ -1448,12 +1707,45 @@ "icon-image": "symbol-daytime-301" }, "filter": [ - "==", + "any", [ - "get", - "canonical_object_type" + "all", + [ + "has", + "display_code" + ], + [ + "==", + [ + "slice", + [ + "get", + "display_code" + ], + 0, + 3 + ], + "301" + ] ], - "港湾灯台" + [ + "all", + [ + "!", + [ + "has", + "display_code" + ] + ], + [ + "==", + [ + "get", + "canonical_object_type" + ], + "harbor_lighthouse" + ] + ] ] }, { @@ -1468,12 +1760,45 @@ "icon-image": "symbol-daytime-302" }, "filter": [ - "==", + "any", [ - "get", - "canonical_object_type" + "all", + [ + "has", + "display_code" + ], + [ + "==", + [ + "slice", + [ + "get", + "display_code" + ], + 0, + 3 + ], + "302" + ] ], - "防波堤灯台" + [ + "all", + [ + "!", + [ + "has", + "display_code" + ] + ], + [ + "==", + [ + "get", + "canonical_object_type" + ], + "breakwater_lighthouse" + ] + ] ] }, { @@ -1484,16 +1809,127 @@ "layout": { "icon-allow-overlap": true, "icon-ignore-placement": true, - "icon-size": 1.08, - "icon-image": "symbol-daytime-303" + "icon-image": [ + "case", + [ + "has", + "display_code" + ], + [ + "match", + [ + "get", + "display_code" + ], + "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", + "symbol-daytime-303" + ], + "symbol-daytime-303" + ] }, "filter": [ - "==", + "any", [ - "get", - "canonical_object_type" + "all", + [ + "has", + "display_code" + ], + [ + "match", + [ + "slice", + [ + "get", + "display_code" + ], + 0, + 3 + ], + "303", + true, + "305", + true, + "306", + true, + "307", + true, + "308", + true, + "309", + true, + false + ] ], - "灯 (Lt)" + [ + "all", + [ + "!", + [ + "has", + "display_code" + ] + ], + [ + "==", + [ + "get", + "canonical_object_type" + ], + "minor_light" + ] + ] ] }, { @@ -1504,16 +1940,95 @@ "layout": { "icon-allow-overlap": true, "icon-ignore-placement": true, - "icon-size": 1.08, - "icon-image": "symbol-daytime-310" + "icon-image": [ + "case", + [ + "has", + "display_code" + ], + [ + "match", + [ + "get", + "display_code" + ], + "31100002", + "symbol-daytime-310", + "31100004", + "symbol-daytime-310", + "31135001", + "symbol-daytime-310", + "31135102", + "symbol-daytime-310", + "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", + "symbol-daytime-310" + ], + "symbol-daytime-310" + ] }, "filter": [ - "==", + "any", [ - "get", - "canonical_object_type" + "all", + [ + "has", + "display_code" + ], + [ + "==", + [ + "slice", + [ + "get", + "display_code" + ], + 0, + 3 + ], + "311" + ] ], - "灯標" + [ + "all", + [ + "!", + [ + "has", + "display_code" + ] + ], + [ + "==", + [ + "get", + "canonical_object_type" + ], + "light_beacon" + ] + ] ] }, { @@ -1524,16 +2039,114 @@ "layout": { "icon-allow-overlap": true, "icon-ignore-placement": true, - "icon-size": 1.08, "icon-image": [ "case", + [ + "has", + "display_code" + ], + [ + "match", + [ + "get", + "display_code" + ], + "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", + "31336300", + "symbol-daytime-313362", + "32300000", + "symbol-daytime-323", + "32300001", + "symbol-daytime-323", + "32300002", + "symbol-daytime-323", + "32300003", + "symbol-daytime-323", + "32300004", + "symbol-daytime-323", + "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", + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "" + ] + ], [ "==", [ "get", "canonical_object_type" ], - "沿岸灯台 (15M over)" + "coastal_lighthouse_over_15m" ], "symbol-daytime-300", [ @@ -1542,7 +2155,7 @@ "get", "canonical_object_type" ], - "港湾灯台" + "harbor_lighthouse" ], "symbol-daytime-301", [ @@ -1551,7 +2164,7 @@ "get", "canonical_object_type" ], - "防波堤灯台" + "breakwater_lighthouse" ], "symbol-daytime-302", [ @@ -1560,9 +2173,36 @@ "get", "canonical_object_type" ], - "灯 (Lt)" + "minor_light" ], "symbol-daytime-303", + [ + "==", + [ + "get", + "canonical_object_type" + ], + "lattice_buoy" + ], + "symbol-daytime-327", + [ + "==", + [ + "get", + "canonical_object_type" + ], + "pillar_buoy" + ], + "symbol-daytime-323", + [ + "==", + [ + "get", + "canonical_object_type" + ], + "can_buoy" + ], + "symbol-daytime-325", [ "coalesce", [ @@ -1576,12 +2216,45 @@ "filter": [ "all", [ - "!=", + "!", [ - "get", - "canonical_object_type" - ], - "港湾灯台" + "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 + ] + ] ], [ "!=", @@ -1589,7 +2262,7 @@ "get", "canonical_object_type" ], - "防波堤灯台" + "harbor_lighthouse" ], [ "!=", @@ -1597,7 +2270,7 @@ "get", "canonical_object_type" ], - "灯 (Lt)" + "breakwater_lighthouse" ], [ "!=", @@ -1605,7 +2278,15 @@ "get", "canonical_object_type" ], - "灯標" + "minor_light" + ], + [ + "!=", + [ + "get", + "canonical_object_type" + ], + "light_beacon" ] ] }, @@ -1616,7 +2297,60 @@ "source-layer": "facility_boundary_point", "layout": { "icon-allow-overlap": true, - "icon-image": "symbol-daytime-520" + "icon-ignore-placement": true, + "icon-image": [ + "case", + [ + "has", + "class_code" + ], + [ + "match", + [ + "get", + "class_code" + ], + 505, + "symbol-daytime-505", + 510, + "symbol-daytime-505", + 520, + "symbol-daytime-520", + 530, + "symbol-daytime-530", + 540, + "symbol-daytime-540", + 550, + "symbol-daytime-550", + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "symbol-daytime-520" + ] + ], + [ + "coalesce", + [ + "get", + "chart_icon_image" + ], + "symbol-daytime-520" + ] + ] + } + }, + { + "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": "symbol-daytime-500" } }, { @@ -1626,46 +2360,72 @@ "source-layer": "onshore_structure_point", "layout": { "icon-allow-overlap": true, + "icon-ignore-placement": true, "icon-image": [ + "case", + [ + "has", + "class_code" + ], + [ + "concat", + "symbol-daytime-", + [ + "to-string", + [ + "get", + "class_code" + ] + ] + ], + [ + "match", + [ + "get", + "canonical_object_type" + ], + "chimney", + "symbol-daytime-640", + "tower_yagura_windmill", + "symbol-daytime-650", + "maritime_office", + "symbol-daytime-660", + "fishing_cooperative", + "symbol-daytime-661", + "mountain_top", + "symbol-daytime-681", + "other_landmark_monument", + "symbol-daytime-698", + "" + ] + ] + }, + "filter": [ + "any", + [ + "has", + "class_code" + ], + [ "match", [ "get", "canonical_object_type" ], - "煙突", - "symbol-daytime-640", - "塔、やぐら、風車", - "symbol-daytime-650", - "海事関係署", - "symbol-daytime-660", - "漁業協同組合", - "symbol-daytime-661", - "山頂", - "symbol-daytime-681", - "その他 (記念碑等)", - "symbol-daytime-698", - "" + "chimney", + true, + "tower_yagura_windmill", + true, + "maritime_office", + true, + "fishing_cooperative", + true, + "mountain_top", + true, + "other_landmark_monument", + true, + false ] - }, - "filter": [ - "match", - [ - "get", - "canonical_object_type" - ], - "煙突", - true, - "塔、やぐら、風車", - true, - "海事関係署", - true, - "漁業協同組合", - true, - "山頂", - true, - "その他 (記念碑等)", - true, - false ] }, { @@ -1674,24 +2434,34 @@ "source": "navsea_delivery", "source-layer": "onshore_structure_point", "filter": [ - "match", + "all", [ - "get", - "canonical_object_type" + "!", + [ + "has", + "class_code" + ] ], - "煙突", - false, - "塔、やぐら、風車", - false, - "海事関係署", - false, - "漁業協同組合", - false, - "山頂", - false, - "その他 (記念碑等)", - false, - true + [ + "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, diff --git a/tasks/NavSea V11 核心域定义.md b/tasks/NavSea V11 核心域定义.md new file mode 100644 index 0000000..f2e8022 --- /dev/null +++ b/tasks/NavSea V11 核心域定义.md @@ -0,0 +1,289 @@ +# NavSea V11 核心域定义(Core Domain Definition) + +## 版本 + +v11-core-domain-1 (CN) + +--- + +# 1. 文档目的 + +本文件用于定义 NavSea 在 V11 架构下的**核心域边界(Domain Boundaries)**。 + +NavSea 被定义为: + +> 一个**航海视觉辅助系统**,在离线可生存的前提下,将海图数据、传感器解析结果与环境信息统一供给显示层。 + +本文件只定义: + +* 系统结构 +* 各域职责边界 + +本文件**不涉及具体实现**。 + +--- + +# 2. 系统核心原则 + +NavSea 不是: + +* ❌ 航行控制系统 +* ❌ 设备控制系统 +* ❌ 单纯地图显示软件 + +NavSea 是: + +> 一个**面向显示的多源数据供给系统(Display-Oriented Data Supply System)** + +所有模块的存在目的只有一个: + +> **为显示层提供可靠、可解释、可降级的数据** + +--- + +# 3. 顶层结构 + +NavSea 由四个核心域组成: + +1. 海图域(Chart Domain) +2. 传感器域(Sensor Domain) +3. 环境域(Environment Domain) +4. 显示域(Display Domain) + +--- + +# 4. 海图域(Chart Domain) + +## 4.1 职责 + +海图域负责: + +* 向 MapLibre 提供瓦片数据(PBF) +* 管理海图数据来源(预置 / 本地缓存 / 在线) +* 保证离线可用 +* 管理数据版本与更新 +* 决定每个 tile 请求返回哪份数据 + +## 4.2 核心能力 + +* Base Pack(预置海图) +* Region Cache(区域缓存) +* Online Pack(在线最新数据) +* Tile Resolver(瓦片解析与选择) +* Manifest(本地索引与版本管理) + +## 4.3 输出 + +海图域输出: + +> MapLibre 可渲染的矢量瓦片(PBF)及相关资源 + +## 4.4 非职责 + +海图域不得: + +* ❌ 解析 NMEA +* ❌ 做航行判断 +* ❌ 控制 UI +* ❌ 处理非地图业务逻辑 + +--- + +# 5. 传感器域(Sensor Domain) + +## 5.1 职责 + +传感器域负责: + +* 接收船内 UDP 数据 +* 解析 NMEA 电文 +* 统一数据结构 +* 维护本船状态 +* 进行实时判断与推导 +* 输出可显示的结果 + +## 5.2 输入 + +* 船内 UDP 网络 +* NMEA 电文(如 GNRMC、YDMWV 等) + +## 5.3 核心能力 + +* 数据解析与标准化 +* 状态建模(本船 / 目标) +* 计算派生数据(航向、风等) +* 风险识别与判断 +* 生成可展示结果 + +## 5.4 输出 + +传感器域输出: + +> 已解释的、可直接用于显示的结果(不是原始数据) + +示例: + +* 本船状态 +* 目标信息 +* 风信息 +* 风险提示 +* 告警 + +## 5.5 非职责 + +传感器域不得: + +* ❌ 管理海图 +* ❌ 访问互联网 API +* ❌ 控制设备 +* ❌ 直接渲染 UI + +--- + +# 6. 环境域(Environment Domain) + +## 6.1 职责 + +环境域负责: + +* 获取天气与海洋数据(API) +* 本地缓存环境信息 +* 离线时提供可用数据 +* 管理数据时效性(新鲜度) + +## 6.2 输入 + +* 互联网 API(天气、海流、气压等) + +## 6.3 核心能力 + +* API 请求 +* 数据缓存(带 TTL) +* 离线 fallback +* 时间戳管理 +* 数据新鲜度评估 + +## 6.4 输出 + +环境域输出: + +> 带时间语义的环境信息 + +示例: + +* 风预报 +* 海流 +* 天气状态 + +## 6.5 非职责 + +环境域不得: + +* ❌ 管理地图瓦片 +* ❌ 解析 NMEA +* ❌ 控制 UI +* ❌ 生成无时间标记的数据 + +--- + +# 7. 显示域(Display Domain) + +## 7.1 职责 + +显示域负责: + +* 将所有数据呈现给用户 +* 融合多来源数据 +* 管理 UI 组件与布局 +* 表达系统状态(包括降级状态) + +## 7.2 输入 + +* 海图域(瓦片) +* 传感器域(判断结果) +* 环境域(环境信息) + +## 7.3 核心能力 + +* MapLibre 地图显示 +* 覆盖层(目标 / 风险 / 航向等) +* 信息面板 +* 告警展示 +* 数据新鲜度提示 +* 降级模式提示 + +## 7.4 输出 + +> 用户看到的完整视觉系统 + +## 7.5 非职责 + +显示域不得: + +* ❌ 获取数据 +* ❌ 解析数据 +* ❌ 管理缓存 +* ❌ 执行业务计算 + +--- + +# 8. 域间交互规则 + +## 8.1 允许的数据流 + +* 海图域 → 显示域 +* 传感器域 → 显示域 +* 环境域 → 显示域 + +## 8.2 禁止耦合 + +* ❌ 海图域 ↔ 传感器域 +* ❌ 传感器域 ↔ 环境域 +* ❌ 显示域依赖内部实现细节 + +所有交互必须通过**明确的输出接口**。 + +--- + +# 9. 离线策略定义 + +## 9.1 海图域 + +* 必须始终提供可显示内容 +* Base Pack 提供最低保障 + +## 9.2 传感器域 + +* 必须完全离线可运行 +* 不依赖互联网 + +## 9.3 环境域 + +* 离线时使用缓存数据 +* 必须标注数据时间 + +## 9.4 显示域 + +* 必须清晰表达数据缺失或过期 +* 禁止伪装正常状态 + +--- + +# 10. V11 架构约束 + +后续开发必须遵守: + +* 不破坏域边界 +* 通过 wrapper / adapter 扩展 +* 不允许跨域逻辑泄漏 +* 不允许隐式数据共享 + +--- + +# 11. 最终定义 + +NavSea 架构定义为: + +> 一个由海图域、传感器域、环境域独立生成数据,并由显示域统一呈现的离线可生存视觉系统。 + +--- diff --git a/tasks/pbf/MbTiles/navsea_mbtiles_packaging_spec_task_zh.md b/tasks/pbf/MbTiles/navsea_mbtiles_packaging_spec_task_zh.md new file mode 100644 index 0000000..6ba3cf0 --- /dev/null +++ b/tasks/pbf/MbTiles/navsea_mbtiles_packaging_spec_task_zh.md @@ -0,0 +1,654 @@ +# NavSea V11 — MBTiles 打包规范设计任务(base / cache / update 三层统一格式) + +## 任务名称 +NavSea MBTiles Packaging Spec v1 设计任务 + +## 任务ID +NAVSEA-V11-MBTILES-PACKAGING-SPEC-V1 + +## 架构 +NavSea V11 + +## 模式 +codex6 + +## 类型 +规范设计任务 / 独立领域任务 + +--- + +## 一、任务目标 + +为 NavSea 建立一套 **统一的 MBTiles 打包规范 v1**,覆盖以下三类数据包: + +- `base`:初始基础海图包 +- `cache`:边看边存运行期缓存包 +- `update`:后续更新 / patch 覆盖包 + +该规范的目标不是只定义一个“能装 tile 的 sqlite 文件”,而是定义一套 **长期稳定、可验证、可导入、可追踪、可演进** 的包格式约束,使后续这些能力都能建立在统一规则上: + +1. MapLibre 请求 tile 时,NavSea 能稳定找到正确数据 +2. Catalog 能用统一规则管理 winner +3. Base / Cache / Update 三层能在相同数据模型下共存 +4. 你的 PBF 裁剪系统能按统一格式输出可直接导入的包 +5. 后续可扩展到批量导入、区域更新、增量替换、回滚和清理 + +--- + +## 二、任务边界 + +### 本任务包括 + +- 定义三类 MBTiles 包的统一结构 +- 定义必须存在的 metadata 键 +- 定义推荐附加 metadata 键 +- 定义 tiles 表使用规则 +- 定义 XYZ / TMS 坐标处理约定 +- 定义 source identity / version / package identity 规范 +- 定义 base / cache / update 的差异化要求 +- 定义导入器需要依赖的最小元数据 +- 定义与 TileCatalog 的协作规则 +- 定义包验证规则(lint / validator 目标) +- 定义 phase1 可落地、phase2 可扩展的版本策略 + +### 本任务不包括 + +- 实现实际裁剪器 +- 实现 SQLite 写入器 +- 实现 ChartSourceIndexer +- 实现 Catalog 批量重建器 +- 实现 Runtime Cache 回写 +- 实现 Update 下载器 +- 实现多源矢量 tile merge +- 实现 HTTP 服务 +- 实现 UI 和 MapLibre 样式层 + +--- + +## 三、设计原则 + +### 1. 同一容器,不同语义 +三类包都使用 MBTiles 容器,但语义不同: + +- `base`:稳定底座 +- `cache`:运行期补齐 +- `update`:权威覆盖 + +### 2. 统一读取模型 +不管包类型是什么,读取路径尽量统一: + +- `metadata` +- `tiles` +- `zoom_level` +- `tile_column` +- `tile_row` +- `tile_data` + +### 3. 统一导入模型 +导入器只依赖统一 metadata 规范,不依赖“文件名猜测”。 + +### 4. 统一 Catalog 协作 +Catalog 永远用 XYZ key;MBTiles 内部继续沿用标准 TMS row。 + +### 5. 版本优先于猜测 +凡是影响 winner 语义的内容,必须有明确字段,不允许靠文件名或目录名推断。 + +### 6. 先做稳定 v1,再做复杂优化 +v1 不追求最省空间,不追求最高级 patch merge,只追求长期稳定和工程可控。 + +--- + +## 四、输出成果要求 + +Codex 最终必须输出一份完整规范文档,建议文件名: + +`codex/specs/NavSea-MBTiles-Packaging-Spec-v1.md` + +文档中必须完整定义: + +1. 总体设计说明 +2. 三类包的角色 +3. 必须 metadata 列表 +4. 推荐 metadata 列表 +5. tiles 表要求 +6. 坐标规范 +7. version / package id / source id 规范 +8. base / cache / update 各自约束 +9. 导入流程依赖字段 +10. validator 校验规则 +11. 与 TileCatalog 协同规则 +12. 向后兼容与未来扩展点 + +--- + +## 五、三类包的角色定义(必须锁死) + +### 1. base 包 + +角色: +- 初始基础海图数据 +- 稳定、可靠、覆盖广 +- 通常为长期保留包 +- 作为缺失情况下的兜底来源 + +特点: +- 以“完整区域覆盖”为主 +- 更新频率低 +- 可多包并存(不同区域/不同精度) + +### 2. cache 包 + +角色: +- 运行过程中“边看边存”的本地补齐包 +- 优先服务近期查看区域 +- 生命周期受容量和策略控制 + +特点: +- 写入频繁 +- 内容来源于请求路径 +- 可删、可重建、可清理 + +### 3. update 包 + +角色: +- 对 base 提供权威更新覆盖 +- 可表示官方修正、局部重算、修补包 + +特点: +- 明确带版本语义 +- 不要求覆盖整个区域 +- 覆盖规则必须强于 base + +--- + +## 六、统一容器规范 + +### 6.1 必须使用标准 MBTiles 核心表 + +至少要求: + +```sql +CREATE TABLE metadata (name TEXT, value TEXT); +CREATE TABLE tiles ( + zoom_level INTEGER, + tile_column INTEGER, + tile_row INTEGER, + tile_data BLOB +); +``` + +### 6.2 推荐索引 + +```sql +CREATE UNIQUE INDEX IF NOT EXISTS tile_index +ON tiles (zoom_level, tile_column, tile_row); +``` + +### 6.3 可选扩展表 + +v1 允许定义扩展表,但读取主路径不能依赖扩展表。 + +例如未来可扩展: + +- `navsea_manifest` +- `navsea_stats` +- `navsea_regions` + +但本规范要求: +- 没有这些扩展表时,导入器仍能工作 + +--- + +## 七、metadata 规范(核心部分) + +下面字段分为: + +- **必须字段** +- **推荐字段** +- **预留字段** + +--- + +## 八、必须 metadata 字段 + +### 8.1 `format` + +说明: +- tile 内容格式 + +允许值: +- `pbf` +- `mvt` +- `png` +- `jpg` +- `jpeg` +- `webp` + +要求: +- vector 包建议固定使用 `pbf` +- 若写 `mvt`,读取端仍应按 `application/x-protobuf` 处理 + +--- + +### 8.2 `minzoom` + +说明: +- 包中最小 zoom + +要求: +- 必须是字符串整数 +- 必须与实际 tiles 表一致或更宽松但不能错误缩窄 + +--- + +### 8.3 `maxzoom` + +说明: +- 包中最大 zoom + +要求: +- 必须是字符串整数 + +--- + +### 8.4 `bounds` + +说明: +- 地理范围 + +格式: +- `minLon,minLat,maxLon,maxLat` + +要求: +- 使用 WGS84 经纬度 +- 即使是局部 update / cache 包也必须提供 + +--- + +### 8.5 `navsea_package_type` + +说明: +- NavSea 包类型 + +允许值: +- `base` +- `cache` +- `update` + +要求: +- 不允许缺失 +- 导入器必须依赖该字段识别包类型 +- 不允许仅靠文件名识别 + +--- + +### 8.6 `navsea_package_id` + +说明: +- 包唯一标识 + +要求: +- 全局唯一 +- 同一个文件重新导出但语义相同,也建议保持新 id +- 不得为空 + +建议格式: +- UUID +- 或 `navsea....` + +--- + +### 8.7 `navsea_source_family` + +说明: +- 该包所属图源家族 / 数据源体系 + +用途: +- 区分不同地图来源,避免不兼容数据混用 + +示例: +- `navsea.chart.jp.main` +- `navsea.chart.user.custom` +- `navsea.chart.cache.runtime` + +要求: +- 不得为空 + +--- + +### 8.8 `navsea_schema_version` + +说明: +- NavSea 打包规范版本 + +v1 固定值: +- `1` + +要求: +- 导入器必须读取该字段 +- 后续 schema 演进必须通过该字段区分 + +--- + +## 九、推荐 metadata 字段 + +### 9.1 `name` +人类可读名称 + +### 9.2 `description` +包描述 + +### 9.3 `type` +允许值通常: +- `overlay` +- `baselayer` + +### 9.4 `version` +原始数据版本 / 切片版本 + +### 9.5 `navsea_region_id` +区域标识,例如: +- `japan-east` +- `seto-inland-sea` + +### 9.6 `navsea_generated_at` +生成时间(ISO8601) + +### 9.7 `navsea_priority_hint` +导入默认优先级提示 + +### 9.8 `navsea_tile_count` +包内 tile 数量 + +### 9.9 `navsea_data_hash` +包级 hash / manifest hash + +### 9.10 `navsea_projection` +v1 固定建议: +- `webmercator` + +--- + +## 十、update 包专用推荐字段 + +### 10.1 `navsea_update_version` +更新版本号,必须可比较 + +### 10.2 `navsea_update_parent_family` +说明它 intended 覆盖哪个 source family + +### 10.3 `navsea_update_scope` +允许值建议: +- `partial` +- `regional` +- `full` + +### 10.4 `navsea_effective_from` +生效时间 + +### 10.5 `navsea_supersedes` +被其覆盖/替代的 package id 列表(逗号分隔或 JSON 字符串) + +--- + +## 十一、cache 包专用推荐字段 + +### 11.1 `navsea_cache_created_at` +缓存包创建时间 + +### 11.2 `navsea_cache_policy` +例如: +- `runtime-view-cache` + +### 11.3 `navsea_cache_mutable` +建议值: +- `true` + +### 11.4 `navsea_eviction_hint` +例如: +- `lru` +- `manual` +- `none` + +--- + +## 十二、base 包专用推荐字段 + +### 12.1 `navsea_base_edition` +基础版次 + +### 12.2 `navsea_coverage_tier` +例如: +- `national` +- `regional` +- `harbor-detail` + +### 12.3 `navsea_is_fallback` +是否兜底层提示 +- `true` +- `false` + +--- + +## 十三、tiles 表使用规则 + +### 13.1 坐标规则 +MBTiles 内部使用: +- `zoom_level` +- `tile_column` +- `tile_row`(TMS) + +### 13.2 读取规则 +NavSea 外部统一使用 XYZ: +- HTTP +- MapLibre +- Catalog +- Provider 请求 + +仅在 `MbtilesReader` 查询 SQLite 时转换: + +```ts +tmsY = (1 << z) - 1 - y +``` + +### 13.3 tile_data 规则 +- 必须为该 `format` 对应的合法内容 +- vector 建议使用 gzip 压缩的 pbf(按你的切片系统惯例执行) +- 不允许写入“假 tile”混入生产包 + +--- + +## 十四、统一 source identity 规范 + +规范必须区分以下三个概念: + +### 14.1 package_id +某个物理包的唯一标识 + +### 14.2 source_family +该包所属图源体系 + +### 14.3 runtime source record id +导入到系统后的 registry/source id + +规范中必须明确: +- `package_id` ≠ `source_family` +- registry id 可以基于 package_id 生成,但不是同一概念 + +--- + +## 十五、Catalog 协同规则 + +文档必须明确写出: + +1. Catalog key 统一为 XYZ +2. Catalog winner 记录的是“哪个 source 胜出” +3. MBTiles 包本身不承担 winner 决策 +4. 包的 metadata 只提供导入决策输入 +5. winner 决策由导入器 / Catalog / CompositeProvider 组合完成 + +--- + +## 十六、默认优先级建议(写入规范) + +文档必须给出默认值建议: + +- `update = 300` +- `cache = 200` +- `base = 100` + +并注明: +- 这是系统默认导入优先级 +- 不要求写死在 MBTiles 内 +- `navsea_priority_hint` 只能是 hint,真正 winner 以系统侧规则为准 + +--- + +## 十七、导入器最低依赖字段 + +文档必须明确: +导入器至少依赖以下 metadata 才能工作: + +- `navsea_package_type` +- `navsea_package_id` +- `navsea_source_family` +- `navsea_schema_version` +- `format` +- `minzoom` +- `maxzoom` +- `bounds` + +若缺少这些字段,导入器应拒绝导入或进入明确的修复流程。 + +--- + +## 十八、Validator / Lint 规则(必须定义) + +Codex 需要在规范里写出一套 validator 目标规则,至少包括: + +### 18.1 结构校验 +- `metadata` 表存在 +- `tiles` 表存在 +- `tile_index` 唯一索引存在(推荐但可自动修复) + +### 18.2 metadata 校验 +- 必填字段存在 +- `navsea_package_type` 合法 +- `format` 合法 +- `minzoom <= maxzoom` +- `bounds` 格式合法 + +### 18.3 数据校验 +- `tile_data` 非空 +- `zoom_level/tile_column/tile_row` 不为 null +- 不允许重复 tile 键 + +### 18.4 语义校验 +- `cache` 包必须标记为 mutable +- `update` 包必须有 update version 或明确说明为何没有 +- `base` 包应有稳定 region/source family 标识 + +--- + +## 十九、phase 划分建议(规范文档里要写) + +### Phase A:规范落地 +- 先只写规范文档 +- 不改已有代码 + +### Phase B:打包器适配 +- 让你的 PBF 裁剪系统按规范输出 metadata +- 生成最小合法 MBTiles + +### Phase C:导入器适配 +- ChartSourceRegistry / TileCatalog 能按 metadata 导入 + +### Phase D:运行期写包 +- cache 包写入 +- update 包导入与覆盖 + +--- + +## 二十、对 Codex 的具体写作要求 + +Codex 输出的规范文档必须: + +1. 使用中文 +2. 面向工程实现,不写成纯概念稿 +3. 要有表格或清晰列表列出 metadata 字段 +4. 要明确哪些字段是必须、推荐、预留 +5. 要明确 base / cache / update 的差异 +6. 要明确 Catalog 与 Reader 的职责边界 +7. 要包含一个“最小合法 MBTiles 示例” +8. 要包含一个“推荐 metadata 示例” +9. 要包含一个“错误包示例” +10. 要包含未来扩展但当前不启用的字段说明 + +--- + +## 二十一、建议加入的示例内容 + +规范文档中至少需要 3 组示例: + +### 示例 1:base 包 metadata 示例 + +```text +format = pbf +minzoom = 0 +maxzoom = 12 +bounds = 122.0,24.0,146.0,46.0 +navsea_package_type = base +navsea_package_id = ... +navsea_source_family = navsea.chart.jp.main +navsea_schema_version = 1 +``` + +### 示例 2:cache 包 metadata 示例 + +```text +format = pbf +minzoom = 8 +maxzoom = 14 +bounds = ... +navsea_package_type = cache +navsea_package_id = ... +navsea_source_family = navsea.chart.cache.runtime +navsea_schema_version = 1 +navsea_cache_mutable = true +``` + +### 示例 3:update 包 metadata 示例 + +```text +format = pbf +minzoom = 10 +maxzoom = 14 +bounds = ... +navsea_package_type = update +navsea_package_id = ... +navsea_source_family = navsea.chart.jp.main +navsea_schema_version = 1 +navsea_update_version = 2026.03.18-01 +``` + +--- + +## 二十二、Definition of Done + +本任务完成的标志是: + +- 已产出一份完整中文规范文档 +- 规范文档可直接指导你的 PBF 裁剪系统输出 MBTiles +- 文档已清楚区分 base / cache / update +- 文档已定义必须 metadata +- 文档已定义 Validator 规则 +- 文档已明确 Catalog 与 Reader 的职责边界 +- 文档已包含最小合法示例 + +--- + +## 二十三、最短结论 + +这个任务的唯一目标是: + +**把 NavSea 的 MBTiles 从“只是一个 sqlite 文件”提升为“有明确角色、明确元数据、明确导入规则、明确演进路径的统一包格式”。** diff --git a/tasks/pbf/MbTiles/navsea_mbtiles_validator_task_zh.md b/tasks/pbf/MbTiles/navsea_mbtiles_validator_task_zh.md new file mode 100644 index 0000000..7641cac --- /dev/null +++ b/tasks/pbf/MbTiles/navsea_mbtiles_validator_task_zh.md @@ -0,0 +1,230 @@ +# NavSea V11 — MBTiles 包验证器(Validator / Lint)任务 + +## 任务名称 +NavSea MBTiles Validator / Lint v1 + +## 任务ID +NAVSEA-V11-MBTILES-VALIDATOR-V1 + +## 架构 +NavSea V11 + +## 模式 +codex6 + +## 类型 +工具模块(独立可运行 / 可集成) + +--- + +## 一、任务目标 + +实现一个 **MBTiles 验证器(validator / lint 工具)**,用于: + +- 校验 MBTiles 是否符合 NavSea Packaging Spec v1 +- 在导入前发现问题 +- 为裁剪系统输出提供自动质量检查 +- 为导入器提供“是否允许导入”的判断依据 + +--- + +## 二、使用场景 + +该工具必须支持以下使用方式: + +1. CLI 校验: + +```bash +navsea-mbtiles-validate ./test.mbtiles +``` + +2. 导入前自动校验: + +```ts +validator.validate(filePath) +``` + +3. CI 自动检查: + +- 批量扫描目录 +- 输出报告 + +--- + +## 三、模块结构 + +```text +src/tools/mbtiles-validator/ + MbtilesValidator.ts + rules/ + MetadataRules.ts + SchemaRules.ts + TileRules.ts + NavSeaRules.ts + reporter/ + ValidationReporter.ts + cli/ + index.ts + __tests__/ + validator.test.ts + README.md +``` + +--- + +## 四、核心接口 + +```ts +export type ValidationIssue = { + level: "error" | "warning"; + code: string; + message: string; +}; + +export type ValidationResult = { + valid: boolean; + issues: ValidationIssue[]; +}; + +export interface MbtilesValidator { + validate(path: string): Promise; +} +``` + +--- + +## 五、校验规则(必须实现) + +### 1. Schema 校验 + +- metadata 表存在 +- tiles 表存在 +- tiles 字段完整: + - zoom_level + - tile_column + - tile_row + - tile_data + +--- + +### 2. Metadata 校验(强制) + +必须存在: + +- format +- minzoom +- maxzoom +- bounds +- navsea_package_type +- navsea_package_id +- navsea_source_family +- navsea_schema_version + +--- + +### 3. Metadata 合法性 + +- format ∈ [pbf, mvt, png, jpg, jpeg, webp] +- minzoom ≤ maxzoom +- bounds 为 4 个数值 +- navsea_package_type ∈ [base, cache, update] + +--- + +### 4. Tile 数据校验 + +- tile_data 非空 +- 不允许重复 (z,x,y) +- tile_row 合法(>=0) + +--- + +### 5. NavSea 语义校验 + +#### base 包 +- 必须有 source_family +- 不允许 mutable + +#### cache 包 +- 必须 navsea_cache_mutable = true + +#### update 包 +- 必须 navsea_update_version + +--- + +### 6. 推荐校验(warning) + +- metadata.name 存在 +- metadata.description 存在 +- navsea_generated_at 存在 +- navsea_tile_count 与实际一致 + +--- + +## 六、错误等级定义 + +### error(阻止导入) + +- schema 错误 +- metadata 缺失关键字段 +- format 非法 +- navsea_package_type 非法 + +### warning(允许导入) + +- 缺少描述信息 +- 缺少推荐字段 +- tile_count 不一致 + +--- + +## 七、CLI 输出要求 + +示例: + +```text +[ERROR] missing metadata: navsea_package_id +[ERROR] invalid format: abc +[WARN ] missing metadata: description +``` + +--- + +## 八、测试要求 + +必须覆盖: + +- 合法 mbtiles → valid=true +- 缺 metadata → error +- 错误 format → error +- cache 未标 mutable → error +- update 无 version → error + +--- + +## 九、完成标准 + +- CLI 可运行 +- validate() API 可调用 +- 输出结构稳定 +- 可集成导入流程 +- 测试通过 + +--- + +## 十、未来扩展(不要在本任务实现) + +- 自动修复(fix mode) +- 批量扫描目录 +- 可视化报告 +- 与导入器联动 + +--- + +## 十一、结论 + +该模块是: + +**NavSea 数据入口的“质量闸门”** + diff --git a/tasks/pbf/mappings/navsea_field_name_rules_v1.yaml b/tasks/pbf/mappings/navsea_field_name_rules_v1.yaml index 2fa7681..da3e9bc 100644 --- a/tasks/pbf/mappings/navsea_field_name_rules_v1.yaml +++ b/tasks/pbf/mappings/navsea_field_name_rules_v1.yaml @@ -19,7 +19,7 @@ rules: - field_name_jp: 分類番号 field_name_std: class_code field_group: source_legacy - keep_in_delivery: true + keep_in_delivery: false keep_in_engineering: true normalization_class: legacy_render_code notes: Legacy class code used during transition and audits. @@ -29,39 +29,39 @@ rules: keep_in_delivery: true keep_in_engineering: true normalization_class: legacy_render_code - notes: Legacy shape class code used during transition and audits. + notes: Legacy shape class code retained for old at-style navigation mark rendering, transition, and audits. - field_name_jp: 表示用番号 field_name_std: display_code field_group: source_legacy - keep_in_delivery: true + keep_in_delivery: false keep_in_engineering: true normalization_class: legacy_render_code notes: Legacy display code retained until all rendering migrates to chart_* fields. - field_name_jp: 灯色 field_name_std: light_color_raw_code field_group: light - keep_in_delivery: true + keep_in_delivery: false keep_in_engineering: true normalization_class: field_value_normalization notes: Legacy raw color code maps into light_color_code. - field_name_jp: 灯略記 field_name_std: light_character_remark field_group: light - keep_in_delivery: true + keep_in_delivery: false keep_in_engineering: true normalization_class: content_text notes: User-visible light remark should remain reversible. - field_name_jp: 明弧/分孤 field_name_std: light_sector_remark field_group: light - keep_in_delivery: true + keep_in_delivery: false keep_in_engineering: true normalization_class: field_value_normalization notes: Legacy light sector remark maps into light_sector_mode and trace fields. - field_name_jp: 表示位置 field_name_std: label_position_code_legacy field_group: labels - keep_in_delivery: true + keep_in_delivery: false keep_in_engineering: true normalization_class: field_value_normalization notes: Legacy label position code maps into chart_label_position_code. @@ -96,28 +96,28 @@ rules: - field_name_jp: 水深値(m) field_name_std: depth_value_m_legacy field_group: normalized_numeric - keep_in_delivery: true + keep_in_delivery: false keep_in_engineering: true normalization_class: numeric_normalization notes: Legacy depth string is normalized into depth_value_m. - field_name_jp: 高さ(m) field_name_std: clearance_height_m_legacy field_group: normalized_numeric - keep_in_delivery: true + keep_in_delivery: false keep_in_engineering: true normalization_class: numeric_normalization notes: Legacy height string is normalized into clearance_height_m. - field_name_jp: 高さ/深度(m) field_name_std: height_or_depth_m_legacy field_group: normalized_numeric - keep_in_delivery: true + keep_in_delivery: false keep_in_engineering: true normalization_class: numeric_normalization notes: Mixed height/depth legacy string maps into least_depth_m or clearance semantics. - field_name_jp: 角度 field_name_std: bearing_deg_legacy field_group: normalized_numeric - keep_in_delivery: true + keep_in_delivery: false keep_in_engineering: true normalization_class: numeric_normalization notes: Legacy angle string is normalized into bearing_deg. @@ -131,21 +131,21 @@ rules: - field_name_jp: 目的分類番号 field_name_std: purpose_class_code field_group: source_legacy - keep_in_delivery: true + keep_in_delivery: false keep_in_engineering: true normalization_class: legacy_render_code notes: Legacy purpose code is preserved under a standardized key. - field_name_jp: 縮尺選択コード field_name_std: scale_selection_code field_group: source_legacy - keep_in_delivery: true + keep_in_delivery: false keep_in_engineering: true normalization_class: legacy_render_code notes: Legacy scale-selection code is preserved under a standardized key. - field_name_jp: 表示重要度 field_name_std: display_priority_code field_group: source_legacy - keep_in_delivery: true + keep_in_delivery: false keep_in_engineering: true normalization_class: legacy_render_code notes: Legacy display-priority code is preserved under a standardized key.