当数据分布在多个地理数据库中时,可以提高数据可用性和性能。数据分布后,它有助于减轻服务器争用,并允许组织在执行编辑的用户与为了执行只读操作而访问数据的用户之间平衡其地理数据库上的负载。
地理数据库复制是 ArcGIS Pro 中的可用数据分布工作流之一。地理数据库复制建立在传统版本环境的基础上,并分发全部或部分数据,该分发方式可允许任何数据更改在两个或多个地理数据库之间同步。复制数据集后,会创建一个复本对;一个复本位于原始地理数据库,另一个相关复本被分布到一个不同的地理数据库。可以将这些复本在其各自地理数据库中发生的更改进行同步,以使一个复本中的数据与其相关复本中的数据相符。
在实施之前,准备要复制的数据时需要考虑以下几个方面。
地理数据库复制要求
要复制的数据集必须满足以下要求:
- 数据库用户必须具有对数据的写入权限。
- 要创建复本的数据库用户必须具备拥有企业级地理数据库中数据的充分权限。
- 所有数据必须通过传统版本化注册。
注:
ArcGIS Pro 中的地理数据库复制不支持分支数据库版本化数据和通过使用将编辑内容移至基表选项的传统版本注册数据。
其他复制要求取决于复制类型:
- 检出/检入复制
- 您可以选择检出非版本化数据或使用传统版本注册的数据。
- 单向和双向复本
- 每个数据集必须具有一个 GlobalID 列。此列用于保持行在地理数据库之间的唯一性。
- 使用存档追踪变更选项的单向复制:
- “父-子”单向复制 - 子复本可以是企业级地理数据库或文件地理数据库。
- “子-父”单向复制 - 子复本和父复本必须都托管在企业级地理数据库中。
任何未满足上述要求的数据集都不会包含在复本中。如果所有数据集均不满足要求,则复本创建将失败。
要复制的数据列表将自动扩展为包括相关数据集。例如,如果选择拓扑或要素数据集中的任何要素类进行复制,则会包括该拓扑或要素数据集中的所有要素类。有关详细信息,请参阅使用高级地理数据库数据集进行复制和复制与地理数据库的兼容性。
下面列出了在创建复本时要应用额外规则和行为的数据类型。查看适合您数据的主题:
确定要复制的数据集
创建复本的最重要方面之一是确定应复制哪些数据。创建复本时,您可以选择复制数据集中的所有数据或仅复制数据的子集。根据需要,计划要复制的相应数据量。请考虑复本的生存时间并确保满足您的相应要求。
要复制的数据的元数据在复本创建过程中复制。但是,在复本同步过程中不会应用对元数据所做的更改。
复制所有数据
创建复本地理处理工具允许您通过浏览到要复制的图层来复制所有数据。
注:
对于表,默认行为是仅复制表的方案。如果要复制所有记录,请按照下文创建要复制的数据子集中所述的步骤指定 SQL 表达式 1=1 作为表上的定义查询。要复制记录的子集,请设置适当的 SQL 表达式。
创建要复制的数据的子集
有时,您可能只希望复制数据集中要素的子集。有多种方法可以指定要复制的数据子集:
- 使用定义查询。
- 使用选择集。
- 指定范围。
- 使用几何要素。
根据所使用的任何过滤器确定数据后,即可应用关系类逻辑(如果关系类存在)。对于关系类中包含的每个数据集来说,会额外添加一些行,前提是它们与复本中的现有数据相关。有关详细信息,请参阅复制与相关数据。
使用定义查询
定义查询使用 SQL 语法编写,可用于通过过滤要从数据集中检索并显示在图层属性表中要素的方法,来定义将在图层中使用的要素子集。要复制要素的子集,请按照以下步骤首先在 ArcGIS Pro 中为图层创建定义查询。
在数据集上创建定义查询后,请使用复本数据集下拉菜单将其添加到创建复本地理处理工具 。
注:
要确保在复本中应用定义查询,必须使用创建复本地理处理工具中的复本数据集下拉菜单。使用浏览按钮时,不支持对地图中数据的定义查询。
使用选择集
通过选择要素可在地图上高亮显示要素子集,以便在随后的数据探索或数据分析中使用。选择要素后,可以复制单个要素类和表的选择集。从创建复本地理处理工具,使用复本数据集下拉菜单,以确保复本内使用了映射中选定的数据集。
指定范围
范围环境设置可用于定义要复制的数据的空间范围。此设置将仅处理和包括通过指定范围的要素。
即使设置了输出坐标系环境,仍假设所输入的范围位于存储输入数据的坐标系之中。如果工具需要处理多个输入数据集,则将使用第一个数据集定义范围的坐标系。
使用几何要素
如需有关如何使用此选项定义复本几何的详细信息,请查看创建复本地理处理工具帮助中的复本几何要素参数。
创建复本地理处理工具参数
以下将介绍创建复本地理处理工具的输入参数。
- 复本数据集 - 要复制数据的子集,可应用定义查询,然后使用下拉菜单将其添加到复本中。对于其他数据集,浏览到数据集并进行选择,或者,如果图层已存在于地图中,则可使用下拉菜单。
- 复本类型 - 选择检出,单向复本,“子-父”单向复本或双向复本。
- 地理数据库将数据复制到 - 可以复制到本地或远程目标地理数据库。可通过在 ArcGIS Server 上运行的地理数据服务访问远程地理数据库。
浏览到地理数据库或用于接收数据的地理数据服务并进行选择。如果复本类型为检出或单向,则目标可以是文件地理数据库;否则,必须是企业级地理数据库。
- 复本名称 - 输入要创建的复本的名称。
高级设置
复本访问类型
创建复本时,可为要素信息模型选择以下两个选项:
- 完整模型 - 使用完整模型时,所有简单和复杂的数据类型(例如,拓扑、注记和尺寸要素类)都将被复制到子地理数据库并进行版本化。这是默认设置。
完整模型假定要素在父复本和相关子复本地理数据库中按同一要素类型进行存储。该选项用于基于 ArcGIS 客户端软件编辑应用程序。
- 简单模型 - 在此模型中,子地理数据库仅包含简单的要素。使用简单模型时,不复制拓扑、网络数据集、注记和尺寸要素类,也不对子地理数据库中的数据进行版本化。必要时,可在复本创建后对子地理数据库上的数据进行版本化。
在复制期间,父地理数据库中的非简单要素(例如,拓扑和网络数据集)转换为子地理数据库中的简单要素,反之亦然。考虑到两个地理数据库中的要素类型和特征存在差异,在同步期间还将应用其他处理过程。
当子地理数据库通过简单要素编辑器(包括并非基于 ArcGIS 客户端软件的第三方编辑器)进行编辑时,必须使用此选项。该选项还可用于简化子地理数据库中的数据模型,以便将子地理数据库用于单向复制或在基于 ArcGIS 或 ArcGIS 客户端软件的编辑器中使用。
简单模型具有以下优势:
- 您可以通过非基于 ESRI 软件的简单要素编辑器对子地理数据库进行编辑。
- 对于单向复本,子地理数据库上的数据不进行版本化,从而可以轻松地与非 ESRI 应用程序集成。
注:
对于拓扑,在使用简单模型时,拓扑对象将从子地理数据库中排除。但会包括所有参与的要素类。创建复本后,从子地理数据库向父地理数据库发送更改会自动维护父地理数据库中的要素。在父复本上会进行进一步处理以更新拓扑脏区。
扩展要素类和表
这可指定是否包括未在复本数据集中列出的扩展要素类和表(例如在拓扑或关系类中找到的要素类和表)。
- 使用默认值 - 添加与复本中的要素类和表相关的扩展要素类和表。要素类的默认设置是复制所有与空间过滤器相交的要素。如果未提供任何空间过滤器,则系统会将所有要素包括在内。表的默认设置是仅复制方案。
- 仅添加方案 - 仅为扩展要素类和表添加方案。
- 所有行 - 为扩展要素类和表添加所有行。
- 不添加 - 不添加扩展要素类和表。
复制相关数据
这可指定是否复制与复本中现有行相关的行。例如,假设复本过滤器内部存在一个要素 (f1),且该过滤器外部存在一个来自其他类的相关要素 (f2)。如果您选择获取相关数据,则要素 f2 会包含到复本中。
- 不取得关联 - 不复制相关行。
- 取得关联 - 复制相关数据。这是默认设置。
复本几何要素
复本几何要素可用来定义复本几何。
数据复制示例
以下示例维护工序将说明数据复制的某些默认行为。
维护工作队准备在某居民区进行一些检查。为了进行某些字段编辑,工作队需要对覆盖此居民区的那部分基础设施进行复制。要开始复制过程,需要使用空间过滤器来标识检查区域的空间范围(在本例中,范围将通过环境设置进行设置)。
工作队要重点关注已采用特殊材料进行绝缘的电缆。为了标识这些电缆,需要对相关数据集应用查询。
最后,由于每个维护工作队希望每天只访问一定数量的属性,因而通过基于属性数量的定义查询来标识一个居民区的住户。选择如下所示。
以下内容将被复制:选定的要素、由定义查询标识的要素,以及与所选空间范围相交的要素。其中还将包括一些额外的要素。