操作方法

操作方法:使用 ArcGIS API for Python,在不覆盖编辑者追踪信息的情况下发布要素图层

Last Published: November 28, 2022

摘要

将要素图层从 ArcGIS Pro 发布到 ArcGIS Online 或 Portal for ArcGIS 时,可以启用或禁用现有编辑者信息。 但是,在 ArcGIS Pro 2.5 及更低版本中,如果使用现有编辑者追踪字段在 ArcGIS Pro 中进行发布,则将覆盖该信息并将其替换为发布者的信息以及图层的发布日期或时间。 这是有意设计的。 但是,可以使用 ArcGIS API for Python 保留先前存在的编辑者追踪信息。

请按照以下说明,使用 ArcGIS API for Python,在不覆盖编辑者追踪信息的情况下发布要素图层。

过程

: 在继续执行这些步骤之前,请从 ArcGIS Pro 发布所需要素服务。

请插入以下脚本以覆盖现有要素图层,并保留编辑者追踪信息的原始值:

pub_params = {"editorTrackingInfo" : {"enableEditorTracking":'true', "preserveEditUsersAndTimestamps":'true'}} sdItem.update(data=sd) print('Overwriting existing feature service…') fs = sdItem.publish(publish_parameters=pub_params,overwrite=True)
  1. 导入所需的模块。
import arcpy import os, sys from arcgis.gis import GIS
  1. 指定工程的路径和登录凭据。
prjPath = r'C:\Users\pathwayToYour.aprx' sd_fs_name = 'name of item in the portal' portal = 'https://PortalURL/portal/home' #or https://arcgis.com user = 'username' password = 'password'
  1. 设置共享选项,即计算机中用于存储临时内容的本地路径,并创建新的服务定义草稿 (.sddraft) 文件并将其暂存为服务定义 (SD)。
shrOrg = True shrEveryone = False shrGroups = '' relPath = sys.path[0] sddraft = os.path.join(relPath, 'WebUpdate.sddraft') sd = os.path.join(relPath, 'WebUpdate.sd') print('Creating SD file') arcpy.env.overwriteOutput = True prj = arcpy.mp.ArcGISProject(prjPath) mp = prj.listMaps()[0] arcpy.mp.CreateWebLayerSDDraft(mp, sddraft, sd_fs_name, "MY_HOSTED_SERVICES", "FEATURE_ACCESS", None, True, True, True) arcpy.StageService_server(sddraft, sd)
  1. 连接到指定门户。
print('Connecting to {}'.format(portal)) gis = GIS(portal, user, password) #if single sign on, edit line above be gis = GIS(portal)
  1. 查找该 SD 文件,更新并覆盖要素图层编辑内容,包括用于保留时间戳的代码段。
print('Search for original SD on portal…') sdItem = gis.content.search('{} AND owner:{}'.format(sd_fs_name, user), item_type='Service Definition')[0] print('Found SD: {}, ID: {} n Uploading and overwriting…'.format(sdItem.title, sdItem.id)) pub_params = {"editorTrackingInfo" : {"enableEditorTracking":'true', "preserveEditUsersAndTimestamps":'true'}} sdItem.update(data=sd) print('Overwriting existing feature service…') fs = sdItem.publish(publish_parameters=pub_params,overwrite=True) fs.share(org=shrOrg, everyone=shrEveryone, groups=shrGroups) print('Finished updating: {} – ID: {}'.format(fs.title, fs.id))

文章 ID:000021839

从 ArcGIS 专家处获得帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项

相关信息

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