操作方法

操作方法:在 ArcGIS Online 中将文件地理数据库中的要素追加到托管要素图层时保留全局 ID

Last Published: September 30, 2024

描述

有时,在 ArcGIS Online 中将文件地理数据库中的要素追加到托管要素图层时,不会保留全局 ID 字段。 保留全局 ID 至关重要,因为全局 ID 用于唯一标识每个要素,通常用于追踪关系、同步数据和管理编辑历史记录,尤其在离线工作流和要素服务中更是如此。

本文提供了一个工作流,该工作流使用在 ArcGIS Pro 内的 Python 窗口中运行的 Python 脚本将文件地理数据库追加到 ArcGIS Online 中的托管要素图层。

解决方案或解决方法

  1. 在 ArcGIS Pro 中打开工程。
  2. 打开 Python 窗口。 有关详细信息,请参阅 ArcGIS Pro:Python 窗口
Note:
To preserve GlobalIDs and avoid the automatic creation of new GlobalIDs, ensure the GlobalID field is already present in the hosted feature layer.
  1. 运行以下脚本:
    1. 定义输入文件地理数据库和目标托管要素图层的路径。
import arcpy 

file_gdb_path = r"<file_geodatabase_path>"
hosted_feature_layer = r"<hosted_feature_layer_URL>"
    1. 创建 FieldMappings 对象。 此对象用于定义将源(文件地理数据库)中的字段映射到目标(托管要素图层)的方式。
field_mappings = arcpy.FieldMappings()
    1. 为全局 ID 字段创建 FieldMap 对象,并为 GlobalID 字段设置输出字段属性。
global_id_field_map = arcpy.FieldMap()
global_id_field_map.addInputField(file_gdb_path, "GlobalID")
global_id_field_map.outputField.name = "GlobalID"
    1. 将全局 ID 的字段映射添加至 FieldMappings 对象。
field_mappings.addFieldMap(global_id_field_map)
    1. 如果需要,可以为其他字段添加字段映射。 将 <field_name> 替换为要映射的字段的名称。
field1_field_map = arcpy.FieldMap()
field1_field_map.addInputField(file_gdb_path, "<field_name>")
field1_field_map.outputField.name = "<field_name>"
field_mappings.addFieldMap(field1_field_map)
    1. 将要素追加到托管要素图层。
arcpy.Append_management(file_gdb_path, hosted_feature_layer, schema_type="NO_TEST", field_mapping=field_mappings)

以下代码块演示了完整工作脚本。

import arcpy

file_gdb_path = r"C:\Users\dpalzaniappan\Documents\ArcGIS\Projects\MyProject91\MyProject91.gdb\Testi"
hosted_feature_layer = r"https://services9.arcgis.com/LMjydzYxR6YFiqk8/arcgis/rest/services/Testio123/FeatureServer/0"

field_mappings = arcpy.FieldMappings()

global_id_field_map = arcpy.FieldMap()
global_id_field_map.addInputField(file_gdb_path, "GlobalID")
global_id_field_map.outputField.name = "GlobalID"

field_mappings.addFieldMap(global_id_field_map)

field1_field_map = arcpy.FieldMap()
field1_field_map.addInputField(file_gdb_path, "Name")
field1_field_map.outputField.name = "Name"
field_mappings.addFieldMap(field1_field_map)

arcpy.Append_management(file_gdb_path, hosted_feature_layer, schema_type="NO_TEST", field_mapping=field_mappings)

下图显示了在 ArcGIS Pro 的 Python 窗口中使用的 Python 脚本,该脚本用于将文件地理数据库追加到托管要素图层。

Python 窗口中的 Python 脚本

文章 ID: 000032358

获得人工智能支持

使用 Esri Support AI Chatbot 快速解决您的问题。

立即开始聊天

相关信息

发现关于本主题的更多内容

获取来自 ArcGIS 专家的帮助

联系技术支持部门

立即开始聊天

转至下载选项