地理数据库拓扑规则和拓扑错误修复

本主题仅适用于 ArcGIS for Desktop Standard 和 ArcGIS for Desktop Advanced。

许可许可:

您可以在 ArcGIS for Desktop Basic 中的要素间创建简单的临时拓扑关系。创建或编辑地理数据库拓扑需要 ArcGIS for Desktop StandardArcGIS for Desktop Advanced 级别许可。

根据组织要保留的最重要的空间关系的不同,您有多种可在地理数据库中执行的拓扑规则可供选择。您应当仔细计划将施加到要素上的空间关系。一些拓扑规则控制着指定要素类内部的要素关系,而另外一些拓扑规则控制着两个不同的要素类或子类型中要素之间的关系。可在同一要素类或不同要素类中要素的子类型之间定义拓扑规则。例如,可以要求街道要素必须在两端都与其他街道要素相连,除非街道属于死胡同 (cul-de-sac) 或死角子类型。

可以将多种拓扑关系应用到地理数据库中的要素。一个经过合理设计的地理数据库应只具有组织需要的定义关键空间关系的拓扑规则。

许多拓扑冲突都有可用于纠正错误的修复方案。但是一些拓扑规则没有预定义的修复方式。发现拓扑错误后,您可以使用“修复拓扑错误”工具 修复拓扑错误工具 选择地图上的错误,或从“错误检查器”中选择错误。

有关可用拓扑规则的详细信息和这些规则的示例,请参见 ArcGIS Geodatabase Topology Rules PDF 文档。

如果此连接失效,可从 ArcGIS 安装目录中的 \Documentation 文件夹打开 topology_rules_poster.pdf。要查看此文档,您需要安装 Adobe Reader

面规则

拓扑规则

规则描述

可能的修复方式

示例

必须大于集群容差

要求要素在验证过程中不折叠。此规则是拓扑的强制规则,应用于所有的线和面要素类。在违反此规则的情况下,原始几何将保持不变。

删除:基于拓扑的集群容差设置,“删除”修复可移除在验证过程中会发生折叠的面要素。此修复可应用至一个或多个“必须大于集群容差”错误。

面必须大于集群容差

任何将在验证拓扑时折叠的面要素(如以红色显示的要素)都是一个错误。

不能重叠

要求面的内部不重叠。面可以共享边或折点。当某区域不能属于两个或多个面时,使用此规则。此规则适用于行政边界(如“邮政编码”区或选举区)以及相互排斥的地域分类(如土地覆盖或地貌类型)。

剪除:“剪除”修复从每个引发错误的要素中移除几何的重叠部分并在原来的位置留下了空隙或空白。此修复可应用于一个或多个选中的“不能重叠”错误。

合并:“合并”修复向一个要素添加重叠的部分并从其他违反规则的要素中将此部分剪除。您需要使用“合并”对话框选择接收重叠部分的要素。此修复仅可应用于一个“不能重叠”错误。

创建要素:“创建要素”修复使用错误形状创建新的面要素,并从各要素中移除重叠部分,这将导致创建要素几何的平面制图表达产生错误。此修复可应用于一个或多个选中的“不能重叠”错误。

不能重叠

不能有空隙

此规则要求单一面之中或两个相邻面之间没有空白。所有面必须组成一个连续表面。表面的周长始终存在错误。您可以忽略这个错误或将其标记为异常。此规则用于必须完全覆盖某个区域的数据。例如,土壤面不能包含空隙或具有空白,这些面必须覆盖整个区域。

创建要素:“创建要素”修复使用形成空隙的错误线形状的闭合环创建新的面要素。此修复可应用于一个或多个选中的“不能有空隙”错误。如果您选择两个错误并使用“创建要素”修复,结果是每个环形都成一个面要素。如果您希望得到一个多部分 (multipart) 要素,则需要选中各新要素并单击“编辑器”菜单中的“合并”。请注意,形成要素类的外部边界的环将会出错。使用“创建要素”修复此特定错误会创建重叠面。请记住,您可以将此错误标记为异常。

不能有空隙

您可以使用“创建要素”在中心的空白处创建新面。也可以使用“创建要素”或在外部边界上将错误标记为异常。

不能与其他要素重叠

要求一个要素类(或子类型)面的内部不得与另一个要素类(或子类型)面的内部相重叠。两个要素类的面可以共享边或折点,或完全不相交。当某区域不能属于两个单独的要素类时,使用此规则。此规则适用于结合两个相互排斥的区域分类系统(如区域划分和水体类型,其中,在区域划分类中定义的区域无法在水体类中也进行定义,反之亦然)。

剪除:“剪除”修复从每个引发错误的要素中移除重叠部分并在原来的位置保留空隙或空白。此修复可应用于一个或多个选中的“不能与其他要素重叠”错误。

合并:“合并”修复向一个要素添加重叠的部分并从其他违反规则的要素中将此部分剪除。您需要使用“合并”对话框选择接收重叠部分的要素。此修复仅可应用于一个“不能与其他要素重叠”错误。

不能与其他要素重叠

必须被其他要素的要素类覆盖

要求一个要素类(或子类型)中的面必须向另一个要素类(或子类型)中的面共享自身所有的区域。第一个要素类中若存在未被其他要素类的面覆盖的区域则视作错误。当一种类型的区域(如一个州)应被另一种类型的区域(如所有的下辖县)完全覆盖时,使用此规则。

剪除:“剪除”修复移除引发错误的每个要素的非重叠部分,这样两个要素类中各要素的边界都将相同。此修复可应用于一个或多个选中的“必须被其他要素的要素类覆盖”错误。

创建要素:“创建要素”修复根据现有面的未重叠部分创建新的面要素,这样两个要素类中每个要素的边界都将相同。此修复可应用于一个或多个选中的“必须被其他要素的要素类覆盖”错误。

必须被其他要素的要素类覆盖

必须互相覆盖

要求一个要素类(或子类型)的面必须与另一个要素类(或子类型)的面共享双方的所有区域。面可以共享边或折点。任何一个要素类中存在未与另一个要素类共享的区域都视作错误。当两个分类系统用于相同的地理区域时使用此规则,在一个系统中定义的任意指定点也必须在另一个系统中定义。通常嵌套的等级数据集需要应用此规则,如人口普查区块和区块组或小分水岭和大的流域盆地。此规则还可应用于非等级相关的面要素类(如土壤类型和坡度分类)。

剪除:“剪除”修复移除引发错误的每个要素的非重叠部分,这样两个要素类中各要素的边界都将相同。此修复可应用于一个或多个选中的“必须互相覆盖”错误。

创建要素:“创建要素”修复根据现有面的未重叠部分创建新的面要素,这样两个要素类中每个要素的边界都将相同。此修复可应用于一个或多个选中的“必须互相覆盖”错误。

必须互相覆盖

必须被其他要素覆盖

要求一个要素类(或子类型)的面必须包含于另一个要素类(或子类型)的面中。面可以共享边或折点。在被包含要素类中定义的所有区域必须被覆盖要素类中的区域所覆盖。当指定类型的区域要素必须位于另一类型的要素中时,使用此规则。当建模作为较大范围区域的子集区域(如森林中的管理单位或区块组中的区块)时,此规则非常有用。

创建要素:“创建要素”修复根据现有面的未重叠部分创建新的面要素,这样两个要素类中每个要素的边界都将相同。此修复可应用于一个或多个选中的“必须被其他要素覆盖”错误。

必须被其他要素覆盖

边界必须被其他要素覆盖

要求面要素的边界必须被另一要素类中的线覆盖。此规则在区域要素需要具有标记区域边界的线要素时使用。通常在区域具有一组属性且这些区域的边界具有其他属性时使用。例如,宗地可能与其边界一同存储在地理数据库中。每个宗地可能由一个或多个存储着与其长度或测量日期相关的信息的线要素定义,而且每个宗地都应与其边界完全匹配。

创建要素:“创建要素”修复方式使用产生错误的面要素的边界线段创建新的线要素。此修复可应用于一个或多个选中的“边界必须被其他要素覆盖”错误。

边界必须被其他要素覆盖

面边界必须被其他要素的边界覆盖

要求一个要素类(或子类型)中的面要素的边界被另一个要素类(或子类型)中面要素的边界覆盖。当一个要素类中的面要素(如住宅小区)由另一个类(如宗地)中的多个面组成,且共享边界必须对齐时,此规则非常有用。

面边界必须被其他要素的边界覆盖

包含点

要求一个要素类中的面至少包含另一个要素类中的一个点。点必须位于面要素中,而不是边界上。当每个面至少应包含一个关联点时(如宗地必须具有地址点),此规则非常有用。

创建要素:“创建要素”修复在引发错误的面要素的质心处创建新的点要素。保证创建的点要素在面要素中。此修复可应用于一个或多个选中的“包含点”错误。

包含点

上方的面是一个错误,因为它不包含点。

包含一个点

要求每个面包含一个点要素且每个点要素落在单独的面要素中。如果在面要素类的要素和点要素类的要素之间必须存在一对一的对应关系(如行政边界与其首都),此规则非常有用。每个点必须完全位于一个面要素内部,而每个面要素必须完全包含一个点。点必须位于面要素中,而不是边界上。

包含一个点

位于上方的面要素是一个错误,因为它包含多个点。当这些点位于面的外部时是错误的。

面规则

线规则

拓扑规则

规则描述

可能的修复方式

示例

必须大于集群容差

要求要素在验证过程中不折叠。此规则是拓扑的强制规则,应用于所有的线和面要素类。在违反此规则的情况下,原始几何将保持不变。

删除:基于拓扑的集群容差设置,“删除”修复可移除在验证过程中会发生折叠的线要素。此修复可应用至一个或多个“必须大于集群容差”错误。

线必须大于集群容差

任何将在验证拓扑时折叠的线要素(如以红色显示的要素)都会是一个错误。

不能重叠

要求线不能与同一要素类(或子类型)中的线重叠。例如,当河流要素类中线段不能重复时,使用此规则。线可以交叉或相交,但不能共享线段。

剪除:“剪除”修复从引发错误的要素移除重叠线段。必须选择将从中移除错误的要素。如果有重复的线要素,请选择要通过“剪除”对话框删除的线要素。请注意,“剪除”修复将创建多部分要素,因此如果重叠线段不在线要素的起始或末尾处,可能需要使用“高级编辑”工具条中的“拆分”命令创建单部分要素。此修复仅可应用于一个选中的“不能重叠”错误。

不能重叠

不能相交

要求相同要素类(或子类型)中的线要素不能彼此相交或重叠。线可以共享端点。此规则适用于绝不应彼此交叉的等值线,或只能在端点相交的线(如街段和交叉路口)。

剪除:“剪除”修复从引发错误的要素移除重叠线段。必须选择将从中移除错误的要素。如果有重复的线要素,请选择要通过“剪除”对话框删除的线要素。请注意,“剪除”修复将创建多部分要素,因此如果重叠线段不在线要素的起始或末尾处,可能需要使用“高级编辑”工具条中的“拆分”命令创建单部分要素。此修复仅可应用于一个“不能相交”错误。

分割:“分割”修复用于在交点处分割相互交叉的线要素。如果两条线在某一点处交叉,在该位置使用“分割”修复将生成四个要素。分割后的要素将保留原始要素中的属性。如果使用分割策略,属性将进行相应更新。此修复可应用于一个或多个“不能相交”错误。

不能相交

不能与其他要素相交

要求一个要素类(或子类型)中的线要素不能与另一个要素类(或子类型)中的线要素相交或重叠。线可以共享端点。当两个图层中的线绝不应当交叉或只能在端点处发生相交时(如街道和铁路),使用此规则。

剪除:“剪除”修复从引发错误的要素移除重叠线段。必须选择将从中移除错误的要素。如果有重复的线要素,请选择要通过“剪除”对话框删除的线要素。请注意,“剪除”修复将创建多部分要素,因此如果重叠线段不在线要素的起始或末尾处,可能需要使用“高级编辑”工具条中的“拆分”命令创建单部分要素。此修复仅可应用于一个“不能与其他要素相交”错误。

分割:“分割”修复用于在交点处分割相互交叉的线要素。如果两条线在某一点处交叉,在该位置使用“分割”修复将生成四个要素。分割后的要素将保留原始要素中的属性。如果使用分割策略,属性将进行相应更新。此修复可应用于一个或多个“不能与其他要素相交”错误。

不能与其他要素相交

不能有悬挂点

要求线要素的两个端点必须都接触到相同要素类(或子类型)中的线。未连接到另一条线的端点称为悬挂点。当线要素必须形成闭合环时(例如由这些线要素定义面要素的边界),使用此规则。它还可在线通常会连接到其他线(如街道)时使用。在这种情况下,可以偶尔违反规则使用异常,例如死胡同 (cul-de-sac) 或没有出口的街段的情况。

延伸:“延伸”修复用于在线要素能够在指定距离内捕捉到其他线要素的情况下,延伸线要素的悬挂端点。如果在指定的距离内未找到要素,要素将不会按指定的距离延伸。另外,如果选择多个错误,则修复将跳过无法延伸的要素然后试图处理列表中的下一个要素。无法延伸的要素的错误将保留在“错误检查器”对话框中。如果距离值为 0,线将一直延伸直至这些线遇到能捕捉到的要素。此修复可应用于一个或多个“不能有悬挂点”错误。

修剪:如果在指定距离内发现交点,“修剪”修复会修剪悬挂线要素。如果在所指定的距离内未发现要素,则不会修剪此要素,如果指定距离大于出错要素的长度也不会删除此要素。如果距离值为 0,线将被修剪直至遇到交点。如果没有找到交点,将不会修剪要素,修复将会试图修剪出错的下一个要素。此修复可应用于一个或多个“不能有悬挂点”错误。

捕捉:“捕捉”修复会将悬挂线要素捕捉到指定距离内最近的线要素。如果在所指定距离内不存在线要素,则不会捕捉该线。“捕捉”修复将悬挂线捕捉到指定距离内发现的最近的要素。它首先搜索要捕捉到的端点,然后是折点,最后捕捉到要素类中线要素的边。“捕捉”修复可应用于一个或多个“不能有悬挂点”错误。

不能有悬挂点

不能有伪结点

要求线在每个端点处至少连接两条其他线。连接到一条其他线(或到其自身)的线被认为是包含了伪结点。在线要素必须形成闭合环时使用此规则,例如由这些线要素定义面的边界,或逻辑上要求线要素必须在每个端点连接两条其他线要素的情况。河流网络中的线段就是如此,但需要将一级河流的源头标记为异常。

合并至最长的要素:“合并至最长的要素”修复会将较短线的几何合并到最长线的几何中。将保留最长线要素的属性。此修复可应用于一个或多个“不能有伪结点”错误。

合并:“合并”修复将一个线要素的几何添加到引发错误的其他线要素中。您必须选择要合并到的线要素。此修复可应用于一个选中的“不能有伪结点”错误。

不能有伪结点

不能相交或内部接触

要求一个要素类(或子类型)中的线必须仅在端点处接触相同要素类(或子类型)的其他线。任何其中有要素重叠的线段或任何不是在端点处发生的相交都是错误。此规则适用于线只能在端点处连接的情况,例如地块线必须连接(仅连接到端点)至其他地块线,并且不能相互重叠。

剪除:“剪除”修复从引发错误的要素移除重叠线段。必须选择将从中移除错误的要素。如果有重复的线要素,请选择要通过“剪除”对话框删除的线要素。“剪除”修复将创建多部分要素,因此如果重叠线段不在线要素的起始或末尾处,可能需要使用“高级编辑”工具条中的“拆分”命令创建单部分要素。此修复仅可应用于一个选中的“不能相交或内部接触”错误。

分割:“分割”修复用于在交点处分割相互交叉的线要素。如果两条线在某一点处交叉,在该位置使用“分割”修复将生成四个要素。分割后的要素将保留原始要素中的属性。如果使用分割策略,属性将进行相应更新。此修复可应用于一个或多个“不能相交或内部接触”错误。

不能相交或内部接触

不能与其他要素相交或内部接触

要求一个要素类(或子类型)中的线必须仅在端点处接触另一要素类(或子类型)的其他线。任何其中有要素重叠的线段或任何不是在端点处发生的相交都是错误。当两个图层中的线必须仅在端点处连接时,此规则非常有用。

剪除:“剪除”修复从引发错误的要素移除重叠线段。必须选择将从中移除错误的要素。如果有重复的线要素,请选择要通过“剪除”对话框删除的线要素。“剪除”修复将创建多部分要素,因此如果重叠线段不在线要素的起始或末尾处,可能需要使用“高级编辑”工具条中的“拆分”命令创建单部分要素。此修复仅可应用于一个选中的“不能与其他要素相交或内部接触”错误。

分割:“分割”修复用于在交点处分割相互交叉的线要素。如果两条线在某一点处交叉,在该位置使用“分割”修复将生成四个要素。分割后的要素将保留原始要素中的属性。如果使用分割策略,属性将进行相应更新。此修复可应用于一个或多个“不能与其他要素相交或内部接触”错误。

不能与其他要素相交或内部接触

不能与其他要素重叠

要求一个要素类(或子类型)中的线不能与另一个要素类(或子类型)中的线要素重叠。线要素无法共享同一空间时使用此规则。例如道路不能与铁路重叠,或洼地子类型的等值线不能与其他等值线重叠。

剪除:“剪除”修复从引发错误的要素移除重叠线段。必须选择将从中移除错误的要素。如果有重复的线要素,请选择要通过“剪除”对话框删除的线要素。“剪除”修复将创建多部分要素,因此如果重叠线段不在线要素的起始或末尾处,可能需要使用“高级编辑”工具条中的“拆分”命令创建单部分要素。此修复仅可应用于一个“不能与其他要素重叠”错误。

不能与其他要素重叠

紫线被红线覆盖之处出错。

必须被其他要素的要素类覆盖

要求一个要素类(或子类型)中的线必须被另一个要素类(或子类型)中的线所覆盖。此选项适于建模逻辑不同但空间重合的线(如路径和街道)。公交路线要素类不能离开在街道要素类中定义的街道。

必须被其他要素的要素类覆盖

紫线未与红线重叠之处出错。

必须被其他要素的边界覆盖

要求线被面要素的边界覆盖。这适于建模必须与面要素(如地块)的边重合的线(如地块线)。

剪除:“剪除”修复可移除未与面要素的边界重合的线段。如果线要素不能与面要素的边界共享任何相同线段,要素将被删除。此修复可应用于一个或多个“必须被其他要素的边界覆盖”错误。

必须被其他要素的边界覆盖

必须位于内部

要求线包含在面要素的边界内。当线可能与面边界部分重合或全部重合但不能延伸到面之外(如必须位于州边界内部的高速公路和必须位于分水岭内部的河流)时,此选项十分有用。

删除:“删除”修复可移除不在面要素内部的线要素。请注意,如果您不想删除线,则可以使用“编辑”工具将线移动到面内部。此修复可应用于一个或多个“必须位于内部”错误。

必须位于内部

端点必须被其他要素覆盖

要求线要素的端点必须被另一要素类中的点要素覆盖。在某些建模情况下,例如设备必须连接两条管线,或者交叉路口必须出现在两条街道的交汇处时,此工具十分有用。

创建要素:“创建要素”修复在出错的线要素的端点处添加新的点要素。“创建要素”修复可应用于一个或多个“端点必须被其他要素覆盖”错误。

端点必须被其他要素覆盖

底部的方块标出了错误,因为此处没有点覆盖线的端点。

不能自重叠

要求线要素不得与自身重叠。这些线要素可以交叉或接触自身但不得有重合的线段。此规则适用于街道等线段可能接触闭合线的要素,但同一街道不应出现两次相同的路线。

简化:“简化”修复从出错的要素移除自重叠线段。应用“简化”修复会生成多部分要素,您可以使用“必须为单一部分”规则对其进行检测。“简化”修复可应用于一个或多个“不能自重叠”错误。

不能自重叠

线要素与自身重叠,用橘红色线标出了错误。

不能自相交

要求线要素不得自交叉或与自身重叠。此规则适用于不能与自身交叉的线(如等值线)。

简化:“简化”修复从出错的要素移除自重叠线段。请注意,应用“简化”修复能生成多部分要素。您可以使用“必须为单一部分”规则检测多部分要素。此修复可应用于一个或多个“不能自相交”错误。

不能自相交

必须为单一部分

要求线只有一个部分。当线要素(如高速公路)不能有多个部分时,此规则非常有用。

拆分:“拆分”修复使用出错的多部分线要素的每个部分创建单一部分线要素。此修复可应用于一个或多个“必须为单一部分”错误。

必须为单一部分

使用单一草图创建多部分线。

线规则

点规则

拓扑规则

规则描述

可能的修复方式

示例

必须与其他要素重合

要求一个要素类(或子类型)中的点必须与另一个要素类(或子类型)中的点重合。此规则适用于点必须被其他点覆盖的情况,如变压器必须与配电网络中的电线杆重合,观察点必须与工作站重合。

捕捉:“捕捉”修复将第一个要素类或子类型中的点要素移动到指定距离范围内的第二个要素类或子类型中最近的点。如果在所指定的容差范围内不存在点要素,则不会捕捉该点。“捕捉”修复可应用于一个或多个“必须与其他要素重合”错误。

必须与其他要素重合

红点与蓝点不重合之处出错。

必须不相交

要求点与相同要素类(或子类型)中的其他点在空间上相互分离。重叠的任何点都是错误。此规则可确保相同要素类的点不重合或不重复,如城市图层中、宗地块 ID 点、井或路灯杆。

必须不相交

红点与蓝点重叠之处出错。

必须被其他要素的边界覆盖

要求点位于面要素的边界上。这在点要素帮助支持边界系统(如必须设在某些区域边界上的边界标记)时非常有用。

必须被其他要素的边界覆盖

右侧的方块标出了错误,因为这个点不在面的边界上。

必须完全位于内部

要求点必须位于面要素内部。这在点要素与面有关时非常有用,如井和井垫或地址点和宗地。

删除:“删除”修复可移除没有完全落在面要素内部的点要素。请注意,如果您不想删除点,则可以使用“编辑”工具将点移动到面内部。此修复可应用于一个或多个“必须完全位于内部”错误。

必须完全位于内部

方块标出了点不位于面内部的错误。

必须被其他要素的端点覆盖

要求一个要素类中的点必须被另一要素类中线的端点覆盖。除了当违反此规则时,标记为错误的是点要素而不是线之外,此规则与线规则“端点必须被其他要素覆盖”极为相似。边界拐角标记可以被约束,以使其被边界线的端点覆盖。

删除:“删除”修复可移除不与线要素的端点重合的点要素。请注意,您可以将点捕捉到线,方法为将边捕捉设置为线图层,然后使用“编辑”工具移动点。此修复可应用于一个或多个“必须被其他要素的端点覆盖”错误。

必须被其他要素的端点覆盖

方块标出了点没有在线端点上的错误。

点必须被线覆盖

要求一个要素类中的点被另一要素类中的线覆盖。它不能将线的覆盖部分约束为端点。此规则适用于沿一组线出现的点,如公路沿线的公路标志。

点必须被线覆盖

方块标明了没有被线覆盖的点。

点规则
5/10/2014