Skip To Content

Публикация размещенных слоев листов

Слои листов, опубликованные и размещенные на вашем портале, позволяют быстро визуализировать большие наборы данных, используя ранее созданные изображения карты или листы. Размещенные листы выступают как географическая подложка для ваших рабочих слоев. Например, вы можете добавить листы окрестных улиц, чтобы дать визуальное представление о местонахождении дорожных знаков из векторного слоя.

Вы можете публиковать слой листов на портале, используя один из следующих методов:

Вы можете автоматически построить кэш листов в процессе публикации, или сделать это в ручном режиме после публикации. Более подробно см. Советы и рекомендации по кэшу листов.

У вас должны быть права на создание ресурсов и публикацию размещенных слоев листов для публикации документа ArcMap или файла определения сервиса в качестве размещенного слоя листов.

Создание и публикация карты в ArcMapArcMap

Из ArcMap вы можете опубликовать слой листов, который будет размещен на портале.

Перед запуском ArcGIS Desktop убедитесь в том, что ArcMap подключен к вашему порталу.

  1. Запустите ArcMap и откройте карту, которую вы хотите опубликовать.
  2. Войдите на портал с использованием учетной записи организации, у которой есть права на создание ресурсов и публикацию размещенных слоев листов.
    1. Щелкните Файл > Подключиться.
    2. Введите имя пользователя и пароль для портала и щелкните Войти.
  3. Теперь опубликуйте карту.
  4. Щелкните Файл > Опубликовать как > Сервис.
  5. Выберите Опубликовать сервис и нажмите Далее.
    Внимание:

    Если вместо этого вы выбираете перезапись сервиса, то элемент листа карты удаляется с портала, а новый элемент создается с тем же именем. Новый элемент создается в корневой папке, и ему будет присвоен новый ID. Вам требуется перенастроить параметры доступа и при необходимости переместить элемент обратно в папку, в которой он находился до повторной публикации.

  6. В ниспадающем списке типов подключения выберите Мои размещенные сервисы. Затем введите имя для ваших листов и нажмите Продолжить.
  7. Укажите требуемые свойства в Редакторе сервисов. Здесь вы можете выбрать операции, которые пользователи смогут применять к листам, и указать, как будет организован доступ к ним на сервере.

    Более подробно об оптимальной настройке листов для развертывания см. раздел справки ArcGIS Server Настройка и конфигурирование сервисов. Некоторые из свойств, обсуждаемые в этом разделе, относятся только к ArcGIS Server и не применимы при работе с размещенными слоями листов.

    Подсказка:

    Если вы закроете Редактор сервисов во время данного сеанса, то появится запрос на сохранение вашей работы как черновика сервиса. Черновики сервисов позволяют вам позднее возвращаться к конфигурации сервиса. По умолчанию черновики сервисов сохраняются в папке Черновики подключения Мои размещенные карты. Более подробную информацию О черновиках сервисов см. в справке ArcGIS Server.

  8. Есть несколько свойств, которые используются только для размещенных слоев листов, и которые вам необходимо указать. Они подробно описаны в шагах ниже.
  9. В левой части Редактора сервиса щелкните Функции, затем Кэшированный сервис, чтобы опубликовать вашу карту в виде слоя листов. Включите опцию Доступ к объектам для публикации векторного слоя с вашими листами, если вы собираетесь настроить всплывающие окна для слоя при добавлении его во вьюер карт.

    Вы можете щелкнуть подпункт Использование листов кэша в левой части Редактора сервиса, чтобы задать дополнительные свойства, определяющие возможности клиентов при работе с опубликованным слоем листов.

  10. Щелкните пункт Кэширование, чтобы задать свойства листов кэша. См. Создание кэша карты в справке по ArcGIS Server для подробного описания шагов. Обратите внимание, что некоторые дополнительные настройки кэширования доступны только при публикации напрямую в ArcGIS Server.
  11. На левой панели Редактор сервиса щелкните Описание элемента и введите краткое описание и теги для вашего слоя листов. Вам понадобится ввести эту информацию перед тем, как вы сможете опубликовать сервис. Более подробно см. в разделе описания элементов раздела Задание свойств картографического сервиса справки ArcGIS Server.
  12. В левой части Редактора сервиса щелкните Общий доступ и выберите, кому будет предоставлен доступ к этому слою листов. По умолчанию размещенный слой листов доступен только на странице Мои ресурсы, то есть он будет доступен только вам. Ваш слой листов будет всегда доступен на странице Мои ресурсы, но вы также можете предоставить к нему доступ для всех или только участникам определенных групп.
  13. В окне Редактор сервисов щелкните Анализировать Анализировать (Analyze).

    Будет произведена проверка карты на возможность быть опубликованной. Перед публикацией необходимо исправить Ошибки Ошибка (Error), перечисленные в окне Подготовка. При необходимости можно устранить предупреждения и информационные сообщения для дальнейшего улучшения производительности и визуализации публикуемых листов. Более подробно об устранении этих проблем см. в разделе справки ArcGIS Server Анализ ГИС-ресурса.

  14. При необходимости, щелкните Предварительный просмотр Предварительный просмотр (Preview) в Редакторе сервиса. Тогда вы сможете увидеть, как размещенный слой листов будет выглядеть при просмотре в веб-браузере.
  15. После устранения ошибок и, при желании, любых сообщений и предупреждений, щелкните Опубликовать Опубликовать.
    Примечание:

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

После публикации слоя листов на портале вы увидите их, раскрыв папку Мои размещенные сервисы в окне Каталога.

Размещенный слой листов будет доступен на странице Мои ресурсы веб-сайта портала в виде двух независимых элементов: Листы и Определение сервиса. Определение сервиса – это архивный файл, содержащий карту, ее данные и настройки публикации листов. Определение сервиса можно передать и опубликовать на любом компьютере, где есть ArcGIS Server.

Создание и публикация карты в ArcGIS Pro

Из карты в ArcGIS Pro вы можете опубликовать слой листов, который будет размещен на вашем портале.

Также обратите внимание, что веб-браузеры не могут отображать некоторые сложные картографические символы, которые вы могли использовать при создании карты. Можно использовать большинство типов символов, но в некоторых случаях при публикации такие символы могут быть упрощены. Более подробно о поддерживаемых символах и об изменении символов карты перед публикацией см. в разделе Создание сервисов объектов Справки ArcGIS Server.

  1. Запустите ArcGIS Pro и откройте проект с картой, которую вы хотите опубликовать.
  2. Убедитесь, что ваше подключение к порталу активно и в том, что вы вошли в свою организацию под учетной записью, которой предоставлены права доступа для создания ресурсов и публикации размещенных слоев листов.
  3. Чтобы опубликовать слой листов, сделайте одно из следующего:
    • Выберите слой на панели Содержание. Щелкните на выборке слоев правой кнопкой мыши и выберите Опубликовать как веб-слой.
    • Чтобы опубликовать все слои карты, щелкните Веб-слой в группе Опубликовать как на вкладке Общий доступ и выберите Опубликовать веб-слой.

    Подсказка:

    Если опция меню Опубликовать как веб-слой не активна, возможно, причина в следующем:

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

  4. Введите имя слоя листов. По умолчанию слой будет сохранен в Мои ресурсы. Вы можете сохранить его в папку в Мои ресурсы, введя имя папки или указав путь к ней.
  5. Выберите Копировать все данные.
  6. Выберите Листы в поле Тип слоя.

    Другие варианты опции Тип слоя будут автоматически отключены, поскольку при копировании одновременно может использоваться только одна опция.

  7. Введите краткое описание и теги слоя листов.
  8. Укажите, кто будет иметь доступ к слою листов. Все слои, которые вы опубликуете, будут автоматически доступны в разделе Мои ресурсы вашей организации, который является персональной рабочей областью. Ваши ресурсы будут недоступны для других, пока вы не предоставите доступ к ним при помощи одной или нескольких следующих опций:
    • Имя вашего портала – при выборе этой опции доступ к слою будет разрешен всем авторизованным пользователям портала.
    • Все – При выборе данной опции слой будет доступен всем, кто может зайти на портал.
    • Группы – можно открыть общий доступ для участников групп, к которым вы принадлежите.
  9. Щелкните Конфигурация и нажмите на кнопку Настроить свойства веб-слоя, чтобы задать настройки кэша.
  10. Выберите Схема листов.
  11. Измените положение бегунка Уровни детализации, чтобы указать минимальный и максимальный масштаб для вашего слоя листов.

    Размер выходного кэша будет меняться с изменением минимального и максимального масштабов.

  12. Выберите, когда и где будет построен кэш листов.
    • Выберите Кэшировать автоматически на сервере, если вы хотите, чтобы листы строились на хост-сервере портала в процессе публикации слоя.
    • Если вы хотите сохранить построенный кэш на хост-сервере портала, но при этом хотите построить его самостоятельно после публикации, выберите Кэшировать вручную на сервере, откройте слой листов на вебсайте портала после публикации слоя, и вручную постройте кэш.
    • Выберите Кэшировать локально и укажите в качестве местоположения папку на компьютере с ArcGIS Pro для хранения временного пакета листов, если вы хотите построить кэш и упаковать его на компьютере с ArcGIS Pro. Пакет листов будет автоматически выгружен на хост-сервер портала для последующей распаковки и хранения кэша там же.
  13. Чтобы позволить клиентам загружать листы кэша для автономного использования, отметьте Разрешить клиентам экспортировать листы кэша.
  14. Если вы отметили Разрешить клиентам экспортировать листы кэша, используйте поле Ограничить экспорт до для указания максимального количества листов, которое клиент может загрузить одним запросом.
  15. Щелкните на вкладке Ресурсы, чтобы убедиться, что слой содержит нужные слои данных.
  16. Щелкните Анализировать для проверки на наличие ошибок и проблем.

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

  17. После устранения ошибок щелкните Опубликовать.
    Примечание:
    На этом шаге ваши данные копируются на сервер. Время, которое займет публикация, будет зависеть от размера данных, скорости и пропускной способности канала вашего Интернет-подключения.

По завершении публикации вы можете щелкнуть Управление веб-слоем, чтобы открыть веб-сайт портала.

Создайте пакет листов в ArcMap и опубликуйте.

ArcMap позволяет строить листы для документа карты и сохранять их в удобном для передачи файле пакета листов (.tpk). Вы можете создать пакет листов в ArcMap, предоставить общий доступ к нему на портале и опубликовать его как размещенный слой листов.

Ниже описываются два различных рабочих процесса. Первый используется для маленьких или средних по размеру пакетов листов; вы сможете сохранить элементы документа карты, такие как легенда и текстовые элементы, если листы опубликованы из пакета листов. Второй рекомендуется при публикации больших пакетов листов, но в этом случае при публикации из пакета листов будут использованы только данные.

Выполните следующие шаги для публикации маленького или среднего пакета листов:

  1. Откройте вашу карту в ArcMap.
  2. Войдите на портал с использованием учетной записи организации, у которой есть права на создание ресурсов и публикацию размещенных слоев листов.
  3. Щелкните Настройка > Опции ArcMap > Общий доступ и убедитесь, что включена опция Включить инструменты ArcGIS Runtime.

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

  4. В ArcMap нажмите Файл > Опубликовать как > Пакет листов.
  5. В следующих подшагах настройте все параметры. Остальные настройки можете выбрать сами.
    1. На вкладке Пакет листов выберите Загрузить пакет в мою учетную запись ArcGIS Portal.
    2. На вкладке Формат листов выберите ArcGIS Online / Bing Maps / Google Maps в качестве Схемы листов.
    3. На вкладке Описание элемента введите все обязательные элементы.
    4. На вкладке Общий доступ вы можете выбрать, предоставить ли доступ для всех или только для определенных групп пользователей.
  6. Щелкните Опубликовать.

    Вам может быть предложено сохранить карту перед созданием пакета листов.

    Создание пакета листов займет некоторое время, особенно если вы используете крупные масштабы.

  7. По окончании создания пакета листов войдите на портал под той же учетной записью, которая использовалась вами при создании пакета листов в ArcMap и щелкните Мои ресурсы.
  8. Щелкните пакет листов, чтобы отобразить страницу информации об элементе.
  9. Щелкните Опубликовать.
  10. Введите название и теги и щелкните Опубликовать.

Листы распакованы, а на вашем портале создан размещенный слой листов. Эти листы карты должны появиться в Мои ресурсы.

Для построения и публикации больших пакетов листов, Esri рекомендует использовать группу инструментов Кэш листов вместо описанного ранее рабочего процесса. Эти инструменты используют преимущества многоядерных процессоров.

Выполните эти инструменты в следующем порядке:

  1. Запустите Построить схему листов кэша для определения сетки листов и формата изображений.
  2. Запустите Управление листами кэша для построения листов.
  3. Запустите Экспорт листов кэша для создания пакета листов.
  4. Запустите Опубликовать пакет (в группе инструментов Упаковка) для загрузки листов на портал.

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

Создание пакета листов в ArcGIS Pro и загрузка его в организацию

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

  1. Откройте проект, содержащий упаковываемые данные.
  2. Откройте и запустите инструмент геообработки Создать пакет листов карты.
  3. По окончании создания пакета листов войдите на портал под учетной записью организации с правами доступа, необходимыми для создания ресурсов и публикации размещенных слоев листов, и щелкните Мои ресурсы.
  4. Добавить пакет листов С моего компьютера.
  5. Установите отметку напротив опции Опубликовать этот файл как размещенный слой.
  6. Введите название и теги и щелкните Добавить элемент.

Листы распакованы, а на вашем портале создан размещенный слой листов. Листы карты и пакет листов должны появиться на странице Мои ресурсы.

Публикация из размещенного векторного слоя

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

Примечание:

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

Выполните следующие шаги для публикации размещенного слоя листов из размещенного векторного слоя:

  1. Войдите с использованием учетной записи, которая имеет права на публикацию размещенных слоев листов, и щелкните Мои ресурсы.
  2. Для публикации выполните одно из следующих действий:
    • Щелкните размещенный векторный слой, который вы хотите опубликовать, и выберите Опубликовать.
    • Щелкните Создать > Слой листов и выберите Векторный слой, который нужно опубликовать как кэшированный сервис.
  3. Введите название, теги и краткую информацию, а также выберите папку для размещенного слоя листов.
  4. Дополнительно можно изменить экстенты, при которых слой будет отображаться, перетащив маркеры Видимого диапазона.
    Внимание:

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

  5. Щелкните ОК.

    Как только слой листов будет создан, откроется его страница элемента.

Публикация из файла определения сервиса

Публикация листов и построение кэша может использовать много ресурсов сервера. Если вам необходимо опубликовать большое количество слоев листов, то ваши авторы карт могут создать файлы определения сервиса (.sd) в ArcMap, которые будут содержать всю информацию, требуемую для публикации слоя листов на портале. Затем можно использовать скрипт для загрузки и публикации файлов определения сервиса на вашем портале в нерабочее время. Полученные слои листов будет размещены на сервере вашего портала.

Создание файла определения сервиса

Для создания файла определения сервиса, содержащего данные и символы, которые требуются для размещаемого на портал слоя листов, автору карты необходимо выполнить следующие шаги.

  1. Запустите ArcMap и войдите на портал.
  2. Создайте и сохраните карту.

    Подробнее о создании и публикации карты см. разделы картографический сервис справочной системы ArcGIS Server.

  3. Теперь создайте файл определения сервиса.
  4. Щелкните Файл > Опубликовать как > Сервис.
  5. Выберите пункт Сохранить файл определения сервиса и щелкните Далее.
  6. Щелкните Выбрать подключение и выберите Мои размещенные сервисы из ниспадающего списка.
  7. Введите имя файла и щелкните Далее.
  8. Укажите, в каком каталоге на вашем клиентском компьютере будет создан файл определения сервиса, и нажмите Продолжить.

    Откроется диалоговое окно Редактор сервиса.

  9. На левой панели Редактора сервисов щелкните Кэширование.
  10. Выберите Схема листов.
  11. Выберите минимальный и максимальный масштабы для листов и Вычислить размер кэша.
  12. Щелкните Построить кэш вручную после публикации сервиса.
  13. Вы также можете щелкнуть Дополнительные настройки и указать дополнительные настройки для кэша листов.
  14. На левой панели Редактора сервисов щелкните Описание элемента и введите описание слоя листов.

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

  15. Щелкните Анализировать Анализировать (Analyze), чтобы удостовериться в отсутствии ошибок.

    Вы должны исправить любые ошибки до формирования файла определения сервиса. Вы также можете исправить полученные предупреждения и сообщения.

  16. После устранения ошибок, сообщений и предупреждений щелкните Разместить Этап.

Файл определения сервиса сохраняется в выбранном вами местоположении.

Загрузка и публикация файла определения сервиса

Если у вас есть файл определения сервиса от автора, то вы можете вручную загрузить его в Мои ресурсы на вашем портале и опубликовать слой листов или запланировать запуск скрипта для загрузки и публикации файла.

Загрузка и публикация вручную

Войдите на веб-сайт портала для добавления и публикации файла определения сервиса на вашем портале.

  1. Войдите на ваш портал как участник с правами на создание ресурсов и публикацию размещенных слоев листов и откройте Мои ресурсы.
  2. Нажмите кнопку Добавить элемент.
  3. Выберите для загрузки файл с вашего компьютера.
  4. Щелкните кнопку обзора и выберите файл определения сервиса.
  5. Щелкните Опубликовать данный файл как сервис.
  6. Введите теги, разделенные запятыми.

    Теги представляют собой слова или короткие фразы, описывающие элемент и облегчающие его поиск. Федеральная земля считается одним тегом, когда как Федеральная, земля рассматривается как два тега.

  7. Щелкните Добавить элемент, чтобы добавить файл определения сервиса и опубликовать слой листов.

    Слой листов публикуется на сервере вашего портала, и определение сервиса и слои добавляются в Мои ресурсы.

  8. Когда слой листов будет опубликован, вам будет предложено Начать построение листов. Щелкните эту ссылку, чтобы создать листы.

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

Запуск скрипта для загрузки и публикации

Для загрузки и публикации файла определения сервиса в нерабочее время спланируйте автоматический запуск следующего скрипта на компьютере GIS Server:

  1. Создайте на компьютере текстовый файл с расширением .py и скопируйте в него следующий скрипт.

    import os, sys, json, urllib, urllib2, httplib, urlparse, mimetools, mimetypes
    from cStringIO import StringIO
    
    # generates a new token from Portal
    def generate_token(baseurl, username, password):
        tokenUrl = urlparse.urljoin(baseurl, 'sharing/generateToken')
        postdata = { 'username': username, 'password': password,
                   'client': 'requestip', 'expiration': 60, 'f': 'json' }
        encoded_postdata = urllib.urlencode(postdata)
        opener = urllib2.build_opener()
        try: resp = opener.open(tokenUrl, data=encoded_postdata)
        except urllib2.HTTPError as e: raise Exception('Unable to connect to Portal, please check the url: {} {}'.format(e.code, e.reason))
        resp_json = json.loads(resp.read())
        if 'error' in resp_json: raise Exception('\n'.join(resp_json['error']['details']))
        return resp_json['token']
        sys.exit(1)
    
    # create proper multi-part POST request data
    def _encode_multipart_formdata(fields, files):
        boundary = mimetools.choose_boundary()
        buf = StringIO()
        for (key, value) in fields.iteritems():
            buf.write('--%s\r\n' % boundary)
            buf.write('Content-Disposition: form-data; name="%s"' % key)
            buf.write('\r\n\r\n%s\r\n' % str(value))
        for (key, filepath, filename) in files:
            buf.write('--%s\r\n' % boundary)
            buf.write('Content-Disposition: form-data; name="%s"; filename="%s"\r\n' % (key, filename))
            buf.write('Content-Type: %s\r\n' % (mimetypes.guess_type(filename)[0] or 'application/octet-stream'))
            f = open(filepath, "rb")
            try:
                buf.write('\r\n' + f.read() + '\r\n')
            finally:
                f.close()
        buf.write('--' + boundary + '--\r\n\r\n')
        buf = buf.getvalue()
        return boundary, buf
    
    # send multi-part POST request
    def _postmultipart(host, selector, fields, files, ssl):
        boundary, body = _encode_multipart_formdata(fields, files)
        headers = { 'Content-Type': 'multipart/form-data; boundary={0}'.format(boundary) }
        if ssl: h = httplib.HTTPSConnection(host)
        else: h = httplib.HTTPConnection(host)
        
        h.request('POST', selector, body, headers)
        resp = h.getresponse()
    
        return resp.read()
    
    # first upload the SD file and create an item in Portal
    def addSDItem(baseurl, user, token, title, file, folder = ''):
        addUrl = 'sharing/rest/content/users/{}/{}addItem'
        if folder != '': addUrl = addUrl.format(user, folder + '/')
        else: addUrl = addUrl.format(user, '')
        
        url = urlparse.urljoin(baseurl, addUrl)
    
        files = [('file', file, os.path.split(file)[1])]
        fields = { 'token' : token, 'f' : 'json', 'type' : 'Service Definition', 'title' : title, 
                   'tags' : 'sampletag', 'name': title, 'typeKeywords' : 'Data, Service Definition, ArcGIS, sd' }
    
        ssl = url.startswith('https://')
        
        parsed_url = urlparse.urlparse(url)
        
        print('Uploading {} to {}..'.format(file, baseurl))
        resp = _postmultipart(parsed_url.netloc, str(parsed_url.path), fields, files, ssl)
        resp_json = json.loads(resp)
    
        if 'error' in resp_json:
          raise Exception('Unable to upload file {}: {}'.format(file, resp_json['error']['message']))
        
        return resp_json['id']
        
    # second publish the uploaded SD item as a new tiled service
    def publishTiles(baseurl, user, token, itemid):
        publishUrl = urlparse.urljoin(baseurl, 'sharing/rest/content/users/{}/publish'.format(user))
        query_dict= { 'f' : 'json', 'token': token, 'itemid': itemid, 'buildInitialCache' : True,
                      'publishParameters' : { 'name' : 'cities' }, 'fileType': 'serviceDefinition' }
                      
        query_string = urllib.urlencode(query_dict)
        print('Publishing tile service from item..')
        response = urllib.urlopen(publishUrl, query_string)
            
        resp_json = json.loads(response.read())
        
        if 'error' in resp_json: raise Exception('Unable to publish item: {}'.format(resp_json['error']['message']))
    
    # read input from command line when run as a standalone script
    if __name__ == '__main__':
        try: 
          url = sys.argv[1]
          user = sys.argv[2]
          password = sys.argv[3]
          f = sys.argv[4]
          title = sys.argv[5]
          if not url.endswith('/'): url += '/' # make sure the url ends with /
        except: # if too few parameters are passed on command line, show usage help
          print('Usage: ')
          print('       publishServiceItem.py [portalUrl] [userName] [password] [sdFilePath] [titleOfServiceItem]')
          print('')
          print('portalUrl           The secure url to the portal, e.g. https://portalmachine.example.com/arcgis/')
          print('userName            The username of a user to publish the service.')
          print('                    This user must have the required publishing privileges.')
          print('password            The password of the user')
          print('sdFilePath          Path to the .sd file containing the service definition')
          print('                    E.g. c:\\temp\cachedService.sd')
          print('titleOfServiceItem  The title to assign to the published item in the portal.')
          sys.exit(1)  
    
        token = generate_token(url, user, password)
    
        id = addSDItem(url, user, token, title, f)
        publishTiles(url, user, token, id)
        print('Publishing complete. Tile generation has been started and may take a while to finish.')

  2. Создайте командный файл или скрипт оболочки, который позволит спланировать автоматический запуск скрипта Python.
  3. В этот файле произведите запуск скрипта Python, указав нужные настройки для вашего сайта.

    Например, чтобы запустить файл publishServiceItem.py, укажите URL вашего портала, имя и пароль пользователя, из-под которого будет произведен вход, путь к файлу определения сервиса и название сервиса, который будет создан. В этом примере были использованы такие значения: URL портала – https://portal.domain.com/arcgis/, имя пользователя – pub1, пароль пользователя – pub.1, путь к файлу определения сервиса – C:\maps\SDs\mymap.sd, имя сервиса: studytiles.

    publishServiceItem.py https://portal.domain.com/arcgis/ pub1 pub.1 C:\maps\SDs\mymap.sd studytiles

    Подсказка:

    Вы также могли бы использовать следующий более простой скрипт для загрузки файла определения сервиса на портал, публикации слоя листов и построения кэша. Однако для запуска этого скрипта вам нужно установить дополнительные пакеты Python – PortalPy и Python Requests. Пакет PortalPy устанавливается вместе с Portal for ArcGIS. См. Скрипты для задач администрирования с использованием PortalPy в справке к Portal for ArcGIS для получения более подробной информации об установке и использовании этого модуля.

    import portalpy, requests, urlparse, sys, os
    
    # first upload the SD file and create an item in Portal
    def addSDItem(baseurl, user, token, title, file, folder = ''):
        addUrl = 'sharing/rest/content/users/{}/{}addItem'
        if folder != '': addUrl = addUrl.format(user, folder + '/')
        else: addUrl = addUrl.format(user, '')
        
        url = urlparse.urljoin(baseurl, addUrl)
    
        files = { 'file' : (os.path.split(file)[1], open(file, 'rb')) }
        fields = { 'token' : token, 'f' : 'json', 'type' : 'Service Definition', 'title' : title, 
                   'tags' : 'sampletag', 'name': title, 'typeKeywords' : 'Data, Service Definition, ArcGIS, sd' }
    
        print('Uploading {} to {}..'.format(file, baseurl))
        
        # send POST with upload request
        # verify=False turns off SSL cert validation, turn on for production environments with CA-signed certs
        resp = requests.post(url, data=fields, files=files, verify=False)
        resp_json = resp.json()
    
        if 'error' in resp_json:
          raise Exception('Unable to upload file {}: {}'.format(file, resp_json['error']['message']))
        
        return resp_json['id']
    
    # second publish the uploaded SD item as a new tiled service
    def publishTiles(baseurl, user, token, itemid):
        publishUrl = urlparse.urljoin(baseurl, 'sharing/rest/content/users/{}/publish'.format(user))
        query_dict= { 'f' : 'json', 'token': token, 'itemid': itemid, 'buildInitialCache' : True,
                      'publishParameters' : "{ 'name' : 'cities' }", 'fileType': 'serviceDefinition' }
        
        print('Publishing tile service from item..')
        
        # send POST with publish request
        # verify=False turns off SSL cert validation, turn on for production environments with CA-signed certs
        response = requests.post(publishUrl, data=query_dict, verify=False) 
            
        resp_json = response.json()
        
        if 'error' in resp_json: raise Exception('Unable to publish item: {}'.format(resp_json['error']['message']))
    
    # read input from command line when run as a standalone script
    if __name__ == '__main__':
        try: 
          url = sys.argv[1]
          user = sys.argv[2]
          password = sys.argv[3]
          f = sys.argv[4]
          title = sys.argv[5]
          if not url.endswith('/'): url += '/' # make sure the url ends with /
        except: # if too few parameters are passed on command line, show usage help
          print('Usage: ')
          print('       publishServiceItem.py [portalUrl] [userName] [password] [sdFilePath] [titleOfServiceItem]')
          print('')
          print('portalUrl           The secure url to the portal, e.g. https://portalmachine.example.com/arcgis/')
          print('userName            The username of a user to publish the service.')
          print('                    This user must have the required publishing privileges.')
          print('password            The password of the user')
          print('sdFilePath          Path to the .sd file containing the service definition')
          print('                    E.g. c:\\temp\cachedService.sd')
          print('titleOfServiceItem  The title to assign to the published item in the portal.')
          sys.exit(1) 
    
        portal = portalpy.Portal(url, user, password)
        token = portal.generate_token(user, password)
    
        id = addSDItem(url, user, token, title, f)
        publishTiles(url, user, token, id)
        print('Publishing complete. Tile generation has been started and may take a while to finish.')

  4. Спланируйте автоматический запуск вашего скрипта во время минимальной нагрузки на портал.

    Для получения информации о настройке запланированного запуска скрипта см. раздел справки по геообработке в ArcGIS Планирование запуска скрипта Python в определенное время.