拓扑检查是为了检查出点、线、面数据集本身及不同类型数据集相互之间不符合拓扑规则的对象。主要用于数据编辑和拓扑分析预处理。
SuperMap 提供拓扑检查功能,为点数据集提供 7 种拓扑规则、为线数据集提供 17 种拓扑规则、为面数据集提供 14 种拓扑规则,此外,还提供 7 种适用于不同类型数据集的拓扑规则,可满足常见拓扑检查需求。
拓扑检查还支持属性检查规则,用于检查字段值完整性、合法性、一致性以及字段间或数据集间的业务逻辑关系。属性检查规则与几何拓扑规则共用拓扑检查和自定义拓扑检查方案中的拓扑规则参数。
下面将分别介绍适用于点、线、面数据集的拓扑规则、适用于多种类型数据集的拓扑规则和适用于属性数据的检查规则。
适用于点数据集的规则
| 名称 | 含义 | 图示 |
| 点必须在线上 |
检查点数据集中是否存在未被参考线数据集的线覆盖的点对象,即点必须在参考线数据集的线对象上,包括在线内、线节点和线端点上,但是不能在线外。如高速公路上的收费站,必须设置在高速公路上。 未被线覆盖的点对象将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 点必须在面的边界上 |
检查点数据集中是否存在不在参考面数据集面边界上的点对象,即点对象不能位于参考面数据集的面内和面外。如界碑必须设置在国界线和行政界线上。 不在面边界上的点对象将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 点被面完全包含 |
检查点数据集中是否存在不在参考面数据集中面内部的点对象,即点对象不能位于参考面数据集的面外或面的边界上。如表示省会的点必须设置在省域范围内。 不在面内的点对象将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 点必须被线端点覆盖 |
检查点数据集中是否存在未被参考线数据集的线端点覆盖的点对象,即点只能在参考线数据集中线对象的端点上,而不能在线的节点上、线内其他位置和线外。 未被线端点覆盖的点对象将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 无重复点 |
检查一个点数据集中是否存在重复的点对象。如消防站、学校等公共设施,在地图上以点数据集的形式存在,在同一位置只能存在一个。 重复的点对象将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 点不被面包含 |
检查点数据集中是否存在被参考面数据集的面包含的点对象。若点对象在面边界上或在面外,则被视为正确的拓扑关系。 被面包含的点对象将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 点不被面覆盖 |
检查点数据集(或者点记录集)中被面数据集(或者面记录集)中某一个对象覆盖(位于面对象边界及内部)的点对象。例如需要检查房屋与水面高程点,高程点不能位于房屋面内部及边界。 被面覆盖(位于面对象边界及内部)的点对象将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
适用于线数据集的规则
| 名称 | 含义 | 图示 |
| 线与线无相交 |
检查线数据集中是否存在与参考线数据集的线相交的线对象,即两个线数据集中的所有线对象必须相互分离。 交点将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 线内无相交 |
检查一个线数据集中是否存在两个(或两个以上)相交且共享交点,但并未从交点处打断的线对象。若有端点和线内部接触及端点和端点接触的情况,则被视为正确的拓扑关系。此外,对于相交但不共享交点的线对象,也被视为正确的拓扑关系。如道路数据,当多条行车道在普通路口(十字路口、丁字路口等)相交时,则视为相交且共享交点的情况,应被打断;而多条行车道通过立交桥或隧道相交时,则被视为相交但不共享交点的情况,此时不需要打断。 交点将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 线内无重叠 |
检查一个线数据集中是否存在两个(或两个以上)线对象之间有相互重叠的部分,且重叠部分共享节点。如城市街道,单条街道或多条街道之间可以相交但不能出现相同的路线。 重叠部分将作为拓扑错误生成到结果数据集中。 错误数据集类型:线数据集。 |
![]() |
| 线内无悬线 |
检查一个线数据集中是否存在被定义为悬线的线对象,即线对象的端点没有连接到其他线的内部或线的端点,包括长悬线和短悬线两种情况。如区域边界线等必须闭合的线可用此规则检查。 悬点将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 线内无短悬线 |
检查线数据集中线对象是否是短悬线。 悬线长度小于悬线容限即为短悬线。 错误数据集类型:点数据集。 |
![]() |
| 线内无长悬线 |
检查线数据集中线对象是否是长悬线。 悬线按行进方向延伸指定长度之后与某弧段有交点,则为长悬线。 错误数据集类型:点数据集。 |
![]() |
| 线内无假结点 |
检查一个线数据集中是否存在含有假结点(只连接两条弧段的结点)的线对象,即一个线对象必须与两个(或两个以上)线对象相连接。 假结点将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 线与线无重叠 |
检查线数据集中是否存在与参考线数据集的线重叠的线对象,且重叠部分共享节点,即两个线数据集之间的线对象不能有重合的部分。如交通路线数据中,公路和铁路不能重叠。 重叠部分将作为拓扑错误生成到结果数据集中。 错误数据集类型:线数据集。 |
![]() |
| 线内无相交或无内部接触 |
检查一个线数据集中是否存在两个(或两个以上)线对象在线的节点处或线的内部相交,即线对象只能在端点处与其他线相交,且所有交点必须是线的端点,所有相交的弧段必须被打断。该规则不检查线对象自相交的情况。 交点将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 线内无自交叠 |
检查一个线数据集中是否存在与自身重叠的线对象,即一个线对象本身不能有重叠部分。如在交通数据中,一条道路不能出现重复的路段。 重叠部分将作为拓扑错误生成到结果数据集中。 错误数据集类型:线数据集。 |
![]() |
| 线内无自相交 |
检查一个线数据集中是否存在与自身相交或重叠的线对象,即线对象中不能有重叠(坐标相同)的节点。该规则多用于检查等值线这样的不能与自身相交的线。 自相交产生的交点或重叠部分的端点将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 线被多条线完全覆盖 |
检查线数据集中是否存在没有被参考线数据集的一条或多条线覆盖的线对象。如公交线路必须与道路重合,即被道路数据完全覆盖。 未覆盖的部分将作为拓扑错误生成到结果数据集中。 错误数据集类型:线数据集。 |
![]() |
| 线被面边界覆盖 |
检查线数据集中是否存在没有被参考面数据集的面边界(可以是一个或多个面边界)覆盖的线对象。如表示某一区域边界的线数据(某城区的边界线)必须被这一区域(城区)的边界覆盖。 未被覆盖的部分将作为拓扑错误生成到结果数据集中。 错误数据集类型:线数据集。 |
![]() |
| 线端点必须被点覆盖 |
检查线数据集中是否存在线端点未被参考点数据集的点覆盖的线对象。 未被覆盖的端点将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 线与面无相交 |
检查线数据集中是否存在与参考面数据集的面相交或被面包含的线对象,即线数据集与参考面数据集不能存在交集。 线、面数据集的交集部分将作为拓扑错误生成到结果数据集中。 错误数据集类型:线数据集。 |
![]() |
| 线必须与面相交 |
检查被检查数据集中的线对象是否与参考面数据集中的面对象存在相交部分。边界情况下,线端点落在面边界上或与面节点重合,不视为相交;线与面边界重合,不视为相交。 不与参考面相交的线对象将作为拓扑错误生成到结果数据集中。 错误数据集类型:线数据集。 |
![]() |
| 线内无打折 |
检查线数据集中是否存在连续四个节点构成的两个夹角的角度都小于所给的角度值(单位为度),若两个夹角都小于角度值,则认为线对象在中间两个节点处打折。 第一个打折点将作为错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 线内无锐角 |
检查线数据集中是否存在小于某个给定角度的角。若连续三个点组成的夹角小于给定的角度,则判断为锐角。 锐角顶点为错误点将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 线段长度必须等于阈值 |
检查线要素的每个线段长度是否等于设定的阈值,距离单位为 m;在地理坐标系下,线段长度按测地线距离计算。边界情况下,线段长度在容差范围内等于阈值时视为正确,容差范围默认为毫米精度(1e-3)。 长度不满足要求的线段将作为拓扑错误生成到结果数据集中。 错误数据集类型:线数据集。 |
![]() |
适用于面数据集的规则
| 名称 | 含义 | 图示 |
| 面内无重叠 |
检查一个面数据集中是否存在两个(或两个以上)相互重叠的面对象,包括部分重叠和完全重叠。此规则多用于一个区域不能同时属于两个(或两个以上)面对象的情况,如行政区划面,一个地区不能同时属于两个行政区管辖。 重叠部分将作为拓扑错误生成到结果数据集中。 错误数据集类型:面数据集。 |
![]() |
| 面内无缝隙 |
检查一个面数据集中相邻面对象之间是否存在空隙,即相邻面对象之间的边界必须重合,且面对象内部不能出现被挖空(岛洞多边形)的情况。此规则多用于检查一个面数据集中相邻区域之间有无空隙,如土地利用图斑数据,要求不能有未定义土地利用类型的斑块。 空隙部分将作为拓扑错误生成到结果数据集中。 错误数据集类型:面数据集。 |
![]() |
| 面与面无重叠 |
检查面数据集中是否存在与参考面数据集的面重叠的面对象,包括部分重叠和完全重叠,即面数据集内的各个面对象之间不能存在交集。对于如水域与旱地这种不能共用同一区域的数据,可以用此规则检查。 重叠部分将作为拓扑错误生成到结果数据集中。 错误数据集类型:面数据集。 |
![]() |
| 面被多个面覆盖 |
检查面数据集中是否存在没有被参考面数据集的面覆盖的面对象,即待检查面数据集的一个或多个面必须完全覆盖于参考面数据集中的面对象。此规则多用于按某一规则相互嵌套的面数据,如区域图中的省域必须被该省内的所有县界完全覆盖。 未覆盖的部分将作为拓扑错误生成到结果数据集中。 错误数据集类型:面数据集。 |
![]() |
| 面被面包含 |
检查面数据集中是否存在没有被参考面数据集的面包含的面对象,即待检查面数据集的面必须是参考面数据集中面对象的子集。对于如动物活动区域必须在整个研究区内这种属于包含关系的面数据,可以用此规则检查。 未被包含的面对象整体将作为拓扑错误生成到结果数据集中。 错误数据集类型:面数据集。 |
![]() |
| 面边界被多条线覆盖 |
检查面数据集中是否存在没有被参考线数据集的线覆盖的面边界。面数据中不能存储一些边界线的属性,此时需要专门的边界线数据,用来存储区域边界的不同属性信息,要求边界线与区域完全重合。 未被覆盖的边界将作为拓扑错误生成到结果数据集中。 错误数据集类型:线数据集。 |
![]() |
| 面边界被边界覆盖 |
检查面数据集中是否存在没有被参考面数据集中一个或多个面对象边界覆盖的面边界。此规则多用于某一面数据集的面对象由另一个面数据集中的一个或多个面对象组成的数据,如区域图中的省域是由该省内的所有县域组成,二者共用相同的边界。 未被覆盖的边界将作为拓扑错误生成到结果数据集中。 错误数据集类型:线数据集。 |
![]() |
| 面包含点 |
检查面数据集中是否存在没有包含参考点数据集中点的面对象,即参考数据集中的点必须位于面内,而不能位于面外或面边界上,且一个面对象内可包含一个或多个点。 未包含点的面对象将作为拓扑错误生成到结果数据集中。 错误数据集类型:面数据集。 |
![]() |
| 面边界无交叠 |
检查面数据集中是否存在与参考面数据集的面边界有重叠部分的面边界。该规则不检查面内边界交叠的情况。 边界的重叠部分将作为拓扑错误生成到结果数据集中。 错误数据集类型:线数据集。 |
![]() |
| 面内无锐角 |
检查面数据集中是否存在小于某个给定角度的锐角。若连续三个点组成的夹角小于给定的角度,则判断为锐角。 锐角顶点为错误点将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 无狭长面 |
检查面要素的薄度比率是否大于容限。要素面积为 A、周长为 P 时,薄度比率 T = 4π(A/P²)。 薄度比率不大于容限的面对象将作为拓扑错误生成到结果数据集中。 错误数据集类型:面数据集。 |
![]() |
| 不能有相邻面 |
检查同一数据集中的面对象之间是否存在边界接触(相接)。边界情况下,存在相交时即使有边界相接也不属于相邻面;包含或被包含时即使有边界相接也不属于相邻面;洞内有实体面边界接触属于相邻面。 相邻面的接触边界将作为拓扑错误生成到结果数据集中。 错误数据集类型:面数据集。 |
![]() |
| 面不能与其他面相邻 |
检查被检查数据集的面对象是否与参考面数据集的面对象存在边界接触。边界情况下,存在相交时即使有边界相接也不属于相邻面;包含或被包含时即使有边界相接也不属于相邻面;洞内有实体面边界接触属于相邻面。 与参考面相邻的接触边界将作为拓扑错误生成到结果数据集中。 错误数据集类型:面数据集。 |
![]() |
| 面内无自相交 |
每个面要素的边界不得与自身的其他边界相交,检测自相交产生的交点。 同一个子部件某条线段端点落在另一条线段上或与端点重合该端点计入错误。边界折叠情况不算。 不同子部件边界之间相交产生的交点也将计入错误。 不同子部件边界之间存在重叠,在某条边界线段内的其他边界线段的端点将计入错误。 错误数据集类型:点数据集。 |
![]() ![]() |
| 面内无自相交(要素) |
每个面要素的边界不得与自身相交,检测自相交产生的重复顶点,输出整个错误面要素。 同一个子部件某条线段端点落在另一条线段上或与端点重合时,该要素计入错误。边界折叠情况不算。不同子部件边界之间相交或重叠时,该要素计入错误。 错误数据集类型:面数据集。 |
![]() |
| 最小面 |
检查面要素的面积是否小于容限值。 面积小于容限值的面对象将作为拓扑错误生成到结果数据集中。 错误数据集类型:面数据集。 |
![]() |
适用于多类型数据集的规则
以下各拓扑规则适用于一种或多种类型的数据集,包括点、线、面数据集自身或两个数据集之间。
| 名称 | 含义 | 图示 |
| 无复杂对象 |
检查线或面数据集自身是否存在复杂对象(对象内包含一个或多个子对象,如平行线)。 复杂对象将作为拓扑错误生成到结果数据集中。 错误数据集类型:线数据集或面数据集。 |
![]() |
| 要素节点重复 |
检查线或面数据集中是否存在连续的重复顶点,即相邻两个顶点的坐标相同。边界情况下,首尾节点重复不作为错误;上一个子部件的最后一个节点与下一个子部件的第一个节点重复,也不作为错误。 重复顶点将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
| 无参数化对象 |
检查数据集中是否仅包含线和面类型的几何对象,不能包含其他类型的几何对象,如圆弧、椭圆等。 不符合要求的对象将作为拓扑错误生成到结果数据集中。 错误数据集类型:线数据集或面数据集。 |
![]() |
| 节点距离必须大于容限 |
检查点、线、面数据集自身或两个数据集之间各对象的节点距离是否小于或等于设定的容限值。 不大于容限的节点将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 注:该规则是由拓扑预处理操作延伸得出的规则。建议在检查该拓扑规则时,不要同时勾选"拓扑预处理"操作,否则该规则检查出的错误将会在拓扑预处理时被自动修复,无法得出预期结果。 |
![]() |
| 线段相交处必须存在交点 |
检查线、面数据集自身或两个数据集之间,线与线的十字相交处是否存在节点,且此节点至少存在于两个相交线段中的一个。两条线对象的端点相连接则被视为正确的拓扑关系。注意:两条线段端点相接的情况不违反规则。 若相交处没有节点,系统会将此节点计算出来作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 注:该规则是由拓扑预处理操作延伸得出的规则。建议在检查该拓扑规则时,不要同时勾选"拓扑预处理"操作,否则该规则检查出的错误将会在拓扑预处理时被自动修复,无法得出预期结果。 |
![]() |
| 节点之间必须互相匹配 |
检查线、面数据集自身或两个数据集之间,点数据集和线数据集、点数据集和面数据集之间,在当前节点的容限范围内,是否存在线对象(或面边界)且线上有相应的节点与之匹配。 对于未匹配的点,系统通过在线上做垂线的方式计算出匹配点的位置,该匹配点将作为拓扑错误存储到结果数据集中。 错误数据集类型:点数据集。 注:该规则是由拓扑预处理操作延伸得出的规则。建议在检查该拓扑规则时,不要同时勾选"拓扑预处理"操作,否则该规则检查出的错误将会在拓扑预处理时被自动修复,无法得出预期结果。 |
![]() |
| 线或面边界无冗余节点 |
检查线或面数据集自身的线对象或面边界是否存在有冗余节点,即两节点之间不能存在其他共线节点,这些共线节点为冗余节点。 冗余节点将作为拓扑错误生成到结果数据集中。 错误数据集类型:点数据集。 |
![]() |
适用于属性数据的规则
以下属性检查规则适用于矢量数据集的属性质检。选择属性检查规则时,系统根据规则类型显示对应参数,并对必填字段、字段类型、值域范围、SQL 语句等内容进行校验。
| 名称 | 含义 |
| 非空检查 |
检查指定字段值是否为空。文本字段为空字符串或去除首尾空格后为空时判定为错误;数值型和日期型字段仅将 NULL 判定为空。 支持一次选择多个检查字段,任一字段为空即生成属性检查错误。 |
| 枚举值检查 |
检查指定字段值是否属于预设枚举值集合。字段值不在枚举集合中时生成属性检查错误。 枚举值可通过下拉选择或手动输入,多个枚举值使用英文分号(;)分隔。 |
| 唯一值检查 |
检查指定字段值是否唯一,用于识别重复记录。 NULL 值不参与唯一性比较。该规则仅支持单字段检查。 |
| 长度检查 |
检查字符型字段值长度是否满足约束条件。字段值长度不满足配置的比较关系和长度值时生成属性检查错误。 字段长度按字符长度计算,不按字节长度计算。 |
| 值域检查 |
检查数值型字段值是否落在设定值域范围内。支持仅设置最小值、仅设置最大值、闭区间和开区间等约束。 同时设置最小值和最大值时,最小值不能大于最大值。 |
| 字段关系检查 |
检查同一数据集中同一记录的两个字段值是否满足指定比较关系。 支持等于、不等于、大于、大于等于、小于、小于等于等比较关系。两个字段的类型需一致或可比较。 |
| 关联一致性检查 |
基于关联字段检查两个数据集之间的记录关联和属性一致性,用于发现检查数据缺失、参考数据多余或两侧字段值不一致等问题。 该规则需要配置检查数据和参考数据。两侧关联字段及比较字段类型需一致或可兼容。 |
| 几何属性一致性检查 |
检查属性字段值与对象几何面积或几何长度是否一致。 面数据支持面积检查,线数据支持长度检查。属性字段需为数值型字段,允许误差需大于等于 0。 |
| 自定义SQL检查 |
通过 SQL 语句表达复杂属性检查逻辑。符合 SQL 条件的记录视为检查通过;不符合SQL 条件的记录视为问题记录,并将这些记录输出到结果数据集中。 SQL 语句需为查询语句,返回结果需包含用于定位结果记录的字段。 |

















































