# CM93 导入与审计操作说明 ## 1. 适用环境 - Windows 11 - Python 3.12.10 - MySQL 5.7.34 - 已完成 `cm93db db-init --create-database` ## 2. 正式导入 如果 `.env` 已配置: ```text CM93_SOURCE_DIR=D:\Ship\CM93V2\CM93_2014 ``` 可直接运行: ```powershell & ".\.venv\Scripts\cm93db.exe" import ``` 也可显式给路径: ```powershell & ".\.venv\Scripts\cm93db.exe" import D:\Ship\CM93V2\CM93_2014 ``` 默认行为: - 递归扫描 Z/A/B/C/D/E/F/G; - 每个 cell 独立事务; - DONE + 文件 SHA256 相同自动跳过; - FAILED cell 下次自动重试; - 保存 typed attributes; - 保存标准化 WGS84 geometry; - 保存 decoded CM93 原始 table block; - `_wgsox/_wgsoy` 默认按 `embedded` policy 应用; - 不 simplify / snap / quantize / round; - 不自动 `make_valid`。 ### 先小批验证 推荐正式 30,097 cell 前先跑: ```powershell & ".\.venv\Scripts\cm93db.exe" import --scale G --limit-cells 5 ``` 然后: ```powershell & ".\.venv\Scripts\cm93db.exe" audit --sample-cells 5 ``` 通过后再跑完整导入。 ### 只导某些尺度 ```powershell & ".\.venv\Scripts\cm93db.exe" import --scale G --scale F ``` ### 强制重导 ```powershell & ".\.venv\Scripts\cm93db.exe" import --force ``` ## 3. 审计 ### 快速审计 ```powershell & ".\.venv\Scripts\cm93db.exe" audit --sample-cells 20 ``` 包括: 1. 数据库 cell / feature / attribute 计数; 2. 每个 DONE cell 的 source count 与数据库 count 对账; 3. Point / Line / Area geometry presence; 4. 随机重新解析源 CM93 cell; 5. 源 feature / attribute count 对比; 6. 从 MySQL `ST_AsWKB` 读回 geometry; 7. 与重新计算的 double precision geometry 做逐顶点比较; 8. sounding raw X/Y/Z、depth、lon/lat 比较。 默认坐标容差: ```text 1e-12 degree ``` 这个容差用于发现数据库序列化/写入造成的精度损失,不是让 importer 人为 round 到该精度。 ### 全源最终审计 完整导入后: ```powershell & ".\.venv\Scripts\cm93db.exe" audit --all-source ``` 这会重新解析所有 DONE cell,耗时明显高于随机抽样,但适合作为母数据库最终验收。 报告自动写入: ```text logs/audit-YYYYMMDD-HHMMSS.json ``` ## 4. offset policy 正式母库默认: ```text --offset-policy embedded ``` 含义: 1. `_m_sor` coverage 自身使用未偏移 cell 坐标建立; 2. 保存 `_wgsox/_wgsoy` 原始值; 3. 对能够匹配 coverage 的普通几何,在 CM93 Mercator 阶段减去对应 offset; 4. 然后使用 CM93 半长轴 `6378388.0` 转换 WGS84 lon/lat; 5. feature JSON 中记录实际应用的 offset 和 coverage match method。 为研究/对照可运行: ```powershell --offset-policy none ``` 但不要把同一个 dataset 混用两种 policy。改变 policy 时应 `--force` 全部重导,并重新执行全源审计。 ## 5. Geometry issue 源 CM93 中可能存在自交 polygon 等问题。 规则: - raw record 永久保留; - `geometry_issue` 记录 Shapely validity / ring assembly 问题; - `geometry_repaired=0`; - 当前版本不自动修复; - 可以保存结构上可编码的 invalid WKB; - 无法形成 geometry 时不伪造 geometry row。 第二阶段 PBF 如需要显示修复,应在发布层制定独立策略,不能修改母数据库事实。