ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

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

ArcGIS Online

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

ArcGIS Desktop

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

ArcGIS Enterprise

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

ArcGIS Developers

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

ArcGIS Solutions

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

ArcGIS Marketplace

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

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

ArcMap

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

Начало работы с arcpy.mapping

  • Окно Python
  • Указание ссылки на существующий документ карты
  • Добавление файла слоя в документ карты
  • Экспорт документа карты в PDF
  • Укажите слой с помощью функции ListLayers, измените свойства слоя
  • Изменение экстента фрейма данных
  • Экспорт документа карты в PDF (повтор)
  • Создание документа PDF и добавление двух страниц
Уровень сложности:
Начальный
Требования к данным:
Используйте собственные данные

В этом руководстве описываются основные рабочие процессы arcpy.mapping, а также некоторые важные концепции. Оно предназначено для помощи пользователям, которые совсем не знакомы с написанием скриптов Python и arcpy.mapping. Действия, описанные здесь, подходят для работы с любыми данными и всеми уровнями лицензии.

Примечание:

Единственное требование – наличие файла векторного слоя (.lyr).

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

Окно Python

Легче всего научиться работать с arcpy.mapping – это в окне Python. Окно Python является частью платформы ArcMap и обеспечивает возможности автозавершения, чтобы вы могли легко читать имена и порядок функциональных параметров. Далее следует пошаговое описание, как настроить окно Python так, чтобы оно удовлетворяло требованиям пользователей и соответствовало экранным снимкам, которые приводятся в этом документе.

  1. В ArcMap откройте новый, пустой документ карты.
  2. Щелкните Геообработка > Python.
  3. Если вы открываете окно Python впервые, оно будет выглядеть плавающим поверх приложения. Следующими действиями надо закрепить окно Python и изменить расположение справки.

  4. Щелкните заголовок окна Python и удерживайте левую кнопку мыши.
  5. Перетащите окно Python к якорю в нижней части приложения ArcMap и отпустите кнопку.
  6. Щелкните область панели кода (с символами >>>) окна Python. В области справки справа должен появиться текст справки.
  7. Щелкните область кода правой кнопкой мыши и выберите Размещение справки > Внизу. Теперь справка должна отображаться под областью кода. Может потребоваться отрегулировать разделитель двух областей, чтобы было достаточно пространства для ввода кода и просмотра справки.
  8. Теперь введите следующий оператор (помните, что Python учитывает регистр):
  9. >>> arcpy.mapping.ExportToPDF(
    
    Окно Python должно выглядеть как на рисунке ниже. Выделяется первый обязательный параметр, который называется map_document. Если ввести запятую, выделяется второй параметр. Существует всего два обязательных параметра: map_document и out_pdf. Необязательные параметры заключены в фигурные скобки – {}.
    Снимок экрана синтаксиса ExportToPDF
  10. Щелкните правой кнопкой мыши область кода и выберите команду Очистить все, чтобы очистить область кода.

Указание ссылки на существующий документ карты

Как правило, одна из первых операций, которую вы выполняете со скриптом arcpy.mapping, – это использование существующего документа карты (.mxd) или файл слоя (.lyr), с которым вы хотите что-то сделать. В этом разделе используется ссылка на документ карты.

Существует два способа указания ссылки на документ карты. Первый – ссылка на документ на диске, предоставляющая путь к файлу .mxd. Если вы создаете скрипт, который будет выполняться за пределами среды ArcGIS, ссылку на документ карты необходимо указать с помощью пути. Второй способ ArcMap — указать ссылку на документ карты, который в данный момент загружен в приложение ArcMap (в этом случае это untitled.mxd). При работе в окне Python в ArcMap ссылаться на текущий загруженный документ карты удобно, потому что сделанные в нем изменения можно увидеть непосредственно в приложении. Далее показано, как указать ссылку на документ карты, загруженный в ArcMap.

  1. В окне Python введите следующее, а потом нажмите клавишу Enter:
  2. >>> mxd = arcpy.mapping.MapDocument("CURRENT")
    
    Функция MapDocument возвращает ссылку на объект MapDocument переменной mxd. Строка CURRENT – это ключевое слово, используемое для ссылки на текущий загруженный документ карты. Вместо CURRENT здесь можно указать путь к документу карты.
  3. В окне Python введите следующее:
  4. >>> mxd.
    
    После ввода точки должен появиться длинный список методов и свойств, доступных для объекта MapDocument.
  5. В окне Python введите следующее, а когда введете, нажмите клавишу Enter:
  6. >>> mxd.author = "YOUR NAME GOES HERE"
    
    У объекта MapDocument есть свойство, которое называется author. Просто задайте его значение как строку.
  7. В ArcMap щелкните Файл > Свойства документа карты.
  8. Вы должны будете увидеть, что для этой строки задано свойство author. Вы только что работали непосредственно с объектом MapDocument с помощью переменной, которая называется mxd. Для объекта MapDocument есть много других методов и свойств. Теперь вы сохраните внесенные изменения.
  9. Когда вы это сделаете, нажмите Отмена в диалоговом окне Свойства документа карты.
  10. В окне Python введите следующее, а когда введете, нажмите клавишу Enter:
  11. >>> mxd.save()
    
    Поскольку это – не сохраненный документ карты, откроется диалоговое окно, в котором будет предложено указать путь и имя файла. Для метода save() никаких параметров не предусмотрено, но поскольку это – метод, вы все равно должны использовать открывающие/закрывающие скобки. В реальной ситуации вы бы работали с уже существующим документом карты, и всплывающее диалоговое окно сохранения вам не потребовалось бы. Чтобы проверить расположение сохраненного документа карты, попробуйте следующее:
  12. В окне Python введите следующее, а когда введете, нажмите клавишу Enter:
  13. >>> print mxd.filePath
    
    В области кода должен отобразиться путь:
    Снимок экрана результатов mxd.filePath в окне Python

Добавление файла слоя в документ карты

Теперь, когда есть ссылка на документ карты, вы добавите файл слоя (.lyr) в документ карты. Это можно сделать с помощью функции AddLayer arcpy.mapping.

  1. В окне Python введите следующее:
  2. >>> arcpy.mapping.AddLayer(
    
    Снимок экрана синтаксиса AddLayer в окне Python
    Функция автозаполнения покажет, что существует два обязательных параметра. Первый из них — это ссылка на фрейм данных в документе карты. Второй — ссылка на добавляемый слой. Это может быть слой в документе карты или файле слоя. Третий параметр не является обязательным и он управляет расположением слой в таблице содержания. Так как это первый и единственный слой, игнорируйте третий параметр и используйте значение по умолчанию.
    Перед добавлением слоя необходимо указать ссылку на соответствующие объекты. Сначала указывается фрейм данных.
  3. В окне Python нажмите клавишу Backspace, чтобы удалить функцию AddLayer, затем введите следующую строку, после чего нажмите клавишу Enter:
  4. >>> df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
    
    Для функции ListDataFrames требуется ссылка на документ карты и, при необходимости, фильтр с групповым символом. Вы указываете полное имя фрейма данных для поиска. Вы также могли бы ввести такую строку, как "lay*".
    Все функции списка ArcPy возвращают объекты списка Python. Индекс элементов, возвращаемых в списке, начинается с нуля, что означает, что первый объект списка содержит значение 0, второй 1 и т.д. Так как вы хотите, чтобы переменная df ссылалась на объект DataFrame, а не объект списка Python, необходимо добавить номер индекса после функции. Если добавить [0] в конец этой функции, будет возвращен первый фрейм данных в списке. В нашем случае это единственный фрейм данных в списке. Если вы задаете уникальные имена для фреймов данных в документе карты и используете соответствующий групповой символ для изоляции элемента, всегда следует возвращать список только с одним элементом, тогда индекс [0] будет работать. Если в документе карты два фрейма данных и вы хотите сослаться на второй фрейм данных без использования группового символа, используйте [1] в конце функции, например df2 = arcpy.mapping.ListDataFrames(mxd)[1].
    Перед использованием функции AddLayer необходимо указать файл слоя. Процесс указания файла слоя аналогичен указанию документа карты с использованием полного пути к файлу .mxd, только здесь применяется функция Layer, а не функция MapDocument.
    Примечание:

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

  5. В окне Python введите следующее, а когда введете, нажмите клавишу Enter: Указанный путь, скорее всего, будет отличаться от примера, приведенного ниже.
  6. >>> lyrFile = arcpy.mapping.Layer(r"C:\Project\data\Rivers.lyr")
    
    В предыдущем действии была создана ссылка на существующий файл слоя, которая была сохранена в переменной lyrFile.
    Обратите внимание на то, что строчная буква r размещена перед строкой. Это специальный символ Python, который означает необработанные данные. Он указывает, что строку необходимо обрабатывать так, как она представлена, при этом игнорировать любые другие специальные символы в строке. Символ r используется потому, что путь содержит обратные косые черты. Обратная косая черта в Python является специальным символом. Например, \t в строке преобразуется в символ табуляции, а \n преобразуется в новую строку. В примере выше не требуется использовать специальные символы, необходима необработанная буквенная строка. Существует два других эквивалентных способа ввода одинакового пути в Python. Во-первых, используйте обычную косую черту (например, "C:/Project/States.lyr»). Python не пытается интерпретировать обычные косые черты, они являются кросс-платформенным стандартом. Во-вторых, используйте двойные обратные косые черты (например, "C:\\Project\\Lakes.lyr»). Первый обратный слеш отменяет второй. Важно запомнить применение символа r, так как при копировании системных путей в платформе Windows обратные косые черты включаются в путь.
    Созданы все необходимые переменные. Затем функция AddLayer используется для добавления файла слоя в текущий документ карты.
  7. В окне Python введите следующее, а когда введете, нажмите клавишу Enter:
  8. >>> arcpy.mapping.AddLayer(df, lyrFile)
    
    Слой будет добавлен в таблицу содержания и вид данных, а окно Python будет выглядеть так, как на рисунке ниже:
    Снимок экрана результатов выполнения функции AddLayer в окне Python

Экспорт документа карты в PDF

Экспорт документа карты в PDF — очень простая операция, требующая всего одной строки кода. Вы уже видели синтаксис функции ExportToPDF в начале данного руководства. Теперь вы изучите полный синтаксис.

  1. В окне Python введите следующее, а когда введете, нажмите клавишу Enter: Указанный путь, скорее всего, будет отличаться от примера, приведенного ниже.
  2. >>> arcpy.mapping.ExportToPDF(mxd, r"C:\Project\Doc1.pdf")
    
    Существует множество параметров, совпадающих с настройками, доступными в ArcMap. Всего два параметра являются обязательными: map_document и out_pdf.
    Будет создан документ PDF в указанном местоположении, а окно Python будет выглядеть так, как на рисунке ниже:
    Снимок экрана результатов выполнения функции ExportToPDF в окне Python

Укажите слой с помощью функции ListLayers, измените свойства слоя

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

  1. В окне Python введите следующее:
  2. >>> lyrFile.
    
    После ввода точки отображаются свойства и методы объекта Layer. С помощью переменной lyrFile вы можете изменить эти свойства в документе карты, а при вызове метода save() изменения будут сохранены в файл слоя (.lyr) на диске.
    Не все возможные свойства доступны в объекте Layer, а только те свойства, которые чаще всего используются для сценариев автоматизации карт. Многие другие свойства можно изменить, создав их в файле слоя и используя функцию UpdateLayer arcpy.mapping.
    Вы не всегда будете добавлять файлы слоя. Чаще всего документ карты уже будет содержать слои. Далее вы опять укажете ссылку на слой, будто он уже содержится в документе карты. Указание слоя в документе карты очень похоже на указание фрейма данных.
  3. В окне Python удалите текущий текст, введите следующую строку, затем нажмите клавишу Enter:
  4. >>> lyr = arcpy.mapping.ListLayers(mxd)[0]
    
    Для функции ListLayers требуется указать ссылку на документ карты. У функции два дополнительных параметра: один для выполнения поиска с групповым символом, а второй для указания фрейма данных. Так как у вас всего один слой и один фрейм данных, другие параметры указывать необязательно. Опять же, значение индекса [0] необходимо добавить в конец выражения, чтобы возвращался объект Layer вместо объекта списка Python.
    С помощью новой переменной lyr вы обновите некоторые свойства слоя.
  5. В окне Python введите следующие две строки и нажмите клавишу Enter после каждой из них:
  6. >>> lyr.name = "Some New Name"
    >>> lyr.visible = False
    
    Изменение не будет заметно сразу же. Не все изменения свойств или методов автоматически обновляют приложение. Это сделано специально, чтобы приложение не обновлялось постоянно. При использовании тега CURRENT для указания на текущий загруженный документ карты ArcMap иногда требуется обновить таблицу содержания или активное представление (представление данных или вид компоновки).
  7. В окне Python введите следующие две строки и нажмите клавишу Enter после каждой из них:
  8. >>> arcpy.RefreshTOC()
    >>> arcpy.RefreshActiveView()
    
    Таблица содержания и представление данных будут обновлены.
    Примечание:

    Если вы выполняете автономные скрипты вне ArcMap, эти дополнительные функции не требуются.

    Окно Python должно выглядеть так, как на рисунке ниже:
    Снимок экрана результатов обновления в окне Python

Изменение экстента фрейма данных

В этом разделе вы измените экстент фрейма данных в соответствии с экстентом выбранных объектов. В скрипте это обычно выполняется с помощью функции, подобной SelectlayerByAttribute. Для простоты выберите объекты графически. Сначала необходимо включить видимость слоя с помощью Python.

  1. В окне Python введите следующие три строки и нажмите клавишу Enter после каждой из них:
  2. >>> lyr.visible = True
    >>> arcpy.RefreshTOC()
    >>> arcpy.RefreshActiveView()
    
  3. В ArcMap графически выберите один или несколько объектов в слое.
  4. Затем вы создадите переменную, которая будет содержать экстент выбранных объектов, и примените его к параметру extent объекта DataFrame, на который вы уже ссылались.
  5. В окне Python введите следующие две строки и нажмите клавишу Enter после каждой из них:
  6. >>> lyrExtent = lyr.getSelectedExtent()
    >>> df.extent = lyrExtent
    
    Окно Python должно выглядеть так, как на рисунке ниже:
    Снимок экрана результатов df.extent в окне Python

Экспорт документа карты в PDF (повтор)

Вы собираетесь экспортировать документ в PDF еще раз. На этот раз вы создаете второй документ PDF, который будет в итоге добавлен к новому документу вместе с первым документом.

  1. В окне Python введите следующее, а когда введете, нажмите клавишу Enter: Указанный путь, скорее всего, будет отличаться от примера, приведенного ниже.
  2. >>> arcpy.mapping.ExportToPDF(mxd, r"C:\Project\Doc2.pdf")
    
    Окно Python должно выглядеть так, как на рисунке ниже:
    Снимок экрана результатов выполнения функции ExportToPDF в окне Python

Создание документа PDF и добавление двух страниц

Модуль arcpy.mapping содержит некоторые функции управления PDF-документами, которые идеально подходят для создания многостраничных документов. Готовые атласы, например, часто содержат дополнительные страницы, помимо стандартных страниц карт, созданных с помощью многостраничной компоновки. Использование arcpy.mapping является необходимым шагом при создании полных атласов.

В этой части руководства симулируется создание многостраничного отчета. Сначала необходимо создать новый документ PDF и затем добавить ранее созданные PDF. Представьте, что эти PDF — отдельные документы, из которых состоит атлас. Doc1.pdf может быть многостраничным документом PDF с титульной страницей, таблицей содержания и т. д. Второй документ PDF может быть результатом экспорта всех страниц многостраничной компоновки в один многостраничный документ PDF.

Первый шаг — создание нового документа PDF.

  1. В окне Python введите следующее, а когда введете, нажмите клавишу Enter:
  2. >>> PDFdoc = arcpy.mapping.PDFDocumentCreate(r"C:\Project\Final.pdf")
    
    Переменная PDFdoc ссылается на объект PDFDocument в памяти. Он не будет записан на диск до сохранения и закрытия документа.
    Дальнейшие действия добавляют соответствующие страницы.
  3. В окне Python введите следующие три строки и нажмите клавишу Enter после каждой из них:
  4. >>> PDFdoc.appendPages(r"C:\Project\Doc1.pdf")
    >>> PDFdoc.appendPages(r"C:\Project\Doc2.pdf")
    >>> PDFdoc.saveAndClose()
    
    Первые две строки добавляют каждый PDF в созданный документ PDF. Последняя строка сохраняет изменения и создает конечный PDF на диске.
    Будет создан документ PDF в указанном местоположении, а окно Python будет выглядеть так, как на рисунке ниже:
    Снимок экрана результатов saveAndClose в окне Python

Вы завершили простой, но распространенный рабочий процесс с использованием модуля arcpy.mapping. Далее вы должны применить эти рабочие процессы к собственным документам и слоям карты. Также уделите время и более тщательно изучите разделы справки arcpy.mapping. В конце каждого из разделов приведены примеры кода, которые можно легко скопировать и вставить в окне Python.

Связанные разделы

  • Введение в модуль arcpy.mapping
  • Руководство по использованию arcpy.mapping

ArcGIS Desktop

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

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

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