次のスクリプトは、ベクター タイル レイヤーを公開して置き換えます。
このスクリプトを実行すると、マップの CreateVectorTilePackage 関数を呼び出して、ベクター タイル パッケージが作成されます。 次に、SharePackage 関数で、ベクター タイル パッケージが ArcGIS Online または ArcGIS Enterprise にアップロードされ、ベクター タイル レイヤーとして公開されます。 最後に、ReplaceWebLayer 関数で、アイテム ID を使用して、ポータル内の既存の Web レイヤーのコンテンツが新しい Web レイヤーのコンテンツに置き換えられます。 置き換えられたベクター タイル レイヤーが新しい名前でポータルにアーカイブされます。 ポータル情報が SignInToPortal 関数から取得されます。
import arcpy
import os
import json
arcpy.SignInToPortal("https://www.arcgis.com", "MyUserName", "MyPassword")
aprx = arcpy.mp.ArcGISProject(r"C:\Project\World.aprx")
m = aprx.listMaps('World')[0]
outdir = r"C:\Project\Output"
service_name = "VectorTileLayerExample"
package_filename = service_name + ".vtpk"
package_output_filename = os.path.join(outdir, package_filename)
arcpy.management.CreateVectorTilePackage(m, package_output_filename, "ONLINE")
result = arcpy.management.SharePackage(package_output_filename, publish_web_layer=True)
print("Finish uploading and publishing package")
jobresult = result[1]
result = json.loads(jobresult)
itemID = str(result.get('publishResult', {}).get('serviceItemId'))
print("Start Replacing")
target_layer = "808ecf02f39441d69f245c0cb261134b"
archive_layer_name = "ReplaceWebLayerExample_archive"
update_layer = itemID
replace_item_info = "REPLACE"
create_new_item = "TRUE"
arcpy.server.ReplaceWebLayer(target_layer, archive_layer_name, update_layer,
replace_item_info, create_new_item)
print("Finished Replacing")