第03章 质检对象谱系与检查项分类法
本章导读
本章对应原报告 4.1 与 4.2,回答技术篇的第一个问题:检什么。4.1 节按对象把质检分成五类,二维矢量、栅格与影像、三维模型、点云、时序与实时各有一套技术路径;真正的分野不是格式,而是判定性质——确定性几何算法、统计与模型推断、必须在线完成。4.2 节再把质量拆成七类可判定的原子检查项,从几何、拓扑、属性,到逻辑与跨层一致性、参考与接边、时相与现势性、元数据与规范性。把三维、点云、时序的问题当成二维矢量来检,是架构设计里最常见的错配,本章要防的就是它。
学习目标
读完本章,你应当能够:
- 按 4.1 节的表复述五类质检对象的核心手段与主要难点,并说出各自最适合的判定方式;
- 解释技术路径的分裂为何决定架构:哪类检查可完全自动化、哪类必须人工确认、哪类只能在线完成;
- 按 4.2 节列出七类检查项,为其中每一类各写出两条可执行的判定条件;
- 说明 ST_MakeValid 一类修复动作为什么必须重跑精度与面积检查,并举出一个修完更错的场景;
- 判断一处缺陷属于几何类、拓扑类还是属性类,并据此选择 GEOS、空间数据库或 SQL 作为实现载体;
- 指出编码与名称映射不一致为什么单表检查永远发现不了,并设计一条跨表校验规则。
4.1 质检对象谱系:五类数据,五套技术路径
| 对象类型 | 典型格式 | 核心质检手段 | 主要难点 |
|---|---|---|---|
| 二维矢量 | Shapefile / GeoPackage / FileGDB / GeoJSON / GeoParquet | 拓扑规则、几何有效性、属性值域、图层间一致性 | 跨图层语义一致性、接边 |
| 栅格与影像 | GeoTIFF / COG / IMG / JP2 | 元数据完整性、NoData、云量、色差、配准、DEM 中误差 | 大文件 IO、概览与金字塔一致性 |
| 三维模型 | OSGB / 3D Tiles / glTF / IFC | 空洞与悬浮物、纹理拉伸、LOD 单调性、坐标精度、瓦片索引 | 缺陷形态非结构化、判据缺量化定义 |
| 点云 | LAS / LAZ / COPC / E57 | 点密度、高程中误差、噪声、分类正确性、拼接精度 | 数据量大、分类质量难自动判定 |
| 时序与实时 | 流数据 / 版本库 / STAC 目录 | 现势性、时间戳一致性、版本连续性、服务可用性 | 必须在运行链路中判定,无法离线补检 |
这张表最重要的信息不是格式,而是技术路径的分裂:二维矢量质检可完全依赖确定性几何算法(成熟、可解释、可复现);三维与点云质检在相当程度上依赖统计与模型推断(概率性、需人工确认);时序数据质检必须在在线链路完成(无法事后补检)。把三类问题当一类处理,是架构设计中最常见的错配。
4.2 检查项分类法:把质量拆成可判定的原子
以下是工程实践中的完整检查项分类,可直接作为规则库骨架(附录 A 给出更细算子清单)。
(1)几何类(确定性,可直接自动判定)
自相交、环未闭合、重复点、极小面积与极小长度、坐标超范围、空几何、几何类型不符、环方向(外壳顺时针、内环逆时针)。这类检查全部可在 OGC Simple Features 语义下形式化,是自动化覆盖率最高的一层。
修复动作的陷阱:ST_MakeValid 与 ogr2ogr -makevalid 已成标准动作,但修复会改变几何形态(面积变化、环结构改变、自相交被拆分为多面)。修复后必须重跑精度与面积检查,否则会出现“修完更错”的隐蔽问题,而这类问题往往在验收现场才暴露。
(2)拓扑类(确定性,但依赖邻域关系)
悬挂节点(undershoot)、过头(overshoot)、伪节点、重叠(overlap)、缝隙(gap 与 sliver)、未打断相交、覆盖一致性(planar enforcement:相邻面必须无缝无叠)、网络连通性与方向。计算代价远高于几何检查——需要空间索引加邻域配对,通常按 tile 切分后另行处理边界带。
(3)属性类(确定性,规则密集)
必填项空值(区分 NULL 与空串)、值域、编码字典、字段长度与字符集、唯一性、格式(正则)、跨字段约束(A 有值则 B 必填)、日期逻辑(竣工早于开工)。最隐蔽的缺陷是编码—名称映射不一致:同一 code 在不同表中对应不同 name,单表检查永远发现不了。
(4)逻辑与跨层一致性类(半确定性,需设计规则)
图层间空间关系(建筑物须落在建筑用地面内、道路中心线须与路面对应)、层级归属(行政区代码与空间范围一致)、面积与长度汇总守恒(子区之和与父区的偏差阈值)、图文一致性(统计报表数值与空间汇总一致)。
(5)参考与接边类
图幅接边(相邻图幅同名要素的几何与属性必须一致;接边后连续、无裂缝与错位;重叠部分高程一致)、影像与矢量套合、与更高精度参考数据比对求中误差、控制资料比对(仅以公开或自设检查点比对,不涉及涉密控制点)。
(6)时相与现势性类
时相标识缺失、更新日期与实际变化不符、多版本时间线断裂、时间字段逻辑(起始不得晚于终止)、同一实体的时态区间不得重叠。现势性抽检的高效做法是:从最新影像或传感器数据抽取变化样本,反向核对数据是否已更新——这是“以新检旧”的思路。
(7)元数据与规范性类
元数据必填项(对齐 ISO 19115-1 与 GB/T 19710 系列)、坐标参照系声明、密级标注、审查图号(地图类成果)、成果目录结构、图层与字段命名规范、数据质量与血缘记录是否随成果提交。
分类法的工程意义:七类检查的实现载体不同——几何类可用 GEOS 或 JTS 一次扫描;拓扑类必须进空间数据库或用拓扑库;属性类适合 SQL;参考类需要外部参照数据集;时相类依赖版本库。规则引擎若不区分这七类,就会出现“用内存计算跑拓扑”的性能灾难。
本章小结
- 五类对象的分野不在格式,而在判定性质:二维矢量可依赖确定性几何算法,三维与点云依赖统计与模型推断,时序数据必须在在线链路完成。
- 把这三类问题当一类处理,是架构设计中最常见的错配,代价通常在性能与误判上同时出现。
- 七类检查项中几何类自动化覆盖率最高,因为它全部可以在 OGC Simple Features 语义下形式化。
- 修复动作不是终点:MakeValid 会改变几何形态,修复后必须重跑精度与面积检查,否则问题会推迟到验收现场才暴露。
- 拓扑类检查的计算代价远高于几何类,需要空间索引与邻域配对,通常按 tile 切分后单独处理边界带。
- 属性类最隐蔽的缺陷是编码与名称映射不一致,只在跨表核对时才现形。
- 七类检查的实现载体不同,规则引擎若不区分,就会出现用内存计算跑拓扑的性能灾难。
思考与练习
- 取你单位一份矢量成果,按 4.2 节的几何类条目逐项跑一遍,记录每项能否自动判定、结果是否可复现。
- 同事认为“三维模型和矢量数据都是空间数据,一套质检规则可以通用”。用 4.1 节的判定性质反驳,并给出至少两条不能通用的理由。
- 某区县成果入库前发现 12 处自相交面,已用 ST_MakeValid 修复。按 4.2 节的提示,写出修复后必须补做的两项检查与判据。
- 为你熟悉的图层设计三条属性类规则,其中一条是跨字段约束,一条是跨表编码校验,并写明不合格的处理方式。
- 对照 4.2 节的七类检查,列出你所在单位规则库目前缺失的类别,并按实现载体排一个补齐顺序。
- 有人认为“接边检查就是看相邻图幅的要素数量是否相等”。用 4.2 节参考与接边类的表述判断这个说法漏掉了什么。