方法

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 Support アプリのダウンロード

ダウンロード オプションに移動

関連情報

このトピックについてさらに調べる