如果有重叠且共享相同坐标位置、边界或结点的要素,则地理数据库拓扑可帮助更好地管理地理数据。
地理数据库拓扑帮助您确保数据完整性。拓扑的使用提供了一种对数据执行完整性检查的机制,帮助您在地理数据库中验证和保持更好的要素表示。
此外,还可以使用拓扑为要素之间的多种空间关系建模。这为多种分析操作(如查找相邻要素、处理要素之间的重叠边界以及沿连接要素进行导航)提供了支持。
拓扑是点、线和多边形要素共享几何的方式的排列布置。拓扑用于以下操作:
根据现有数据构建拓扑的过程可总结为以下步骤:
拓扑是结合了一组编辑工具和技术的规则集合,它使地理数据库能够更准确地构建几何关系模型。 ArcGIS 通过一组用来定义要素共享地理空间方式的规则和一组用来处理在集成方式下共享几何的要素的编辑工具来实施拓扑。拓扑以一种或多种关系的形式保存在地理数据库中,这些关系定义一个或多个要素类中的要素共享几何的方式。参与构建拓扑的要素仍是简单要素类,拓扑不会修改要素类的定义,而是用于描述要素的空间关联方式。
拓扑一直是 GIS 在数据管理和完整性方面的关键要求。通常,拓扑数据模型通过将空间对象(点、线和面要素)表示为拓扑原始数据(节点、面和边)的基础图表来管理空间关系。这些原始数据(连同它们彼此之间及其所表示的要素边界之间的关系)通过在拓扑元素的平面图表中表示要素几何进行定义。
拓扑基本用于确保空间关系的数据质量并帮助进行数据编译。在很多情况下拓扑也用于分析空间关系,如融合带有相同属性值的相邻多边形之间的边界或遍历拓扑图中元素的网络。
拓扑也可用于为几何(来自多个要素类)的集成方式构建模型。有些人将其称为要素类的垂直集成。
要素可在拓扑范围内共享几何。以下是相邻要素中的一些示例:
此外,可通过地理数据库拓扑在要素类之间管理共享几何,例如:
可通过以下方式描述和使用面的图层:
这意味着有两种处理要素的方法,一种方法是其中的要素由它们的坐标定义,另一种方法是其中的要素表示为其拓扑元素的有序图表。
在地理数据库中,拓扑是定义点要素、线要素以及多边形要素共享重叠几何的方式的排列布置。例如,街道中心线与人口普查区块共享公共几何,相邻的土壤多边形共享公共边界。
处理拓扑不仅仅是提供一个数据存储机制。在 ArcGIS 中,拓扑包括以下所有方面:
在地理数据库中,为各个拓扑定义以下属性:
创建拓扑关系包括分析同一个要素类中(以及参与拓扑的多个要素类之间)的各要素间的要素折点的坐标位置。彼此间距离在指定范围内的折点被认为表示同一个位置,并被指定一个共有坐标值(换句话说,将它们定位于同一点)。
拓扑容差用于整合折点。处于拓扑容差范围内的所有折点在验证过程中均可以轻微移动。默认拓扑容差基于为数据集定义的精度。用实际单位表示的默认拓扑容差为 0.001 米。它是 X,Y 分辨率距离(定义用于存储坐标的数值精度)的 10 倍。
在 ArcGIS 中,使用一对拓扑容差整合折点:
X,Y 容差应该很小,因此只有彼此非常接近(处于彼此 X,Y 容差范围内)的折点会被指定相同的坐标位置。如果多个坐标处于容差范围内,可认为这些坐标彼此重叠并将它们调整为共享相同位置。
这样,X,Y 容差也定义了坐标在聚类过程中可在 x 或 y(或两者)方向上移动的距离。因此,如果坐标在 x 维度或 y 维度上处于 X,Y 容差范围内,则可以对其进行聚类。请参见下面的逻辑示意图。坐标可移动图中对角线所示的距离,这形成了一个三角形。根据勾股定理,对坐标进行聚类的最大距离等于 2 的平方根 (SQRT) 乘以 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 操作和概念都非常重要。
作为聚类过程的结果,要素折点可以两种方式移动大于拓扑容差的距离。
以下是一些有关拓扑容差的实用提示:
拓扑建立在公用要素数据集中保存的一组要素类的基础上。每个新拓扑都会添加到保存这些要素类和其他数据元素的要素数据集中。
创建拓扑时,可以按照以下约定指定要从要素数据集中参与拓扑的任意要素类子集:
在地理数据库拓扑中为要素类指定的坐标精度等级控制着要素折点在验证过程中的移动。等级有助于控制折点在处于彼此拓扑容差范围内时的移动方式。处于彼此拓扑容差范围内的折点被认为位置相同且定位于同一点(为处于拓扑容差范围内的坐标指定相同坐标值)。
如果不同的要素类具有不同的坐标精度,例如,通过测量或差分全球定位系统 (GPS) 得到一个精度,而从精度较低的源通过数字化得到另一个精度时,坐标等级可确保可靠放置的折点就是可靠性较低的折点要向其移动的定位点位置。
通常,将精度较低的坐标移动到精度较高的坐标位置,或按照聚类中各坐标间的加权平均距离计算一个新位置。在此种情况下,加权平均距离基于聚类坐标的精度等级。
当同级折点处于彼此拓扑容差范围内时,对这些折点的位置从几何上进行平均。
确保以正确的顺序指定等级。精度最高的要素获得等级 1,精度次高的要素获得等级 2,依此类推。
构建三维地形或建筑物模型的要素类具有表示各个折点高程的 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 两组:
折点 |
验证前 |
验证后 |
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:
折点 |
验证前 |
验证后 |
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 是一样的。
拓扑规则定义了要素之间允许的空间关系。为拓扑定义的规则可控制一个要素类中各要素之间、不同要素类中各要素之间以及要素的子类型之间的关系。有关可用拓扑规则的列表,请参阅适用于点、线和面的地理数据库拓扑规则与拓扑错误修复。
例如,规则“不能叠置”用于管理同一个要素类中要素的完整性。如果两个要素叠置,则叠置几何将以红色显示(例如下图中相邻多边形之间的叠置红色区域以及两条线的红色线性段部分)。
在要素类的子类型之间也可以定义拓扑规则。例如,假设有两个街道线要素的子类型 - 正常街道(在两个结点处与其他街道相连)与死胡同街道(在一个结点处为死角)。拓扑规则便可以要求街道要素在两端与其他街道要素相连,除非遇到街道属于死胡同子类型的情况。
空间关系明确表达了要素按照其空间制图表达行为的规则共享重叠几何的方式。例如,某些公共空间关系与规则包含以下内容:
上述情形中的每一条都为使用拓扑规则维护数据完整性定义了一种可能情况。
创建新拓扑或对参与拓扑的要素进行编辑后,下一步是验证拓扑。验证拓扑包含以下四个过程:
编辑或更改数据时,ArcGIS 将追踪更改的区域并将其标记为脏区。 将只对拓扑中的脏区运行验证。如果上次验证后并未进行编辑或更新,则不会进行任何检查。
在拓扑中最初以错误的形式存储对拓扑规则的违反。错误要素会在验证期间记录发现拓扑错误的位置。某些错误是可以接受的,这种情况下可将该错误要素标记为异常。错误与异常会以要素形式存储在拓扑图层中,可用于呈现和管理要素不需要符合拓扑规则的情况。
可以为拓扑中的要素类创建一份错误与异常报告。并将错误要素数目报告用作评判拓扑数据集数据质量的量度。ArcGIS Pro 中的“错误检查器”允许选择不同的错误类型并缩放至单独错误。可通过编辑违反了拓扑规则的要素来纠正拓扑错误。验证编辑之后,将从拓扑中删除错误。
使用编辑工具可选择拓扑错误,并从针对该错误类型预定义的大量修复中进行选择。还可以使用该工具获取有关已被违反的规则的详细信息,或将错误标记为异常。
地理数据库拓扑有足够的灵活性来处理拓扑规则异常。还可以将错误标记为异常。此后将忽略异常,尽管在判定它们实际上是错误并应修改要素以符合拓扑规则的情况下可以将它们返回为错误状态。
异常是数据创建与更新过程中的正常部分。例如,某个城市的街道数据库可能有一条规定中心线必须在两个端点处与其他中心线连接的规则。此规则通常可确保在编辑街道线段时将其正确地捕捉到其他街道线段。但是,在城市的边界处,可能没有街道数据。此时街道的外部端点可能无法捕捉到其他中心线。这些实例会被标记为异常,您仍然能够使用该规则查找未正确进行数字化或编辑的实例。
地理数据库拓扑的一个主要目标是:对处理和验证参与拓扑的要素数据(在可以使用该数据前)所花费的时间进行优化。一般来说,以下表述均为真:
脏区是已通过添加或删除要素而被编辑、更新或影响的区域。脏区允许拓扑限制在拓扑验证期间必须检查拓扑错误的区域。脏区将追踪已添加新要素或修改现有要素的位置。这允许只验证拓扑的选定部分,而不是全部。
在创建或删除参与拓扑的要素、修改要素的几何、更改要素的子类型、协调版本、修改拓扑属性或更改地理数据库拓扑规则时,ArcGIS 均会创建脏区。
版本协调的作用类似于对要素类进行的其他编辑和更新 - 将更改的区域标记为脏区。
模式更改(如添加新的拓扑规则)意味着必须重新验证整个拓扑(换句话说,将整个数据集标记为脏区)。
以下信息作为地理数据库的一部分进行存储:
注:
地理数据库拓扑使用这些共享坐标为 ArcGIS 中的各种操作发现和查询边、结点、拓扑面及其要素关系的拓扑图。
标记为异常的错误同时记录在错误要素表中。异常列会标记确认为异常的错误。换句话说,异常就是选中了异常列的错误。随着不断更新与维护要素数据集和拓扑,系统会相应追踪错误和异常。
使用 ArcGIS 在地理数据库中创建拓扑前,可以先执行几个设计步骤再开发拓扑设计。
通常在共享拓扑中管理的一些要素类
数据专题 | 要素类 | 拓扑规则的子样本 |
---|---|---|
宗地 |
宗地多边形、宗地边界(线)、宗地拐角(点) |
宗地多边形不能叠置。宗地多边形边界必须被宗地边界线覆盖。宗地边界端点必须被宗地拐角点覆盖。 |
街道中心线和人口普查单元 |
街道中心线、人口普查区块、人口普查区块组、人口普查区域 |
街道线不能相交或内部接触。人口普查区块不能叠置。人口普查区块组必须被人口普查区块覆盖。人口普查区块组不能叠置。人口普查区域必须被人口普查区块组覆盖。人口普查区域不能叠置。 |
土壤 |
土壤类型多边形 |
土壤多边形不能叠置。土壤多边形不能有空隙。 |
水文分析 |
水文线、水文点、流域(多边形) |
水文线不能自叠置。水文点必须被水文线覆盖。流域不能叠置。流域不能有间距。 |
1、要使用创建拓扑向导创建拓扑,请完成以下步骤:
如果一个或多个要素类包含坐标 Z 值,则单击 Z 属性设置 Z 等级。Z 容差用于区分彼此容差范围内折点的 Z 高度或高程。例如,两个高度不同的相邻要素之间可能共享一条公用边。但是,只有各自的 X,Y 折点会定位于同一点,Z 值或高度则不然。Z 容差可在验证和聚类操作期间帮助正确处理此信息。Z 容差默认值与 X,Y 容差默认值相同(以实际单位表示为 0.001 米)。
查看之前所有配置的摘要信息,然后单击完成。现在已将新拓扑添加到要素数据集。随即显示提示消息,询问您是否要验证要素数据集中的拓扑。如果要素类中已有数据,请单击是。使用地理处理工具创建拓扑
ArcToolbox 包含一系列用于拓扑的地理处理工具。拓扑工具集位于“数据管理”工具箱中。
使用这些工具可构建用于创建和修改地理数据库拓扑的脚本。脚本可用于自动执行一系列任务和构建可重复工作流。
要使用创建拓扑工具创建拓扑,请完成以下步骤:
多次运行此工具,直到添加了您希望参与拓扑的所有要素类为止。
您可能还需要多次运行此工具,直到向拓扑中添加完所有所需的拓扑规则为止。
以下为独立 Python 脚本示例,您可使用该脚本创建拓扑并向拓扑中添加多个要素类和规则:
可使用此独立 Python 脚本创建拓扑、添加多个要素类和规则以及验证拓扑。
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 中的拓扑。
拓扑属性对话框的常规选项卡包含以下信息:
注:
默认拓扑容差值是默认 x,y 分辨率的 10 倍,且在大多数情况下均建议使用此设置。
要素类选项卡显示拓扑中的坐标精度等级数和 Z 等级数以及为每个涉及的要素类分配的等级。
定义拓扑时,需要对拓扑中的要素类进行等级划分,如果折点位于彼此拓扑容差范围内,以便控制折点的移动方式。等级为 1 的要素类被视为具有最高精度。坐标等级可确保在执行拓扑验证期间,可靠放置的折点即可靠性较低的折点要移向的定位点位置。
可以通过单击相应的文本框并输入新的数值来编辑 XY 等级和 Z 等级的总数。
要编辑与要素类相关联的 XY 或 Z 等级,请单击要素类旁边的列,然后输入新数值。您输入的数值不得大于 XY 等级数或 Z 等级数文本框中显示的数量。
要素类选项卡还可用于在拓扑中添加或移除要素类。格网会显示包含拓扑的要素数据集中所有要素类。可通过选中要素类名称旁边的复选框来选择要添加到拓扑的要素类。取消选中复选框将从拓扑中移除该要素类。可通过单击全选来选择要素数据集中所有可用的要素类。单击全部清除可取消选择所有当前选定的要素类。
单击确定可将选定的要素类添加到拓扑中。或者,可以单击取消退出拓扑属性,而不向拓扑添加任何要素类。
拓扑规则定义了要素之间允许的空间关系。规则选项卡可显示参与拓扑的要素类和子类型上定义的拓扑规则。
要向拓扑添加规则,请单击添加,或单击格网的最后一行,其中显示了单击此处添加新规则。随即创建一个空行。可以在要素类及其子类型之间构建新规则,方法为使用每列中的下拉菜单,然后从左到右填充每个像元以定义规则。
要从拓扑中移除规则,请在格网中选择一行,然后单击移除。
如果创建规则集所依据的拓扑与要定义的新拓扑具有相同的要素类名称,则规则集中命名的要素类应与新拓扑中的要素类正确匹配。如果名称不同,则需要将规则集中提到的要素类与新拓扑中相应的要素类匹配。
注:
错误选项卡可汇总拓扑中发现的错误和异常。与规则选项卡类似,格网显示了拓扑规则及其涉及的要素类和子类型。与每个拓扑规则相关联的错误和异常会显示在格网右侧。验证拓扑时,如果违反拓扑规则,则会产生错误。可以单击“导出至文件”按钮将汇总信息另存为文本文件来创建指定时间拓扑状态的记录。这对于较大的拓扑编辑工程来说,是记录和监控进度的有效方式。有关更多详细信息,请参阅验证和修复地理数据库拓扑。
在地图拓扑选项对话框中,拓扑容差是一个距离范围,当边与折点处于此范围内时,确定它们重合。默认情况下,ArcGIS Pro 会自动计算最小的可能值。您可以指定自定义容差。对于大多数使用情况,自动设置是最佳做法。
警告:
增大拓扑容差可能会降低数据的空间准确性,并导致要素折叠或变形。这发生在多个要素元素被捕捉到一起并确定为重合时。
地理数据库拓扑用于定义相同要素类、不同要素类或子类型中的要素之间的关系。例如,您可以定义一个拓扑规则,用于指定在所有道路高速公路交叉点处都必须存在的重叠点要素。
有关详细信息,请参阅创建拓扑。
验证参与拓扑规则的要素会在单独的拓扑图层组上符号化和记录错误。您可以将错误标记为异常或使用预定义修复或常用编辑工具修复错误。
有关详细信息,请参阅验证和修复地理数据库拓扑。
网络拓扑
网络拓扑仅适用于公共设施网络。可将其用于存储和管理网络相关信息,以及维护可遍历和不可遍历要素之间的连通性。公共设施网络不参与地图拓扑。
有关详细信息,请参阅关于网络拓扑。
公共设施网络的所有者可以启用或禁用网络拓扑。无论该拓扑是在启用还是禁用状态下,您都可以执行大多数编辑操作,例如创建或编辑要素、要素模板、要素和关联。
要了解详细信息,请参阅网络拓扑操作。
当启用了网络拓扑时,编辑网络会在名为 Dirty Areas 的子图层上的修改区域周围生成符号化缓冲区。验证拓扑会包含您的更改并删除脏区。如果网络拓扑被禁用,会在整个网络上创建一个脏区。
要了解详细信息,请参阅公共设施网络中的脏区。
多个编辑人员可以同时编辑一个要素数据集及其拓扑。
以下部分介绍了协调脏区、错误、异常和潜在冲突的结果。在每种情况下,结果都基于在创建子版本后父版本和子版本均已更新的协调过程。如果在协调子版本前没有编辑父版本,协调结果将是子版本的内容。在各示例中,将版本 2 创建为版本 1 的子版本。然后以示例中所述的方式编辑这两个版本;随后依据版本 1 协调版本 2。下面示例中的插图使用以下图例:
如上所示,父版本的原始状态(无脏区)在协调后保持不变。但是,可能会由于针对子版本执行了更新而创建其他脏区。
下面的示例 2 和 3 说明了在父版本中引入和验证的任何脏区在协调后保持验证状态的其他情况。
在子版本中对拓扑要素进行的任何编辑都会在协调后产生脏区,即使在子版本中已验证由于编辑而产生的脏区。当原始编辑不产生脏区(例如属性更新)时也是如此。以下示例对此进行了说明:
注:
在下例中,版本 1 和版本 2 均已编辑;但仅在版本 2 中修改了示例中的多边形形状。
在 Standard 或 Advanced 许可等级下可用。
可对拓扑进行多种修改。在某些情况下(如重命名拓扑时),更改不会对拓扑状态产生任何影响。但在其他情况下,更改可能需要重新验证拓扑。例如,更改(如添加新要素类或规则,或者更改拓扑容差)可能会创建新的脏区和错误要素,这就需要重新验证拓扑。无论企业级地理数据库中的拓扑是否已版本化,均可对其执行本主题中所列出的方案编辑。
可使用拓扑属性对话框来管理很多共同的拓扑任务。在拓扑属性中可以执行以下操作:
以下是使用向拓扑中添加要素类工具向现有拓扑添加新要素类的步骤。
只能添加处于要素数据集内且当前未参与拓扑或几何网络的要素类。
以下是在 Python 窗口中执行 AddFeatureClassToTopology 工具的示例:
arcpy.AddFeatureClassToTopology_management(r"C:\MyProject\MyProject.gdb\Streets\Street_Topo", r"C:\MyProject\MyProject.gdb\Streets\StreetNetwork", 1, 0.1)
设计地理数据库时,应了解用于在拓扑中使用要素类子类型的选项。
子类型允许通过在要素类内构建要素的子类,以更有效地对真实世界对象进行建模。例如,在宗地要素类中,可能有标准宗地(不能叠置)和共管公寓宗地(允许叠置)的子类。此外,各个宗地子类型(例如,单户住宅与多户住宅)的分区默认值可能不同。
要了解有关子类型和地理数据库的详细信息,请参阅子类型概述。
拓扑中的各个子类型可应用不同的规则以及不同的坐标等级。这样便可创建只应用到特定子类型(例如创建细分之前构建的结构)的规则。
以考虑建筑物覆盖区为例,通过创建建筑物的子类型并且仅为无法跨过宗地边界的子类型创建“必须被其他要素覆盖”规则,可以针对一小部分建筑物合理地跨越宗地边界的情况进行建模。
还可以对各个子类型应用不同的坐标等级。例如,通过 COGO 工具输入边界的宗地可能比不同子类型中通过数字化输入边界的其他宗地具有更高的坐标等级。
您可以使用从拓扑中移除要素类地理处理工具从拓扑中移除要素类。
现在即已从拓扑中移除要素类。要移除多个要素类,请针对您希望移除的每个要素类运行此工具。
以下是在 Python 窗口中执行 RemoveFeatureClassFromTopology 工具的示例:
在目录窗格中进行以下操作:
注:
重命名拓扑不会影响其状态,也不需要重新验证该拓扑。
提示:
要素类参与地理数据库拓扑时,无法对其重命名。
您可以使用设置拓扑容差地理处理工具来更改拓扑容差。
注:更改拓扑的拓扑容差需要重新验证该拓扑。拓扑容差越大,将数据中的要素从其当前位置移动的可能性越大。如果拓扑容差过大,形状将发生变化。
以下是在 Python 窗口中执行 SetClusterTolerance 工具的示例:
arcpy.SetClusterTolerance_management(r"C:\MyProject\MyProject.gdb\Streets\Street_Topo", 0.00015)
您可以通过使用地理处理工具向现有拓扑中添加或从中移除规则。
您可以使用向拓扑中添加规则地理处理工具向拓扑添加规则。
新规则现已添加到拓扑。在多个规则的情况下,您需要多次运行此工具。
注:添加新规则后,必须重新验证拓扑。
以下是在 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",
"")
从拓扑中移除规则
您可以使用移除拓扑规则地理处理工具从拓扑中移除规则。
当使用脚本运行此工具时,必须在规则名称后面的括号中指定待移除拓扑规则中涉及的要素类 ObjectClassID。了解有关查找 ObjectClassID 的详细信息。
新规则随即从拓扑中移除。要移除多个规则,您需要多次运行此工具。
注:移除规则需要重新验证拓扑。
以下是在 Python 窗口中执行 RemoveRuleFromTopology 工具的示例:
arcpy.RemoveRuleFromTopology_management("C:\\MyProject\\MyProject.gdb\\Streets\\Street_Topo",
"Must Not Have Dangles (21)")
更改坐标等级
有多种方法可更改拓扑中的等级设置。
更改等级数
拓扑可支持最多 50 个可指定给要素类的等级。
注:
更改等级数并不需要重新验证拓扑。
更改要素类的等级
注:
更改任何要素类的等级均需要重新验证拓扑。
有多个任务可处理拓扑内的规则。可进行以下操作:
将拓扑规则保存到规则集文件
从规则集文件中加载拓扑规则
如果创建规则集所依据的拓扑与要定义的新拓扑具有相同的要素类名称,则规则集中命名的要素类应与新拓扑中的要素类正确匹配。如果名称不同,则需要将规则集中提到的要素类与新拓扑中相应的要素类匹配。
注:将规则集加载到具有之前指定规则的拓扑中会将规则集中的规则附加到现有规则。
注:加载规则集将需要重新验证拓扑。
注:如果在规则集中有指定的要素类无法与新拓扑中的要素类相匹配,则涉及不匹配要素类的规则不会被加载。
可从拓扑属性对话框中查看拓扑中的错误数汇总信息。该汇总信息显示每个拓扑规则存在的错误数和异常数。
可将汇总信息另存为文本文件来创建指定时间拓扑状态的记录。这对于较大的拓扑编辑工程来说,是记录和监控进度的有效方式。
ArcGIS 开发者工具为程序员提供了访问拓扑图的方法,拓扑图是参与拓扑的要素类中的几何的平面制图表达。有关使用拓扑图的详细信息,请参阅“适用于 .NET 的 ArcObjects 帮助”