执行一般拓扑任务。

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

在您创建拓扑后,即可在使用和管理它及其相关图层时对其进行修改。

在将拓扑作为 Web 要素图层发布时,通过使用要素服务的面向服务的架构来使用、编辑和验证拓扑。在这种情况下,拓扑 Web 要素图层的属性为只读,并且可用的修改任务将受到限制。

下表总结了受支持的拓扑修改任务:

拓扑修改任务通过 ArcGIS Pro 访问的拓扑通过要素服务访问的拓扑 Web 要素图层

验证拓扑中的脏区

是是

修复错误并标记异常

是是

导出拓扑错误和异常

是是

向参与拓扑的要素类添加字段或从中删除字段

是

更改参与拓扑的要素类或字段的别名

是

拓扑属性 > 重命名拓扑

是

拓扑属性 > 将要素类添加到拓扑或移除要素类

是

拓扑属性 > 添加,修改或移除拓扑规则

是

拓扑属性 > 更改拓扑的聚类容差

是

拓扑属性 > 更改拓扑中要素类的坐标 (XY) 等级

是

警告:
通过 ArcGIS Pro 访问、编辑和验证拓扑支持以下概述的工作流。

可对拓扑进行多种修改。在某些情况下(如重命名拓扑时),更改不会对拓扑状态产生任何影响。但在其他情况下,更改可能需要重新验证拓扑。例如,更改(如添加新要素类或规则,或者更改拓扑容差)可能会创建脏区和错误要素,这就需要重新验证拓扑。

可以对企业级地理数据库中的拓扑进行本主题中所列出的架构编辑,而不管它们是否作为 Web 要素图层(要素服务)进行版本化或发布。发布拓扑并将其用作要素服务,并且需要进行方案编辑时,请停止并重新启动服务以查看更改。

您可以使用拓扑属性对话框管理许多常见的拓扑任务,如下所示:

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

了解有关拓扑属性的详细信息

向拓扑中添加要素类

使用向拓扑中添加要素类工具完成下列步骤以向现有拓扑添加要素类:

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

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

  5. 输入要素类的 x,y 坐标等级,或输入 "" 以使用默认值。
  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)

在拓扑中使用子类型

设计地理数据库时,请考虑用于在拓扑中使用要素类子类型的以下选项。

关于子类型

子类型允许通过在要素类中构建要素的子类,以更有效地对真实世界对象进行建模。例如,可将城市街道要素类中的街道划分为三个子类型:地方街道、辅助道路和主干道。

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

拓扑中的子类型

您可以为拓扑中的各种子类型创建不同的规则。这使您可以将某些规则应用于特定的子类型。

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

移除要素类

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

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

    将从拓扑中移除要素类。要移除多个要素类,请针对每个要素类运行此工具。

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

arcpy.RemoveFeatureClassFromTopology_management(r"C:\MyProject\MyProject.gdb\Streets\Street_Topo", r"C:\MyProject\MyProject.gdb\Streets\StreetNetwork")

重命名拓扑

要重命名拓扑,请执行以下操作:

  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. 为每个要素类输入等级。
  6. 单击确定
注:

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

处理拓扑规则

以下小节描述了如何处理拓扑中的规则。

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

可将规则另存为可共享和重复使用的规则集文件。

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

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

要从规则集文件中加载拓扑规则,请完成以下步骤:

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

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

  8. 对于每个未映射的源要素类,在目标列中单击,然后单击新拓扑中其对应的要素类。
  9. 在所有对话框中均单击确定
注:
  • 将规则集加载到具有之前指定规则的拓扑中会将规则集中的规则附加到现有规则。
  • 加载规则集将需要重新验证拓扑。
  • 如果在规则集中有指定的要素类无法与新拓扑中的要素类相匹配,则涉及不匹配要素类的规则不会被加载。

汇总拓扑错误

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

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

查询和导航拓扑图

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