Заменить веб-слой (Сервер)

Краткая информация

Заменяет ресурсы веб-слоя портала ресурсами другого веб-слоя.

Использование

  • Целевым слоем является замещаемый слой. Слоем обновления является веб-слой замещения. Целевой слой и слой обновлений должны быть веб-слоями следующих типов:

    • Векторные слои листов, опубликованные из пакетов векторных листов
    • Слои листов
    • Слои сцен публикуются с одного из следующих источников:
      • Пакеты слоев сцен, размещенные на ArcGIS Online или на портале ArcGIS Enterprise
      • Связанные кэши сцен в папке или в облачных хранилищах данных

      Слои вокселов сцены не могут быть заменены.

  • Чтобы заменить слой векторных листов на портале ArcGIS Enterprise, необходимо использовать версию 10.6 или более новую. Чтобы заменить слой листов, необходимо использовать версию 10.8 или более новую. Чтобы заменить слой сцены, необходимо использовать версию 10.8.1 или более новую.

  • Вашим активным порталом ArcGIS AllSource должен быть портал, на котором размещены целевой слой и слой обновления. Вы должны выполнить вход в ArcGIS AllSource под учетной записью владельца целевого слоя и слоя обновления.

  • Целевой и обновляющий слои должны быть одного типа. Например, нельзя заменить слой векторных листов слоем листов.

  • Тип слоя сцены целевого слоя и слоя обновления должен совпадать. Например, нельзя заменить слой зданий сцены слоем 3D-объектов сцены.

  • Чтобы заменить слой веб-сцены, целевой слой и слой обновления должны публиковаться из одного источника. Например, вы не можете заменить слой веб-сцены, опубликованный из пакета слоя сцены, на слой веб-сцены, опубликованный из кэша сцены.

  • Чтобы заменить слои веб-сцен, опубликованные из кэша сцены, сервисы сцен целевого слоя и слоя обновления должны находиться на одном сервере в одной и той же папке.

  • Когда целевой слой будет обновлен, ресурсы этого слоя будут заменены другими. ID элемента и URL сервиса целевого слоя не изменятся.

  • Замещаемый веб-слой не изменяется. Он будет архивирован на портале под новым именем. По умолчанию, слой архивируется под именем <имя слоя>_archive_<timestamp>. Можно назначить другое имя, но оно должно быть уникальным именем веб-слоя на портале.

  • По умолчанию архивный слой использует ID элемента слоя обновления. Можно задать новый ID элемента для архивного слоя.

  • Вы можете заменить информацию элемента целевого слоя на информацию элемента слоя обновления. При смене информации элемента изменятся также и сводка, описание, тэги и миниатюрное изображение. Прочая информация, в том числе кредиты (авторские права) и условия использования останутся без изменений.

Параметры

ПодписьОписаниеТип данных
Целевой слой

Веб-слой, который будет заменен. Укажите путь к слою или каталогу или укажите идентификатор элемента или URL-адрес службы одного из следующих:

  • Векторного слоя листов, опубликованного из пакета векторных листов
  • Слой листов
  • Слой сцены публикуются с одного из следующих источников:
    • Пакет слоя сцены
    • Связанный кэш сцены в папке или в облачных хранилищах данных

Vector Tile Layer; Internet Tiled Layer; Scene Layer
Имя архивного слоя

Уникальное имя для архивного слоя. Замененный веб-слой остается на портале в качестве архивного слоя.

String
Обновить слой

Подменный (замещающий) веб-слой. Укажите путь к слою или каталогу или укажите идентификатор элемента или URL-адрес службы одного из следующих:

  • Векторного слоя листов, опубликованного из пакета векторных листов
  • Слой листов
  • Слой сцены публикуются с одного из следующих источников:
    • Пакет слоя сцены
    • Связанный кэш сцены в папке или в облачных хранилищах данных

Vector Tile Layer; Internet Tiled Layer; Scene Layer
Замена информации об элементе
(Дополнительный)

Определяет, будет ли производиться замена информации об элементе целевого слоя (миниатюрного изображения, сводки, описания и тегов). С любой из опций, авторство элемента, условия использования и информация об источнике не может быть заменена.

  • Не отмечено – при обновлении слоя информация об элементе целевого слоя не будет заменена. Это значение по умолчанию
  • Отмечено – информация об элементе целевого слоя будет заменена информацией об элементе слоя обновления.
Boolean
Создать Новый элемент для архивного слоя
(Дополнительный)

Задает, будет ли создан элемент для архивного слоя. Этот параметр поддерживается на порталах ArcGIS Online и ArcGIS Enterprise 10.8 и выше.

  • Не отмечено – для архивного слоя будет использоваться ID элемента слоя обновления. Это значение используется по умолчанию для слоев векторных листов и слоев листов.
  • Отмечено – для архивного слоя будет создан ID элемента. Для слоев сцены эта опция используется по умолчанию.
Boolean

Производные выходные данные

ПодписьОписаниеТип данных
Обновленный целевой слой

URL обновленного веб-слоя.

String

arcpy.management.ReplaceWebLayer(target_layer, archive_layer_name, update_layer, {replace_item_info}, {create_new_item})
ИмяОписаниеТип данных
target_layer

Веб-слой, который будет заменен. Укажите путь к слою или каталогу или укажите идентификатор элемента или URL-адрес службы одного из следующих:

  • Векторного слоя листов, опубликованного из пакета векторных листов
  • Слой листов
  • Слой сцены публикуются с одного из следующих источников:
    • Пакет слоя сцены
    • Связанный кэш сцены в папке или в облачных хранилищах данных

Vector Tile Layer; Internet Tiled Layer; Scene Layer
archive_layer_name

Уникальное имя для архивного слоя. Замененный веб-слой остается на портале в качестве архивного слоя.

String
update_layer

Подменный (замещающий) веб-слой. Укажите путь к слою или каталогу или укажите идентификатор элемента или URL-адрес службы одного из следующих:

  • Векторного слоя листов, опубликованного из пакета векторных листов
  • Слой листов
  • Слой сцены публикуются с одного из следующих источников:
    • Пакет слоя сцены
    • Связанный кэш сцены в папке или в облачных хранилищах данных

Vector Tile Layer; Internet Tiled Layer; Scene Layer
replace_item_info
(Дополнительный)

Определяет, будет ли производиться замена информации об элементе целевого слоя (миниатюрного изображения, сводки, описания и тегов). С любой из опций, авторство элемента, условия использования и информация об источнике не может быть заменена.

  • KEEPПри обновлении слоя информация об элементе целевого слоя не будет обновлена. Это значение по умолчанию
  • REPLACEИнформация об элементе целевого слоя будет заменена информацией об элементе слоя обновления.
Boolean
create_new_item
(Дополнительный)

Задает, будет ли создан элемент для архивного слоя. Этот параметр поддерживается на порталах ArcGIS Online и ArcGIS Enterprise 10.8 и выше.

  • TRUEДля архивного слоя будет создан ID элемента. Для слоев сцены эта опция используется по умолчанию.
  • FALSEДля архивного слоя будет использоваться ID элемента слоя обновления. Это значение используется по умолчанию для слоев векторных листов и слоев листов.
Boolean

Производные выходные данные

ИмяОписаниеТип данных
updated_target_layer

URL обновленного веб-слоя.

String

Пример кода

ReplaceWebLayer, пример 1 (автономный скрипт)

Следующий скрипт показывает замену веб-слоя с помощью идентификаторов ID входных слоев.

import arcpy
import time

# Set local variables
targetLayerID = "42994b1a3e63425aa02bcfa1200683ae"
archiveLayerName = "ReplaceWebLayerExample_archive_" + time.strftime("%Y%m%d")
updateLayerID = "9e1d80c874e040fc88ad06b0cfa01381"
replaceItemInfo = "REPLACE"
createNewItem = "TRUE"

# Run Replace Web Layer
arcpy.server.ReplaceWebLayer(targetLayerID, archiveLayerName, updateLayerID, 
                             replaceItemInfo, createNewItem)

print("Successfully replaced web layer.")
ReplaceWebLayer, пример 2 (автономный скрипт)

Следующий скрипт показывает замену веб-слоя на ArcGIS Enterprise с помощью URL-сервисов входных слоев.

import arcpy
import time

# Set local variables
targetLayer = "https://webadaptorhost.domain.com/webadaptorname/rest/services/Hosted/targetServiceName/VectorTileServer"
archiveLayerName = "targetServiceName_archive_" + time.strftime("%Y%m%d")
updateLayer = "https://webadaptorhost.domain.com/webadaptorname/rest/services/Hosted/updateServiceName/VectorTileServer"

# Run Replace Web Layer
arcpy.server.ReplaceWebLayer(targetLayer, archiveLayerName, updateLayer)

print("Successfully replaced web layer.")
ReplaceWebLayer, пример 3 (автономный скрипт)

Следующий скрипт публикует и заменяет слой векторных листов.

Скрипт создает пакет векторных листов, вызвав функцию CreateVectorTilePackage для карты. Затем функция SharePackage выгружает пакет векторных слоев в ArcGIS Online или ArcGIS Enterprise и публикует его как слой векторных листов. Наконец, функция ReplaceWebLayer использует ID элементов, чтобы заменить ресурс существующего веб-слоя на портале ресурсом нового веб-слоя. Заменяемый слой векторных листов архивируется на портале с новым именем. Информация о портале извлекается из функции SignInToPortal.

import arcpy
import os
import json

# Sign in to portal
arcpy.SignInToPortal("https://www.arcgis.com", "MyUserName", "MyPassword")

# Reference map to publish
aprx = arcpy.mp.ArcGISProject(r"C:\Project\World.aprx")
m = aprx.listMaps('World')[0]

# Set output file names
outdir = r"C:\Project\Output"
service_name = "VectorTileLayerExample"
package_filename = service_name + ".vtpk"
package_output_filename = os.path.join(outdir, package_filename)

# Create vector tile package
arcpy.management.CreateVectorTilePackage(m, package_output_filename, "ONLINE")

# Upload and publish vector tile package
result = arcpy.management.SharePackage(package_output_filename, publish_web_layer=True)

print("Finish uploading and publishing package")

# Get the item ID or service URL of the vector tile layer
jobresult = result[1]
result = json.loads(jobresult)

# Publish results JSON response example: {"publishStatus":"<status>","publishMessage":"<message>","publishResult":{"type":"Vector Tile Service","serviceurl":"<service_url>","size":1913146,"jobId":"<ID>","serviceItemId":"<ItemID>"}}
itemID = str(result.get('publishResult', {}).get('serviceItemId'))

print("Start Replacing")

# Set local variables for Replace Web Layer workflow
# target_layer/update_layer can be item ID or service URL; example below uses item ID
target_layer = "808ecf02f39441d69f245c0cb261134b"
archive_layer_name = "ReplaceWebLayerExample_archive"
update_layer = itemID
replace_item_info = "REPLACE"
create_new_item = "TRUE"

# Run Replace Web Layer
arcpy.server.ReplaceWebLayer(target_layer, archive_layer_name, update_layer,
                             replace_item_info, create_new_item)

print("Finished Replacing")