准备数据
首先,您需要确认与其他类型的复本相比,检出/检入复本是在零售部门和旅游部门之间分配数据的最佳解决方案。 然后,您将下载数据,连接两个部门的企业级地理数据库,并确保针对复制正确配置零售数据。
为什么选择检出/检入复本?
地理数据库复制可用于跨多个位置和地理数据库管理和分配空间数据。 它涉及创建源地理数据库数据的复本或副本并将这些复本转移到目标地理数据库。 复本的优势之一是可使用源数据定期同步。 同步意味着对源数据所做的任何更改还将在复本数据中反映,这有助于管理经常更新的数据。
共有三种类型的地理数据库复制:单向、双向和检出/检入。 所用类型取决于数据的存储方式、数据的预期分配方式以及数据的编辑要求。
本教程将重点介绍旅游部门和零售部门之间的复本。 所用的复本类型将为检出/检入复本,亦称为检出复本。
为什么检出/检入复本是适用于零售部门和交通部门的最佳复制类型? 请注意工作流的以下方面:
- 旅游部门使用企业级地理数据库,而零售部门不使用。
- 旅游部门正忙于管理其自己的数据,因此其无法承担更多的职责,例如管理复本。 首选持续时间较短的复制模型。
- 将根据需要创建复本,一年两次,即当零售部门根据当地企业的报告更新其数据时。
可通过检出/检入复制在子复本数据中进行编辑并同步到父地理数据库中。 父数据库始终为企业级地理数据库,而子数据库可以为企业级或文件地理数据库。 在同步数据后,检出复本将取消注册(删除),无法进行其他编辑。 如果需要进行其他编辑,必须创建新检出复本。
由于旅游部门拥有企业级地理数据库,而零售部门没有,因此旅游部门的地理数据库将为父项。 但是,零售地理数据库包含数据。 利用检出/检入复本,旅游部门可以检出空白要素类方案,并为零售部门提供其访问权限。 然后,零售部门会将其数据加载到方案中。 最后,零售部门检入填充的要素类方案,并将其返回给旅游部门。 之后,复本会取消注册。
下载数据
在确定检出复本最适合工作流后,您将下载并打开 ArcGIS Pro 工程包,其中包含本教程所用的数据。
注:
在本教程中,您将使用自己的企业级地理数据库完成工作流。 确保您已安装并授权 ArcGIS Server 并且已安装 Microsoft SQL Server(或另一个受支持的关系数据库管理系统)。 有关安装这些组件的详细信息,请检查基础 ArcGIS Enterprise 部署文档以及 ArcGIS Enterprise Builder 入门教程。
- 下载 Tourism_and_Retail 工程包。
- 在计算机上找到已下载的文件。
注:
开始下载前,根据 web 浏览器的不同,系统可能会提示您选择文件的位置。 大多数浏览器将默认下载到计算机的 Downloads 文件夹下。
- 如果您的计算机上已安装 ArcGIS Pro,请双击 Tourism_and_Retail.ppkx 打开该工程。 如果收到系统提示,请使用您获得许可的 ArcGIS 帐户登录。
注:
如果您没有 ArcGIS Pro 的访问权限或者 ArcGIS 组织帐户,请参阅软件访问权限选项。
该工程包含两个地图,即零售和旅游,参与复制的每个部门对应一个。 这些地图将缩放至阿根廷布宜诺斯艾利斯,但是不含除了底图之外的其他数据。
该工程还包含工程地理数据库中的数据。
- 在目录窗格中,展开数据库,然后展开 tourism_and_retail.gdb。
该数据库包含一个要素类:餐厅。 在本教程中,这是由零售部门管理的数据集,旅游部门想要在其地图中使用该数据集。
连接到地理数据库
数据当前所在的数据库为工程的默认地理数据库。 检出复制需要企业级地理数据库,因此您需要连接到一个企业级地理数据库。
企业级地理数据库使用 ArcGIS Enterprise。 它增加了功能和数据集类型;同时允许与通过其数据发布的要素服务同步。
在此工作流中,旅游部门使用企业级地理数据库,而零售部门使用文件地理数据库。 首先,您将连接到企业级地理数据库以表示旅游部门所使用的企业级地理数据库。 然后,您将创建文件地理数据库以表示零售部门所用的文件地理数据库并向其复制数据。
- 如有必要,在名为 Tourism_BA 的 SQL Server 实例(或其他受支持的关系数据库管理系统)中创建企业级地理数据库。
注:
如果您已具有可用的企业级地理数据库,则可以使用该数据库而不是进行新建。 如果您需要帮助创建新的企业级地理数据库,请参考为房地产部署企业级地理数据库教程中的“创建企业级地理数据库”一节。
接下来,您将连接到企业级地理数据库。
- 在目录窗格中,右键单击数据库,然后选择新建数据库连接。
随即显示数据库连接窗口。 用于连接到企业级地理数据库的参数取决于您的 SQL Server 或关系数据库管理系统 (RDBMS) 实例。
- 对于数据库平台,选择实例所用的 RDBMS。 对于实例,键入 RDBMS 实例的名称。
注:
示例图像使用名为 BASQL 的 SQL Server 实例;您的实例有所不同。
- 对于身份验证类型,选择数据库身份验证。
- 对于用户名和密码,键入可访问企业级地理数据库并加载数据的帐户的凭据。
注:
示例图像使用名为 EMMA 的用户;您的用户名将有所不同。
- 对于数据库,选择之前创建的 Tourism_BA 企业级地理数据库(或您有权访问并可针对本教程修改的另一个企业级地理数据库)。
- 单击确定。
即会向目录窗格添加企业级地理数据库。 默认情况下,数据库以实例名称。 (例如,示例数据库名为 BASQL.sde。)您需要按照以下命名格式对该数据库进行命名:database name_database user.sde。
- 在目录窗格中,右键单击企业级地理数据库,然后选择重命名。 将名称更改为 Tourism_BA_[您的数据库用户名].sde。
注:
在示例图像中,用户名为 EMMA,因此企业级地理数据库名为 Tourism_BA_EMMA_sde。 您的用户名将有所不同。
接下来,您将创建文件地理数据库以表示零售部门所用的文件地理数据库。 文件地理数据库不使用 ArcGIS Enterprise 并且可以在没有凭据的情况下进行创建和访问。 但是,它们缺少企业级地理数据库的一些功能。
- 右键单击数据库,然后选择新建文件地理数据库。
随即显示新建文件地理数据库窗口。 您可以使用此窗口浏览至文件地理数据库的保存位置并对其命名。 默认情况下,地理数据库将保存在工程的默认文件夹中。 考虑到本教程的目的,可以使用此位置。
- 在新建文件地理数据库窗口中,对于名称,输入 Retail_BA。 单击保存。
即会向目录窗格添加新文件地理数据库。 由于此地理数据库不是企业级地理数据库并且不需要凭据即可访问,因此您无需将其重命名为包含用户名。
接下来,您需要将零售数据从默认地理数据库复制到新文件地理数据库。
- 在目录窗格中,将餐厅要素类从 tourism_and_retail.gdb 拖至 Retail_BA.gdb。
- 展开 Retail_BA.gdb 查看其内容。
数据即已复制。
- 折叠 tourism_and_retail.gdb。
您现在已经连接到您要在本教程中使用的两个地理数据库。 一个表示零售部门管理的文件地理数据库;其中包含有关市内餐厅的数据。 一个表示旅游部门管理的企业级地理数据库;其中为空。
创建新要素类
对于复本,父地理数据库必须为企业级地理数据库。 但是,在此工作流中,您的企业级地理数据库不含数据,而文件地理数据库包含。
要将文件地理数据库的数据复制到企业级地理数据库,您需要在企业级地理数据库中创建空白要素类。 该要素类的类型和属性字段与餐厅要素类相同,但是不包含任何实际的数据。 稍后,您的检出/检入复本会将空白要素类复制到文件地理数据库,以在其中填充实际的数据,然后将其重新复制到企业级地理数据库。
- 右键单击 Tourism_BA.sde,指向新建,然后选择要素类。
您将新建参数与餐厅数据相同的要素类。 餐厅要素类为点要素类,因此您需要确保新要素类具有相同的类型。
- 在创建要素类窗格中,对于名称,键入 Restaurants_Tourism,对于别名,键入餐厅(旅游)。 对于要素类类型,选择点。
警告:
确保新要素类的名称唯一。 如果该名称与零售数据库中的同名,则创建复本时将覆盖原始数据。
默认情况下,新要素类将添加至当前地图。 您现在对在地图上访问要素类不感兴趣,因此您将关闭此选项。
- 取消选中向当前地图添加输出数据集。
- 单击下一步。
接下来,您将添加与原始餐厅要素类中的属性字段相匹配的属性字段。
提示:
要检查要素类的属性字段,可在目录窗格中右键单击要素类,然后选择打开表。
- 使用以下表添加字段:
字段名 数据类型 ID
长整型
名称
文本
类型
文本
Cuisine
文本
PhoneNumber
文本
小时
文本
StreetName
文本
城市
文本
邮政编码
文本
Longitude
双精度
Latitude
双精度
可为新要素类设置的其他参数包括其空间参考、分辨率和存储配置,但是对于本教程,无需进行设置。
- 单击完成。
即会创建要素类。
- 在目录窗格中,展开 Tourism_BA.sde。
在企业级地理数据库中,数据的前缀为数据所有者的用户名。 在示例图像中,所有者为名为 EMMA 的帐户;您的用户名将有所不同。
启用全局 ID
接下来,您将为企业级地理数据库和新要素类启用传统版本化和全局 ID。 当编辑导致数据版本化时,全局 ID 有助于映射在相同数据的多个版本中进行的编辑。 在检出/检入复本中,与单向或双向复本不同,不需要版本化和全局 ID。 但是,旅游部门打算将其数据用于共享和了解 Web 使用情况,因此在此上下文中,建议使用版本化和全局 ID。
- 在目录窗格中,右键单击 Tourism_BA.sde,然后选择地理数据库连接属性。
- 在地理数据库连接属性窗口中,确认版本化类型设置为传统。
- 关闭地理数据库连接属性窗口。
接下来,您将启用传统版本化并为三个要素类启用全局 ID。
- 在目录窗格中,对于 Tourism_BA.sde,右键单击 Restaurants_Tourism,然后选择管理。
要素类属性窗口随即显示。
- 在管理选项卡中,选中版本化,然后选择传统。 确认全局 ID 已选中。
- 单击确定。
现在,可随时复制要素类。
- 在快速访问工具栏上,单击保存按钮以保存工程。
目前,您已确认检出/检入复本复制类型适用于在零售部门和旅游部门之间分配数据。 您还连接到了要在教程中使用的企业级地理数据库,创建了新要素类,并准备好数据库连接和要素类以进行复制。
创建检出复本
接下来,您将在文化和旅游地理数据库之间创建检出/检入复本。
创建复本
要创建复本,您需要运行地理处理工具。
- 在目录窗格中,右键单击 Tourism_BA.sde,指向分布式地理数据库,然后选择创建复本。
地理处理窗格随即出现并显示创建复本工具。 首先,您需要将数据集设置为复制。
- 对于复本数据集,单击浏览按钮。
- 在复本数据集窗口中,展开工程下的数据库。 单击 Tourism_BA.sde。
- 单击 Restaurants_Tourism 将其选中。
- 单击确定。
数据集即会添加至地理处理窗格中的参数。
- 对于复本类型,选择检出复本。 确认输出类型设置为地理数据库。
接下来,您需要确保数据复制到零售部门数据库。
- 对于要将数据复制到的地理数据库,单击浏览按钮。
- 在要将数据复制到的地理数据库窗口中,单击工程下的数据库。 选择 Retail_BA.gdb,然后单击确定。
- 对于复本名称,键入 Retail_to_Tourism。
尽管旅游数据库为此复本中的父项,但是数据主要从零售数据库发送到旅游数据库。 该名称表示数据流向。
- 单击运行。
随即运行工具并创建复本。
- 关闭地理处理窗格。
浏览复本
在创建复本后,您需要从父数据库和子数据库的视角检查该复本。
- 在目录窗格中,右键单击 Tourism_BA.sde,指向分布式地理数据库,然后选择管理复本。
随即出现管理复本窗格。 其中列出一个复本:之前创建的 Retail_to_Tourism 复本。
- 在 Retail_to_Tourism 下,单击箭头展开该复本。
将显示复本相关信息。 所有者为创建复本的数据库用户(在示例图像中,为 EMMA)。 该信息还包含数据库是父项还是子项,它在发送还是接收数据。
在此示例中,旅游数据库为父项和数据接收方。 将由零售数据库检入编辑内容,而旅游数据库仅检出空白要素类方案。
- 关闭管理复本窗格。
接下来,您需要确认空白要素类是否已复制到子数据库。
- 在目录窗格中,右键单击 Retail_BA.gdb,然后选择刷新。
Restaurants_Tourism 要素类已复制到地理数据库。
- 右键单击 Retail_BA.gdb,指向分布式地理数据库,然后选择管理复本。
- 在管理复本窗格中,展开 Retail_to_Tourism 复本。
从零售地理数据库访问的复本相关信息指示角色为子项,状态为数据发送方而不是数据接收方。
- 对于复本,单击选项按钮,然后选择属性。
- 在复本属性窗口中,单击描述选项卡。 确认 Restaurants_Tourism 要素类作为复制的数据列出。
- 关闭复本属性窗口和管理复本窗格。
- 保存工程。
您已在零售数据库和旅游数据库之间创建检出/检入复本。 您已确认正确复制空白要素类并从父项和子项视角检查复本以评估数据流。 您现在可以随时使用原始餐馆数据编辑空白要素类并将其同步到旅游数据库。
同步更改
在创建检出/检入复本后,您将使用旅游部门数据库中的空白要素类将零售部门的数据传输到旅游部门。 您需要将餐馆数据加载到从旅游部门获取的空白复本要素类中,然后同步更改以将数据重新检入旅游部门的数据库中。
加载数据
首先,您需要将餐馆数据加载到旅游部门的空白要素类复本中。
- 在目录窗格的 Retail_BA.gdb 下,右键单击 Restaurants_Tourism,然后选择加载数据。
地理处理窗格随即出现并显示追加工具。 该工具会使用输入数据中的数据更新目标数据集。 将显示一条警告,指示该工具修改了目标数据集。 您的目标数据集为不含数据的空白要素类,因此无需担心此警告。
- 对于输入数据集,单击浏览按钮。
- 在输入数据集窗口中,浏览至 Retail_BA.gdb,选择 Restaurants,然后单击确定。
- 确认目标数据集设置为 Restaurants_Tourism。
- 对于字段匹配类型,选择使用字段映射协调字段差异。
随即显示字段映射部分。 在此部分中,可以对输入和目标数据集中的字段进行匹配。 此举可确保将数据加载到正确的字段中。
- 对于字段映射,在输出字段下,单击名称。
- 单击添加新源,选中 nombre,然后单击添加所选内容。
空白要素类中的名称字段现已映射到原始餐馆数据集中的名称字段。
- 将空白要素类中的以下字段映射到其在餐馆数据集中的对应字段:
- 将类型映射到 categoria。
- 将菜系映射到 cocina。
- 将电话号码映射到 telefono。
- 将营业时间映射到 horario。
- 将街道名称映射到 calle_nombre。
- 将城市映射到 barrio。
- 将邮政编码映射到 codigo_postal。
- 将经度映射到 long。
- 将纬度映射到 lat。
- 单击运行。
随即运行该工具并追加数据。 您需要将数据添加至地图以确认其正确追加。
- 关闭地理处理窗格。 确认零售地图视图处于活动状态。
- 在目录窗格的 Retail_BA.gdb 下,右键单击 Restaurants_Tourism,然后选择添加至当前地图。
该数据即会添加到地图中。 它不再是不会在地图上显示任何要素的空白要素类,而是包含许多表示餐馆的点。 这些点是您追加到数据集的要素。
- 在内容窗格中,右键单击 Restaurants (Tourism),然后选择属性表。
随即显示该表。 其中包含正确的属性信息。 (一些单元格具有空值,而这是因为它们在原始数据集中也为空。)
- 关闭表。
同步更改
您已确认数据集已正确追加到 Restaurants_Tourism 要素类。 接下来,您将检入要素类,以将更改重新发送回父地理数据库,即旅游部门数据库。 您将通过运行地理处理工具检入更改。
- 在目录窗格中,右键单击 Retail_BA.gdb,指向分布式地理数据库,然后选择同步更改。
地理处理窗格随即出现并显示同步更改工具。 系统已自动填充工具参数。 地理数据库 1 为正在同步更改的数据库(零售数据库),而地理数据库 2 为检出/检入复本中涉及的另一个数据库(旅游数据库)。
还存在与冲突解决有关的参数。 在设置这些参数后会自动解决冲突以支持零售地理数据库。 旅游数据库中的原始要素类为空,因此不应存在任何冲突需要进行手动冲突检查。
唯一需要更改的参数为使用父版本进行协调参数。 在创建检出复本后,父地理数据库将版本化为包含子项中的更改。 此参数确保对检出版本和要连接到的地理数据库版本之间的数据进行协调。
- 选中使用父版本进行协调(仅限检出)。
注:
冲突解决策略参数旁可能显示一条警告。 此警告告知您系统将系统解决冲突。 您可以忽略该警告。
- 单击运行。
随即运行工具并同步更改。 您需要确认复本已删除。
- 关闭地理处理窗格。 在目录窗格中,右键单击 Retail_BA.gdb,指向分布式地理数据库,然后选择管理复本。
窗格现在为空。
检出/检入复本适用于单一数据事务。 复本会在同步后自动删除。
- 关闭管理复本窗格。
您需要确认编辑已同步到父地理数据库。
- 激活旅游地图。
- 在目录窗格的 Tourism_BA.sde 下,右键单击 Restaurants_Tourism,然后选择添加至当前地图。
该数据即会添加到地图中。 其中包含原始餐馆要素类中的数据,这表示您已成功将零售部门数据复制到旅游部门数据库。
- 保存工程。
在本教程中,您帮助了零售部门将数据与旅游部门进行共享。 您将检出/检入复本标识为了工作流的最佳地理数据库复制类型。 然后,您在两个企业级地理数据库之间创建了复本。 最后,您将餐馆数据加载到了空白要素类中并同步了更改。 您还确认了复本在同步数据后已删除。
本教程重点介绍了使用检出/检入复本在零售部门和旅游部门之间分配数据。 系列中的其他教程重点介绍使用单向和双向复本分配来自运输部门和文化部门的数据。
您可以在教程库中找到更多教程。