ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Справка
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS for Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули

ConvertWebMapToMapDocument

  • Краткая информация
  • Описание
  • Синтаксис
  • Пример кода

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

Конвертирует веб-карту (в формате JSON), которую вы хотите напечатать или экспортировать, в документ карты. Документ карты затем можно изменить перед печатью или экспортом.

Описание

Функция ConvertWebMapToMapDocument конвертирует веб-карту, которую вы хотите напечатать или экспортировать, в документ карты. После преобразования документа, в документе карты содержатся все элементы веб-карты. Затем можно изменить документ карты перед печатью или экспортом в стандартные форматы, такие как PDF. ConvertWebMapToMapDocument обычно будет использоваться при печати карт из веб-приложений ГИС с помощью ArcGIS API for JavaScript.

Функция ConvertWebMapToMapDocument в основном предназначена для рабочих процессов, в которых необходимо изменить или экспортировать веб-карту с помощью функций arcpy.mapping. Несколько примеров использования функции ConvertWebMapToMapDocument в рабочих процессах:

  • Выгрузка сервисных слоев для локальных векторных данных – в скриптах arcpy.mapping сервисные слои можно идентифицировать и выгрузить для использования в слоях, обращающихся к локальным данным. Это обычно требуется, если необходимы выходные данные в векторном формате, вместо слоев сервиса. Например, векторные выходные данные в PDF поддерживают в приложении просмотра PDF следующие функции: переключение видимости слоев, просмотр атрибутов объектов и просмотр координат карты. Один из способов выгрузки сервисных слоев для векторных данных – использовать шаблоны документов карты, которые содержат векторные эквиваленты всех возможных сервисных слоев. После выполнения функции ConvertWebMapToMapDocument просмотрите все слои выходного документа карты и удалите все слои, кроме векторных, которые соответствуют сервисным слоям веб-карты. Этот рабочий процесс можно использовать при замене ваших собственных сервисов на соответствующие векторные данные, которые у вас уже есть.
  • Cоздание атласов – если Многостраничная компоновка для template_mxd разрешена, можно создавать серии карт. Более того, выходной документ карты можно экспортировать в PDF, а затем загрузить в другой файл PDF, используя класс PDFDocument для создания полного атласа.
  • Экспорт с помощью расширенных опций – все функции экспорта в arcpy.mapping имеют множество расширенных опций. Например, функция ExportToPDF имеет параметры для управления сжатием растровых и векторных данных, определения цветового пространства, внедрения шрифтов и т.д.
  • Управление отображением легенды – модуль arcpy.mapping обеспечивает возможность удаления или изменения элементов легенды и их стиля с помощью пользовательских настроек класса LegendElement и функции ListStyleItems.
Примечание:

ArcGIS Server также содержит сервис геообработки PrintingTools. Сервис PrintingTools может использоваться в веб-приложении для создания изображения для печати высокого картографического качества. Дополнительные сведения о сервисе PrintingTools см. в:

  • Печать в веб-приложениях

Если у вас есть скрипт Python, который готовит карту для печати, вы можете включить его в инструмент-скрипт геообработки. Затем вы можете опубликовать инструмент-скрипт в качестве сервиса геообработки ArcGIS Server. ArcGIS API for JavaScript содержит задачу Печать, которую можно использовать в веб-приложении ГИС. Задача Печать имеет параметр URL, который укажет на REST URL созданного сервиса геообработки.

Более подробную информацию по сервисам геообработки см. в следующих разделах:

  • Что такое сервис геообработки?
  • Краткий обзор по разработке и предоставлению общего доступа к сервисам геообработки
  • Краткий обзор по публикации сервисов геообработки
  • Словарь основных терминов по сервисам геообработки

При использовании ConvertWebMapToMapDocument в сервисе геообработки в ArcGIS Web API имена параметров инструмента-скрипта должны совпадать с параметрами Print Task в ArcGIS Web API:

Имя параметраТип данныхОбъяснение

Web_Map_as_JSON

Строка

Представление JSON состояния карты для экспорта из веб-приложения. Интерфейсы Web API ArcGIS (JavaScript, Flex и Silverlight) позволяют разработчикам легко получить эту строку JSON из веб-приложения.

Output_File

Файл

Имя выходного файла. Расширение файла зависит от параметра Формат.

Формат

Строка

Формат, в котором будет предоставлено изображение карты для печати. Разрешены следующие строки:

  • PNG8 (является значением умолчанию, если параметр оставлен пустым)
  • PNG
  • PDF
  • PNG32
  • JPG
  • GIF
  • EPS
  • SVG
  • SVGZ

Layout_Template

Строка

Имя шаблона из списка или ключевое слово MAP_ONLY. Когда выбрано MAP_ONLY или передается пустая строка, выходная карта не содержит никаких окружающих объектов компоновки страницы (например – название, легенды, масштабную линейку).

Подсказка:

Кроме того, можно добавить любое количество дополнительных пользовательских параметров. Возможность передачи дополнительных параметров в пользовательскую задачу Print Task позволяет собрать любое количество дополнительных параметров из веб-приложения и передать их в скрипт Python.

ConvertWebMapToMapDocument обычно используется при печати карт из веб-приложений. Если вы используете задачу Print Task в ArcGIS Web API, создавать веб-карту JSON не нужно; это сделают интерфейсы API. Однако прежде чем скрипт будет опубликован и использован в веб-API, его необходимо запустить локально. При локальном запуске скрипта можно использовать любую допустимую строку JSON. Строка JSON, похожая на то, что возвращает веб-приложение, может потребоваться для успешного выполнения скрипта. См. спецификацию ExportWebMap, чтобы узнать, как должен быть отформатирован этот текст. Пример строки показан ниже:

{
    "layoutOptions": {
        "titleText": "Simple WebMap JSON example"
    },
    "operationalLayers": [
        {
            "url": "http://maps1.arcgisonline.com/ArcGIS/rest/services/USA_Federal_Lands/MapServer",
            "visibility": true
        }
    ],
    "exportOptions": {
        "outputSize": [
            1500,
            1500
        ]
    },
    "mapOptions": {
        "extent": {
            "xmin": -13077000,
            "ymin": 4031000,
            "xmax": -13023000,
            "ymax": 4053000
        }
    },
    "version": "1.4"
}

При запуске инструмента-скрипта, строку JSON можно скопировать и вставить во входной параметр Web_Map_as_JSON. Однако переносы строк необходимо удалить. Пример строки JSON с удаленными переносами строк:

{"layoutOptions": {"titleText": "Simple WebMap JSON example"},"operationalLayers": [{"url": "http://maps1.arcgisonline.com/ArcGIS/rest/services/USA_Federal_Lands/MapServer","visibility": true}],"exportOptions": {"outputSize": [1500,1500]},"mapOptions": {"extent": {"xmin": -13077000,"ymin": 4031000,"xmax": -13023000,"ymax": 4053000}},"version": "1.4"}

Подсказка:

В целях публикации вы можете оставить входной параметр Web_Map_as_JSON пустым, поскольку JSON веб-карты в этом веб-приложении будет обеспечиваться Web API ArcGIS. Входной параметр Web_Map_as_JSON может быть оставлен пустым при условии, что скрипт Python был написан таким образом, чтобы он мог работать и при пустом входном параметре. Например, скрипт не ищет слои веб-карт по имени. Если скрипт не работает на сервере из-за ошибки, ее необходимо исправить локально и снова опубликовать его на сервере. Поэтому, перед публикацией рекомендуется убедиться, что скрипт работает локально, проверив его со строкой JSON подходящей веб-карты или использовав отладочный документ карты, который содержит все элементы, присутствующие в JSON веб-карты.

Подсказка:

Как упоминалось раньше, строка JSON возвращаемая интерфейсами ArcGIS Web API, содержит полное состояние веб-карты. Объект layoutOptions в строке JSON требует дополнительного обсуждения, поскольку он автоматически обновляет элементы компоновки, чтобы они могли быть размещены в template_mxd. Например, если JSON имеет настройку titleText, а шаблон template_mxd имеет элемент Заголовок в виде динамического текста, заголовок компоновки в шаблоне документа карты будет обновлен с помощью значения titleText. Дополнительные сведения см. в разделе layoutOptions в спецификации ExportWebMap.

Когда вы включаете скрипт Python, который использует ConvertWebMapToMapDocument, в сервис геообработки, необходимо убедиться, что ArcGIS Server может видеть документы шаблонов карт и данные, которые будут использоваться в веб-приложении. Рекомендуется использовать папку, которая зарегистрирована в ArcGIS Server. Более подробно о регистрации данных см. в следующих разделах:

  • Предоставление доступа к данным для ArcGIS Server
  • О регистрации данных в ArcGIS Server
  • Регистрация данных в ArcGIS Server с помощью ArcGIS Desktop

При создании шаблонов документов карт в зарегистрированной папке лучшим вариантом будет использование относительных путей. Таким образом, ArcGIS Server будет способен найти данные в зарегистрированной папке относительно расположения документов карты. Дополнительная информация приведена в разделе Как карта ссылается на данные.

Внимание:

При использовании ConvertWebMapToMapDocument относительные пути к слоям должны указывать на данные в, ниже или на один уровень выше пути к template_mxd.

Внимание:

Если вы решили не использовать зарегистрированные папки, то шаблоны документов карт и данные будут упакованы и скопированы на сервер. Во время упаковки данные могут перемещаться и использоваться в качестве источника с соответствующими путями к структуре папок, которые не могут быть разрешены ConvertWebMapToMapDocument. Поэтому рекомендуется использование зарегистрированных папок.

В дополнение к созданию ваших собственных шаблонов документов карты, вы также можете использовать уже готовые шаблоны, которые поставляются с программным обеспечением. Они находятся в папке <installation_directory>\Templates\ExportWebMapTemplates. Эти шаблоны содержат элементы карты, такие как легенда, динамический текст текущей даты, шкалу масштаба и текст масштаба.

По умолчанию наложение заметок или графика со стороны клиента для веб-приложения будут сохраняться в рабочей области в памяти. Рабочая область в памяти является временной и удаляется при закрытии приложения. Чтобы получить постоянную копию выходного документа карты, содержащего заметки, задайте notes_gdb; затем с помощью инструментов геообработки Собрать карту или Упаковать карту сделайте копию выходного документа карты. Задавать параметр notes_gdb необходимо только в том случае, если вы планируете создать постоянную копию выходного документа карты. См. пример 2 кода ниже. Если веб-карта не содержит наложения заметок, можно использовать метод saveACopy из класса MapDocument, чтобы получить постоянную копию выходного документа карты.

Модуль arcpy.mapping также обеспечивает методы управления отображением легенды в компоновке выходного документа карты. Метод removeItem в классе LegendElement позволяет удалять элементы легенды. Этот процесс описывается в расширенном руководстве. Для обновления элементов легенды используйте метод updateItem класса LegendElement, а также метод ListStyleItems.

Если ваши веб-приложения используют динамические слои, функция updateLayerFromJSON из класса Layer может использоваться для обновления свойств (например, символов) промежуточных векторных слоев в шаблоне mxd с определением динамических слоев из JSON веб-карты. Это удобно, если веб-приложение позволяет менять символы динамических слоев, и вы хотите заменить слои сервиса на промежуточные векторные данные, но все еще видите обновленные символы из веб-приложения. См. пример 6 кода ниже.

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

  • Руководство: Основы печати и экспорта веб-карт с помощью arcpy.mapping
  • Руководство: Расширенная печать и экспорт веб-карт с помощью arcpy.mapping

Синтаксис

ConvertWebMapToMapDocument (webmap_json, {template_mxd}, {notes_gdb}, {extra_conversion_options})
ПараметрОбъяснениеТип данных
webmap_json

Веб-карта для печати в формате JavaScript Object Notation (JSON). Для получения подробной информации см. раздел Спецификации ExportWebMap JSON. Интерфейсы Web API ArcGIS (JavaScript, Flex и Silverlight) позволяют разработчикам легко получить эту строку JSON из веб-приложения.

String
template_mxd

Строка, содержащая путь и имя файла документа карты (.mxd), использующегося в качестве шаблона компоновки страницы. Содержание веб-карты будет вставлено во фрейм данных, который был активным в момент сохранения шаблона template_mxd. Слои активного фрейма данных из файла template_mxd (и всех других фреймов данных) будут сохранены в выходном документе mapDocument.

(Значение по умолчанию — None)

String
notes_gdb

Строка, содержащая путь к новой или существующей файловой базе геоданных либо к имеющемуся подключению к многопользовательской базе геоданных, в которую будут записаны графические объекты. Этот параметр должен использоваться только в случае, если графические элементы веб-карты JSON должны постоянно сохраняться. Чаще всего этот параметр не нужен, т.к. для хранения графических объектов будет использоваться находящаяся в памяти компьютера временная рабочая область. Этот параметр позволяет сохранять графические объекты во временное хранилище, в случае если вы планируете использовать документ карты для осуществления операций, требующих сохранения на диск или загрузки с диска (например, для упаковки и сбора данных). Путь должен заканчиваться расширениями .gdb или .sde.

(Значение по умолчанию — None)

String
extra_conversion_options

Словарь учетных данных защищенных сервисов. Этот параметр требуется, если сервисы в веб-карте JSON запрашивают имя пользователя и пароль для просмотра. Поддерживаются следующие ключи словаря:

  • SERVER_CONNECTION_FILE
  • WMS_CONNECTION_FILE
  • WMTS_CONNECTION_FILE

Примером пары "ключ–значение" может служить:

credentials = {"SERVER_CONNECTION_FILE":r"Z:\ArcGIS2 on MyServer (user).ags", 
               "WMS_CONNECTION_FILE":r"Z:\USA on MyServer.wms"}
result = arcpy.mapping.ConvertWebMapToMapDocument(json, 
                                                  extra_conversion_options=credentials)

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

agsConnections = [r"Z:\ArcGIS on SecuredServerA (user).ags",                   r"Z:\ArcGIS on SecuredServerB (user).ags"] credentials = {"SERVER_CONNECTION_FILE":agsConnections,                "WMS_CONNECTION_FILE":r"Z:\USA on MyServer.wms"}
result = arcpy.mapping.ConvertWebMapToMapDocument(json, 
                                                  extra_conversion_options=credentials)

(Значение по умолчанию — None)

Dictionary

Возвращаемое значение

Тип данныхОбъяснение
tuple

Возвращает именованный кортеж Python веб-карты и запрашивает свойства:

  • mapDocument —Объект документа карты, созданный в результате работы функции.
  • DPI —Запрошенное разрешение данных, экспортируемых из веб-приложения.
  • outputSizeHeight —Высота изображения, как указано в веб-приложении. Используется при экспорте вида данных.
  • outputSizeWidth —Ширина изображения, как указано в веб-приложении. Используется при экспорте вида данных.
Внимание:

ConvertWebMapToMapDocument создает временные документы карты (файлы.mxd) в системной папке temp. В Windows Vista и Windows 7 она находится в C:\Users\<user name>\AppData\Local\Temp. Пользователи должны сами удалять эти документы карты в этой папке, когда это необходимо. Чтобы удалить эти временные документы карты с помощью скрипта, см. раздел очистка в примерах кодов, приведенных ниже.

Пример кода

ConvertWebMapToMapDocument пример 1

В этом примере скрипт считывает веб-карту JSON, выходной формат, шаблон документа карты и существующие документы PDF, к которым будет присоединена веб-карта. Выходной документ карты из функции ConvertWebMapToMapDocument экспортируется в PDF, затем включается в другой файл PDF с помощью класса PDFDocument.

import arcpy
import os
import uuid
# The template location in the server data store
templatePath = '//MyMachine/MyDataStore/WebMap'
# Input WebMap json
Web_Map_as_JSON = arcpy.GetParameterAsText(0)
# Input Layout template
Layout_Template = arcpy.GetParameterAsText(1)
if Layout_Template == '#' or not Layout_Template:
    Layout_Template = "Landscape11x17" 
    
# PDF Title Page
PDF_Title = arcpy.GetParameterAsText(2)
if PDF_Title == '#' or not PDF_Title:
    PDF_Title = "TitlePage.PDF"
    
# PDF End Page
PDF_End = arcpy.GetParameterAsText(3)
if PDF_End == '#' or not PDF_End:
    PDF_End = "ContactInfo.PDF"
# Get the requested map document
templateMxd = os.path.join(templatePath, Layout_Template + '.mxd')
# Get the requested PDF files
PDF_Title_File = os.path.join(templatePath, PDF_Title)
PDF_End_File = os.path.join(templatePath, PDF_End)
# Convert the WebMap to a map document
result = arcpy.mapping.ConvertWebMapToMapDocument(Web_Map_as_JSON, 
                                                  templateMxd)
mxd = result.mapDocument
# Use the uuid module to generate a GUID as part of the output name
# This will ensure a unique output name
WebMapPDF = os.path.join(arcpy.env.scratchFolder, 
                         'WebMap_{}.pdf'.format(str(uuid.uuid1())))
# Export the WebMap to PDF
arcpy.mapping.ExportToPDF(mxd, WebMapPDF)
# Create a new "master" output PDF Document
# Append Title, WebMap and End PDFs to it
Output_Name = os.path.join(arcpy.env.scratchFolder, 
                           'OutputWithWebMap_{}.pdf'.format(str(uuid.uuid1())))
pdfDoc = arcpy.mapping.PDFDocumentCreate(Output_Name)
pdfDoc.appendPages(PDF_Title_File)
pdfDoc.appendPages(WebMapPDF)
pdfDoc.appendPages(PDF_End_File)
pdfDoc.saveAndClose()
# Set the output parameter to be the output PDF
arcpy.SetParameterAsText(4, Output_Name)
# Clean up - delete the map document reference
filePath = mxd.filePath
del mxd, result
os.remove(filePath)
ConvertWebMapToMapDocument пример 2

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

import arcpy import os import uuid
# The template location in the registered folder templatePath = '//MyMachine/Austin/WebMap'
# Input web map json Web_Map_as_JSON = arcpy.GetParameterAsText(0)
# Format for output Format = arcpy.GetParameterAsText(1) if Format == '#' or not Format:
    Format = "PDF" 
# Input Layout template Layout_Template = arcpy.GetParameterAsText(2) if Layout_Template == '#' or not Layout_Template:
    Layout_Template = "Landscape11x17" 
# Get the requested map document templateMxd = os.path.join(templatePath, Layout_Template + '.mxd')    
# Since we are making a permanent copy of the notes overlays, 
# we need to specify a notes geodatabase notes = os.path.join(arcpy.env.scratchFolder, 'mynotes.gdb')
# Convert the web map to a map document result = arcpy.mapping.ConvertWebMapToMapDocument(Web_Map_as_JSON, templateMxd, notes) mxd = result.mapDocument
# Save the web map and notes overlays to a new map document using ConsolidateMap arcpy.ConsolidateMap_management(mxd.filePath, 
                                os.path.join(arcpy.env.scratchFolder, 'ConsolidateWebMap'))
# Clean up - delete the map document reference filePath = mxd.filePath del mxd, result
os.remove(filePath)
ConvertWebMapToMapDocument пример 3

В этом примере используется промежуточный шаблон документа карты, который содержит векторные эквиваленты всех возможных сервисных слоев. После выполнения функции ConvertWebMapToMapDocument, скрипт просматривает все слои выходного документа карты и удаляет все слои, кроме векторных, которые соответствуют сервисным слоям в веб-карте JSON. Затем компоновка выходного документа карты экспортируется в PDF или PNG.

import arcpy import os import uuid
# The template location in the registered folder templatePath = '//MyComputerName/MyDataStore/USA'
# Input web map json Web_Map_as_JSON = arcpy.GetParameterAsText(0)
# Format for output Format = arcpy.GetParameterAsText(1) if Format == '#' or not Format:
    Format = "PDF" 
# Input Layout template Layout_Template = arcpy.GetParameterAsText(2) if Layout_Template == '#' or not Layout_Template:
    Layout_Template = "NorthwesternUSA"     
# Get the requested map document templateMxd = os.path.join(templatePath, Layout_Template + '.mxd')
# Convert the web map to a map document result = arcpy.mapping.ConvertWebMapToMapDocument(Web_Map_as_JSON, templateMxd) mxd = result.mapDocument
# Reference the data frame that contains the web map
# Note: ConvertWebMapToMapDocument renames the active dataframe in the template_mxd to "Webmap"
df = arcpy.mapping.ListDataFrames(mxd, 'Webmap')[0]
# Get a list of all service layer names in the map serviceLayersNames = [slyr.name for slyr in arcpy.mapping.ListLayers(mxd, data_frame=df)                       if slyr.isServiceLayer and slyr.visible and not slyr.isGroupLayer]
# Create a list of all possible vector layer names in the map that could have a 
# corresponding service layer vectorLayersNames = [vlyr.name for vlyr in arcpy.mapping.ListLayers(mxd, data_frame=df)                      if not vlyr.isServiceLayer and not vlyr.isGroupLayer]
# Get a list of all vector layers that don't have a corresponding service layer removeLayerNameList = [vlyrName for vlyrName in vectorLayersNames                        if vlyrName not in serviceLayersNames]
# Remove all vector layers that don't have a corresponding service layer for lyr in arcpy.mapping.ListLayers(mxd, data_frame=df):
    if not lyr.isGroupLayer \    and not lyr.isServiceLayer \    and lyr.name in removeLayerNameList \    and lyr.name in vectorLayersNames:
        arcpy.mapping.RemoveLayer(df, lyr)                
# Remove all service layers
# This will leave only vector layers that had corresponding service layers for slyr in arcpy.mapping.ListLayers(mxd, data_frame=df):
    if slyr.isServiceLayer:
        arcpy.mapping.RemoveLayer(df, slyr)        
# Use the uuid module to generate a GUID as part of the output name
# This will ensure a unique output name output = 'WebMap_{}.{}'.format(str(uuid.uuid1()), Format) Output_File = os.path.join(arcpy.env.scratchFolder, output)
# Export the web map if Format.lower() == 'pdf':
    arcpy.mapping.ExportToPDF(mxd, Output_File) elif Format.lower() == 'png':
    arcpy.mapping.ExportToPNG(mxd, Output_File)
# Set the output parameter to be the output file of the server job arcpy.SetParameterAsText(3, Output_File)
# Clean up - delete the map document reference filePath = mxd.filePath del mxd, result os.remove(filePath)
ConvertWebMapToMapDocument пример 4

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

import arcpy import os import uuid
# Input web map json Web_Map_as_JSON = arcpy.GetParameterAsText(0)
# The template location in the registered folder templatePath = '//MyComputerName/MyDataStore/FederalLands'
# Get the template map document templateMxd = os.path.join(templatePath, 'FederalLands.mxd')
# Convert the web map to a map document result = arcpy.mapping.ConvertWebMapToMapDocument(Web_Map_as_JSON, templateMxd) mxd = result.mapDocument
# Reference the data frame that contains the web map
# Note: ConvertWebMapToMapDocument renames the active dataframe in the template_mxd to "Webmap"
df = arcpy.mapping.ListDataFrames(mxd, 'Webmap')[0]
# Get a list of all service layer names in the map serviceLayersNames = [slyr.name for slyr in arcpy.mapping.ListLayers(mxd, data_frame=df)                       if slyr.isServiceLayer and slyr.visible and not slyr.isGroupLayer]
# Create a list of all possible vector layer names in the map that could have a 
# corresponding service layer vectorLayersNames = [vlyr.name for vlyr in arcpy.mapping.ListLayers(mxd, data_frame=df)                      if not vlyr.isServiceLayer and not vlyr.isGroupLayer]
# Get a list of all vector layers that don't have a corresponding service layer removeLayerNameList = [vlyrName for vlyrName in vectorLayersNames                        if vlyrName not in serviceLayersNames]
# Remove all vector layers that don't have a corresponding service layer for lyr in arcpy.mapping.ListLayers(mxd, data_frame=df):
    if not lyr.isGroupLayer \    and not lyr.isServiceLayer \    and lyr.name in removeLayerNameList \    and lyr.name in vectorLayersNames:
        arcpy.mapping.RemoveLayer(df, lyr)                
# Remove all service layers
# This will leave only vector layers that had corresponding service layers for slyr in arcpy.mapping.ListLayers(mxd, data_frame=df):
    if slyr.isServiceLayer:
        arcpy.mapping.RemoveLayer(df, slyr)        
# Use the uuid module to generate a GUID as part of the output name
# This will ensure a unique output name output = 'WebMap_{}.png'.format(str(uuid.uuid1())) Output_File = os.path.join(arcpy.env.scratchFolder, output)
# Export the web map arcpy.mapping.ExportToPNG(mxd, Output_File, df, result.outputSizeWidth,                           result.outputSizeHeight, result.DPI)
# Set the output parameter to be the output file of the server job arcpy.SetParameterAsText(1, Output_File)
# Clean up - delete the map document reference filePath = mxd.filePath del mxd, result os.remove(filePath)
ConvertWebMapToMapDocument пример 5

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

import arcpy import os import uuid
# The template location in the registered folder templatePath = '//MyComputerName/MyDataStore/WebMap'
# Input WebMap json Web_Map_as_JSON = arcpy.GetParameterAsText(0)
# Data Driven Page numbers as comma delimited string DDP_Pages = arcpy.GetParameterAsText(1) if DDP_Pages == '#' or not DDP_Pages:
    DDP_Pages = "1, 3, 10-13" 
# Get the template map document templateMxd = os.path.join(templatePath, 'DDP.mxd')
# Convert the WebMap to a map document result = arcpy.mapping.ConvertWebMapToMapDocument(Web_Map_as_JSON,                                                   templateMxd)
mxd = result.mapDocument
# Use the uuid module to generate a GUID as part of the output name
# This will ensure a unique output name Output_Name = os.path.join(arcpy.env.scratchFolder,                            'WebMap_{}.pdf'.format(str(uuid.uuid1())))
# Export the WebMap Data Driven Pages to PDF mxd.dataDrivenPages.exportToPDF(Output_Name, "RANGE", DDP_Pages)
# Set the output parameter to be the output PDF arcpy.SetParameterAsText(2, Output_Name)
# Clean up - delete the map document reference filePath = mxd.filePath del mxd, result os.remove(filePath)
ConvertWebMapToMapDocument пример 6

В этом примере, функция updateLayerFromJSON из класса Layer используется для обновления свойств (например, символов) промежуточного векторного слоя в шаблоне mxd с определением динамического слоя из JSON веб-карты. Это удобно, если веб-приложение позволяет менять символы динамических слоев, и вы хотите заменить слои сервиса на промежуточные векторные данные, но все еще видите обновленные символы из веб-приложения.

import arcpy import os import uuid import json
# The template location in the server data store templatePath = '//MyMachine/MyDataStore/WebMap'
# Input WebMap json Web_Map_as_JSON = arcpy.GetParameterAsText(0)
# Input Layout template Layout_Template = arcpy.GetParameterAsText(1) if Layout_Template == '#' or not Layout_Template:
    Layout_Template = "Landscape11x17" 
# Get the requested map document templateMxd = os.path.join(templatePath, Layout_Template + '.mxd')
# Convert the web map to a map document result = arcpy.mapping.ConvertWebMapToMapDocument(Web_Map_as_JSON, templateMxd) mxd = result.mapDocument
# Reference the data frame that contains the web map
# Note: ConvertWebMapToMapDocument renames the active dataframe in the template_mxd to "Webmap"
df = arcpy.mapping.ListDataFrames(mxd, 'Webmap')[0]
# Reference the staged vector data that corresponds to the dynamic layer in the JSON
# This is the layer that will get updated based on the layer definition in the JSON lyr = arcpy.mapping.ListLayers(mxd, "U.S. States (Generalized)", df)[0]
# Read the JSON and extract the layer definition
# In this case we have hardcoded it to second operational layer data = json.loads(Web_Map_as_JSON) layerDefinition = data["operationalLayers"][1]["layerDefinition"]
# Update the staged vector layer with the layer definition (e.g. renderer info) from the JSON lyr.updateLayerFromJSON(layerDefinition)
# Remove all service layers. This will leave only staged vector layers. for slyr in arcpy.mapping.ListLayers(mxd, data_frame=df):
    if slyr.isServiceLayer:
        arcpy.mapping.RemoveLayer(df, slyr)
# Use the uuid module to generate a GUID as part of the output name
# This will ensure a unique output name output = 'WebMap_{}.pdf'.format(str(uuid.uuid1())) Output_File = os.path.join(arcpy.env.scratchFolder, output)
# Export the web map arcpy.mapping.ExportToPDF(mxd, Output_File)
# Set the output parameter to be the output file of the server job arcpy.SetParameterAsText(2, Output_File)
# Clean up - delete the map document reference filePath = mxd.filePath del mxd, result os.remove(filePath)

ArcGIS Desktop

  • На главную
  • Документация
  • Поддержка

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог Esri
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
Copyright © 2019 Esri. | Конфиденциальность | Правовая информация