HOW TO

Veröffentlichen eines Feature-Layers ohne Überschreiben der Editor-Tracking-Informationen mithilfe von ArcGIS API for Python

Last Published: November 28, 2022

Zusammenfassung

Beim Veröffentlichen eines Feature-Layers aus ArcGIS Pro in ArcGIS Online oder Portal for ArcGIS können Sie die vorhandenen Editor-Informationen aktivieren oder deaktivieren. In ArcGIS Pro 2.5 und niedriger jedoch werden beim Veröffentlichen aus ArcGIS Pro mit vorhandenen Editor-Tracking-Feldern die Informationen überschrieben und durch die Informationen des Publishers sowie das Datum oder die Uhrzeit der Veröffentlichung des Layers ersetzt. Dies geschieht entwurfsbedingt. Es ist jedoch möglich, die bereits vorhandenen Editor-Tracking-Informationen mithilfe von ArcGIS API for Python beizubehalten.

Befolgen Sie die nachstehenden Anweisungen zum Veröffentlichen eines Feature-Layers ohne Überschreiben der Editor-Tracking-Informationen mithilfe von ArcGIS API for Python.

Vorgehensweise

Hinweis: Veröffentlichen Sie den gewünschten Feature-Service aus ArcGIS Pro, bevor Sie diese Schritte ausführen.

Fügen Sie das folgende Skript ein, um den vorhandenen Feature-Layer zu überschreiben und die ursprünglichen Werte der Editor-Tracking-Informationen beizubehalten:

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. Importieren Sie die erforderlichen Module.
import arcpy import os, sys from arcgis.gis import GIS
  1. Geben Sie den Pfad zum Projekt und die Anmeldeinformationen an.
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. Legen Sie die Freigabeoptionen sowie einen lokalen Pfad auf dem Computer zum Speichern des temporären Inhalts fest, erstellen Sie eine neue Service-Definitionsentwurfsdatei (.sddraft), und stellen Sie sie als Service-Definition (SD) bereit.
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. Stellen Sie eine Verbindung zum angegebenen Portal her.
print('Connecting to {}'.format(portal)) gis = GIS(portal, user, password) #if single sign on, edit line above be gis = GIS(portal)
  1. Suchen Sie die SD-Datei, aktualisieren und überschreiben Sie die Feature-Layer-Bearbeitungen einschließlich des Ausschnitts, um die Zeitstempel beizubehalten.
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))

Artikel-ID:000021839

Hilfe von ArcGIS-Expert*innen erhalten

Technischen Support kontaktieren

Die Esri Support-App herunterladen

Zu den Download-Optionen

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden