每个要素单看都没毛病,问题出在它们之间的关系上。

一份管线成果交到手上,道路、地块、管线排布整齐,放大到某个路口,两条线端点对得几乎分毫不差。等到按地块统计面积,总数比台账多出几百平方米;叠到影像上报"面不闭合",一大片要素被跳过。此前的检查都过了:坐标没超范围、面都闭合、字段没有空值。

一、什么是拓扑问题

拓扑问题的共同特征是:每个要素的几何本身都对,坐标、形状、节点数都没错,错的是它们之间的关系。判断方法一句话——单看每个要素都没问题,放在一起就出问题,那多半是拓扑。

两条道路中心线各自都在限差内,端点却差 30 厘米没接上;两个相邻地块各自都闭合,中间留了 4 厘米的缝。几何检查逐个做,看到的全是合格;拓扑要跨要素比较,才看得见它们之间的事。

二、四类常见问题

反复出现的就四类,共同点是肉眼不易发现:屏幕缩小几级,厘米级的缝和重叠都压成一个像素。

悬挂点:该接的没有接上

一条线应当接到另一条线上,实际没接上,端点悬在空中,差几十厘米是常见量级。与之相邻的一种叫"过头",线穿过该停的位置又多走了一截,端点落到目标线另一侧。两种常一起出现,成因相同,处理方式不同。

怎么发现:按设定的捕捉容差扫描线的全部端点,凡端点周围容差范围内没有其他线的节点或端点,判为悬挂。过头则要看端点是否越过目标线且没有落点。

典型成因:数字化时没开捕捉,或捕捉容差设得比鼠标落点精度还小;从别的图层复制要素过来,位置带着原图层偏移;分割操作时随手在线上点了一下,没有落在节点上。

后果是连通性断掉。做网络分析,这一段走不通;做构面,这个位置合不拢。

悬挂点

自相交:一个要素自己打了结

一条线或一个面自己和自己交叉,形成回环。单看这条线,起点终点都在,节点顺序也没乱,只有把它当一个整体看,才发现中间绕回去了。

怎么发现:对每个要素单独做自相交检测,看是否存在非相邻线段的交点。线的自交多表现为一个小圈,圈出的区域构不成有效面;面的自交会让内外部无法区分,算出来的面积出现负值,或明显小于图上目测。

典型成因:节点被误拖动;简化算法压缩节点时把折角拉过了头;从 CAD 图纸转换过来,样条被打散成折线后出现回折;手工描绘弯曲地物时手一抖画了个来回。

自交要素在多数几何库里属于非法几何,显示出来看着正常,一参与运算就报错,报错位置还往往不指向真正打结处。线的自交还会让长度统计偏长,绕回去的那一圈被算进了里程。

自相交

重叠与重复:同一段位置出现了两次

两条线压在一起,或者同一个要素录了两遍。前者是空间上的重复,后者是记录上的重复,两者常同时出现。

怎么发现:线压线用重合长度判定,两段线在容差内走向一致、重合长度超过阈值即判重叠;面重叠用相交面积判定,相交面积占其中较小者比例超过阈值即判重叠。完全一致的要素可用几何哈希直接去重。

典型成因:两个人分头数字化了同一段;分批导入时把上一批文件又导了一次;数据更新新增了要素,却没删旧版本;复制粘贴时原要素没删。

重复带来的偏差是成倍的:一条 200 米的管线录两遍,长度统计多 200 米。这种错在图上一点看不出来,只有出总数时才显形。

缝隙与碎片:面与面之间没贴住

两个本该严丝合缝的面之间留了细缝,或者一次切分之后留下一堆碎片小面。

怎么发现:对面层做缝隙检测,相邻面之间未被任何面覆盖的狭长区域即为缝隙,宽度常常只有几厘米;碎片面按面积阈值筛,小于阈值的单独列出人工判。

典型成因:两个作业员分头做相邻图幅,接边处各画各的;不同来源数据拼接,边界本来就对不上;按地类切分时用的裁剪边界不一致;合并小图斑后留下的残余。

缝隙

缝隙对面积统计的影响是系统性的,几十条缝加起来可能比一块正常地块还大。碎片小面则让统计口径失真,几百个零点几平方米的面混在成果里,汇总时全成了噪声。

悬挂点、自相交、重叠重复与缝隙碎片四类拓扑问题的图形差异示意

三、为什么会出问题

一是多来源拼接。测绘成果、竣工资料、CAD 图纸混在同一层,精度水平不同,接边处容易错位。

二是比例尺混用。1:500 的图与 1:2000 的图叠在一起,后者撑不住前者的容差要求。

三是编辑时没捕捉。人工绘制的每个节点都带着手的位置误差。

四是格式转换后的精度截断。坐标小数位被裁短,原本重合的两点变成差几毫米的两点,只影响"算不算重合"这一层。

四、检查怎么做:先定容差,再定顺序

容差是核心参数。同一个差 10 厘米的端点,容差 20 厘米时算正常连接,5 厘米时就是悬挂。所以先定容差,依据是成果的精度指标和用途。

捕捉容差一般取平面精度的 1 到 2 倍;面积阈值看用途,地块统计取统计单元面积的一小部分,构筑物管理按面积下限定。

容差设成 0,等于要求两点坐标完全一致,实际数据里几乎不存在,结果是满屏报警,真正的错被淹掉。设得过大,两条独立的线被误判成一条,缝隙当成正常接边,数据就错了。

顺序:重复、自交、悬挂、缝隙。先去重,避免干扰自交检测;再修自交,非法几何不修,后面的构面与叠加都跑不动;然后接悬挂;末了查缝隙。

拓扑检查顺序示意:先去重,再修自交,然后接悬挂,末了查缝隙

五、发现之后怎么处理

合并用于重复要素,风险在属性冲突:两条记录字段值不同,保留哪条要有依据,不能按导入先后定。

打断用于自交和过头,风险是打散了原本连续的业务对象,管线起止点跟着变。

延伸用于悬挂,风险是方向错了会造出假连接;延伸距离应小于容差,超过就该回头查原始数据。

删除用于碎片和明显重复,风险尤重,删错了不留痕迹。凡是删除都应先出清单、逐条确认、业务负责人签字,清单与成果一并归档。这道手续不是流程负担,它是事后能回答"这个面为什么没了"的凭据。

六、验收时怎么问:三个问题

一问做没做拓扑检查,覆盖了哪几类。

二问容差定多少,依据是什么。

三问问题清单留没留,每条是合并、打断、延伸还是删除,谁确认的。

三问都答得上来,可用性基本有底。

七、五个常见问题

一是跳过检查直接上图。图上没问题,是屏幕分辨率把厘米级的错藏住了,一算面积就露。

二是容差设成 0 或设得过大。前者报警太多没人看,后者把真问题当正常。

三是把检查报告当整改结果。报告只说明查出多少问题,不说明改了多少。

四是只查线不查面。缝隙与碎片藏在填充色下面,恰恰是面积统计出错的来源。

五是发现问题直接批量删。删除不可逆,还抹掉了成因线索。

八、可以带走的判断

拓扑检查不是交付前的一道形式,它是后面所有统计与叠加能成立的前提。

中科图新 | 让每一寸空间都有数字灵魂