GIS入门进阶 0005

一、拓扑是什么?

如果有重叠且共享相同坐标位置、边界或结点的要素,则地理数据库拓扑可帮助更好地管理地理数据。

地理数据库拓扑帮助您确保数据完整性。拓扑的使用提供了一种对数据执行完整性检查的机制,帮助您在地理数据库中验证和保持更好的要素表示。

此外,还可以使用拓扑为要素之间的多种空间关系建模。这为多种分析操作(如查找相邻要素、处理要素之间的重叠边界以及沿连接要素进行导航)提供了支持。

拓扑关系

拓扑是点、线和多边形要素共享几何的方式的排列布置。拓扑用于以下操作:

  • 限制要素共享几何的方式。例如,相邻多边形(如宗地)具有共享边、街道中心线和人口普查区块共享几何以及相邻的土壤多边形共享边。
  • 定义并强制实施数据完整性规则:两个面之间不应存在间隙,不应存在重叠的要素等等。
  • 支持拓扑关系查询和导航,如确定要素邻接性和连通性。
  • 支持可强制执行数据模型拓扑约束的复杂编辑工具。
  • 根据非结构化的几何构造要素,如根据线创建多边形。

根据现有数据构建拓扑的过程可总结为以下步骤:

                                       

二、拓扑基础知识

拓扑是结合了一组编辑工具和技术的规则集合,它使地理数据库能够更准确地构建几何关系模型。 ArcGIS 通过一组用来定义要素共享地理空间方式的规则和一组用来处理在集成方式下共享几何的要素的编辑工具来实施拓扑。拓扑以一种或多种关系的形式保存在地理数据库中,这些关系定义一个或多个要素类中的要素共享几何的方式。参与构建拓扑的要素仍是简单要素类,拓扑不会修改要素类的定义,而是用于描述要素的空间关联方式。

为什么进行拓扑?

拓扑一直是 GIS 在数据管理和完整性方面的关键要求。通常,拓扑数据模型通过将空间对象(点、线和面要素)表示为拓扑原始数据(节点、面和边)的基础图表来管理空间关系。这些原始数据(连同它们彼此之间及其所表示的要素边界之间的关系)通过在拓扑元素的平面图表中表示要素几何进行定义。

                                                                节点、面和边的拓扑线图表

拓扑基本用于确保空间关系的数据质量并帮助进行数据编译。在很多情况下拓扑也用于分析空间关系,如融合带有相同属性值的相邻多边形之间的边界或遍历拓扑图中元素的网络。

拓扑也可用于为几何(来自多个要素类)的集成方式构建模型。有些人将其称为要素类的垂直集成。

拓扑中要素共享几何的方式

要素可在拓扑范围内共享几何。以下是相邻要素中的一些示例:

  • 区域要素可共享边界(面拓扑)。
  • 线要素可以共享端点(边结点拓扑)。

此外,可通过地理数据库拓扑在要素类之间管理共享几何,例如:

  • 线要素可以与其他线要素共享线段。
  • 面要素可以与其他面要素重叠。例如,宗地可以嵌套在块中。
  • 线要素可以与其他点要素共享端点折点(结点拓扑)。
  • 点要素可以与线要素重叠(点事件)。

两个视图:要素和拓扑元素

可通过以下方式描述和使用面的图层:

  • 作为地理要素(点、线和面)的集合
  • 作为拓扑元素(节点、边、面及其关系)的图表

这意味着有两种处理要素的方法,一种方法是其中的要素由它们的坐标定义,另一种方法是其中的要素表示为其拓扑元素的有序图表。

三、ArcGIS 中的拓扑

在地理数据库中,拓扑是定义点要素、线要素以及多边形要素共享重叠几何的方式的排列布置。例如,街道中心线与人口普查区块共享公共几何,相邻的土壤多边形共享公共边界。

处理拓扑不仅仅是提供一个数据存储机制。在 ArcGIS 中,拓扑包括以下所有方面:

  1. 地理数据库包括一个拓扑数据模型,该模型对简单要素(点、线及多边形要素类)、拓扑规则以及具有共享几何的要素之间的拓扑集成坐标使用开放式存储格式。该数据模型能够为参与拓扑的要素类定义完整性规则和拓扑行为。
  2. ArcGIS 在地图中包括了用于显示拓扑关系、错误和异常的拓扑图层。ArcGIS 还包括一组用于拓扑查询、编辑、验证以及纠错的工具。
  3. ArcGIS 包括用于构建、分析、管理以及验证拓扑的地理处理工具。
  4. ArcGIS 包括用于分析和发现点、线以及多边形要素类中拓扑元素的高级软件逻辑。
  5. ArcGIS 包括一个编辑和数据自动化框架,用于创建、维护和验证拓扑完整性以及执行共享要素编辑。
  6. 在能够导航拓扑关系、处理邻接和连通性以及通过这些元素组装要素的 ArcGIS Desktop、ArcGIS Server 和 ArcGIS Pro 产品中均包含 ArcGIS 软件逻辑。例如,标识共享特定公用边的多边形;列出在某个节点连接的边;从当前位置起沿连接边导航;添加一条新线并将其嵌入拓扑图;在交叉点分割线;以及创建生成的边、面和节点等。

地理数据库拓扑的元素

在地理数据库中,为各个拓扑定义以下属性:

  • 要创建的拓扑的名称。
  • 在拓扑处理操作中使用的拓扑容差。拓扑容差是一条术语,通常用于表示两种容差:X,Y 容差和 Z 容差。拓扑容差的默认值是坐标分辨率的 10 倍。
  • 要素类列表。首先,需要一份将参与拓扑的要素类的列表。所有要素类必须使用同一个坐标系并组织成同一个要素数据集。
  • 每个要素类中坐标的相对精度等级。如果某些要素类比其他要素类精确,您会希望指定更高的坐标等级。这将用于拓扑验证与集成。当精度较低的坐标落入其他拓扑容差范围内时,这些坐标将被移动到更高精度坐标的位置。精度最高的要素应收到值 1,精度其次的要素类收到值 2,精度再次的要素类收到值 3,依此类推。
  • 有关要素共享几何的方式的拓扑规则列表。

聚类处理

创建拓扑关系包括分析同一个要素类中(以及参与拓扑的多个要素类之间)的各要素间的要素折点的坐标位置。彼此间距离在指定范围内的折点被认为表示同一个位置,并被指定一个共有坐标值(换句话说,将它们定位于同一点)。

拓扑容差用于整合折点。处于拓扑容差范围内的所有折点在验证过程中均可以轻微移动。默认拓扑容差基于为数据集定义的精度。用实际单位表示的默认拓扑容差为 0.001 米。它是 X,Y 分辨率距离(定义用于存储坐标的数值精度)的 10 倍。

                                                          X,Y 容差用于匹配重叠的坐标(处于彼此的容差范围内)

两种拓扑容差:X,Y 容差和 Z 容差

在 ArcGIS 中,使用一对拓扑容差整合折点:

  • X,Y 容差用于查找处于彼此水平距离范围内的折点
  • Z 容差用于区分折点的 Z 高度或高程是否处于彼此容差范围内,以及是否应进行聚类

聚类坐标(定位于同一点)的方式

X,Y 容差应该很小,因此只有彼此非常接近(处于彼此 X,Y 容差范围内)的折点会被指定相同的坐标位置。如果多个坐标处于容差范围内,可认为这些坐标彼此重叠并将它们调整为共享相同位置。

这样,X,Y 容差也定义了坐标在聚类过程中可在 x 或 y(或两者)方向上移动的距离。因此,如果坐标在 x 维度或 y 维度上处于 X,Y 容差范围内,则可以对其进行聚类。请参见下面的逻辑示意图。坐标可移动图中对角线所示的距离,这形成了一个三角形。根据勾股定理,对坐标进行聚类的最大距离等于 2 的平方根 (SQRT) 乘以 X,Y 容差。

注:

勾股定理认为,在直角三角形中,斜边(最长边)的平方等于其他两条边(直角边)的平方和。

                                                  X,Y 容差

默认 X,Y 容差

默认 X,Y 容差设置为 0.001 米,或以数据集的坐标系单位表示的等效值。例如,如果坐标系以英尺为单位,则此默认值是 0.003281 英尺(0.03937 英寸)。默认值是默认 X,Y 分辨率的 10 倍,且在大多数情况下均推荐此设置。如果坐标以经纬度表示,则默认 X,Y 容差为 0.0000000556 度。

用于验证和聚类的算法

如果拓扑中某个要素的折点位于该拓扑中任何其他要素的边的 X,Y 容差范围内,则拓扑引擎会在这条边上创建一个新折点以允许在聚类过程中对要素进行几何整合。

在拓扑验证过程中聚类要素折点时,理解要素几何的调整方式十分重要。参与拓扑的任何要素类的所有折点均有可能移动,只要这些折点位于其他折点的 X,Y 容差范围内。坐标等级较高的要素的折点移动较少,并对等级较低的坐标产生更大引力。同等级要素的折点将从几何上进行平均。

需要注意的是,x,y 容差并非用于概化几何形状。相反,它用于在拓扑操作过程中整合线作业和边界,也就是帮助发现重叠且折点处于同一位置的要素。这将整合(定位于同一点)处于彼此 X,Y 容差范围内的坐标。由于坐标在 x 和 y 方向上可以移动与拓扑容差相同的距离,因此凭借使用拓扑容差的命令来处理数据集,可以解决许多潜在问题。这包括极小的过失或未及的处理、重复线段的自动分离删除以及沿边界线的坐标细化。

折点的最大移动距离

聚类过程的工作原理为在地图上移动并标识处于彼此 X,Y 容差范围内的坐标聚类。ArcGIS 使用此算法来发现、清除和管理要素间的重叠几何。这意味着重叠几何元素的坐标被定位于同一点(捕捉到同一位置)。这对许多 GIS 操作和概念都非常重要。

作为聚类过程的结果,要素折点可以两种方式移动大于拓扑容差的距离。

  1. 使用容差计算水平距离和垂直距离,以通过容差找到坐标。在此操作期间,坐标移动到新位置可以经过的最大距离是 2 的平方根乘以 X,Y 容差。
  2. 聚类算法是迭代算法。因此在某些情况下,折点在移动后处于其他折点的容差范围内,但平移的距离可能大于 2 的平方根乘以 X,Y 容差。这种情况非常少,并且仅在折点之间十分接近彼此容差范围,但没有完全处于该范围内(例如,距彼此容差范围在 0.001 米内)时发生。由于每次迭代坐标折点都会轻微地移动,因此它们可与其他坐标进行聚类并随后在地图中平移大于容差的距离。

实用提示

以下是一些有关拓扑容差的实用提示:

  1. 通常,使用 10 倍于 X,Y 分辨率的 X,Y 容差,即可获得非常好的结果。
  2. 典型 X,Y 容差的数量级小于数据采集的真实精度。例如,尽管要素坐标可能会精确到 2 米,但默认 X,Y 容差为 0.001 米。
  3. 为了使移动距离较小,也应使 X,Y 容差较小。但是,过小的 X,Y 容差(例如 X,Y 分辨率的 2 倍或更小)可能无法正确整合重叠边界的线作业。
  4. 相反,如果 x、y 容差过大,要素坐标则可能彼此重叠。这会影响要素边界制图表达的精度。
  5. X,Y 容差不应接近于数据采集精度(有时称为地图精度标准)。例如,在比例为 1:12,000 的地图上,1 英寸等于地面上的 1,000 英尺,即使 1/50 英寸仍等于 20 英尺 - 在数字化与扫描转换过程中很难达到这种数据采集精度。在使用这些数字的情况下,您会希望通过 x,y 容差进行的坐标移动保持正常。请记住,在这种情况下默认 X,Y 容差为 0.003281 英尺,它在几乎任何情况下都会正常工作。
  6. 在拓扑中,可以设置每个要素类的坐标精度等级。您会希望将最精确要素(如测量所得的要素)的坐标等级设置为 1,将精度较低要素的坐标等级设置为 2、3 等等(按精度等级降序)。这将使等级数较高(因此精度较低)的其他要素坐标被调整为等级数较低而精度较高的要素。
  7. 通常,您会希望在聚类过程中能够控制更有可能移动哪些要素类。例如,如果已知某个要素类中的要素具有比另外一组要素更可靠的位置,则可能想要将可靠性较低的要素捕捉到可靠性较高的要素。在拓扑中为要素类指定了等级以适应这种常见情况。拓扑容差范围内低等级要素的折点将被捕捉到邻近的高等级要素的折点。对处于拓扑容差范围内的同级要素折点的位置将进行几何平均。

拓扑与要素数据集

拓扑建立在公用要素数据集中保存的一组要素类的基础上。每个新拓扑都会添加到保存这些要素类和其他数据元素的要素数据集中。

创建拓扑时,可以按照以下约定指定要从要素数据集中参与拓扑的任意要素类子集:

  • 一个拓扑可以引用同一个要素数据集中的一个或多个要素类。
  • 一个要素数据集可具有多个拓扑。
  • 但是,一个要素类只能属于一个拓扑。
  • 一个要素类不能同时属于一个拓扑和一个几何网络。
  • 但是,一个要素类可以同时属于一个拓扑和一个网络数据集或地形数据集。

坐标等级

在地理数据库拓扑中为要素类指定的坐标精度等级控制着要素折点在验证过程中的移动。等级有助于控制折点在处于彼此拓扑容差范围内时的移动方式。处于彼此拓扑容差范围内的折点被认为位置相同且定位于同一点(为处于拓扑容差范围内的坐标指定相同坐标值)。

如果不同的要素类具有不同的坐标精度,例如,通过测量或差分全球定位系统 (GPS) 得到一个精度,而从精度较低的源通过数字化得到另一个精度时,坐标等级可确保可靠放置的折点就是可靠性较低的折点要向其移动的定位点位置。

通常,将精度较低的坐标移动到精度较高的坐标位置,或按照聚类中各坐标间的加权平均距离计算一个新位置。在此种情况下,加权平均距离基于聚类坐标的精度等级。

当同级折点处于彼此拓扑容差范围内时,对这些折点的位置从几何上进行平均。

确保以正确的顺序指定等级。精度最高的要素获得等级 1,精度次高的要素获得等级 2,依此类推。

Z 拓扑容差与等级

构建三维地形或建筑物模型的要素类具有表示各个折点高程的 Z 值。与使用 X,Y 拓扑容差和等级来控制水平捕捉要素的方式相同,如果拓扑具有构建高程模型的要素类,则可以使用 Z 拓扑容差和等级控制垂直捕捉重合折点的方式。

Z 拓扑容差定义了重合折点间的高程或 Z 值的最小差异。“拓扑检查”期间,Z 值处于 Z 拓扑容差内的折点被捕捉到一起。

构建城市建筑物的模型时,两个建筑物可能彼此相邻,并在 X,Y 属性域方向共享同一条公用边。如果建筑物拐角的高程值是以摄影测量方式采集的,则用户应关注该如何在拓扑验证期间保持每栋建筑物结构的相对高度。通过将 Z 拓扑容差值设置为零,可在拓扑检查时防止聚类 Z 值。

构建地形模型时,可能会以不同的 X,Y 和 Z 精度来采集数据集。在这种情况下,可能要设置一个大于零的 Z 拓扑容差以进行捕捉。为避免采集到的高精度 Z 值被捕捉到低精度 Z 值中,可以为每个要素类指定一个等级。如果低等级要素的 Z 值处于拓扑容差范围内,将被捕捉到高等级折点的高程中。属于同等级要素类的折点的 Z 值如果处于拓扑容差范围内,将求均值。

拓扑检查过程用以下方式求平均值和捕捉 Z 值:每个 Z 值均通过不大于 Z 拓扑容差的总量进行调整。这会使具有相同 X,Y 的折点的 Z 值被平均或捕捉到组中。

例如,如果 Z 拓扑容差为 5,则以下六个重合折点的 Z 值将被平均为 11.25 和 3.5 两组:

Z 值聚类示例

折点

验证前

验证后

z0(等级 = 1)

12.5

11.25

z1(等级 = 1)

10

11.25

z2(等级 = 1)

7.5

3.5

z3(等级 = 1)

5

3.5

z4(等级 = 1)

2.5

3.5

z5(等级 = 1)

0

3.5

在以下示例中,重合折点具有不同的等级,拓扑容差为 5。Z 值被平均并捕捉为三组,22.5、7.5 和 1.25:

Z 值聚类示例

折点

验证前

验证后

z0(等级 = 1)

25

22.5

z1(等级 = 1)

20

22.5

z2(等级 = 1)

7.5

7.5

z3(等级 = 2)

5

7.5

z4(等级 = 2)

2.5

1.25

z5(等级 = 2)

0

1.25

Z 拓扑容差值的范围在零至 Z 属性域范围之间(最大 Z 值 – 最小 Z 值)。

等级是精度的相对量度。两个要素类在等级上的差异并不相关,因此将其等级设置为 1 和 2 与设置为 1 和 3 或 1 和 10 是一样的。

拓扑规则

拓扑规则定义了要素之间允许的空间关系。为拓扑定义的规则可控制一个要素类中各要素之间、不同要素类中各要素之间以及要素的子类型之间的关系。有关可用拓扑规则的列表,请参阅适用于线的地理数据库拓扑规则与拓扑错误修复。

例如,规则“不能叠置”用于管理同一个要素类中要素的完整性。如果两个要素叠置,则叠置几何将以红色显示(例如下图中相邻多边形之间的叠置红色区域以及两条线的红色线性段部分)。

                                             面和线的“不能叠置”规则。红色区域表示验证期间发现的错误。

在要素类的子类型之间也可以定义拓扑规则。例如,假设有两个街道线要素的子类型 - 正常街道(在两个结点处与其他街道相连)与死胡同街道(在一个结点处为死角)。拓扑规则便可以要求街道要素在两端与其他街道要素相连,除非遇到街道属于死胡同子类型的情况。

使用要素的空间关系和行为定义拓扑规则

空间关系明确表达了要素按照其空间制图表达行为的规则共享重叠几何的方式。例如,某些公共空间关系与规则包含以下内容:

  • 宗地不能叠置。相邻宗地具有共享边界。
  • 河流线不能叠置且必须在其端点处与其他河流线连接。
  • 相邻县具有共享边。县必须完全覆盖和嵌套在州中。
  • 相邻人口普查区块具有共享边。人口普查区块不能叠置,且人口普查区块必须完全覆盖和嵌套在街区组中。
  • 道路中心线必须在其端点处连接。
  • 道路中心线和人口普查区块共享重叠几何(边和结点)。

上述情形中的每一条都为使用拓扑规则维护数据完整性定义了一种可能情况。

拓扑验证、错误与异常

创建新拓扑或对参与拓扑的要素进行编辑后,下一步是验证拓扑。验证拓扑包含以下四个过程:

  1. 对要素折点进行裂化和聚类以查找共享同一位置(具有通用坐标)的重合要素
  2. 将共有坐标折点插入到共享几何的重合要素中
  3. 运行一系列完整性检查以确定是否违反了为拓扑定义的规则
  4. 在要素数据集中创建潜在拓扑错误的错误日志

编辑或更改数据时,ArcGIS 将追踪更改的区域并将其标记为脏区。 将只对拓扑中的脏区运行验证。如果上次验证后并未进行编辑或更新,则不会进行任何检查。

错误与异常

在拓扑中最初以错误的形式存储对拓扑规则的违反。错误要素会在验证期间记录发现拓扑错误的位置。某些错误是可以接受的,这种情况下可将该错误要素标记为异常。错误与异常会以要素形式存储在拓扑图层中,可用于呈现和管理要素不需要符合拓扑规则的情况。

                                在编辑期间标记为异常的拓扑错误

可以为拓扑中的要素类创建一份错误与异常报告。并将错误要素数目报告用作评判拓扑数据集数据质量的量度。ArcGIS Pro 中的“错误检查器”允许选择不同的错误类型并缩放至单独错误。可通过编辑违反了拓扑规则的要素来纠正拓扑错误。验证编辑之后,将从拓扑中删除错误。

使用编辑工具可选择拓扑错误,并从针对该错误类型预定义的大量修复中进行选择。还可以使用该工具获取有关已被违反的规则的详细信息,或将错误标记为异常。

地理数据库拓扑有足够的灵活性来处理拓扑规则异常。还可以将错误标记为异常。此后将忽略异常,尽管在判定它们实际上是错误并应修改要素以符合拓扑规则的情况下可以将它们返回为错误状态。

异常是数据创建与更新过程中的正常部分。例如,某个城市的街道数据库可能有一条规定中心线必须在两个端点处与其他中心线连接的规则。此规则通常可确保在编辑街道线段时将其正确地捕捉到其他街道线段。但是,在城市的边界处,可能没有街道数据。此时街道的外部端点可能无法捕捉到其他中心线。这些实例会被标记为异常,您仍然能够使用该规则查找未正确进行数字化或编辑的实例。

脏区与验证

地理数据库拓扑的一个主要目标是:对处理和验证参与拓扑的要素数据(在可以使用该数据前)所花费的时间进行优化。一般来说,以下表述均为真:

  • 不论拓扑的状态如何,参与拓扑的要素类始终可供使用。
  • 拓扑验证由用户驱动。用户决定想要验证拓扑的时间和频率(例如,在每次编辑操作之后或更低频率,如在每次编辑会话结束时)。
  • 对每个要素类进行的所有编辑均会被追踪,以便只有进行过更改的区域需要重新验证。

脏区是已通过添加或删除要素而被编辑、更新或影响的区域。脏区允许拓扑限制在拓扑验证期间必须检查拓扑错误的区域。脏区将追踪已添加新要素或修改现有要素的位置。这允许只验证拓扑的选定部分,而不是全部。

ArcGIS 为您管理脏区

在创建或删除参与拓扑的要素、修改要素的几何、更改要素的子类型、协调版本、修改拓扑属性或更改地理数据库拓扑规则时,ArcGIS 均会创建脏区。

版本协调的作用类似于对要素类进行的其他编辑和更新 - 将更改的区域标记为脏区。

模式更改(如添加新的拓扑规则)意味着必须重新验证整个拓扑(换句话说,将整个数据集标记为脏区)。

存储在地理数据库拓扑中的信息

以下信息作为地理数据库的一部分进行存储:

  • 拓扑定义。这包括在创建拓扑时指定的所有属性的模式记录。
  • 共享重叠几何的所有要素的共有坐标折点。验证操作使用聚类来整合坐标以标识要素和要素类中的共有折点。在所有情况下,标识为具有相同位置的折点在所有要素类中均以它们所属的所有要素的坐标形式写出。这些要素是共享几何的要素,它们通过其共有坐标来完成此操作。

    注:

    地理数据库拓扑使用这些共享坐标为 ArcGIS 中的各种操作发现和查询边、结点、拓扑面及其要素关系的拓扑图。

  • 一个脏区表,该表包含覆盖了已添加或编辑的要素的区域以及通过版本控制协调更新的区域。
  • 通过验证操作将拓扑错误要素的三个表保存于拓扑中:
    • 点错误
    • 线错误
    • 面错误
    拓扑错误的几何将写入其中一个错误表中,一同写入的还有涉及的要素类以及违反的拓扑规则相关信息。

                                                   拓扑中的脏区与错误示例

标记为异常的错误同时记录在错误要素表中。异常列会标记确认为异常的错误。换句话说,异常就是选中了异常列的错误。随着不断更新与维护要素数据集和拓扑,系统会相应追踪错误和异常。

四、设计地理数据库拓扑

使用 ArcGIS 在地理数据库中创建拓扑前,可以先执行几个设计步骤再开发拓扑设计。

  1. 创建一个将共享几何的所需要素类的列表。
  2. 指定各要素类(点、线或多边形)的空间制图表达。
  3. 列出将共享几何并将被一起编辑和维护的要素类。例如,如果对某个要素的几何执行编辑,则其他要素也将随之更新。

    通常在共享拓扑中管理的一些要素类

    参与拓扑的要素类示例
    数据专题要素类拓扑规则的子样本

    宗地

    宗地多边形、宗地边界(线)、宗地拐角(点)

    宗地多边形不能叠置。宗地多边形边界必须被宗地边界线覆盖。宗地边界端点必须被宗地拐角点覆盖。

    街道中心线和人口普查单元

    街道中心线、人口普查区块、人口普查区块组、人口普查区域

    街道线不能相交或内部接触。人口普查区块不能叠置。人口普查区块组必须被人口普查区块覆盖。人口普查区块组不能叠置。人口普查区域必须被人口普查区块组覆盖。人口普查区域不能叠置。

    土壤

    土壤类型多边形

    土壤多边形不能叠置。土壤多边形不能有空隙。

    水文分析

    水文线、水文点、流域(多边形)

    水文线不能自叠置。水文点必须被水文线覆盖。流域不能叠置。流域不能有间距。

  4. 将这些要素类组织成要素数据集。
  5. 指定每个要素类中元素间的拓扑规则。例如,宗地可以是单部件或多部件多边形。相邻宗地共享几何。宗地不能叠置。
  6. 指定要素类间的拓扑规则。例如,定义宗地多边形的线必须被宗地边界线覆盖。
  7. 标识每个要素类中坐标的精度等级。最精确的要素类应接受等级 1,较低精度必须从最高等级开始按顺序降低(次精确的要素类应接受等级 2,依此类推)。多个要素类可以具有相同的精度等级。如果感觉不到精度有差异,则将所有要素类的等级都设置为 1(也就是说,使精度相同)。
  8. 构建一个具有要素副本的测试地理数据库(使用文件或个人地理数据库)以测试计划的拓扑设计。使用原型地理数据库进行练习。例如,根据计划的设计添加拓扑、验证拓扑并编辑其中一些要素。这样可使您更好地了解行为并有助于优化设计。
  9. 优化并调整设计,直至获得可行的实现。

五、使用“创建拓扑”向导创建拓扑

1、要使用创建拓扑向导创建拓扑,请完成以下步骤:

  1. 在目录窗格中,右键单击要向其中添加拓扑的要素数据集,然后单击新建 > 创建拓扑。
  2. 为新拓扑命名并指定拓扑容差。默认值被设置为要素数据集的 X,Y 容差。理想的默认值是 0.001 米或以空间参考单位表示的等效值(例如,单位是英尺时为 0.003281 英尺,单位是以十进制度数表示的经纬度时为 0.0000000556 度)。
  3. 选中要参与拓扑的要素类复选框。系统将显示要素数据集中所有要素类的列表。
  4. 为拓扑中的各要素类设置坐标精度等级。

    如果一个或多个要素类包含坐标 Z 值,则单击 Z 属性设置 Z 等级。Z 容差用于区分彼此容差范围内折点的 Z 高度或高程。例如,两个高度不同的相邻要素之间可能共享一条公用边。但是,只有各自的 X,Y 折点会定位于同一点,Z 值或高度则不然。Z 容差可在验证和聚类操作期间帮助正确处理此信息。Z 容差默认值与 X,Y 容差默认值相同(以实际单位表示为 0.001 米)。

  5. 单击下一步。
  6. 现在,您需要在参与要素类及其子类型之间创建拓扑规则。在要素类 1 下拉菜单中,选择一个要素类。如果要创建与子类型相关联的规则,请使用子类型 1 下拉菜单选择一个子类型。
  7. 在下一列中,选择相应的规则。规则可帮助您构造要素间的空间关系以控制和验证要素共享几何的方式。
  8. 如果适用于您选择的规则,请从要素类 2 和子类型 2 下拉菜单中选择第二个要素类和子类型,以完成规则。
  9. 请重复步骤 6、7 和 8,以视需要创建规则。完成操作后,请单击下一步。
  10. 查看之前所有配置的摘要信息,然后单击完成。现在已将新拓扑添加到要素数据集。随即显示提示消息,询问您是否要验证要素数据集中的拓扑。如果要素类中已有数据,请单击是。使用地理处理工具创建拓扑

  11. ArcToolbox 包含一系列用于拓扑的地理处理工具。拓扑工具集位于“数据管理”工具箱中。

    使用这些工具可构建用于创建和修改地理数据库拓扑的脚本。脚本可用于自动执行一系列任务和构建可重复工作流。

    要使用创建拓扑工具创建拓扑,请完成以下步骤:

  12. 选择将参与拓扑的要素类。使用向拓扑中添加要素类地理处理工具将这些要素类添加到拓扑当中。

    多次运行此工具,直到添加了您希望参与拓扑的所有要素类为止。

  13. 现在,您已创建拓扑并向其中添加了一些要素类,随后可以使用向拓扑中添加规则地理处理工具添加一系列规则。拓扑规则可帮助您构造要素间的空间关系以控制和验证要素共享几何的方式。

    您可能还需要多次运行此工具,直到向拓扑中添加完所有所需的拓扑规则为止。

  14. 现在,您已在要素数据集中设置一个新拓扑,其中包含参与的要素类和拓扑规则。如果要素类中含有数据,则可以使用验证拓扑地理处理工具来验证拓扑
  15. 以下为独立 Python 脚本示例,您可使用该脚本创建拓扑并向拓扑中添加多个要素类和规则:

    可使用此独立 Python 脚本创建拓扑、添加多个要素类和规则以及验证拓扑。

  16. import arcpy
    import os
    # Input variables
    input_dataset = r"C:\MyProjects\MyProject.gdb\fds"
    topo_name = "Topology"
    cluster_tol = 0.001
    input_fc = r"C:\MyProjects\MyProject.gdb\fds\fc1 1 1;C:\MyProjects\MyProject.gdb\fds\fc2 1 1"
    rules = r"'Must Not Overlap (Area)' C:\MyProjects\MyProject.gdb\fds\fc1 # C:\MyProjects\MyProject.gdb\fds\fc1 #;'Must Be Covered By Feature Class Of (Area-Area)' C:\MyProjects\MyProject.gdb\fds\fc1 # C:\MyProjects\MyProject.gdb\fds\fc2 #"
    validate = "true"
    # Create the topology
    out_topo = arcpy.CreateTopology_management(input_dataset, topo_name, cluster_tol)
    print("Created topology.")
    # Loop through the list of feature classes and add them to the topology
    input_fcL = input_fc.split(";")
    for fc in input_fcL:
        param = fc.rsplit(" ", 2)
        in_fc = param[0]
        xy_rank = param[1]
        z_rank = param[2]
        arcpy.AddFeatureClassToTopology_management(out_topo, in_fc, xy_rank, z_rank)
        print(arcpy.GetMessages())
        
    # Loop through the list of rules and add rules to the topology
    rulesL = rules.split(";")
    for rule in rulesL:
        r = rule.rsplit(" ", 4)
        rule_type = r[0].replace("'","")
        in_fc1 = r[1]
        subtype1 = r[2]
        in_fc2 = r[3]
        subtype2 = r[4]
        arcpy.AddRuleToTopology_management(out_topo, rule_type, in_fc1, subtype1, in_fc2, subtype2)
        print(arcpy.GetMessages())
        
    # Validate the topology
    if validate == "true":
        try:
            arcpy.ValidateTopology_management(out_topo)
        except:
            print(arcpy.GetMessages())
    print("Finished.")

六、验证拓扑

创建拓扑并加载数据后,可以随时对拓扑的要素类内容运行验证。验证执行以下处理任务:

  • 对要素折点进行裂化和聚类以查找共享几何(具有通用坐标)的要素
  • 将通用坐标折点插入到共享几何的要素中
  • 运行一系列完整性检查以确定是否违反了为拓扑定义的规则

验证新拓扑后,后续编辑将标注为用于标识需要重新验证的要素数据集子集的脏区。这将节省时间并提高性能,因为将只处理需要重新验证的区域。

验证拓扑

验证拓扑地理处理工具可用于在地图中验证拓扑,或作为自动化工作流的一部分。脚本对于自动执行一系列任务和构建可重复工作流很有用。

拓扑验证的提示

  • 可以自由选择验证拓扑的时间和频率。通常,仅须对每个拓扑整体验证一次。所有其他验证仅重新验证发生更改的脏区。
  • 当编辑数据和更改拓扑定义时,ArcGIS 将自动追踪脏区。验证拓扑时,ArcGIS 将自动识别必须验证的脏区。
  • 应该多久验证一次拓扑? 最好在编辑要素数据集后重新验证拓扑。还可以选择在编辑期间验证部分数据集,以便可以在编辑过程中找到并修复错误。
  • 如果更改拓扑定义,则可能需要重新验证拓扑。例如,如果更改拓扑规则集或坐标等级,则会将整个拓扑标记为脏区并且将在下次运行验证时对其重新验证。
  • 重新验证拓扑并不意味着聚类处理在每次后续验证都会使坐标移动更多。在初次验证中对坐标进行聚类后,它们在后续验证中不会移动,除非添加了属于现有要素的 X,Y 容差范围内的新几何(例如,将新道路与街道网连接、分割宗地时等等)。在这些情况下,将仅对折点处于其他要素的拓扑容差范围内的已更改区域进行聚类,并可能对其进行调整。
  • 参与拓扑的要素类始终可供在 ArcGIS 中使用,与最近是否已验证该拓扑无关。如果拓扑尚未验证,某些要素可能不符合完整性规则。但无论是否有错误,它们都可供使用。

 七、拓扑属性

可通过拓扑属性对话框查看与拓扑相关的状态,并更新与拓扑相关的要素类和规则。

要访问拓扑属性,请右键单击目录窗格中的拓扑,然后选择属性。

拓扑属性对话框具有四个选项卡:常规、要素类、规则和错误。多个选项卡可供您更新拓扑和编辑属性。单击确定按钮后,将提交对拓扑进行的所有编辑内容。如果要放弃编辑内容,请关闭拓扑属性对话框,或单击取消按钮。

注:

有关所有拓扑概念和属性的更多详细信息,请参阅 ArcGIS 中的拓扑

 

常规选项卡

拓扑属性对话框的常规选项卡包含以下信息:

  • 名称 - 拓扑的名称。可以通过在文本框中单击并进行相应更改来更新拓扑的名称。
  • XY 拓扑容差 - 假定处于拓扑容差水平距离范围内的任意两个折点位于同一位置。在执行拓扑验证期间,系统将为位于拓扑容差范围内的折点提供相同的 x,y 坐标。要更新 XY 拓扑容差,请单击文本框并输入相应更改。

    注:

    默认拓扑容差值是默认 x,y 分辨率的 10 倍,且在大多数情况下均建议使用此设置。

  • Z 拓扑容差 - 假定处于 Z 拓扑容差垂直距离范围内的任意两个折点位于同一位置。在执行拓扑验证期间,系统将为它们提供相同的 z 坐标。
  • 状态 - 本部分显示是否已验证拓扑以及是否存在要检查的脏区。

 

要素类选项卡

要素类选项卡显示拓扑中的坐标精度等级数和 Z 等级数以及为每个涉及的要素类分配的等级。

定义拓扑时,需要对拓扑中的要素类进行等级划分,如果折点位于彼此拓扑容差范围内,以便控制折点的移动方式。等级为 1 的要素类被视为具有最高精度。坐标等级可确保在执行拓扑验证期间,可靠放置的折点即可靠性较低的折点要移向的定位点位置。

可以通过单击相应的文本框并输入新的数值来编辑 XY 等级和 Z 等级的总数。

要编辑与要素类相关联的 XY 或 Z 等级,请单击要素类旁边的列,然后输入新数值。您输入的数值不得大于 XY 等级数或 Z 等级数文本框中显示的数量。

添加或移除要素类

要素类选项卡还可用于在拓扑中添加或移除要素类。格网会显示包含拓扑的要素数据集中所有要素类。可通过选中要素类名称旁边的复选框来选择要添加到拓扑的要素类。取消选中复选框将从拓扑中移除该要素类。可通过单击全选来选择要素数据集中所有可用的要素类。单击全部清除可取消选择所有当前选定的要素类。

单击确定可将选定的要素类添加到拓扑中。或者,可以单击取消退出拓扑属性,而不向拓扑添加任何要素类。

规则选项卡

拓扑规则定义了要素之间允许的空间关系。规则选项卡可显示参与拓扑的要素类和子类型上定义的拓扑规则。

要向拓扑添加规则,请单击添加,或单击格网的最后一行,其中显示了单击此处添加新规则。随即创建一个空行。可以在要素类及其子类型之间构建新规则,方法为使用每列中的下拉菜单,然后从左到右填充每个像元以定义规则。

要从拓扑中移除规则,请在格网中选择一行,然后单击移除。

将拓扑规则保存到规则集文件

  1. 右键单击拓扑,然后单击属性。
  2. 单击规则选项卡。
  3. 单击保存规则。
  4. 浏览至想要保存为拓扑所定义的规则的位置。
  5. 输入名称。
  6. 单击保存以将拓扑的所有规则保存到文件。
  7. 单击确定。

从规则集文件中加载拓扑规则

  1. 右键单击拓扑,然后单击属性。
  2. 单击规则选项卡。
  3. 单击加载规则。
  4. 浏览至要加载的规则集的保存位置。
  5. 单击规则集。
  6. 单击打开。

    如果创建规则集所依据的拓扑与要定义的新拓扑具有相同的要素类名称,则规则集中命名的要素类应与新拓扑中的要素类正确匹配。如果名称不同,则需要将规则集中提到的要素类与新拓扑中相应的要素类匹配。

  7. 对于每个未映射的源要素类,在目标列中单击,然后单击新拓扑中其对应的要素类。
  8. 在所有对话框中均单击确定。

注:

  • 将规则集加载到具有之前指定规则的拓扑中会将规则集中的规则附加到现有规则。
  • 加载规则集将需要重新验证拓扑。
  • 如果在规则集中有指定的要素类无法与新拓扑中的要素类相匹配,则涉及不匹配要素类的规则不会被加载。

错误选项卡

错误选项卡可汇总拓扑中发现的错误和异常。与规则选项卡类似,格网显示了拓扑规则及其涉及的要素类和子类型。与每个拓扑规则相关联的错误和异常会显示在格网右侧。验证拓扑时,如果违反拓扑规则,则会产生错误。可以单击“导出至文件”按钮将汇总信息另存为文本文件来创建指定时间拓扑状态的记录。这对于较大的拓扑编辑工程来说,是记录和监控进度的有效方式。有关更多详细信息,请参阅验证和修复地理数据库拓扑

八、拓扑容差选项

在地图拓扑选项对话框中,拓扑容差是一个距离范围,当边与折点处于此范围内时,确定它们重合。默认情况下,ArcGIS Pro 会自动计算最小的可能值。您可以指定自定义容差。对于大多数使用情况,自动设置是最佳做法。

地图拓扑选项

警告:

增大拓扑容差可能会降低数据的空间准确性,并导致要素折叠或变形。这发生在多个要素元素被捕捉到一起并确定为重合时。

地理数据库拓扑

地理数据库拓扑用于定义相同要素类、不同要素类或子类型中的要素之间的关系。例如,您可以定义一个拓扑规则,用于指定在所有道路高速公路交叉点处都必须存在的重叠点要素。

有关详细信息,请参阅创建拓扑

验证参与拓扑规则的要素会在单独的拓扑图层组上符号化和记录错误。您可以将错误标记为异常或使用预定义修复或常用编辑工具修复错误。

有关详细信息,请参阅验证和修复地理数据库拓扑

 

                                “内容”窗格地理数据库拓扑图层

网络拓扑

网络拓扑仅适用于公共设施网络。可将其用于存储和管理网络相关信息,以及维护可遍历和不可遍历要素之间的连通性。公共设施网络不参与地图拓扑。

有关详细信息,请参阅关于网络拓扑

公共设施网络的所有者可以启用或禁用网络拓扑。无论该拓扑是在启用还是禁用状态下,您都可以执行大多数编辑操作,例如创建或编辑要素、要素模板、要素和关联。

要了解详细信息,请参阅网络拓扑操作

当启用了网络拓扑时,编辑网络会在名为 Dirty Areas 的子图层上的修改区域周围生成符号化缓冲区。验证拓扑会包含您的更改并删除脏区。如果网络拓扑被禁用,会在整个网络上创建一个脏区。

要了解详细信息,请参阅公共设施网络中的脏区

                                                “内容”窗格网络拓扑图层

九、已版本化要素类中的脏区

多个编辑人员可以同时编辑一个要素数据集及其拓扑。

  • 每个编辑人员都将按照一定的工作流程来验证已编辑的拓扑以及查找和修复各个编辑版本的错误(或将其设置为异常)。
  • 通常,多个编辑版本被合并为一个公共主版本(通常称为“默认版本”)。
  • 值得注意的是,协调版本和出现潜在冲突时可能会发生新拓扑错误,即使各编辑版本已进行验证且没有错误。
  • 为了管理此类错误,版本化拓扑具有可影响协调过程的特殊错误处理和冲突检测规则。

以下部分介绍了协调脏区、错误、异常和潜在冲突的结果。在每种情况下,结果都基于在创建子版本后父版本和子版本均已更新的协调过程。如果在协调子版本前没有编辑父版本,协调结果将是子版本的内容。在各示例中,将版本 2 创建为版本 1 的子版本。然后以示例中所述的方式编辑这两个版本;随后依据版本 1 协调版本 2。下面示例中的插图使用以下图例:

                              示例的图例

示例 1

  • 对于在父版本和子版本创建之前不存在,但后来出现在父版本或子版本中的任何脏区,在协调过程后仍然为脏区。

                                对于在父版本和子版本创建之前不存在,但后来出现在父版本或子版本中的任何脏区,在协调过程后仍然为脏区。

  • 对于在父版本中出现且已在子版本中进行验证的任何脏区,将由于协调而变脏。

                                          对于在父版本中出现且已在子版本中进行验证的任何脏区,将由于协调而变脏。

  • 对于父版本中已引入且已验证的任何脏区,无论其是否出现在子版本中,都将在协调过程后保持已验证状态。

                                                  对于父版本中已引入且已验证的任何脏区,无论其是否出现在子版本中,都将在协调过程后保持已验证状态。

如上所示,父版本的原始状态(无脏区)在协调后保持不变。但是,可能会由于针对子版本执行了更新而创建其他脏区。

下面的示例 2 和 3 说明了在父版本中引入和验证的任何脏区在协调后保持验证状态的其他情况。

示例 2

                                                             示例 2

示例 3

                                                                   示例 3

在子版本中对拓扑要素进行的任何编辑都会在协调后产生脏区,即使在子版本中已验证由于编辑而产生的脏区。当原始编辑不产生脏区(例如属性更新)时也是如此。以下示例对此进行了说明:

注:

在下例中,版本 1 和版本 2 均已编辑;但仅在版本 2 中修改了示例中的多边形形状。

示例 4

                                                                        示例 4

示例 5

                                                                 示例 5

十、常见拓扑任务

在 Standard 或 Advanced 许可等级下可用。

可对拓扑进行多种修改。在某些情况下(如重命名拓扑时),更改不会对拓扑状态产生任何影响。但在其他情况下,更改可能需要重新验证拓扑。例如,更改(如添加新要素类或规则,或者更改拓扑容差)可能会创建新的脏区和错误要素,这就需要重新验证拓扑。无论企业级地理数据库中的拓扑是否已版本化,均可对其执行本主题中所列出的方案编辑。

可使用拓扑属性对话框来管理很多共同的拓扑任务。在拓扑属性中可以执行以下操作:

  • 重命名拓扑
  • 更改拓扑容差
  • 更改坐标等级
  • 添加和移除要素类
  • 创建、修改和删除规则
  • 保存并加载规则

向拓扑添加新要素类

使用地理处理

以下是使用向拓扑中添加要素类工具向现有拓扑添加新要素类的步骤。

  1. 在分析功能区中,单击 Python 按钮以打开 Python 窗口。
  2. 输入以下内容,运行向拓扑中添加要素类工具:arcpy.AddFeatureClassToTopology_management()
  3. 第一个需要输入的参数是您希望添加要素类的拓扑位置路径,例如 "C:\\MyProject\\MyProject.gdb\\Streets\\StreetsTopo"。
  4. 对于输入要素类参数,请输入您希望添加到拓扑的要素类的位置。

    只能添加处于要素数据集内且当前未参与拓扑或几何网络的要素类。

  5. 输入要素类的 XY 坐标等级,或输入 "" 以使用默认值。
  6. 输入要素类的 Z 坐标等级,或输入 "" 以使用默认值。
  7. 按 Enter 键运行此命令。
  8. 重复步骤 2-7 以添加多个要素类到拓扑。
  9. 使用验证拓扑工具验证拓扑。

以下是在 Python 窗口中执行 AddFeatureClassToTopology 工具的示例:

arcpy.AddFeatureClassToTopology_management(r"C:\MyProject\MyProject.gdb\Streets\Street_Topo", r"C:\MyProject\MyProject.gdb\Streets\StreetNetwork", 1, 0.1)

在拓扑中使用子类型

设计地理数据库时,应了解用于在拓扑中使用要素类子类型的选项。

关于子类型

子类型允许通过在要素类内构建要素的子类,以更有效地对真实世界对象进行建模。例如,在宗地要素类中,可能有标准宗地(不能叠置)和共管公寓宗地(允许叠置)的子类。此外,各个宗地子类型(例如,单户住宅与多户住宅)的分区默认值可能不同。

要了解有关子类型和地理数据库的详细信息,请参阅子类型概述

拓扑内的子类型

拓扑中的各个子类型可应用不同的规则以及不同的坐标等级。这样便可创建只应用到特定子类型(例如创建细分之前构建的结构)的规则。

以考虑建筑物覆盖区为例,通过创建建筑物的子类型并且仅为无法跨过宗地边界的子类型创建“必须被其他要素覆盖”规则,可以针对一小部分建筑物合理地跨越宗地边界的情况进行建模。

                             子类型允许您在设置拓扑规则时进行更精细的控制

还可以对各个子类型应用不同的坐标等级。例如,通过 COGO 工具输入边界的宗地可能比不同子类型中通过数字化输入边界的其他宗地具有更高的坐标等级。

移除要素类

您可以使用从拓扑中移除要素类地理处理工具从拓扑中移除要素类。

  1. 在分析功能区中,单击 Python 按钮以打开 Python 窗口。
  2. 输入以下内容,运行从拓扑中移除要素类工具:arcpy.RemoveFeatureClassFromTopology_management()
  3. 第一个需要输入的参数是含有您希望移除的要素类的拓扑位置路径,例如 "C:\\MyProject\\MyProject.gdb\\Streets\\StreetsTopo"。
  4. 对于要移除的要素类参数,请输入您希望从拓扑中移除的要素类的位置。
  5. 按 Enter 键运行此命令。

    现在即已从拓扑中移除要素类。要移除多个要素类,请针对您希望移除的每个要素类运行此工具。

以下是在 Python 窗口中执行 RemoveFeatureClassFromTopology 工具的示例:

重命名拓扑

在目录窗格中进行以下操作:

  1. 右键单击拓扑,然后单击重命名。
  2. 输入新名称。
  3. 按 Enter 键。

注:

重命名拓扑不会影响其状态,也不需要重新验证该拓扑。

提示:

要素类参与地理数据库拓扑时,无法对其重命名。

更改拓扑容差

您可以使用设置拓扑容差地理处理工具来更改拓扑容差。

  1. 在分析功能区中,单击 Python 按钮以打开 Python 窗口。
  2. 输入以下内容,运行设置拓扑容差工具:arcpy.SetClusterTolerance_management()
  3. 第一个需要输入的参数是含有您希望更改拓扑容差的拓扑的位置路径,例如 "C:\\MyProject\\MyProject.gdb\\Streets\\StreetsTopo"。
  4. 针对第二个参数,输入新的拓扑容差值,例如 0.00015。
  5. 按 Enter 键运行此命令。

注:更改拓扑的拓扑容差需要重新验证该拓扑。拓扑容差越大,将数据中的要素从其当前位置移动的可能性越大。如果拓扑容差过大,形状将发生变化。

 

以下是在 Python 窗口中执行 SetClusterTolerance 工具的示例:

arcpy.SetClusterTolerance_management(r"C:\MyProject\MyProject.gdb\Streets\Street_Topo", 0.00015)

处理拓扑规则

您可以通过使用地理处理工具向现有拓扑中添加或从中移除规则。

向拓扑添加规则

您可以使用向拓扑中添加规则地理处理工具向拓扑添加规则。

  1. 在分析功能区中,单击 Python 按钮以打开 Python 窗口。
  2. 输入以下内容,运行向拓扑中添加规则工具:arcpy.AddRuleToTopology_management()
  3. 第一个需要输入的参数是您希望添加规则的拓扑位置路径,例如 "C:\\MyProject\\MyProject.gdb\\Streets\\StreetsTopo"。
  4. 输入您希望添加的规则,例如“边界必须被其他要素的边界覆盖(面 - 面)”。
  5. 输入源要素类的路径。
  6. 输入输入要素类或源要素类的子类型。输入子类型的描述(而不是代码)。如果源要素上不存在子类型,或者要将规则应用于要素类中的所有子类型,则将此留空 ""。
  7. 输入目标要素类的路径。
  8. 要将规则应用到目标类中的子类型,请输入子类型描述。
  9. 按 Enter 键执行此命令。

    新规则现已添加到拓扑。在多个规则的情况下,您需要多次运行此工具。

注:添加新规则后,必须重新验证拓扑。

以下是在 Python 窗口中执行 AddRuleToTopology 工具的示例:

arcpy.AddRuleToTopology_management("C:\\MyProject\\MyProject.gdb\\Streets\\Street_Topo",
                                                 "Boundary Must Be Covered By Boundary Of (Area-Area)",
                                                 "C:\\MyProject\\MyProject.gdb\\Streets\\Subdivision",
                                                 "",
                                                 "C:\\MyProject\\MyProject.gdb\\Streets\\Parcels",
                                                 "")

从拓扑中移除规则

您可以使用移除拓扑规则地理处理工具从拓扑中移除规则。

  1. 在分析功能区中,单击 Python 按钮以打开 Python 窗口。
  2. 输入以下内容,运行移除拓扑规则工具:arcpy.RemoveRuleFromTopology_management()
  3. 第一个需要输入的参数是含有您希望移除的规则的拓扑位置路径,例如 "C:\\MyProject\\MyProject.gdb\\Streets\\StreetsTopo"。
  4. 输入您希望从拓扑中移除的规则,例如“不能有悬挂点 (21)”。

    当使用脚本运行此工具时,必须在规则名称后面的括号中指定待移除拓扑规则中涉及的要素类 ObjectClassID。了解有关查找 ObjectClassID 的详细信息。

  5. 按 Enter 键执行此命令。

    新规则随即从拓扑中移除。要移除多个规则,您需要多次运行此工具。

注:移除规则需要重新验证拓扑。

以下是在 Python 窗口中执行 RemoveRuleFromTopology 工具的示例:

arcpy.RemoveRuleFromTopology_management("C:\\MyProject\\MyProject.gdb\\Streets\\Street_Topo",
                                                      "Must Not Have Dangles (21)")

更改坐标等级

有多种方法可更改拓扑中的等级设置。

更改等级数

  1. 右键单击拓扑,然后单击属性。
  2. 单击要素类选项卡。
  3. 输入等级数。
  4. 单击确定。

拓扑可支持最多 50 个可指定给要素类的等级。

注:

更改等级数并不需要重新验证拓扑。

更改要素类的等级

  1. 右键单击拓扑,然后单击属性。
  2. 单击要素类选项卡。
  3. 单击添加类,然后选中要素类旁边您想进行排名的框。单击确定。
  4. 为每个要素类输入等级。
  5. 单击确定。

注:

更改任何要素类的等级均需要重新验证拓扑。

处理拓扑规则

有多个任务可处理拓扑内的规则。可进行以下操作:

  • 将规则另存为可共享和重复使用的规则集文件。
  • 查看规则描述和示意图。

将拓扑规则保存到规则集文件

  1. 右键单击拓扑,然后单击属性。
  2. 单击规则选项卡。
  3. 单击添加。
  4. 从要素类 1 下拉菜单中选择想要应用规则的要素类。
  5. 如果要素类有子类型,请在子类型下拉菜单中选择一个合适的内容。
  6. 从规则下拉菜单中选择要应用到要素类的规则。
  7. 单击确定。

从规则集文件中加载拓扑规则

  1. 右键单击拓扑,然后单击属性。
  2. 单击规则选项卡。
  3. 单击保存规则。
  4. 单击加载规则。
  5. 浏览至要加载的规则集的保存位置。
  6. 单击规则集。
  7. 单击打开。

    如果创建规则集所依据的拓扑与要定义的新拓扑具有相同的要素类名称,则规则集中命名的要素类应与新拓扑中的要素类正确匹配。如果名称不同,则需要将规则集中提到的要素类与新拓扑中相应的要素类匹配。

  8. 对于每个未映射的源要素类,在目标列中单击,然后单击新拓扑中其对应的要素类。
  9. 在所有对话框中均单击确定。

注:将规则集加载到具有之前指定规则的拓扑中会将规则集中的规则附加到现有规则。

注:加载规则集将需要重新验证拓扑。

注:如果在规则集中有指定的要素类无法与新拓扑中的要素类相匹配,则涉及不匹配要素类的规则不会被加载。

汇总拓扑错误

可从拓扑属性对话框中查看拓扑中的错误数汇总信息。该汇总信息显示每个拓扑规则存在的错误数和异常数。

可将汇总信息另存为文本文件来创建指定时间拓扑状态的记录。这对于较大的拓扑编辑工程来说,是记录和监控进度的有效方式。

查询和导航拓扑图

ArcGIS 开发者工具为程序员提供了访问拓扑图的方法,拓扑图是参与拓扑的要素类中的几何的平面制图表达。有关使用拓扑图的详细信息,请参阅“适用于 .NET 的 ArcObjects 帮助”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值