查看 ArcGIS Pro 中的提示、工具和地理数据库功能,探索和使用关系类中的相关数据。
复制关系类中的数据
您可以使用复制和粘贴 将任何要素数据集、要素类或表从地理数据库复制到目标地理数据库。 对于所复制和粘贴的每个要素数据集、要素类和表来说,它们最终将成为目标地理数据库中的新要素数据集、要素类和表,其中所有要素或记录均来自源数据。
进行复制和粘贴时,同时也会复制所有相关数据。 假设您复制参与关系类的要素类或表。 在这种情况下,关系类以及关系类中的所有其他要素类或表也会被复制。 对于具有与要素关联的注记的要素类,与要素关联的注记也将被复制。 在复制具有属性规则的要素类时,所有属性规则以及属性规则中引用的任何其他要素类或序列都将被复制。 对于具有属性域、子类型或索引的要素类来说,属性域、子类型或索引同时也会被复制。
警告:
要素类至地理数据库地理处理工具只复制简单的要素类。 例如,如果在要素数据集中包含要导出的要素类,则将只复制要素类。 而不会将要素数据集和任何高级元素(如拓扑、关系类或附件)复制到输出地理数据库。
关系类中的编辑数据
可以设置关系类,以便在修改对象时,相关对象会自动更新。 这可能涉及物理移动相关要素、删除相关对象或更新属性。 例如,您可以建立一种关系,以便每当您移动电线杆时,连接的变压器和其他设备都会随之移动。 通过设置规则,关系类可以限制有效的关系类型。 例如,一根电线杆最多可支持三个变压器。 钢制电线杆可以支持 A 类变压器,但不支持 B 类变压器。 关系类主动维护相关类之间的引用完整性,即使其中之一尚未添加到 ArcGIS Pro 会话中。 当从地理数据库中删除与其他对象存在简单关系的对象时,其所有关系也会被删除。 如果删除的对象是源对象,则所有相关目标对象中的外键为空。 如果删除的对象是目标对象,则源对象不受影响。
假设关系作为中间表中的行进行维护(多对多关系或属性关系)。 当删除源或目标对象及其关系时,与这些关系对应的行将从中间表中删除。
在属性窗格 中,可以创建和删除所选要素之间的关系,并在所选要素与表格中的非空间记录之间添加新关系。 关联要素必须参与相同的关系类。
要了解有关在关系类中编辑数据的详细信息,请查阅编辑要素关系。
通过提供对相关对象的自动更新,关系类可以使您免于执行额外的编辑操作。
请参阅版本化关系类中的数据,了解有关编辑和管理存储在企业级地理数据库中的关系类及其相关数据的详细信息。
编辑者追踪和关系类
编辑者追踪提供了有关要素类和表的设置,该设置将自动记录关于所进行的对类的所有插入和更新的信息。 它保存了创建或修改数据的编辑者的记录以及编辑发生的时间戳。 编辑者追踪仅适用于对现有数据集的操作,不适用于创建数据集的操作。
并非所有的关系类类型都支持编辑者追踪。 当创建的关系类具有多对多基数或属性时,将会创建中间表。 编辑者追踪仅适用于这些基于表的属性关系类。
设置关系类分割策略
默认情况下,创建线或面要素类时,会在要素类上自动定义分割模型。 分割模型可确定在编辑过程中分割要素时如何划分表中要素的几何及其属性。
除了在要素类上定义分割模型外,还可以在关系类上定义分割策略。 关系类分割策略用于确定在编辑过程中,当分割原始要素类中的要素时,如何处理目标表中的相关记录。
根据关系类的类型(简单或复合),可以定义不同的分割策略行为,其中包括默认(简单)、默认(复合)和复制相关对象。
有关如何设置和使用此关系类属性的详细信息,请参阅设置关系类分割策略。
使用关系属性
ArcGIS Pro 包含有助于构建和维护关系的工具。
属性关系类的属性索引
属性索引可以在表、要素类、shapefile 或属性关系类上加速连接和快速定位与属性查询匹配的记录。
对于大多数属性查询而言,使用索引查询记录要比从第一条记录开始逐条搜索整个表的方式更加快速。 表、要素类、shapefile 或属性关系类中包含数据后,可为经常查询的字段创建属性索引。
关系类中数据的属性规则
属性规则可用于读取和编辑地理数据库中参与关系类的数据集的相关记录。
规则可以应用于参与关系类的要素类和表,这些关系类可包含附件和关联要素的注记。 属性规则还可从对关系中的源类与目标类的更新中截取编辑事件,其中包括添加、移除或删除相关记录。 例如,当要素被添加到相关要素类时,实时计算属性规则可以更新一个属性字段。
使用关系类时,您可以使用 Arcade 函数读取相关记录,这些函数可获取输入要素并返回关联的相关记录。 还可以基于字典返回内容使用计算规则编辑关系类中的相关记录。
计算属性规则中可以使用 Arcade 函数和脚本表达式来访问关系类中的相关数据。 使用 Arcade 函数 FeatureSetByName、FeatureSetByRelationShipName 和 FeatureSetByRelationshipClass 读取关系类的相关记录 也可以在更新编辑时为关系类添加新的相关记录。
警告:
当创建多对多或属性关系类时,将会创建一个新的中间表。 该中间表在地理数据库中未被识别为对象类。 因此,属性规则、域、子类型、条件值和默认值等地理数据库行为无法应用于此中间表或与此中间表一起使用。
版本化关系类中的数据
要让其他数据库用户查看或更改数据库或企业级地理数据库中任何数据的内容,那么您必须授予他们执行相应操作的权限。
为参与关系类的要素类或表授予权限后,必须为源类和目标类授予这些权限。 如果源要素类和目标要素类在同一要素数据集中,那么由于授予的权限都在要素数据集级别,使得二者具有同一组权限。 然而,如果源类或目标类不在同一要素数据集中,则必须确保为源类和目标类授予适当的权限。 如果关系类被属性化或具有多对多基数,则在向源类分配权限时,权限将被自动传递至中间表。
关系类存储并保留在地理数据库中,有助于方便编辑。 以下编辑工作流选项支持企业级地理数据库中的关系类:
当关系类和相关数据存储在企业级地理数据库中时,可以使用版本来管理对数据的编辑。 在具有多个编辑器的企业级地理数据库中,版本允许多名用户同时使用和编辑关系中的相同要素或记录,而无需应用锁定或复制数据。 版本为每个编辑器提供了唯一且孤立的数据视图。
分支版本化和关系类提示
如果数据集参与关系类并且关系的主键是 ObjectID 字段,则无法将数据集注册为分支版本化。
在分支版本化中,当针对默认版本协调授权版本时,将在协调过程中发现冲突。 例如,在当前指定版本和默认版本中修改拓扑结构上相关的要素或关系类时,将发生冲突。
提示:
使用冲突视图查看指定和默认版本的编辑冲突。
在分支版本化中解决冲突时,需要确定要保留的要素和属性的表示。 从源关系类中删除要素可能会触发一条消息,以从目标关系类中删除要素。 因此,请注意替换涉及参与关系类的源要素类的冲突的结果。
传统版本化和关系类提示
传统版本化 - 在直接从企业级地理数据库进行访问时,提供在多个版本中处理长期事务的灵活性,在使用要素服务以适应短期事务时,提供简化的编辑体验。
选择将编辑内容移动到基表的传统版本化是传统版本化的一种可选形式。 它允许编辑者和应用程序直接访问基表数据,同时允许其他编辑者在孤立版本中工作。 该选项具有许多与传统版本化相同的优点。 但是,只能编辑简单要素,例如点、线、面、注记和关系类。 无法编辑拓扑、网络数据集或公共设施网络中的要素类。
对于传统版本化,保存对某版本的编辑,并且该版本中的同一要素已在另一编辑会话中进行更新(或要素在某一编辑会话中得到更新,而在另一会话中则被删除)时在协调操作期间发现的冲突。
提示:
在传统版本化中,如果工作流是一个用户编辑,另一个用户协调,则要确保协调的用户对已在版本中修改的所有要素类和表具有所有权限;否则,该用户将无法协调。 如授予权限的部分中所述,用户协调必须具有参与任何已修改(包括简单或复合关系)关系类的源和目标类的完整权限。 在此工作流中,用户协调也必须具有足够的版本权限。 协调用户必须能够修改要协调的版本(这表示该版本必须是公有的),而且必须能够查看目标版本(这表示该用户必须拥有该目标版本或者该目标版本必须是公有的或受保护的)。
在传统版本化中解决冲突时,需要确定要保留的要素和属性的表示。 从源关系类中删除要素可能会触发一条消息,以从目标关系类中删除要素。 因此,请注意替换涉及参与关系类的要素类的冲突的结果。 例如,在电力公共设施要素数据集中,如果删除与一对多变压器相关的公共设施电线杆,相关的变压器也将被删除。
将地理数据库复制用于关系类
通过地理数据库复制可复制企业级地理数据库中的某些或全部数据集。 它允许您使用过滤器和关系类来定义要复制的要素或行。 复本创建过程中,会根据应用程序中定义的过滤器向复本中添加行和要素。 然后使用关系类来追加更多要素和行。
以下示例将说明关于相关对象的复制行为。 该示例中所用的数据模型为地产、建筑物及其相关注记之间的简单源-目标关系。
有关详细信息,请参阅准备要复制的数据。
同步将维护关系。 对于双向和单向复制,在同步期间会应用复本创建时所使用的相同过滤器和关系类规则。 在确定要发送的变更时,将对自上次同步以来应用的每个复本数据集中的所有编辑内容进行评估。 如果某一编辑符合复本过滤器,则同步该编辑。
例如,选择原始类中的一些要素(例如建筑物)进行复制。 建筑物通过简单关系类与表中未包括在复制过程中的属性记录相关联。 在编辑子复本时,删除了一个建筑物。 同步时,为将与被删除的要素的关系置为无效,相关目标类(表)中的外键字段中的对应条目被设置为 NULL。
共享包含关系类的数据集
仅当关系是通过地理数据库关系类定义并且源和目标表在发布之前均位于地图中时,要素服务才允许对相关数据进行查询。
要在要素服务或托管要素图层上允许查询,请定义要素类与相关表或要素类之间的关系类。 通过关系类访问的相关数据将包含在您发布的要素服务中。 要支持返回关联对象的查询,关系类中的表和图层必须包含在发布的地图中。 如果地图不包含源或目标图层或表,则要素服务将忽略关系。
注:
对于属性关系类,需要在地图中包含关系类表。
了解有关准备数据发布要素服务、要素服务创建和通过服务使用相关数据(视频)的详细信息。